{"version":3,"sources":["webpack:///./src/system/core.module/index.ts","webpack:///./src/system/components.module/index.ts","webpack:///./src/system/metadata.module/index.ts","webpack:///./src/system/components.module/internals.ts","webpack:///./src/system/core.module/utils/utils.ts","webpack:///./src/system/index.ts","webpack:///./src/system/core.module/internals.ts","webpack:///./src/system/components.module/components/common/base.component.ts","webpack:///./src/system/map.module/utils/LeafletHelper.ts","webpack:///./src/system/components.module/components/common/UssDataSourceComponent.ts","webpack:///./src/system/dialogs.module/index.ts","webpack:///./src/system/telematics.module/index.ts","webpack:///./src/system/map.module/index.ts","webpack:///./src/system/core.module/utils/Reflection.ts","webpack:///./src/system/core.module/interfaces/core-interface.tokens.ts","webpack:///./src/system/settings.module/index.ts","webpack:///./src/system/cache.module/index.ts","webpack:///./src/system/translate.module/index.ts","webpack:///./src/system/core.module/interfaces/core-translate.service.ts","webpack:///./src/system/core.module/utils/Json.ts","webpack:///./src/system/core.module/interfaces/setup-singleton.decorator.ts","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./src/system/components.module/components/dialogs/common/UssDialog.ts","webpack:///./src/system/core.module/utils/index.ts","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./src/system/signalr.module/index.ts","webpack:///./src/system/components.module/components/common/CustomValidators.ts","webpack:///./src/system/map.module/address/index.ts","webpack:///./src/system/map.module/address/Address.ts","webpack:///./src/system/map.module/map-icons/map-icon.ts","webpack:///./src/system/core.module/app.base.ts","webpack:///./src/system/core.module/interfaces/core-messages.service.ts","webpack:///./src/system/core.module/interfaces/index.ts","webpack:///./src/system/core.module/services/error-handler.ts","webpack:///./src/system/translate.module/translate.service.ts","webpack:///./src/system/auth.module/index.ts","webpack:///./src/system/core.module/app.directive.ts","webpack:///./src/system/metadata.module/metadata.service.ts","webpack:///./src/system/components.module/components/common/UssFormGroup.ts","webpack:///./src/system/components.module/directives/directive.base.ts","webpack:///./src/system/components.module/systemTasks/system-task.page.ts","webpack:///./src/system/components.module/components/select/select.component.ts","webpack:///./src/system/translate.module/l10n.directive.ts","webpack:///./src/app/pages/map/components/map-settings/map-settings.dialog.ts","webpack:///./src/system/map.module/address/AddressSource.ts","webpack:///./src/system/map.module/services/index.ts","webpack:///./src/system/map.module/services/visicom/params/VisicomApiParams.ts","webpack:///./src/system/auth.module/account.service.ts","webpack:///./src/system/core.module/decorators/app-service.decorator.ts","webpack:///./src/system/core.module/interfaces/core-auth.service.ts","webpack:///./src/system/core.module/utils/WindowUtils.ts","webpack:///./src/system/core.module/app.component.ts","webpack:///./src/system/core.module/utils/TypedEventEmitter.ts","webpack:///./src/system/core.module/utils/OData.ts","webpack:///./src/system/core.module/decorators/index.ts","webpack:///./src/system/core.module/services/http.service.ts","webpack:///./src/system/core.module/services/http.helper.ts","webpack:///./src/system/core.module/pipes/lang-dependent.pipe.ts","webpack:///./src/system/core.module/services/index.ts","webpack:///./src/system/signalr.module/signalr.service.ts","webpack:///./src/system/components.module/components/input/inputs.component.ts","webpack:///./src/system/metadata.module/crud-api.service.ts","webpack:///./src/system/metadata.module/crud-metadata-api.service.ts","webpack:///./src/system/dialogs.module/dialogs.service.ts","webpack:///./src/system/components.module/components/common/ObserverPlatform.ts","webpack:///./src/system/components.module/components/common/base.page.ts","webpack:///./src/system/components.module/components/common/UssDataBindedComponent.ts","webpack:///./src/system/components.module/components/data-source/data-source.base.directive.ts","webpack:///./src/system/components.module/components/data-source/data-source.p-dataTable.directive.ts","webpack:///./src/system/components.module/components/dialogs/common/EditorModal.ts","webpack:///./src/system/components.module/components/object-list/object-list.component.ts","webpack:///./src/system/components.module/decorators/object-list-panel.decorator.ts","webpack:///./src/system/components.module/services/asyncTask.service.ts","webpack:///./src/system/components.module/components/object-select/object-select.component.ts","webpack:///./src/system/components.module/components/popover/popover.component.ts","webpack:///./src/system/translate.module/translate.module.ts","webpack:///./src/system/messages.module/index.ts","webpack:///./src/system/map.module/markers/CanvasMarker.ts","webpack:///./src/system/map.module/markers/CanvasIconLayer.ts","webpack:///./src/system/map.module/directives/map-point.ts","webpack:///./src/system/map.module/services/IAppAddressService.ts","webpack:///./src/system/map.module/services/visicom/visicom.service.ts","webpack:///./src/system/web-worker.module/index.ts","webpack:///./src/system/web-worker.module/WebWorkersManager.ts","webpack:///./src/system/core.module/utils/js.net.md5.ts","webpack:///./src/system/core.module/decorators/app-component.decorator.ts","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/jexl/dist/parser/handlers.js","webpack:///./src/system/core.module/utils/DateTime.ts","webpack:///./src/system/core.module/utils/mask.ts","webpack:///./src/system/core.module/utils/ODataFilterCreator.ts","webpack:///./src/system/core.module/decorators/api-method.decorator.ts","webpack:///./src/system/core.module/decorators/api-service.decorator.ts","webpack:///./src/system/core.module/decorators/extend.decorator.ts","webpack:///./src/system/core.module/interfaces/core-events.service.ts","webpack:///./src/system/core.module/interfaces/core-router.service.ts","webpack:///./src/system/core.module/services/api.service.ts","webpack:///./src/system/core.module/components/tooltip/tooltip.component.ts","webpack:///./src/system/map.module/assets/svg/FireHydrant.svg","webpack:///./src/system/map.module/assets/svg/accident.svg","webpack:///./src/system/map.module/assets/svg/areaPoint.svg","webpack:///./src/system/map.module/assets/svg/caller-shadow.svg","webpack:///./src/system/map.module/assets/svg/caller.svg","webpack:///./src/system/map.module/assets/svg/camera.svg","webpack:///./src/system/map.module/assets/svg/car-crush.svg","webpack:///./src/system/map.module/assets/svg/car-moving.svg","webpack:///./src/system/map.module/assets/svg/car-no-shadow.svg","webpack:///./src/system/map.module/assets/svg/car-nocoords-long.svg","webpack:///./src/system/map.module/assets/svg/car-nocoords.svg","webpack:///./src/system/map.module/assets/svg/car-notmoved.svg","webpack:///./src/system/map.module/assets/svg/car-stopped-long.svg","webpack:///./src/system/map.module/assets/svg/car-stopped.svg","webpack:///./src/system/map.module/assets/svg/car.svg","webpack:///./src/system/map.module/assets/svg/car1.svg","webpack:///./src/system/map.module/assets/svg/emergency.svg","webpack:///./src/system/map.module/assets/svg/fire.svg","webpack:///./src/system/map.module/assets/svg/flag-shadow.svg","webpack:///./src/system/map.module/assets/svg/flag.svg","webpack:///./src/system/map.module/assets/svg/flame.svg","webpack:///./src/system/map.module/assets/svg/group-house.svg","webpack:///./src/system/map.module/assets/svg/house.svg","webpack:///./src/system/map.module/assets/svg/information.svg","webpack:///./src/system/map.module/assets/svg/point.svg","webpack:///./src/system/map.module/assets/svg/star.svg","webpack:///./src/system/core.module/pipes/format.pipe.ts","webpack:///./src/system/auth.module/auth.service.ts","webpack:///./src/system/cache.module/services/cache.service.ts","webpack:///./src/system/components.module/components/button/button.component.ts","webpack:///./src/system/signalr.module/UssHub.ts","webpack:///./src/system/components.module/theme.ts","webpack:///./src/system/components.module/components/color-picker/color-picker.component.ts","webpack:///./src/system/metadata.module/entity-edit-dialog.decorator.ts","webpack:///./src/system/metadata.module/crud-service.decorator.ts","webpack:///./src/system/metadata.module/enum.pipe.ts","webpack:///./src/system/metadata.module/expression.pipe.ts","webpack:///./src/system/metadata.module/utils.ts","webpack:///./src/system/settings.module/decorators/store-settings.decorator.ts","webpack:///./src/system/settings.module/services/settings.service.ts","webpack:///./src/system/settings.module/services/IndexedDbStorage.ts","webpack:///./src/system/components.module/components/data-source/data-source.p-dataTable.templates.ts","webpack:///./src/system/components.module/components/object-list/object-list.settings.ts","webpack:///./src/system/components.module/components/dialogs/common/UssDeactivateRouteGuard.ts","webpack:///./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.ts","webpack:///./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.ts","webpack:///./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.ts","webpack:///./src/system/components.module/components/datetime-picker/datetime-picker.component.ts","webpack:///./src/system/components.module/components/dialogs/index.ts","webpack:///./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.ts","webpack:///./src/system/components.module/components/enum-select/enum-select.component.ts","webpack:///./src/system/components.module/components/multi-select/multi-select.component.ts","webpack:///./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.ts","webpack:///./src/system/components.module/components/page-control/page-control.component.ts","webpack:///./src/system/components.module/components/spinner/spinner.component.ts","webpack:///./src/system/components.module/components/tree-list/tree-list.component.ts","webpack:///./src/system/components.module/components/upload/upload.component.ts","webpack:///./node_modules/@angular/platform-browser/@angular/platform-browser/animations.es5.js","webpack:///./src/system/telematics.module/telematics-api.service.ts","webpack:///./src/system/telematics.module/Telematics.Utils.ts","webpack:///./src/app/common/GlobalSettings.ts","webpack:///./src/system/map.module/address/AppAddressInfoSource.ts","webpack:///./src/system/map.module/markers/MarkerFactory.ts","webpack:///./src/system/map.module/markers/RotateMarker.ts","webpack:///./src/system/map.module/interfaces/index.ts","webpack:///./src/system/map.module/interfaces/map.tokens.ts","webpack:///./src/system/map.module/components/search/search-base.component.ts","webpack:///./src/system/map.module/directives/index.ts","webpack:///./src/system/map.module/services/osm/osm.service.ts","webpack:///./src/system/map.module/services/osm/OsmSearchParams.ts","webpack:///./src/system/map.module/services/visicom/params/index.ts","webpack:///./src/system/map.module/services/visicom/params/GeocodeParams.ts","webpack:///./src/system/map.module/services/visicom/params/VisicomSearchParams.ts","webpack:///./src/system/map.module/directives/map.directive.ts","webpack:///./src/system/map.module/services/visicom/classes/VisicomAddressSource.ts","webpack:///./src/system.browser.ts","webpack:///./src/system/core.module/app.page.ts","webpack:///./src/system/core.module/utils/parser.ts","webpack:///./node_modules/jexl/dist/Jexl.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/jexl/dist/Expression.js","webpack:///./node_modules/jexl/dist/evaluator/Evaluator.js","webpack:///./node_modules/jexl/dist/evaluator/handlers.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/jexl/dist/Lexer.js","webpack:///./node_modules/jexl/dist/parser/Parser.js","webpack:///./node_modules/jexl/dist/parser/states.js","webpack:///./node_modules/jexl/dist/PromiseSync.js","webpack:///./node_modules/jexl/dist/grammar.js","webpack:///./src/system/core.module/utils/ComponentPropertiesObserver.ts","webpack:///./src/system/core.module/utils/FormHelper.ts","webpack:///./src/system/core.module/utils/js.net.extensions.ts","webpack:///./src/system/core.module/utils/js.net.array.ts","webpack:///./src/system/core.module/utils/js.net.function.ts","webpack:///./src/system/core.module/utils/js.net.path.ts","webpack:///./src/system/core.module/utils/js.net.string.ts","webpack:///./src/system/core.module/utils/ObservableCollection.ts","webpack:///./src/system/core.module/utils/Storage.ts","webpack:///./src/system/core.module/utils/StringBuilder.ts","webpack:///./src/system/core.module/utils/UssFramedList.ts","webpack:///./src/system/core.module/decorators/custom-component.decorator.ts","webpack:///./src/system/core.module/decorators/inject.decorator.ts","webpack:///./src/system/core.module/decorators/notify-changes.decorator.ts","webpack:///./src/system/core.module/decorators/log-method.decorator.ts","webpack:///./src/system/core.module/interfaces/core-dialogs.service.ts","webpack:///./src/system/core.module/interfaces/core-resolver.service.ts","webpack:///./src/system/core.module/components/index.ts","webpack:///./src/system/core.module/components/factory.component.ts","webpack:///./src/system/core.module/components/layout/layout.component.ts","webpack:///./src/system/core.module/components/layout/layout.component.html","webpack:///./src/system/core.module/components/layout/layout.component.scss","webpack:///./src/system/core.module/components/time-ago.component.ts","webpack:///./src/system/core.module/components/tooltip/tooltip.component.html","webpack:///./src/system/core.module/components/tooltip/tooltip.component.scss","webpack:///./src/system/core.module/directives/index.ts","webpack:///./src/system/core.module/directives/autofocus.directive.ts","webpack:///./src/system/core.module/directives/content-title.directive.ts","webpack:///./src/system/core.module/directives/css-var.directive.ts","webpack:///./src/system/core.module/directives/highlight.directive.ts","webpack:///./src/system/core.module/directives/href.directive.ts","webpack:///./src/system/core.module/directives/mask.directive.ts","webpack:///./src/system/core.module/directives/ngAttr.directive.ts","webpack:///./src/system/core.module/directives/onResize.directive.ts","webpack:///./src/system/core.module/directives/onVisibleInScroll.directive.ts","webpack:///./src/system/core.module/directives/screen-layout.directive.ts","webpack:///./src/system/core.module/directives/splitter.directive.ts","webpack:///./src/system/core.module/directives/svg-icon.directive.ts","webpack:///./src/system/map.module/assets/svg ^\\.\\/.*\\.svg$","webpack:///./src ^\\.\\/.*\\.svg$","webpack:///./src/app/assets/fonts/mapfont.svg","webpack:///./src/app/assets/images/metrix-logo-icon.svg","webpack:///./src/app/assets/images/metrix-logo.svg","webpack:///./src/app/assets/svg/accessGroup.svg","webpack:///./src/app/assets/svg/alert.svg","webpack:///./src/app/assets/svg/applicationRole.svg","webpack:///./src/app/assets/svg/applicationUser.svg","webpack:///./src/app/assets/svg/authHistory.svg","webpack:///./src/app/assets/svg/check.svg","webpack:///./src/app/assets/svg/connectedClient.svg","webpack:///./src/app/assets/svg/dataFilterSet.svg","webpack:///./src/app/assets/svg/db-alert-btn.svg","webpack:///./src/app/assets/svg/db-alert-overspeed.svg","webpack:///./src/app/assets/svg/db-antena.svg","webpack:///./src/app/assets/svg/db-low-battery-charge.svg","webpack:///./src/app/assets/svg/db-low-power.svg","webpack:///./src/app/assets/svg/db-no-gps.svg","webpack:///./src/app/assets/svg/db-no-power-moment.svg","webpack:///./src/app/assets/svg/db-power-excess.svg","webpack:///./src/app/assets/svg/db-restart-gps.svg","webpack:///./src/app/assets/svg/db-sim-error.svg","webpack:///./src/app/assets/svg/exit.svg","webpack:///./src/app/assets/svg/fa-arrow.svg","webpack:///./src/app/assets/svg/icon-alarm.svg","webpack:///./src/app/assets/svg/icon-arrow-down.svg","webpack:///./src/app/assets/svg/icon-battery-charge-10.svg","webpack:///./src/app/assets/svg/icon-calendar.svg","webpack:///./src/app/assets/svg/icon-gps.svg","webpack:///./src/app/assets/svg/icon-level-oil.svg","webpack:///./src/app/assets/svg/icon-refresh.svg","webpack:///./src/app/assets/svg/icon-remove.svg","webpack:///./src/app/assets/svg/icon-start.svg","webpack:///./src/app/assets/svg/item.svg","webpack:///./src/app/assets/svg/menu-close.svg","webpack:///./src/app/assets/svg/menu-icon.svg","webpack:///./src/app/assets/svg/operationLog.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-accel-x.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-accel-y.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-accel-z.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-accel.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-alarm-antenna-short-circuit.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-alarm-button.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-alarm-power-excess.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-alarm-restart-gps.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-alarm-sim.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-charge-level.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-default.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-dut.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-charge.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-gprs.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-gps.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-gsm.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-ignition.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-power.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-sim.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-flag-tahometr.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-gsm-signal.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-power.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-satt-count.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-start.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-temperature.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-turnover-engine.svg","webpack:///./src/app/assets/svg/predefinedSensorType/pst-velocity.svg","webpack:///./src/app/assets/svg/report.svg","webpack:///./src/app/assets/svg/reports/areas-report.svg","webpack:///./src/app/assets/svg/reports/fuel-level-report.svg","webpack:///./src/app/assets/svg/reports/idling-report.svg","webpack:///./src/app/assets/svg/reports/route-progress-report.svg","webpack:///./src/app/assets/svg/reports/sensors-chart.svg","webpack:///./src/app/assets/svg/reports/traffic-report.svg","webpack:///./src/app/assets/svg/route.svg","webpack:///./src/app/assets/svg/scheduler.svg","webpack:///./src/app/assets/svg/sensor-false.svg","webpack:///./src/app/assets/svg/sensor-true.svg","webpack:///./src/app/assets/svg/sensor.svg","webpack:///./src/app/assets/svg/sensorDataType/bool.svg","webpack:///./src/app/assets/svg/sensorDataType/event.svg","webpack:///./src/app/assets/svg/sensorDataType/float.svg","webpack:///./src/app/assets/svg/sensorDataType/integer.svg","webpack:///./src/app/assets/svg/sensorType.svg","webpack:///./src/app/assets/svg/statusBad.svg","webpack:///./src/app/assets/svg/statusEquipped.svg","webpack:///./src/app/assets/svg/statusFixing.svg","webpack:///./src/app/assets/svg/statusNew.svg","webpack:///./src/app/assets/svg/statusNotEquipped.svg","webpack:///./src/app/assets/svg/statusRemoved.svg","webpack:///./src/app/assets/svg/statusSet.svg","webpack:///./src/app/assets/svg/statusTested.svg","webpack:///./src/app/assets/svg/tag.svg","webpack:///./src/app/assets/svg/telematicsModelInternal.svg","webpack:///./src/app/assets/svg/telematicsModelTemplate.svg","webpack:///./src/app/assets/svg/testModel.svg","webpack:///./src/app/assets/svg/trackingDevice.svg","webpack:///./src/app/assets/svg/trackingObject.svg","webpack:///./src/app/assets/svg/trackingObjectSetting.svg","webpack:///./src/app/assets/svg/trackingObjectType.svg","webpack:///./src/app/assets/svg/user.svg","webpack:///./src/app/assets/svg/userProfile.svg","webpack:///./src/app/assets/svg/zone.svg","webpack:///./src/gortrans.module/assets/svg/bus.svg","webpack:///./src/gortrans.module/assets/svg/routetaxi.svg","webpack:///./src/gortrans.module/assets/svg/tram.svg","webpack:///./src/gortrans.module/assets/svg/trolleybus.svg","webpack:///./src/system/components.module/assets/svg/close-button.svg","webpack:///./src/system/components.module/assets/svg/fa/add-file.svg","webpack:///./src/system/components.module/assets/svg/fa/angle-down.svg","webpack:///./src/system/components.module/assets/svg/fa/angle-up.svg","webpack:///./src/system/components.module/assets/svg/fa/arrow.svg","webpack:///./src/system/components.module/assets/svg/fa/bell.svg","webpack:///./src/system/components.module/assets/svg/fa/calendar-plus-o.svg","webpack:///./src/system/components.module/assets/svg/fa/calendar.svg","webpack:///./src/system/components.module/assets/svg/fa/charge.svg","webpack:///./src/system/components.module/assets/svg/fa/check-circle.svg","webpack:///./src/system/components.module/assets/svg/fa/check-double.svg","webpack:///./src/system/components.module/assets/svg/fa/check-square.svg","webpack:///./src/system/components.module/assets/svg/fa/check.svg","webpack:///./src/system/components.module/assets/svg/fa/chevron-left.svg","webpack:///./src/system/components.module/assets/svg/fa/chevron-right.svg","webpack:///./src/system/components.module/assets/svg/fa/clock-o.svg","webpack:///./src/system/components.module/assets/svg/fa/clock.svg","webpack:///./src/system/components.module/assets/svg/fa/cog.svg","webpack:///./src/system/components.module/assets/svg/fa/copy.svg","webpack:///./src/system/components.module/assets/svg/fa/download.svg","webpack:///./src/system/components.module/assets/svg/fa/edit.svg","webpack:///./src/system/components.module/assets/svg/fa/eye-slash.svg","webpack:///./src/system/components.module/assets/svg/fa/eye.svg","webpack:///./src/system/components.module/assets/svg/fa/filter-reset.svg","webpack:///./src/system/components.module/assets/svg/fa/filter.svg","webpack:///./src/system/components.module/assets/svg/fa/fire-alt-solid.svg","webpack:///./src/system/components.module/assets/svg/fa/fire.svg","webpack:///./src/system/components.module/assets/svg/fa/gps.svg","webpack:///./src/system/components.module/assets/svg/fa/low-battery-charge.svg","webpack:///./src/system/components.module/assets/svg/fa/map.svg","webpack:///./src/system/components.module/assets/svg/fa/minus.svg","webpack:///./src/system/components.module/assets/svg/fa/pause-circle.svg","webpack:///./src/system/components.module/assets/svg/fa/pause.svg","webpack:///./src/system/components.module/assets/svg/fa/play-circle.svg","webpack:///./src/system/components.module/assets/svg/fa/play.svg","webpack:///./src/system/components.module/assets/svg/fa/plug.svg","webpack:///./src/system/components.module/assets/svg/fa/plus.svg","webpack:///./src/system/components.module/assets/svg/fa/power-off.svg","webpack:///./src/system/components.module/assets/svg/fa/print.svg","webpack:///./src/system/components.module/assets/svg/fa/refresh.svg","webpack:///./src/system/components.module/assets/svg/fa/report-download.svg","webpack:///./src/system/components.module/assets/svg/fa/rotate-left-solid.svg","webpack:///./src/system/components.module/assets/svg/fa/signal.svg","webpack:///./src/system/components.module/assets/svg/fa/stop.svg","webpack:///./src/system/components.module/assets/svg/fa/tag.svg","webpack:///./src/system/components.module/assets/svg/fa/tags.svg","webpack:///./src/system/components.module/assets/svg/fa/toolbar.svg","webpack:///./src/system/components.module/assets/svg/fa/trash-alt.svg","webpack:///./src/system/components.module/assets/svg/fa/trash-o.svg","webpack:///./src/system/components.module/assets/svg/fa/trash.svg","webpack:///./src/system/components.module/assets/svg/fa/upload.svg","webpack:///./src/system/components.module/assets/svg/fa/user-lock.svg","webpack:///./src/system/components.module/assets/svg/fa/users-cog.svg","webpack:///./src/system/components.module/assets/svg/fa/zoom-minus.svg","webpack:///./src/system/components.module/assets/svg/fa/zoom-plus.svg","webpack:///./src/system/components.module/assets/svg/fa/zoom100.svg","webpack:///./src/system/components.module/assets/svg/fullscreen_1.svg","webpack:///./src/system/components.module/assets/svg/fullscreen_2.svg","webpack:///./src/system/components.module/assets/svg/photo-camera.svg","webpack:///./src/system/core.module/directives/title.directive.ts","webpack:///./src/system/core.module/directives/tooltip.directive.ts","webpack:///./src/system/core.module/pipes/index.ts","webpack:///./src/system/core.module/pipes/console.pipe.ts","webpack:///./src/system/core.module/pipes/plusSuffix.pipe.ts","webpack:///./src/system/core.module/pipes/time-ago.pipe.ts","webpack:///./src/system/core.module/pipes/trustHtml.pipe.ts","webpack:///./src/system/core.module/services/systemInfo.service.ts","webpack:///./src/system/core.module/core.module.ts","webpack:///./src/system/linq.array.ts","webpack:///./src/system/auth.module/auth.module.ts","webpack:///./src/system/cache.module/cache.module.ts","webpack:///./src/system/cache.module/services/cache-api.service.ts","webpack:///./src/system/components.module/components/index.ts","webpack:///./src/system/signalr.module/signalr.module.ts","webpack:///./src/system/components.module/components/button ^\\.\\/.*\\/button\\.component\\.html$","webpack:///./src/system/components.module/components/button/primeng/button.component.html","webpack:///./src/system/components.module/components/button/semantic-ui/button.component.html","webpack:///./src/system/components.module/components/button ^\\.\\/.*\\/button\\.component\\.scss$","webpack:///./src/system/components.module/components/button/primeng/button.component.scss","webpack:///./src/system/components.module/components/button/semantic-ui/button.component.scss","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./src/system/metadata.module/crud-framed.service.ts","webpack:///./src/system/metadata.module/metadata.module.ts","webpack:///./src/system/dialogs.module/dialogs.module.ts","webpack:///./src/system/components.module/components/color-picker/color-picker.component.html","webpack:///./src/system/components.module/components/color-picker/color-picker.component.scss","webpack:///./src/system/components.module/components/common/index.ts","webpack:///./src/system/components.module/components/common/base.list-panel.ts","webpack:///./src/system/components.module/components/data-source/index.ts","webpack:///./src/system/components.module/components/data-source/data-source.textarea.directive.ts","webpack:///./src/system/components.module/components/data-source/data-source.input.directive.ts","webpack:///./src/system/components.module/components/data-source/data-source.form.directive.ts","webpack:///./src/system/settings.module/services/angular2-indexeddb.ts","webpack:///./src/system/settings.module/settings.module.ts","webpack:///./src/system/components.module/components/object-list/object-list.settings.html","webpack:///./src/system/components.module/components/object-list/object-list.settings.scss","webpack:///./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.html","webpack:///./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.scss","webpack:///./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.html","webpack:///./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.scss","webpack:///./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.html","webpack:///./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.scss","webpack:///./src/system/components.module/components/datetime-picker/datetime-picker.component.html","webpack:///./src/system/components.module/components/datetime-picker/datetime-picker.component.scss","webpack:///./src/system/components.module/components/dialogs/export/export-options.editor.ts","webpack:///./src/system/components.module/components/dialogs/export/export-options.editor.html","webpack:///./src/system/components.module/components/dialogs/modal/modal.component.ts","webpack:///./src/system/components.module/components/dialogs/modal/modal.component.scss","webpack:///./src/system/components.module/components/dialogs/modal/modal.component.html","webpack:///./src/system/components.module/components/object-list/object-list.component.html","webpack:///./src/system/components.module/components/object-list/object-list.component.scss","webpack:///./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.scss","webpack:///./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.html","webpack:///./src/system/components.module/components/dialogs/progressDialog/progress.dialog.ts","webpack:///./src/system/components.module/components/dialogs/progressDialog/progress.dialog.html","webpack:///./src/system/components.module/components/dialogs/simpleDialog/simple.dialog.ts","webpack:///./src/system/components.module/components/dialogs/simpleDialog/simple.dialog.html","webpack:///./src/system/components.module/components/select/select.component.html","webpack:///./src/system/components.module/components/select/select.component.scss","webpack:///./src/system/components.module/components/enum-select/enum-select.component.html","webpack:///./src/system/components.module/components/enum-select/enum-select.component.scss","webpack:///./src/system/components.module/components/framed-list/framed-list.component.ts","webpack:///./src/system/components.module/components/framed-list/framed-list.component.html","webpack:///./src/system/components.module/components/framed-list/framed-list.component.scss","webpack:///./src/system/components.module/components/multi-select/multi-select.component.html","webpack:///./src/system/components.module/components/multi-select/multi-select.component.scss","webpack:///./src/system/components.module/components/multi-selector/multi-selector.component.ts","webpack:///./src/system/components.module/components/multi-selector/multi-selector.component.html","webpack:///./src/system/components.module/components/multi-selector/multi-selector.component.scss","webpack:///./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.html","webpack:///./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.scss","webpack:///./src/system/components.module/components/object-select/object-select.component.html","webpack:///./src/system/components.module/components/object-select/object-select.component.scss","webpack:///./src/system/components.module/components/page-control/page.component.ts","webpack:///./src/system/components.module/components/page-control/page-control.component.html","webpack:///./src/system/components.module/components/page-control/page-control.component.scss","webpack:///./src/system/components.module/components/period-picker/period-picker.component.ts","webpack:///./src/system/components.module/components/period-picker/period-picker.component.html","webpack:///./src/system/components.module/components/period-picker/period-picker.component.scss","webpack:///./src/system/components.module/components/popover/tooltip.directive.ts","webpack:///./src/system/components.module/components/schedule/schedule-time/schedule.component.ts","webpack:///./src/system/components.module/components/schedule/schedule-time/schedule.component.html","webpack:///./src/system/components.module/components/schedule/schedule-time/schedule.component.scss","webpack:///./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.ts","webpack:///./src/system/components.module/components/schedule/schedule-base.component.ts","webpack:///./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.html","webpack:///./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.scss","webpack:///./src/system/components.module/components/scrollable-table/scrollable-table.component.ts","webpack:///./src/system/components.module/components/scrollable-table/scrollable-table.component.html","webpack:///./src/system/components.module/components/scrollable-table/scrollable-table.component.scss","webpack:///./src/system/components.module/components/semanticui/semantic.ts","webpack:///./src/system/components.module/components/spinner/spinner.component.html","webpack:///./src/system/components.module/components/spinner/spinner.component.scss","webpack:///./src/system/components.module/components/table-column-filter/table-column-filter.component.ts","webpack:///./src/system/components.module/components/table-column-filter/table-column-filter.component.html","webpack:///./src/system/components.module/components/table-column-filter/table-column-filter.component.scss","webpack:///./src/system/components.module/components/tree-list/tree-list.component.html","webpack:///./src/system/components.module/components/tree-list/tree-list.component.scss","webpack:///./src/system/components.module/components/tree-list-select/tree-list-select.component.ts","webpack:///./src/system/components.module/components/tree-list-select/tree-list-select.component.html","webpack:///./src/system/components.module/components/tree-list-select/tree-list-select.component.scss","webpack:///./src/system/components.module/components/upload/upload.component.html","webpack:///./src/system/components.module/components/upload/upload.component.scss","webpack:///./src/system/components.module/components.module.ts","webpack:///./node_modules/@angular/animations/@angular/animations/browser.es5.js","webpack:///./src/system/translate.module ^.*$","webpack:///./src/system/translate.module/l10n/en.yml","webpack:///./src/system/translate.module/l10n/ru.yml","webpack:///./src/system/translate.module/l10n/ua.yml","webpack:///./src/system/components.module/components/dialogs/api-question/api-question.handler.ts","webpack:///./src/system/components.module/components/dialogs/api-question/api-question.dialog.ts","webpack:///./src/system/components.module/components/dialogs/api-question/api-question.dialog.html","webpack:///./src/system/components.module/components/dialogs/api-question/api-question.dialog.scss","webpack:///./src/system/components.module/decorators/index.ts","webpack:///./src/system/components.module/decorators/page-panel.decorator.ts","webpack:///./src/system/components.module/directives/index.ts","webpack:///./src/system/components.module/directives/autocomplete.directive.ts","webpack:///./src/system/components.module/directives/label.directive.ts","webpack:///./src/system/components.module/services/index.ts","webpack:///./src/system/components.module/systemTasks/index.ts","webpack:///./src/system/components.module/systemTasks/system-task.component/system-task.component.ts","webpack:///./src/system/components.module/systemTasks/system-task.component/system-task.component.html","webpack:///./src/system/components.module/systemTasks/system-task.component/system-task.component.scss","webpack:///./src/system/messages.module/messages.module.ts","webpack:///./src/system/messages.module/messages.service.ts","webpack:///./src/system/map.module/components/index.ts","webpack:///./src/system/map.module/directives/address.directive.ts","webpack:///./src/system/map.module/services/address.service.ts","webpack:///./src/system/map.module/services/visicom/params/FeatureParams.ts","webpack:///./src/system/map.module/services/visicom/params/DistanceParams.ts","webpack:///./src/system/map.module/controls/fullScreen.control.ts","webpack:///./src/system/map.module/controls/search.control.ts","webpack:///./src/system/map.module/services/osm/index.ts","webpack:///./src/system/map.module/services/osm/NominatimAddressSource.ts","webpack:///./src/system/map.module/services/visicom/index.ts","webpack:///./src/system/map.module/services/visicom/classes/index.ts","webpack:///./src/system/map.module/services/visicom/classes/VisicomUtils.ts","webpack:///./src/system/map.module/utils/Geo.ts","webpack:///./src/system/map.module/map.module.ts","webpack:///./node_modules/leaflet-polylinedecorator/dist/leaflet.polylineDecorator.js","webpack:///./node_modules/leaflet.locatecontrol/src/L.Control.Locate.js","webpack:///./src/app/pages/map/components/map-settings/map-settings.dialog.html","webpack:///./src/app/pages/map/components/map-settings/map-settings.dialog.scss","webpack:///./src/system/telematics.module/telematics.module.ts","webpack:///./src/system/web-worker.module/EventedWorker.ts","webpack:///.*'$","webpack:///./src/system/web-worker.module/ObservableWorker.ts","webpack:///./src/system/web-worker.module/web-worker.module.ts"],"names":[],"mappings":"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G,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1D,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1D,CAAC,GAAG,EAAE,GAAG,CAAC,EAEV,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EACzD,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EACjE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EACzD,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EACjE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAE9C,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,GAAG,E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CP,EAAE,GAAG,CAAC,CAAC;YACP,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,C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ACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;;;;;;;;AC1PA,mDAAiC;AAEjC,IAAiB,QAAQ,CAgDxB;AAhDD,WAAiB,QAAQ;IAMrB,SAAgB,MAAM,CAAC,GAAW,EAAE,aAA6B;QAA7B,oDAA6B;QAC7D,IAAI,GAAG,GAAuB,GAAG,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;eACb,GAAG,CAAC,CAAC,CAAC,KAAK,GA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AAkE,2CAA2C;AAC7G;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,+DAA+D,wCAAwC;AACvG;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,8DAA8D,uCAAuC;AACrG;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,+DAA+D,wCAAwC;AACvG;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,gEAAgE,kCAAkC;AAClG;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,mEAAmE,qCAAqC;AACxG;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,mEAAmE,qCAAqC;AACxG;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,qDAAqD,qDAAqD,EAAE;AAC5G;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,qDAAqD,gEAAgE,EAAE;AACvH;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA,6CAA6C,wBAAwB,EAAE;AACvE,aAAa;AACb;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wFAAmB;AACrB;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA;AACA;AACA;AACA,wDAAwD;AACxD,KAAK,OAAO,oFAAe,GAAG;AAC9B,KAAK,OAAO,8FAAyB,GAAG;AACxC,EAAE;AACF;AACA,YAAY;AACZ;AACA;AACA,QAAQ,mGAAsB;AAC9B,mBAAmB,yFAAoB;AACvC;AACA,eAAe,yFAAoB;AACnC;AACA;AACA,YAAY;AACZ;AACA;AACA,eAAe,kGAA6B;AAC5C;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,oFAAe,mDAAmD;AACjF,KAAK,UAAU,8FAAyB,iDAAiD;AACzF,KAAK,UAAU,qFAAgB,uCAAuC;AACtE,iBAAiB,+DAAgB;AACjC;AACA,eAAe,+EAAoB,EAAE,qFAAgB,EAAE,qDAAM;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,qFAAgB,YAAY,yFAAoB,EAAE;AACjE,iBAAiB,+DAAgB;AACjC;AACA,eAAe,+EAAoB,EAAE,qFAAgB,EAAE,qDAAM;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,uDAAQ;AACpB,0BAA0B,wEAAa;AACvC;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA,sDAAsD,WAAW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,uDAAQ;AACpB,0BAA0B,wEAAa;AACvC;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA,mDAAmD,WAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC6X;AAC7X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjdA,yDAA2C;AAC3C,gEAA2D;AAC3D,mEAAmD;AACnD,4EAAwD;AAQxD;IAA6C,2CAAkB;IAA/D;;IAgEA,CAAC;IA7DG,4CAAU,GAAV,UAAW,IAAoC,EAAE,KAAa;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAGD,iDAAe,GAAf;QACI,OAAO,IAAI,CAAC,OAAO,EAA0B,CAAC,IAAI,CAAC,WAAC,IAAI,QAAC,CAAC,OAAO,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,OAAO,EAAE,EAAhC,CAAgC,CAAC,CAAC;IAC9F,CAAC;IAGK,qDAAmB,GAAzB,UAA0B,EAAU,EAAE,cAAwB;;;;;;wBACnD,0CAAkB;wBAAC,WAAM,IAAI,CAAC,OAAO,CAAwB,EAAE,EAAE,MAAE,cAAc,kBAAE,CAAC;4BAA3F,WAAO,kBAAmB,SAAiE,EAAC,EAAC;;;;KAChG;IAGK,sDAAoB,GAA1B,UAA2B,GAAa,EAAE,cAAwB;;;;;4BAClD,WAAM,IAAI,CAAC,OAAO,CAA0B,EAAE,GAAG,OAAE,cAAc,kBAAE,CAAC;;wBAA1E,GAAG,GAAG,SAAoE;wBAChF,GAAG,CAAC,OAAO,CAAC,WAAC,IAAI,4CAAkB,CAAC,CAAC,CAAC,EAArB,CAAqB,CAAC,CAAC;wBACxC,WAAO,GAAG,EAAC;;;;KACd;IAGK,+DAA6B,GAAnC,UAAoC,SAAyC,EAAE,KAAa;;;;;;wBACjF,0CAAkB;wBAAC,WAAM,IAAI,CAAC,OAAO,CAAwB,EAAE,SAAS,aAAE,KAAK,SAAE,CAAC;4BAAzF,WAAO,kBAAmB,SAA+D,EAAC,EAAC;;;;KAC9F;IAGK,sDAAoB,GAA1B,UAA2B,SAAyC,EAAE,KAAa;;;;4BACxE,WAAM,IAAI,CAAC,OAAO,CAA0B,EAAE,SAAS,aAAE,KAAK,SAAE,CAAC;4BAAxE,WAAO,SAAiE,EAAC;;;;KAC5E;IAGD,8CAAY,GAAZ,UAAa,QAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAS,EAAE,QAAQ,YAAE,CAAC,CAAC;IAC9C,CAAC;IAGD,8CAAY,GAAZ,UAAa,QAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAS,EAAE,QAAQ,YAAE,CAAC,CAAC;IAC9C,CAAC;IAGK,mDAAiB,GAAvB,UAAwB,YAA8C;;;;4BAC3D,WAAM,IAAI,CAAC,OAAO,CAAO,YAAY,CAAC;4BAA7C,WAAO,SAAsC,EAAC;;;;KACjD;IA5CD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;;;6DAG7E;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;;;kEAGhE;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;;;;sEAG3C;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;;;uEAK7F;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;;;;gFAG1D;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;;;;uEAG5E;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;;;+DAG5E;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;;;+DAG5E;IAGD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;;;;oEAGzD;IA/CQ,uBAAuB;QAFnC,iBAAU,EAAE;QACZ,+BAAgB,CAAC,qBAAqB,CAAC;OAC3B,uBAAuB,CAgEnC;IAAD,8BAAC;CAAA,CAhE4C,kCAAkB,GAgE9D;AAhEY,0DAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;ACXpC,uDAAyC;AACzC,gEAAqF;AACrF,4HAAiG;AAGpF,4BAAoB,GAAG,EAAE,CAAC;AA8FvC,SAAgB,oBAAoB,CAAC,YAAqC;;IACtE,IAAM,cAAc,GAAG,MAAoB,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,0CAAE,OAAO,CAAC;IAClF,IAAM,IAAI,SAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,0CAAE,IAAI,CAAC;IAEtD,OAAO,yBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAiC,CAAC,CAAC,CAAC,sBAAO,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAC,CAAC;AAC5G,CAAC;AALD,oDAKC;AAGD,SAAgB,eAAe,CAAC,YAAqC;;IACjE,IAAM,cAAc,GAAG,MAAoB,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,0CAAE,OAAO,CAAC;IAClF,IAAM,IAAI,SAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,0CAAE,IAAI,CAAC;IACtD,OAAO,yBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAmC,CAAC,CAAC,CAAC,aAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,KAAI,sBAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,sBAAO,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACxM,CAAC;AAJD,0CAIC;AAGD,SAAgB,kBAAkB,CAAC,YAAqC;;IACpE,IAAM,cAAc,GAAG,MAAoB,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,0CAAE,OAAO,CAAC;IAClF,IAAM,IAAI,SAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,0CAAE,IAAI,CAAC;IAEtD,OAAO,yBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAmC,CAAC,CAAC,CAAC,sBAAO,OAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,0CAAE,QAAQ,CAAC,IAAI,sBAAO,OAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,0CAAE,SAAS,CAAC,CAAC;AAC5K,CAAC;AALD,gDAKC;AAGD,SAAgB,mBAAmB,CAAC,YAAmC;;IAEnE,IAAM,cAAc,GAAG,CAAC,oCAAc,CAAC,sBAAsB,CAAC;IAC9D,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,QAAiC,CAAC;WAC3D,CAAC,cAAc,GAAG,CAAC,IAAI,mBAAY,CAAC,cAAc,0CAAE,QAAQ,IAAG,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,CAAC;AACzJ,CAAC;AALD,kDAKC;AAED,SAAgB,WAAW,CAAC,YAAmC;IAC3D,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,KAAkC,CAAC,CAAC;AACzE,CAAC;AAFD,kCAEC;AAGD,SAAgB,mBAAmB,CAAC,YAAmC;IACnE,OAAO,YAAY,CAAC,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAgH;AACrK,CAAC;AAFD,kDAEC;AAGD,SAAgB,kBAAkB,CAAC,YAAmC;IAClE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,MAAgC,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAC;AACrH,CAAC;AAFD,gDAEC;AAGD,SAAgB,sBAAsB,CAAC,YAAmC;IACtE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,MAAoC,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAC;AACzH,CAAC;AAFD,wDAEC;AAGD,SAAgB,mBAAmB,CAAC,YAAmC;IACnE,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,QAAiC,CAAC;WACxD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;AAEnF,CAAC;AAJD,kDAIC;AAGD,SAAgB,uBAAuB,CAAC,YAAmC;IACvE,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,QAAiC,CAAC;WACxD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAE/E,CAAC;AAJD,0DAIC;AAGD,SAAgB,oBAAoB,CAAC,YAA0B;IAC3D,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,MAA8B,CAAC,CAAC;AACrE,CAAC;AAFD,oDAEC;AAGD,SAAgB,mBAAmB,CAAC,YAAmC;;IACnE,OAAO,QAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,0CAAE,QAAQ;WACvC,mBAAmB,CAAC,YAAY,CAAC;WACjC,uBAAuB,CAAC,YAAY,CAAC,CAEvC;AACT,CAAC;AAND,kDAMC;AAKD,SAAgB,UAAU,CAAC,OAAiB,EAAE,SAAmB,EAAE,gBAAyB;IACxF,OAAO,0BAAW,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,gBAAgB,IAAI,4BAAoB,CAAC,CAAC;AACpG,CAAC;AAFD,gCAEC;AAED,SAAgB,kBAAkB,CAAC,UAAsB,EAAE,UAAoB;IAC3E,IAAI,UAAU,EAAE;QAAE,OAAO,IAAI,CAAC;KAAE;IAChC,IAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/H,CAAC;AALD,gDAKC;AAED,SAAgB,mBAAmB,CAAC,MAA0B;IAC1D,IAAI,gBAAgB,GAAqB,IAAI,CAAC;IAE9C,IAAI,MAAM,CAAC,YAAY,EAAE;QACrB,gBAAgB,GAAG;YACf,MAAM,GAAsC;YAC5C,KAAK,EAAE,MAAM,CAAC,YAAY;SAC7B;KACJ;SAAM,IAAI,MAAM,CAAC,IAAI,EAAE;QACpB,gBAAgB,GAAG;YACf,MAAM,GAAqC;YAC3C,KAAK,EAAE,MAAM,CAAC,IAAI;SACrB;KACJ;SAAM,IAAI,MAAM,CAAC,WAAW,EAAE;QAC3B,gBAAgB,GAAG;YACf,MAAM,GAA4C;YAClD,KAAK,EAAE,MAAM,CAAC,WAAW;SAC5B;KACJ;SAAM,IAAI,MAAM,CAAC,GAAG,EAAE;QACnB,gBAAgB,GAAG;YACf,MAAM,GAAoC;YAC1C,KAAK,EAAE,MAAM,CAAC,GAAG;SACpB;KACJ;IAED,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AA1BD,kDA0BC;AAED,SAAgB,kBAAkB,CAAC,EAAyB;IACxD,IAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QACjB,yBAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACpI,gBAAgB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAPD,gDAOC;AAID,SAAgB,gBAAgB,CAAC,CAAsB,EAAE,EAAoB;IACzE,IAAM,GAAG,GAAe,CAAC,CAAC;IAC1B,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QACjB,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC;QACzB,yBAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAChG,GAAG,CAAC,MAAM,GAAG,gBAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAE,CAAC,CAAC,GAAG,yBAAU,EAAE,CAAC,GAAG,CAAC,SAAS,IAAE,CAAC,CAAC,GAAG,yBAAU,CAAC,CAAC;QACrF,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;KACnE;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AATD,4CASC;AAED,SAAgB,qBAAqB,CAAC,EAA4B,EAAE,GAAsB,EAAE,gBAAyB;IACjH,IAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QACjB,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,EAAE;YAC9B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC1B;aAAM;YACH,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC;YAC3B,IAAI,GAAG,CAAC,cAAc,EAAE;gBACpB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACtD,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;gBAO5D,IAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClE,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC5C,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnD,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAEnE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;aACrF;YAED,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;gBACjB,IAAI,sBAAO,CAAC,GAAG,CAAC,KAAK,CAAC;oBAClB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;oBACf,IAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3D,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBAC/G;qBAAM;oBACH,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC;iBAC7B;gBACD,IAAI,yBAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBACpC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBACrG;aACJ;SACJ;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAzCD,sDAyCC;AAED,SAAgB,sBAAsB,CAAC,GAA8B;IACjE,IAAM,GAAG,GAAqB,GAAG,CAAC;IAClC,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QACjB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE;YACjC,GAAG,CAAC,MAAM,GAAQ,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC,YAAY,CAAC;SAC3B;QACD,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,YAAE,IAAI,4BAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,EAA9B,CAA8B,CAAC,CAAC;QAC/E,IAAI,yBAAU,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YAChC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACzD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC/C,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SAClD;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAhBD,wDAgBC;AAID,SAAgB,sBAAsB,CAAC,GAA8B,EAAE,GAAkB;IACrF,IAAM,GAAG,GAAqB,GAAG,CAAC;IAClC,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QACjB,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC;QACvB,yBAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAChG,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAC9C,IAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEpD,GAAG,CAAC,GAAG,GAAG;YACN,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC;YAClC,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;YACxC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;SAC5C,CAAC;QACF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;YACjB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;gBACf,IAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBACxF,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;oBAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;oBACpC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;oBAE9C,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;oBAChD,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBAChC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;oBAEpC,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAE,cAAc,CAAC;iBAC9D;qBACI,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBAC/F,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;oBAC5C,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACtC,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;oBAEhD,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAE,cAAc,CAAC;iBAC9D;qBACI,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBACnF,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBAChC,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;oBAChD,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;iBAGvC;aACJ;SACJ;QAED,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,QAAQ,EAAE;gBAEV,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC1C,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;aACxF;YACD,IAAI,cAAc,EAA2B;gBACzC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC3C,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;aAC1G;YACD,IAAI,aAAa,EAA6B;gBAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;gBACzC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;aACvG;SACJ;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAlED,wDAkEC;AAED,SAAgB,kBAAkB,CAAC,GAA0B;IACzD,IAAM,GAAG,GAAiB,GAAG,CAAC;IAC9B,IAAI,yBAAU,CAAC,GAAG,CAAC,EAAE;QAEjB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE;YACjC,GAAG,CAAC,MAAM,GAAQ,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC,YAAY,CAAC;SAC3B;QAUD,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,aAAG,IAAI,6BAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAhC,CAAgC,CAAC,CAAC;KASrF;IACD,OAAO,GAAG,CAAC;AAEf,CAAC;AA7BD,gDA6BC;AAED,SAAgB,uBAAuB,CAAC,GAAgC;IACpE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAC,IAAI,6BAAsB,CAAC,CAAC,CAAC,EAAzB,CAAyB,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACf,CAAC;AAHD,0DAGC;AAaD,SAAgB,iBAAiB,CAAC,MAAyB,EAAE,SAA6B,EAAE,OAA2B,EAAE,YAAsB;IAE3I,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,UAAU,cAAE,QAAQ,YAAE,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,CAAC;IAE5F,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,UAAU,GAAG,CAAC;QAAE,UAAU,GAAG,CAAC,CAAC;IACnC,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM;QAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhE,IAAI,YAAY,KAAK,IAAI,EACzB;QACI,UAAU,GAAG,UAAU,CAAC;KAC3B;SACI,IAAI,YAAY,KAAK,KAAK,EAC/B;QACI,UAAU,GAAG,UAAU,CAAC;KAC3B;SAED;QACI,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,IAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;KAChE;IAGD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,CAAC;IAEtF,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC;QAAE,UAAU,GAAG,CAAC,CAAC;IACnC,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM;QAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhE,IAAI,YAAY,KAAK,IAAI,EACzB;QACI,QAAQ,GAAG,UAAU,CAAC;KACzB;SACI,IAAI,YAAY,KAAK,KAAK,EAC/B;QACI,QAAQ,GAAG,UAAU,CAAC;KACzB;SAED;QACI,IAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;KAC9D;IAED,IAAI,UAAU,KAAK,MAAM,CAAC,MAAM;QAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,OAAO,EAAE,UAAU,cAAE,QAAQ,YAAE,CAAC;AACpC,CAAC;AAxDD,8CAwDC;AAYD,SAAgB,gBAAgB,CAAC,MAAyB,EAAE,SAA6B,EAAE,OAA2B,EAAE,YAAsB;IAEpI,oEAAoF,EAAnF,0BAAU,EAAE,sBAAuE,CAAC;IAC3F,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1H,CAAC;AAJD,4CAIC;AAYD,SAAgB,UAAU,CAAC,MAAyB,EAAE,SAA6B,EAAE,OAA2B,EAAE,YAAsB;IAE9H,oEAAoF,EAAnF,0BAAU,EAAE,sBAAuE,CAAC;IAC3F,IAAI,GAAG,CAAC;IACR,IAAI,UAAU,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EACpC;QACI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KAC3E;SAED;QACI,GAAG,GAAG,EAAE,CAAC;KACZ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAbD,gCAaC;AAED,SAAgB,KAAK,CAAC,CAAC;IACnB,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QACZ,GAAG,GAAG,IAAI,CAAC;KACd;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AARD,sBAQC;AAAA,CAAC;AAEF,SAAgB,OAAO,CAAC,CAAC;IACrB,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QACZ,GAAG,GAAG,IAAI,CAAC;KACd;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AARD,0BAQC;AAAA,CAAC;AAGF,IAAM,SAAS,GAAa,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAK3D,SAAgB,oBAAoB,CAAC,YAAoB;;IACrD,IAAI,GAAG,GAA+B,IAAI,CAAC;IAC3C,IAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EACpB;QACI,IAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,IAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAM,SAAS,GAAG,sBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,OAAO,KAAK,GAAG,EACnB;YACI,GAAG,GAAG,EAAE,CAAC;YACT,IAAI,EAAE,GAAG,SAAS,CAAC;;gBACnB,KAAiB,4BAAK,4EAAE;oBAAnB,IAAI,IAAI;oBACT,IAAI,EAAE,KAAK,SAAS,EAAE;wBAClB,EAAE,GAAG,IAAI,CAAC;wBACV,SAAS;qBACZ;oBACD,IAAM,KAAK,GAAG,EAAE,CAAC;oBACjB,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC9C,IAAI,EAAE,EACN;wBACI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAChB;yBAED;wBACI,EAAE,GAAG,KAAK,CAAC;qBACd;iBACJ;;;;;;;;;SACJ;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAhCD,oDAgCC;AAsBD,SAAgB,gBAAgB,CAAC,IAAY,EAAE,KAA+B,EAAE,SAA0B;IAA1B,4CAA0B;IAGtG,IAAM,UAAU,GAAG,GAAG,CAAC;IACvB,IAAM,kBAAkB,GAAG,GAAG,CAAC;IAC/B,IAAM,mBAAmB,GAAG,GAAG,CAAC;IAChC,IAAM,kBAAkB,GAAG,GAAG,CAAC;IAG/B,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,EAAE,GAA6B,IAAI,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,EACf;QACI,EAAE,GAAQ,EAAE,UAAU,EAAE,EAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,cAAY,GAAG,KAAK,CAAC;QACzB,IAAI,mBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,kBAAgB,GAAG,KAAK,CAAC;QAE7B,QAAQ,IAAI,CAAC,CAAC,CAAC,EACf;YACI,KAAK,GAAG;gBAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,MAAM;YACvC,KAAK,GAAG;gBAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,MAAM;SAC3C;QAED,QAAQ,IAAI,CAAC,CAAC,CAAC,EACf;YACI,KAAK,GAAG;gBAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,MAAM;YACvC,KAAK,GAAG;gBAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,MAAM;SAC3C;QAED,IAAI,GAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,UAAU,GAAG,CAAE,GAAG,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,CAAE,CAAC;QAEtF,IAAM,WAAW,GAAG,UAAC,CAAS;YAE1B,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC1B,QAAQ,GAAC,EACT;gBACI,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACtC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACtC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACtC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACtC,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;oBAAC,MAAM;aACzC;QACL,CAAC;QAED,IAAM,UAAQ,GAAG,UAAC,CAAS;;YAEvB,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,QAAQ,GAAC,EACT;gBACI,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,YAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,OAAO,KAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,MAAM;gBACzG,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,MAAM;gBAC5F,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,QAAQ,mCAAI,CAAC,CAAC,GAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;oBAAC,MAAM;gBACrG,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,SAAS,mCAAI,CAAC,CAAC,GAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;oBAAC,MAAM;gBACvG,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,SAAS,mCAAI,CAAC,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;oBAAC,MAAM;gBAC/F,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,QAAQ,mCAAI,CAAC,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM;gBACzF,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,QAAQ,mCAAI,CAAC,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM;gBACzF,KAAK,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,QAAQ,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAAC,MAAM;aACjF;QACL,CAAC;QAED,IAAM,gBAAgB,GAAG;YAErB,IAAI,cAAY,EAChB;gBACI,OAAO,GAAC,EAAE,IAAI,CAAC,EACf;oBACI,UAAQ,CAAC,EAAE,CAAC,CAAC;iBAChB;aACJ;iBACI,IAAI,CAAC,mBAAiB,IAAI,CAAC,kBAAgB,EAChD;gBACI,OAAO,GAAC,EAAE,IAAI,CAAC,EACf;oBACI,UAAQ,CAAC,EAAE,CAAC,CAAC;iBAChB;aACJ;QACL,CAAC;QAED,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAC9B;YACI,GAAC,EAAE,CAAC;YAEJ,IAAM,OAAO,GAAG,sBAAO,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;YAC7C,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YACxB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,GAAG,KAAK,UAAU,EACtB;gBACI,IAAI,kBAAgB,EACpB;oBAGI,IAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC/B,IAAI,OAAO,EACX;wBACI,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;4BACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gCACrD,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC;gCAC5C,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;6BAC3C;yBACJ;qBACJ;iBACJ;qBACI,IAAI,mBAAiB,EAC1B;oBAEI,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,QAAQ,EACZ;wBACI,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;4BACvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;gCACtD,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;gCACtD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;6BACjD;yBACJ;qBACJ;iBACJ;qBACI,IAAI,cAAY,EACrB;oBACI,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB;qBAED;oBACI,UAAQ,CAAC,GAAG,CAAC,CAAC;iBACjB;aACJ;YACD,IAAI,GAAG,KAAK,kBAAkB,EAAE;gBAAE,gBAAgB,EAAE,CAAC;gBAAC,cAAY,GAAG,IAAI,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAAC,GAAC,GAAG,CAAC,CAAC;gBAAC,mBAAiB,GAAG,KAAK,CAAC;gBAAC,kBAAgB,GAAG,KAAK,CAAC;aAAE;YAC/K,IAAI,GAAG,KAAK,mBAAmB,EAAE;gBAAE,gBAAgB,EAAE,CAAC;gBAAC,mBAAiB,GAAG,IAAI,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAAC,GAAC,GAAG,CAAC,CAAC;gBAAC,cAAY,GAAG,KAAK,CAAC;gBAAC,kBAAgB,GAAG,KAAK,CAAC;aAAE;YACxM,IAAI,GAAG,KAAK,kBAAkB,EAAE;gBAAE,gBAAgB,EAAE,CAAC;gBAAC,kBAAgB,GAAG,IAAI,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAAC,GAAC,GAAG,CAAC,CAAC;gBAAC,cAAY,GAAG,KAAK,CAAC;gBAAC,mBAAiB,GAAG,KAAK,CAAC;aAAE;SAC1M;QACD,gBAAgB,EAAE,CAAC;KACtB;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAzID,4CAyIC;AAMD,SAAgB,gBAAgB,CAAC,YAAoB;;IACjD,IAAI,GAAG,GAAuB,IAAI,CAAC;IACnC,IAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EACpB;QACI,IAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EACpB;YACI,IAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,IAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAM,SAAS,GAAG,sBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACtF,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,OAAO,KAAK,GAAG,EACnB;gBACI,GAAG,GAAG,EAAE,CAAC;gBACT,IAAI,GAAG,GAAG,SAAS,CAAC;;oBACpB,KAAiB,4BAAK,4EAAE;wBAAnB,IAAI,IAAI;wBACT,IAAI,GAAG,KAAK,SAAS,EAAE;4BACnB,GAAG,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;4BACrD,SAAS;yBACZ;wBACD,IAAM,KAAK,GAAG,GAAG,CAAC;wBAClB,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;wBAC3C,IAAI,GAAG,EACP;4BACI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBACjB;6BAED;4BACI,GAAG,GAAG,KAAK,CAAC;yBACf;qBACJ;;;;;;;;;aACJ;SACJ;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAtCD,4CAsCC;AAmBD,SAAgB,YAAY,CAAC,IAAY,EAAE,KAAuB,EAAE,SAA0B;IAA1B,4CAA0B;;IAG1F,IAAM,uBAAuB,GAAG,GAAG,CAAC;IACpC,IAAM,kBAAkB,GAAG,GAAG,CAAC;IAG/B,SAAS,GAAG,MAAM,CAAC,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,SAAS,IAAI,SAAS,CAAC,CAAC;IAE7D,IAAI,GAAG,GAAqB,IAAI,CAAC;IACjC,IAAI,IAAI,EAAE;QACN,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,UAAU,SAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,SAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,oCAAiC,CAAC;QAEhE,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAiC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnJ,IAAI,KAAK,GAAW,IAAI,CAAC;QACzB,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,GAAG,GAAG;YACvB,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM,GAAG,GAAG,CAAC;YACjC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EACrB;gBACI,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,SAAS,EAAE;oBACX,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,YAAY,GAAG,YAAY,GAAG,CAAE,KAAK,CAAC,CAAC,MAAI,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAG,CAAC,CAAC,CAAC;iBAC/E;aACJ;SACJ;QACD,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAErF,IAAI,yBAAU,CAAC,OAAO,CAAC,IAAI,yBAAU,CAAC,KAAK,CAAC,IAAI,yBAAU,CAAC,YAAY,CAAC,EACxE;YACI,IAAM,cAAc,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,GAAG,GAAqB;gBACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjF,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,QAAQ;gBAClB,UAAU,QAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,mCAAI,CAAC;gBAClC,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,EAAE;aACrB,CAAC;YAEF,IAAI,cAAc,EAClB;gBACI,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC;aACvC;YACD,QAAQ,GAAG,CAAC,QAAQ,EACpB;gBACI;oBACI,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK,GAAC,YAAY,CAAC;oBAC5C,MAAM;gBACV,OAAqC;gBACrC;oBACI,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;oBAC/B,MAAM;gBACV,OAAqC;gBACrC;oBACI,GAAG,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;oBACxB,MAAM;aACb;SACJ;KACJ;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAvED,oCAuEC;;;;;;;;;;;;;;;ACp2BD,6EAA0D;AAC1D,gEAA2C;AAK9B,iCAAyB,GAAG,CAAC,CAAC;AAG9B,2BAAmB,GAAG,EAAE,CAAC;AAGzB,yBAAiB,GAAG,CAAC,CAAC;AAGxB,8BAAsB,GAAG,EAAE,CAAC;AAEvC,UAAU,CAAC,cAAM,qCAAsB,GAAG,yCAAoB,EAA7C,CAA6C,CAAC,CAAC;AAGnD,oBAAY,GAAG,GAAG,CAAC;AAGnB,mBAAW,GAAG,SAAS,CAAC;AAIxB,2BAAmB,GAAG,CAAC,CAAC;AAO1B,oBAAY,GAAG;IACtB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACZ,CAAC;AAEF,SAAgB,aAAa;IACzB,OAAO,0BAAW,CAAC,oBAAY,CAAC,CAAC;AACrC,CAAC;AAFD,sCAEC;AAeU,qBAAa,GAAG;IACvB,EAAE,SAAS,EAAE,qGAAqG,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;CACzL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DF,sEAAgD;AAEhD,uDAAiC;AAIjC;IAA0C,wCAA8B;IAAxE;;IAyCA,CAAC;IAvCG,4CAAa,GAAb,UAAc,OAAiB;QAC3B,iBAAM,aAAa,YAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAM,EAAE,GAAG,gBAAM,CAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAErC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACpD;IACL,CAAC;IACL,2BAAC;AAAD,CAAC,CAzCyC,6BAAa,GAyCtD;AAzCY,oDAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNjC,uDAA6E;AAC7E,uGAA4E;AAC5E,uEAAuG;AACvG,oEAA8C;AAG9C;IAAmC,iCAAY;IAA/C;;IA8CA,CAAC;IA5CU,kBAAI,GAAX,UAAY,CAAS;QACjB,OAAsB,CAAC,CAAC;IAC5B,CAAC;IAED,4BAAI,GAAJ,UAAK,UAA4C;QAC7C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gCAAQ,GAAR,UAAS,aAAoD;QACzD,IAAI,aAAa,YAAY,cAAI,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,qBAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SACxD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAa,GAAb,UAAc,SAAiD;QAAjD,4CAAiD;QAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,OAAO,SAAS,KAAK,UAAU;YAC/B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,WAAC,IAAI,gBAAS,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qCAAa,GAAb,UAAc,SAAiD;QAAjD,4CAAiD;QAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QACrC,IAAI,OAAO,SAAS,KAAK,UAAU;YAC/B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAC,IAAI,gBAAS,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAS,GAAT,UAAU,KAAa;QACnB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,oCAAY,GAAZ,UAAa,KAAa,EAAE,KAAsB,EAAE,MAAwB;QACxE,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACpE,OAAO,IAAI,CAAC;IAChB,CAAC;IA7CQ,aAAa;QADzB,8BAAW,CAAC,gBAAM,CAAC;OACP,aAAa,CA8CzB;IAAD,oBAAC;CAAA,CA9CkC,2BAAY,GA8C9C;AA9CY,sCAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN1B,uDAAgF;AAGhF,gEAAuD;AAavD,gBAAM,CAAC,WAAW,CAAC;IAYf,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,WAAC,IAAM,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAGH,IAAM,KAAK,GAAG,CAAC,iBAAO,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;AAGpD;IAA2C,gCAAS;IAApD;;IAmCA,CAAC;IA/BW,8BAAO,GAAf,UAAgB,GAAU;QACtB,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,6BAAM,GAAN;QACI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5B,CAAC;IAEO,qCAAc,GAAtB;QACI,IAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAO,CAAC,SAAS,GAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC;YAE9F,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;YAClD,IAAG,KAAK,EAAE;gBAEN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAO,CAAC,SAAS,CAAC,GAAG,YAAU,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,MAAG,CAAC;aACzF;iBAAM;gBAEH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAO,CAAC,SAAS,CAAC,IAAI,cAAY,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,MAAG,CAAC;aAC5F;SACJ;IACL,CAAC;IAED,kCAAW,GAAX,UAAY,KAAc,EAAE,KAAsB,EAAE,MAAwB,EAAE,QAAkB;QAAhG,iBAMC;QALG,yBAAU,CAAC,KAAK,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,EAAlC,CAAkC,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAlCQ,YAAY;QADxB,0BAAW,CAAC,gBAAM,CAAC;OACP,YAAY,CAmCxB;IAAD,mBAAC;CAAA,CAnC0C,gBAAM,GAmChD;AAnCY,oCAAY;;;;;;;;;;;;;;;;;;AClCzB,uDAA6B;;;;;;;;;;;;;;;ACD7B,yDAA+C;AAGlC,iCAAyB,GAAG,IAAI,qBAAc,CAAC,yBAAyB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHvF,yDAA0G;AAC1G,2DAA6C;AAE7C,uDAAmC;AACnC,sEAAgD;AAEhD,6FAAkG;AAClG,gEAAoF;AAEpF,iDAAkC;AAElC;IAA4C,0CAAgB;IAA5D;QAAA,qEA+IC;QA3ImC,mBAAa,GAAG,IAAI,mBAAY,EAAW,CAAC;QAM5D,aAAO,GAAG,IAAI,mBAAW,EAAE,CAAC;;IAqIhD,CAAC;IAnIG,sBAAI,gDAAY;aAAhB,sBAAuC,aAAO,IAAI,CAAC,QAAQ,0CAAE,aAAa,CAAC,CAAC,CAAC;;;OAAA;IAM7E,yCAAQ,GAAR;QACI,kBAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,iBAAM,QAAQ,WAAE,CAAC;IACrB,CAAC;IAED,gDAAe,GAAf;QAAA,iBAQC;QAPG,iBAAM,eAAe,WAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAC,CAAgB,IAAK,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC,CAAC;YACtG,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAArB,CAAqB,CAAC,CAAC;YAC1F,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,UAAC,CAAa,IAAK,YAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAtB,CAAsB,CAAC,CAAC;SAC5G;IACL,CAAC;IAED,2CAAU,GAAV,UAAW,IAAY;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAM1B;gBACI,IAAM,OAAO,GAAG,IAAI,CAAC;gBACrB,IAAM,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,GAAG,GAAG,IAAI,CAAC;gBACf,IAAI,GAAG,GAAG,IAAI,CAAC;gBACf,IAAI,WAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,IAAG,CAAC,EAAE;oBACxB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACrB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBACxB;gBACD,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC1C,GAAG,GAAG,IAAI,CAAC;oBACX,GAAG,GAAG,IAAI,CAAC;iBACd;gBAMD,IAAI,GAAG,IAAI,GAAG,EAAE;oBACZ,GAAG,GAAG,IAAI,iBAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC9B,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;oBACtB,GAAG,CAAC,OAAO,GAAM,GAAG,SAAI,GAAK,CAAC;iBACjC;aACJ;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,mEAAkC,GAAlC;;QACI,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAI,CAAC,YAAY,0CAAE,KAAK,YAAI,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,0CAAS,GAAhB,UAAiB,CAAgB;QAC7B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YACtC,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC;aAC5C;SACJ;IACL,CAAC;IAKD,sBAAW,2CAAO;aAAlB,cAAgC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACvD,UAAmB,KAAc;;YAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;gBACzB,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,EAAE,CAAC;gBACzC,UAAI,IAAI,CAAC,QAAQ,0CAAE,oBAAoB,EAAE;oBACrC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;iBAC/C;qBACI;oBACD,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;iBAChC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1C;QACL,CAAC;;;OAdsD;IAgBhD,2CAAU,GAAjB,UAAkB,OAAiB;;QAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,UAAI,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC7B;aAAM;YACH,UAAI,CAAC,OAAO,0CAAE,sBAAsB,GAAG;SAC1C;QACD,IAAS,OAAO,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SAC1B;QACD,UAAI,IAAI,CAAC,QAAQ,0CAAE,oBAAoB,EAAE;YAGrC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1E,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;SAC3B;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,sCAAK,GAAZ;QACI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,sCAAK,GAAZ;QACI,2BAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAEM,2CAAU,GAAjB,UAAkB,KAAc;QAAhC,iBASC;QARG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC;SAC5C;aACI,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YACpC,UAAU,CAAC,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,EAAE,GAAG,CAAC,CAAC;SACvC;IACL,CAAC;IA3IkB;QAAlB,YAAK,CAAC,UAAU,CAAC;;4DAA0C;IAEnC;QAAxB,aAAM,CAAC,eAAe,CAAC;;iEAAoD;IAEzD;QAAlB,YAAK,CAAC,UAAU,CAAC;;4DAAmB;IAEF;QAAlC,qBAAM,CAAC,8CAAyB,CAAC;;kEAAoC;IAGlD;QAAnB,gBAAS,CAAC,OAAO,CAAC;kCAAW,iBAAU;4DAAC;IAoI7C,6BAAC;CAAA,CA/I2C,+BAAgB,GA+I3D;AA/IY,wDAAsB;;;;;;;;;;;;;;;;;;ACXnC,+DAAoC;AACpC,0DAAgC;AAChC,sDAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF5B,yDAA2C;AAC3C,iDAAkC;AAClC,gEAAqC;AAErC,gEAAsF;AACtF,mEAAmD;AAGnD,0EAAsE;AAEtE,+EAA0D;AAK1D;IAAmC,iCAAkB;IAArD;;IAyHA,CAAC;IAvHG,0CAAkB,GAAlB,UAAoC,CAA6B;QAC7D,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,KAAK,EAAE;YACpB,GAAG,GAAG,CAAC,CAAC;SACX;aAAM,IAAI,CAAC,EAAE;YACV,KAAK,IAAI,QAAQ,IAAI,CAAC,EAAE;gBACpB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;oBACnD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;wBAChB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACzB;iBACR;aACJ;SACA;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAUD,+BAAO,GAAP,UAAQ,MAAwB;QAM5B,OAAO,IAAI,CAAC,QAAQ,CAAC,iCAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAOD,gCAAQ,GAAR,UAAS,MAAyB;QAM9B,OAAO,IAAI,CAAC,QAAQ,CAAC,iCAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAiBD,mCAAW,GAAX,UAAY,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG;QACzB,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC9B,IAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAM,MAAM,GAAG,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,kCAAgB,CAAC,MAAM,EAAE;iBACrC,cAAc,CAAM,UAAU,CAAC,CAAC;iBACpC,IAAI,CAAC,eAAG,CAAC,WAAC,IAAI,6BAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAArB,CAAqB,CAAC,CAAC,CAAC;SAC9C;aAAM;YACH,IAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAM,UAAU,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,iCAAe,CAAC,MAAM,EAAE;iBACvC,WAAW,CAAC,UAAU,IAAI,6BAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACzD,gBAAgB,CAAC,6BAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;iBACtD,WAAW,EAAE;iBACb,kBAAkB,EAAE;iBACpB,SAAS,CAAC,KAAK,CAAC;iBAChB,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;SAChC;IACL,CAAC;IAQD,gCAAQ,GAAR,UAAS,EAAU,EAAE,MAAe;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAoB,kCAAgB;aACnD,MAAM,CAAC,MAAM,CAAC;aACd,UAAU,CAAC,SAAS,CAAC;aACrB,WAAW,EAAE;aACb,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAG,CAAC,WAAC;YACnB,IAAI,GAAG,GAAG,IAAI,CAAC;YAEf,IAAI,yBAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;gBACxB,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;aACrC;YACD,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IASD,iCAAS,GAAT,UAAU,MAAgC,EAAE,WAAqC,EAC7E,SAAwC,EAAE,KAAoC;QAC9E,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IA7FD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;yCACjD,iCAAe;wCAAG,iBAAU;gDAO5C;IAOD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;yCACjD,kCAAgB;wCAAG,iBAAU;iDAO9C;IA6CD;QADC,wBAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;;wCAC5B,iBAAU;iDAehD;IA3GQ,aAAa;QAHzB,iBAAU,EAAE;QACZ,yBAAU,EAAE;QACZ,yBAAU,CAAC,+BAA+B,CAAC;OAC/B,aAAa,CAyHzB;IAAD,oBAAC;CAAA,CAzHkC,kCAAkB,GAyHpD;AAzHY,sCAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf1B,gEAAiD;AAEjD,uDAAmD;AACnD,+EAA0D;AAO1D;IAEI,6BAAY,MAAqC;QASjD,WAAM,GAA8B,QAAQ,CAAC;QAE7C,uBAAiB,GAAY,wBAAS,CAAC,WAAW,CAAC;QAV/C,6BAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,6BAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpF,qBAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IAmBD,kCAAI,GAAJ,UAAK,KAAwB,IAAU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClE,wCAAU,GAAV,UAAW,GAAW,IAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACtF,wCAAU,GAAV,UAAW,MAAiC,IAAU,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1F,sCAAQ,GAAR,UAAS,IAAY,IAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACrH,gDAAkB,GAAlB,UAAmB,cAA8B;QAA9B,sDAA8B;QAAU,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAChJ,2CAAa,GAAb,UAAc,SAAyB;QAAzB,4CAAyB;QAAU,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACvH,6CAAe,GAAf,UAAgB,WAA2B;QAA3B,gDAA2B;QAAU,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACjI,yCAAW,GAAX,UAAY,IAAoD,EAAE,SAAkB;QAAxE,uCAAoD;QAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,aAAW,IAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;QACD,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,0BAAC;AAAD,CAAC;AA7CY,kDAAmB;AAiDhC;IAAqC,mCAAmB;IAYpD,yBAAY,MAAiC,EAAE,CAAU;QAAzD,YACI,kBAAM,MAAM,CAAC,SAEhB;QAeD,aAAO,GAAU,CAAC,CAAC;QAhBf,KAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAI,CAAC,CAAC,CAAC;;IACzB,CAAC;IAbM,sBAAM,GAAb,UAAc,MAAiC,EAAE,CAAU;QACvD,IAAI,GAAG,GAAoB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,YAAY,eAAe,CAAC,EAAE;YACtC,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACxC;aAAM;YACH,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;SACtB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAkCD,mCAAS,GAAT,UAAU,CAAS,IAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACvD,qCAAW,GAAX,UAAY,OAAe,IAAU,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1G,qCAAW,GAAX,UAAY,OAAuB;QAAvB,wCAAuB;QAAU,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAC7G,mCAAS,GAAT,UAAU,KAAa,IAAU,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9F,0CAAgB,GAAhB,UAAiB,YAAoB,IAAU,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACzI,wCAAc,GAAd,UAAe,UAAkB,IAAU,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjI,sBAAC;AAAD,CAAC,CAlDoC,mBAAmB,GAkDvD;AAlDY,0CAAe;AAoD5B;IAAsC,oCAAmB;IAYrD,0BAAY,MAAkC,EAAE,UAAqC;QAArF,YACI,kBAAM,MAAM,CAAC,SAEhB;QAQD,cAAQ,GAA4B,GAAG,CAAC;QATpC,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;IACpC,CAAC;IAbM,uBAAM,GAAb,UAAc,MAAkC,EAAE,UAAqC;QACnF,IAAI,GAAG,GAAqB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE;YACvC,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAClD;aAAM;YACH,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;SAClC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAkBD,iCAAM,GAAN,UAAO,EAAU,EAAE,IAAmC;QAAnC,iCAAmC;QAClD,IAAI,EAAE,EAAE;YACJ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,GAAG,CAAC;SAC/B;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yCAAc,GAAd,UAAe,UAAoC;QAC/C,IAAI,UAAU,EAAE;YACZ,IAAM,EAAE,GAAG,gBAAM,CAAM,UAAU,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;SACrB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,uBAAC;AAAD,CAAC,CA/CqC,mBAAmB,GA+CxD;AA/CY,4CAAgB;;;;;;;;;;;;;;;;;;AC/G7B,2DAAgC;AAChC,0DAAgC;AAChC,gEAAsC;AACtC,6DAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHnC,kFAA4D;AAI5D;IAAmC,iCAAkC;IAArE;QAAA,qEAuBC;QAjBG,mBAAa,GAAY,IAAI,CAAC;;IAiBlC,CAAC;IAfU,oBAAM,GAAb,UAAc,MAAgE,EAAE,IAAa;QACzF,IAAI,GAAG,GAAkB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,YAAY,aAAa,CAAC,EAAE;YACpC,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACzC;aAAM;YACH,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;SAC/B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,gCAAQ,GAAR,UAAS,IAAa,IAAmB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAGzE,wCAAgB,GAAhB,UAAiB,aAAqB,IAAmB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/G,oBAAC;AAAD,CAAC,CAvBkC,yCAAmB,GAuBrD;AAvBY,sCAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJ1B,gEAAwD;AAGxD,4EAAsD;AAEtD,kFAA6D;AAG7D;IAAuF,uCAAyB;IAY5G,6BAAY,MAA+E,EAAE,IAAa;QAA1G,YACI,iBAAO,SAWV;QAGD,gBAAU,iBAAwC;QASlD,aAAO,GAAY,IAAI,CAAC;QAGxB,WAAK,GAAY,EAAE,CAAC;QAzBhB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC5B,KAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC5B;QAAC,IAAI,sBAAO,CAAC,MAAM,CAAC,EAAE;YACnB,KAAI,CAAC,UAAU,GAAgB,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpD;aAAM;YACH,qBAAM,CAAC,KAAI,EAAE,MAAM,CAAC,CAAC;SACxB;QACD,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAI,CAAC,UAAU;YAAE,KAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAClD,KAAI,CAAC,IAAI,GAAG,IAAI,IAAI,KAAI,CAAC,IAAI,CAAC;;IAClC,CAAC;IAtBM,gCAAY,GAAnB,UAAkE,MAA+E,EAAE,IAAa;QAC5J,IAAI,GAAG,GAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,MAAM,YAAY,mBAAmB,CAAC,EAAE;YAC1C,GAAG,GAAY,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACxD;aAAM;YACH,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;SAC/B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAgED,4CAAc,GAAd;QAAe,oBAAyB;aAAzB,UAAyB,EAAzB,qBAAyB,EAAzB,IAAyB;YAAzB,+BAAyB;;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAClD,OAAqB,IAAI,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR,UAAS,IAAY,IAAU,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE3F,0CAAY,GAAZ,UAAa,SAAiB,IAAU,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAEzG,yCAAW,GAAX,UAAY,OAAe,IAAU,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE3F,yCAAW,GAAX,cAAsB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE5D,uCAAS,GAAT,UAAU,KAAa,IAAU,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAUnE,sCAAQ,GAAR,UAAS,IAAuC,EAAE,MAAe;QAG7D,IAAI,CAAC,IAAI,GAAG,6BAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,sBAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAUD,2CAAa,GAAb,UAAc,SAAgD;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC;QAErB,IAAI,CAAC,SAAS,GAAG,6BAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;IASD,0CAAY,GAAZ,UAAa,QAA+C;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC;QAEtB,OAAO,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YAEtD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC9B;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,6BAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yCAAW,GAAX,UAAY,OAAe;QACvB,IAAI,OAAO,EAAE;YAKT,IAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAM,IAAI,GAAG,eAAa,IAAI,SAAI,IAAI,UAAK,IAAI,SAAI,IAAI,UAAK,IAAI,SAAI,IAAI,UAAK,IAAI,SAAI,IAAI,UAAK,IAAI,SAAI,IAAI,OAAI,CAAC;YAC/G,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC/B;QACG,OAAO,IAAI,CAAC;IAChB,CAAC;IAEL,0BAAC;AAAD,CAAC,CA9JsF,mCAAgB,GA8JtG;AA9JY,kDAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRhC,yDAAsP;AACtP,4EAA2D;AAE3D,uDAAqP;AACrP,4EAA+E;AAC/E,gEAAgK;AAChK,8DAAkD;AAClD,mFAA6D;AAC7D,2FAAyG;AAEzG,mFAAuF;AACvF,4EAAqE;AAErE,yEAAiD;AACjD,0FAA+F;AAC/F,mEAA6C;AAC7C,0FAAsD;AACtD,2DAA2C;AAyC3C,SAAgB,cAAc,CAAC,CAAkB;IAC7C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAFD,wCAEC;AA+DD,wBAAS,CAAC,iBAAiB,CAAC,CAAC;AAM7B;IA2LI,sBAAmB,OAAyB,EAChC,EAAc,EACd,cAAiC,EAClC,aAA+B,EACK,cAAkC;QAJ9D,YAAO,GAAP,OAAO,CAAkB;QAChC,OAAE,GAAF,EAAE,CAAY;QACd,mBAAc,GAAd,cAAc,CAAmB;QAClC,kBAAa,GAAb,aAAa,CAAkB;QACK,mBAAc,GAAd,cAAc,CAAoB;QAvKzE,6BAAwB,GAA4B;YACxD,KAAK,EAAE,CAAC,CAAC;YACT,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACtB,CAAC;QAcM,6BAAwB,GAAiC;YAC7D,QAAQ,EAAE,aAAa;SAC1B,CAAC;QAcM,4BAAuB,GAA2B;YACtD,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,KAAK;SAClB,CAAC;QACM,wBAAmB,GAA2B,IAAI,CAAC,uBAAuB,CAAC;QAa3E,iCAA4B,GAAgC;YAChE,KAAK,EAAE,KAAK;SACf,CAAC;QACM,6BAAwB,GAAgC,IAAI,CAAC,4BAA4B,CAAC;QAa1F,8BAAyB,GAA6B;YAC1D,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,QAAQ;YACd,qBAAqB,EAAE,+CAA+C;YACtE,sBAAsB,EAAE,iDAAiD;YACzE,mBAAmB,EAAE,WAAW;YAChC,qBAAqB,EAAE,EAAE;YACzB,eAAe,EAAE,MAAM;YACvB,MAAM,EAAE,WAAW;YACnB,uBAAuB,EAAE,IAAI;YAC7B,4BAA4B,EAAE,KAAK;YACnC,eAAe,EAAE,KAAK;SACzB,CAAC;QAcM,2BAAsB,GAA0B;YACpD,KAAK,EAAE,CAAC;SACX,CAAC;QACM,uBAAkB,GAA0B,IAAI,CAAC,sBAAsB,CAAC;QAaxE,6BAAwB,GAA4B;YACxD,KAAK,EAAE,KAAK;SACf,CAAC;QACM,yBAAoB,GAA4B,IAAI,CAAC,wBAAwB,CAAC;QAWtF,cAAS,GAAe,EAAE,CAAC;QACV,WAAM,GAAgB,EAAE,CAAC;QAE1C,oBAAe,GAAe,EAAE,CAAC;QACV,iBAAY,GAAgB,EAAE,CAAC;QAExB,wBAAmB,GAAY,KAAK,CAAC;QAI7C,eAAU,GAAG,IAAI,mBAAY,EAAO,CAAC;QAEvC,aAAQ,GAAG,IAAI,mBAAY,EAAqB,CAAC;QAG1C,oBAAe,GAAG,IAAI,mBAAY,EAAsB,CAAC;QAE5E,cAAS,GAAY,EAAE,CAAC;QACxB,OAAE,GAAG,kBAAG,EAAE,CAAC;QAOX,gBAAW,GAAmB,EAAE,CAAC;QAGjC,8BAAyB,GAAM,IAAI,CAAC,EAAE,2BAAwB,CAAC;QAEtD,iBAAY,GAAW,cAAY,CAAC,eAAe,CAAC;QAajE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAG3C,IAAI,OAAO,GAAG,6BAAa,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,SAAS,GAAG,IAAI,0CAA2B,CAC5C;YACI,SAAS,EAAE,IAAI;YACf,aAAa,EACb;gBACI,QAAQ;gBACR,cAAc;gBACd,sBAAsB;gBACtB,sBAAsB;gBACtB,qBAAqB;gBACrB,0BAA0B;gBAC1B,uBAAuB;gBACvB,oBAAoB;gBACpB,sBAAsB;aACzB;SACJ,CAAC,CAAC;IACX,CAAC;qBAzNQ,YAAY;IAYrB,sBAAI,6BAAG;aAAP,cAAiB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAC,CAAC;;;OAAA;IAqB1C,sBAAI,+CAAqB;aAAzB,UAA0B,KAAiD;YACvE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;iBAC/E,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;;gBAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACnE,CAAC;;;OAAA;IAWD,sBAAI,+CAAqB;aAAzB,UAA0B,KAAiD;YACvE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;iBAC/E,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;;gBAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACnE,CAAC;;;OAAA;IAaD,sBAAI,8CAAoB;aAAxB,UAAyB,KAAgD;YACrE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;iBAC7E,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;;gBAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACjE,CAAC;;;OAAA;IAWD,sBAAI,mDAAyB;aAA7B,UAA8B,KAAqD;YAC/E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,wBAAwB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;iBACvF,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;;gBAClE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,4BAA4B,CAAC;QAC3E,CAAC;;;OAAA;IAsBD,sBAAI,gDAAsB;aAA1B,UAA2B,KAAkD;YACzE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;iBACjF,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;;gBAC/D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACrE,CAAC;;;OAAA;IAWD,sBAAI,6CAAmB;aAAvB,UAAwB,KAA+C;YACnE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;iBAC3E,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;gBAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC/D,CAAC;;;OAAA;IAWD,sBAAI,+CAAqB;aAAzB,UAA0B,KAAiD;YACvE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;iBAC/E,IAAI,CAAC,mBAAI,CAAM,KAAK,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;;gBAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACnE,CAAC;;;OAAA;IAwED,kCAAW,GAAX;;QACI,UAAI,CAAC,eAAe,0CAAE,UAAU,GAAG;QACnC,UAAI,CAAC,SAAS,0CAAE,OAAO,GAAG;IAC9B,CAAC;IAED,kCAAW,GAAX,UAAY,CAAC;QACT,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACvC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAEV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3B;YACD,IAAI,CAAC,CAAC,YAAY,EAAE;gBAEhB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACrC;YACD,IAAI,CAAC,CAAC,oBAAoB,EAAE;gBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;SACJ;IACL,CAAC;IAED,sBAAI,kCAAQ;aAAZ;YACI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAED,mCAAY,GAAZ,UAAa,MAAgB;;QAA7B,iBAiGC;QAhGG,IAAI,MAAM,EAAE;YACR,IAAM,KAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,KAAG;gBAAE,OAAO;YAEjB,IAAI,gBAAc,CAAC;YAEnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAmB,CAAC,KAAG,CAAE,CAAC,aAAa,CAAC,CAAC;YAE9E,IAAM,aAAa,GAAG,UAAC,OAAgB,EAAE,cAAiC;gBACtE,IAAI,GAAG,GAAG,OAAO,CAAC;gBAClB,IAAI,OAAO,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;oBACvD,KAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC3B,GAAG,GAAG,IAAI,CAAC;iBACd;gBACD,OAAO,GAAG,CAAC;YACf,CAAC;YAED,IAAM,UAAU,GAAG,UAAC,MAAyB,EAAE,OAAsB;gBACjE,IAAI,gBAAc,KAAK,MAAM,EAAE;oBAC3B,IAAM,SAAO,GAAG,OAAO,EAAE,CAAC;oBAC1B,IAAI,SAAO,EAAE;wBACT,gBAAc,CAAC,QAAQ,IAAI,SAAO,CAAC,WAAW,CAAM,gBAAc,CAAC,QAAQ,CAAC,CAAC;wBAC7E,SAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;qBACtB;iBACJ;YACL,CAAC;YAGD,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAChG,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpF,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACvF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpF,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE9E,IAAM,eAAe,GAAG;gBACpB,IAAI,CAAC,wBAAwB;gBAC7B,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,oBAAoB;gBACzB,IAAI,CAAC,qBAAqB;gBAC1B,IAAI,CAAC,oBAAoB;gBACzB,IAAI,CAAC,kBAAkB;gBACvB,IAAI,CAAC,oBAAoB;aAC5B,CAAC;;gBAEF,KAAuB,iCAAe,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAhB,CAAgB,CAAC,CAAC,OAAO,CAAC,WAAC,IAAI,6BAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAlC,CAAkC,CAAC,CAAC,OAAO,EAAE,6CAAE;oBAA3H,gBAAc;oBAGf,UAAU,CAAC,IAAI,CAAC,wBAAwB,EACpC;wBACI,IAAM,GAAG,GAAsB,CAAC,KAAI,CAAC,kBAAkB,GAAG,KAAI,CAAC,kBAAkB,IAAI,+BAAU,CAAM,gBAAc,CAAC,CAAC,CAAC;wBACtH,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,wBAAS,CAAC,OAAO,CAAO,gBAAe,CAAC,OAAO,CAAC,CAAC;wBACvE,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,wBAAS,CAAC,OAAO,CAAO,gBAAe,CAAC,QAAQ,CAAC,CAAC;wBACzE,OAAO,GAAG,CAAC;oBACf,CAAC,CAAC,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAM,QAAC,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,aAAa,IAAI,iBAAO,CAAC,KAAK,CAAM,gBAAc,CAAC,CAAC,EAA/E,CAA+E,CAAC,CAAC;oBAC5H,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,cAAM,QAAC,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,IAAI,iBAAO,CAAC,MAAM,CAAC,gBAAc,CAAC,CAAC,EAA7E,CAA6E,CAAC,CAAC;oBAC3H,UAAU,CAAC,IAAI,CAAC,qBAAqB,EACjC;wBACI,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE;4BACvB,KAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,eAAe,CAAC,gBAAc,CAAC,CAAC;4BAC/D,KAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;4BAClC,KAAG,CAAC,EAAE,CAAC,wBAAwB,EAC3B,WAAC;gCACG,KAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gCACnD,KAAK,IAAI,CAAC,IAAI,KAAG,CAAC,SAAS,CAAC,EAAE;oCAC1B,IAAM,CAAC,GAAG,KAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC5B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;wCAChE,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;qCACvC;iCACJ;4BACL,CAAC,CAAC,CAAC;yBACV;wBAC0B,KAAI,CAAC,eAAe,CAAC,OAAQ,CAAC,qBAAqB,GAAG,wBAAS,CAAC,OAAO,CAAO,gBAAe,CAAC,qBAAqB,CAAC,CAAC;wBACrH,KAAI,CAAC,eAAe,CAAC,OAAQ,CAAC,sBAAsB,GAAG,wBAAS,CAAC,OAAO,CAAO,gBAAe,CAAC,sBAAsB,CAAC,CAAC;wBAClJ,OAAO,KAAI,CAAC,eAAe,CAAC;oBAChC,CAAC,CAAC,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAChC;wBACI,IAAI,CAAC,KAAI,CAAC,cAAc,EAAE;4BACtB,IAAM,aAAa,GAAG,yBAAU,CAAC,GAAG,CAAC,sCAAyB,CAAC,CAAC;4BAChE,IAAI,aAAa,EAAE;gCACf,KAAI,CAAC,cAAc,GAAG,iCAAgB,CAAC,KAAI,EAAE,aAAa,EAAO,gBAAc,CAAC,CAAC;6BACpF;yBACJ;wBACD,OAAO,KAAI,CAAC,cAAc,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAM,YAAI,CAAC,YAAY,EAAjB,CAAiB,CAAC,CAAC;oBAC7D,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAChC,cAAM,QAAC,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc;wBAC5C,iBAAO,CAAC,MAAM,CAAC,KAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EADpE,CACoE,CAAC,CAAC;iBACnF;;;;;;;;;SACJ;aAAM;YACH,uBAAQ,CAAC,cAAM,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAvB,CAAuB,EAAE,GAAG,EAAK,IAAI,CAAC,EAAE,kBAAe,CAAC,CAAC;SAC3E;IACL,CAAC;IAED,+BAAQ,GAAR;QAAA,iBA4DC;;QA3DG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,CAAC,YAAY,GAAkB,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1C,sCAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAGpB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,6BAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAEvI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,EACzB,UAAC,CAAM;YACH,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACb,KAAI,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBAEhC,KAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,6BAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;aACpH;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,cAAM,YAAI,CAAC,YAAY,EAAE,EAAnB,CAAmB,CAAC,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EACf,UAAC,CAAoB;YACjB,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACf,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,UAAU,CAAC;;;oBACH,IAAI;wBACA,IAAI,KAAI,CAAC,QAAQ,EAAE;4BACf,IAAI,KAAI,CAAC,mBAAmB,WAAI,KAAI,CAAC,gBAAgB,0CAAE,cAAc,GAAE;gCACnE,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;6BACnD;4BACD,KAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;gCACnB,KAAmB,uBAAI,CAAC,WAAW,6CAAE;oCAAhC,IAAI,MAAM;oCACX,MAAM,EAAE,CAAC;iCACZ;;;;;;;;;yBACJ;qBACJ;4BAAS;wBACN,KAAI,CAAC,WAAW,GAAG,EAAE,CAAC;wBACtB,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;qBACzB;gBACL,CAAC,EACD,GAAG,CAAC,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,OAAC,IAAI,CAAC,gBAAgB,0CAAE,cAAc,CAAC,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAI,CAAC,gBAAgB,0CAAE,cAAc,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAC5E,UAAC,CAAoB;gBACjB,IAAI,KAAI,CAAC,QAAQ,EAAE;oBACf,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,IAAI,KAAI,CAAC,mBAAmB,EAAE;wBAC1B,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;qBACnD;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,kCAAW,GAAX,UAAY,MAAkB;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjC;IACL,CAAC;IAGK,qCAAc,GAApB,UAAqB,MAAwB,EAAE,YAAoB;;;;;;;wBACzD,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBAC7C,WAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,sBAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;;wBAAxG,GAAG,GAAG,SAAkG;6BACxG,KAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,aAAY,uBAAa,GAApC,cAAoC;wBACpC,WAAM,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE;;wBAA9C,SAA8C,CAAC;;;wBAEnD,IAAI,GAAG,EAAE;4BACL,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;yBACvB;wBACD,IAAI,cAAO,IAAI,CAAC,gBAAgB,0CAAE,iBAAiB,MAAK,UAAU,EAAE;4BAC1D,EAAE,GAAG,CAAC,yBAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;4BAC7K,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;yBAC3E;wBAED,WAAO,GAAG,EAAC;;;;KACd;IAGD,qCAAc,GAAd,UAAe,MAA4C,EAAE,SAAmB,EAAE,KAAc,EAAE,YAAsB,EAAE,0BAA0D;QAApL,iBAyIC;;QAvIG,IAAM,gBAAgB,GAAG,CAAC,0BAA0B,IAAI,OAAO,0BAA0B,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7J,IAAM,QAAQ,SAAG,CAAC,OAAO,0BAA0B,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,CAAC,mCAAI,KAAK,CAAC;QACvI,IAAM,SAAS,SAAG,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,mCAAI,CAAC,QAAQ,CAAC;QAE3D,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,eAAe,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAC,IAAI,QAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAlC,CAAkC,CAAC,CAAC;SAC/D;QACD,IAAI,EAAE,GAAG,gBAAM,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,GAAG,GAAW,IAAI,CAAC;QACvB,IAAI,YAAY,GAAG,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,YAAY,CAAC;QAClD,KAAK,GAAG,KAAK,IAAK,MAA0B,CAAC,KAAK,CAAC;QAGnD,IAAI,QAAO,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,WAAW,MAAK,UAAU,EAAE;YACrD,IAAM,CAAC,GAA4B;gBAC/B,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,EAAE;gBACV,SAAS;gBACT,KAAK;gBACL,YAAY;gBACZ,YAAY;aACf,CAAC;YACF,IAAM,EAAE,GAAG,CAAC,yBAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC7I,IAAI,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjD,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACf,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YACxB,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAChB,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;YAC9B,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;YAC9B,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;SACjB;QAED,IAAI,CAAC,GAAG,EAAE;YACN,GAAG,GAAG,6BAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,SAAS,EAAE;gBACX,GAAG,GAAI,GAAqB,CAAC,aAAa,CAAC,YAAE;oBACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACf,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;wBACtB,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAK,CAAC,CAAC;wBAEjF,KAAI,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,WAAC;4BACvD,IAAI,CAAC,CAAC,OAAO,EAAE;gCACX,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gCACvC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;6BAC9B;wBACL,CAAC,CAAC,CAAC;qBACN;oBACD,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,EAAG,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;aACV;SACJ;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QACrB,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAM,YAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,EAAzD,CAAyD,CAAC,CAAC;QACpF,GAAG,CAAC,IAAI,CAAC,KAAK,EACV;YACI,IAAI,SAAS,EAAE;gBAEX,KAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAClB;YACD,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,EAAG,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACP,IAAI,KAAK,EAAE;YACP,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YACrB,IAAI,cAAO,IAAI,CAAC,gBAAgB,0CAAE,iBAAiB,MAAK,UAAU,EAAE;gBAEhE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;aACzC;SACJ;aAAM;YAEH,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YACtB,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAK,EAAE,CAAC,GAAG,SAAI,EAAE,CAAC,GAAK,CAAC,CAAC;YAEnD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,WAAC;gBACxC,IAAI,CAAC,CAAC,OAAO,EAAE;oBACX,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;iBAC9B;YACL,CAAC,CAAC,CAAC;SACN;QACD,IAAI,YAAY,EAAE;YACd,GAAG,CAAC,SAAS,CAAC;gBACV,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;gBAC/B,IAAM,KAAK,GAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,SAAI,GAAG,CAAC,SAAS,CAAC,CAAC,GAAK,CAAC;gBAC5D,QAAQ,CAAC,SAAS,GAAG,qGAE5B,KAAK,IAAI,wBAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,uIAE4C,KAAK,2CAChH,KAAK,aACJ,CAAC;gBACQ,IAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;gBACvC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtC,cAAc,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;gBAC/C,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvC,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;gBAEzC,IAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxD,cAAc,CAAC,SAAS,GAAG,wBAAS,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;gBACvF,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnC,cAAc,CAAC,OAAO,GAAG;oBACrB,KAAI,CAAC,aAAa,EAAE,CAAC;gBACzB,CAAC,CAAC;gBACF,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAE3C,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrD,WAAW,CAAC,SAAS,GAAG,wBAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;gBAClF,WAAW,CAAC,OAAO,GAAG,cAAM,YAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAzB,CAAyB,CAAC;gBACtD,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAExC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC/B,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACrC,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAgB,CAAC;gBAClE,IAAI,OAAO,EAAE;oBACT,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;oBACzF,OAAO,CAAC,OAAO,GAAG;wBACd,IAAM,CAAC,GAAG,MAAM,CAAC,wBAAS,CAAC,OAAO,CAAC,qCAAqC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC9F,IAAI,CAAC,EAAE;4BACH,KAAK,GAAG,CAAC,CAAC;4BACV,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;4BACtB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;4BACjB,6BAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC/B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,EAAG,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;yBAC5D;oBACL,CAAC,CAAC;iBACL;gBACD,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;SACN;QACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,CAAC;IACf,CAAC;IAMD,iCAAU,GAAV,UAAW,QAAyB;QAAzB,2CAAyB;QAChC,IAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACjC,IAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;gBACnC,IAAM,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAkB;oBACtB,GAAG,EAAE,EAAE,CAAC,GAAG;oBACX,GAAG,EAAE,EAAE,CAAC,GAAG;oBACX,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;iBACxB,CAAC,CAAC;aACN;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAKD,oCAAa,GAAb,UAAc,QAAyB;QAAzB,2CAAyB;QACnC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACjC,IAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,SAAS,GAAG,IAAI,CAAC;aACpB;SACJ;QACD,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,iCAAU,GAAV,UAAW,CAAC;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACzB;IACL,CAAC;IAED,mCAAY,GAAZ;QAAA,iBAoCC;QAnCG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACrD,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAEhC,IAAI,CAAC,eAAe,GAAG,gBAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QAChE,kBAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAC9B,WAAW,EACX,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,EAC7E,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,YAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAjB,CAAiB,CAAC,EAA1C,CAA0C,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAjB,CAAiB,CAAC,CAAC;QAE3C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,kCAAc,CAAC,cAAM,YAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAvB,CAAuB,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QAUpD,UAAU,CAAC;YACP,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAGD,kCAAW,GAAX,UAAY,MAAkB,EAAE,MAAgB,EAAE,WAA0C;QACxF,IAAI,SAAS,GAAG,MAAM;aACjB,KAAK,CAAC,WAAC,IAAI,aAAM,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAzD,CAAyD,CAAC;aACrE,UAAU,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,MAAM,CAA+C,EAAxD,CAAwD,CAAC;aACzE,KAAK,CAAM,WAAW,IAAI,EAAE,CAAC;aAC7B,KAAK,CAAC,WAAC,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;aACzB,OAAO,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,KAAK,CAAM,SAAS,CAAC,CAAC;SAC9B;aAAM;YAEH,SAAS,GAAG,MAAM;iBACb,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,UAAU,KAAK,KAAK,EAAtB,CAAsB,CAAC;iBAClC,UAAU,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,MAAM,CAA+C,EAAxD,CAAwD,CAAC;iBACzE,KAAK,CAAM,WAAW,IAAI,EAAE,CAAC;iBAC7B,KAAK,CAAC,WAAC,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;iBACzB,OAAO,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAM,SAAS,CAAC,CAAC;aAC9B;SACJ;IACL,CAAC;IAED,mCAAY,GAAZ,UAAa,eAAyB,EAAE,MAAgB;;QAAxD,iBAkEC;QAjEG,IAAI,MAAM,EAAE;YACR,IAAI,eAAe,EAAE;gBACjB,IAAI,IAAI,CAAC,MAAM,EAAE;oBACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAC,IAAI,2BAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;iBACzG;qBAAM;oBACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;iBACvB;aACJ;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,OAAO;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,sBAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxE,IAAM,aAAa,GAAqB,IAAI,CAAC,SAAS;iBACjD,UAAU,CAAC,WAAC;gBAYT,CAAC,CAAC,MAAM,GAAG;oBACP,IAAI,CAAC,CAAC,UAAU,EAAE;wBACd,uBAAQ,CAAC;4BACD,IAAI,CAAC,CAAC,UAAU,EAAE;gCACd,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;6BACpC;wBACL,CAAC,EACD,CAAC,EACD,KAAI,CAAC,yBAAyB,CAAC,CAAC;qBACvC;gBACL,CAAC,CAAC;gBACF,OAAO,CAAC,CAAC,CAAC,MAAM,CAA+C,CAAC;YACpE,CAAC,CAAC;iBACD,KAAK,CAAC,WAAC,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;iBACzB,OAAO,EAAE,CAAC;;gBAGf,KAAc,sBAAI,CAAC,SAAS,CAAC,OAAO,EAAE,6CAAE;oBAAnC,IAAI,CAAC;oBACN,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAE5B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBAC5B;iBACJ;;;;;;;;;;gBAED,KAAc,4CAAa,oHAAE;oBAAxB,IAAI,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAG7B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;wBAC7C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC1B;iBACJ;;;;;;;;;YACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAGpC;aACI;YACD,uBAAQ,CAAC,cAAM,YAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,EAAxC,CAAwC,EAAE,GAAG,EAAK,IAAI,CAAC,EAAE,SAAI,CAAC,CAAC,eAAe,kBAAe,CAAC,CAAC;SACjH;IACL,CAAC;IAKM,6CAAsB,GAA7B;QAAA,iBAGC;;QAFG,UAAI,CAAC,gBAAgB,0CAAE,MAAM,GAAG;QAChC,uBAAQ,CAAC,mCAAM,KAAI,CAAC,gBAAgB,0CAAE,MAAM,KAAE,EAAE,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1F,CAAC;IAED,6CAAsB,GAAtB,UAAuB,kBAA4B;QAAnD,iBAoCC;;QAnCG,IAAI,kBAAkB,EAAE;YACpB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;qBACnC,MAAM,CAAC,WAAC,IAAI,2BAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC;qBAC/B,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC;qBAC9B,OAAO,EAAE,CAAC;aAClB;iBAAM;gBACH,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;aAC7B;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO;QAElC,UAAI,CAAC,gBAAgB,0CAAE,KAAK,GAAG;QAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,iCAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvG,IAAI,CAAC,gBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAC;gBACjE,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAC7B,CAAC,CAAC,MAAM,GAAG;oBACP,IAAI,CAAC,CAAC,UAAU,EAAE;wBACd,uBAAQ,CAAC;4BACD,IAAI,CAAC,CAAC,UAAU,EAAE;gCACd,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC;6BAC1C;4BACK,KAAI,CAAC,gBAAiB,CAAC,MAAM,EAAE,CAAC;wBAC1C,CAAC,EACD,CAAC,EACD,KAAI,CAAC,yBAAyB,CAAC,CAAC;qBACvC;gBACL,CAAC,CAAC;gBACF,OAAO,CAAC,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACjB;IAGL,CAAC;IAED,oCAAa,GAAb;QACI,4BAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAID,4BAAK,GAAL,UAAM,CAAmE,EAAE,OAAgB;QACvF,6BAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAKD,mCAAY,GAAZ,UAAa,KAAwB,EAAE,WAA4B;QAAnE,iBAWC;QAXsC,iDAA4B;QAC/D,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAM,CAAC,GAAG,oBAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE;YACH,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACf,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBAE3B,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAKK,0CAAmB,GAAzB,UAA0B,IAAsC;;;;;;wBACxD,GAAG,GAAG,IAAI,CAAC;wBACX,QAAQ,GAAG,CAAC,IAAI,YAAY,iBAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;6BAC1D,SAAQ,YAAY,uBAAa,GAAjC,cAAiC;6BAC7B,QAAQ,CAAC,MAAM,EAAf,cAAe;6BACX,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAzB,cAAyB;wBACnB,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;6BAC9B,EAAE,EAAF,cAAE;wBACI,SAAI,CAAC,cAAc;wBAAE,WAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE;;wBAAlH,GAAG,GAAG,aAAI,GAAgB,CAAC,SAAuF,CAAC,EAAC,CAAC;;;;wBAGzH,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;;;wBAI3D,IAAI,IAAI,YAAY,gBAAM,EAAE;yBAEhC;;4BACD,WAAO,GAAG,EAAC;;;;KACd;IAKD,qCAAc,GAAd,UAAe,QAAqC;QAChD,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAC9B,QAAQ,GAAG,6BAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,6BAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACpC,QAAQ,GAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SAC/D;QACD,IAAM,eAAe,GAAY,QAAQ,CAAC;QAC1C,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;YACvE,GAAG,GAAG,eAAe,CAAC;SACzB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;;IAj1Ba;QAAb,YAAK,CAAC,KAAK,CAAC;;8CAAsD;IAUjD;QAAjB,YAAK,CAAC,SAAS,CAAC;;iDAA0B;IAa3C;QADC,YAAK,CAAC,eAAe,CAAC;;;6DAMtB;IAWD;QADC,YAAK,CAAC,eAAe,CAAC;;;6DAMtB;IAaD;QADC,YAAK,CAAC,cAAc,CAAC;;;4DAMrB;IAWD;QADC,YAAK,CAAC,mBAAmB,CAAC;;;iEAM1B;IAsBD;QADC,YAAK,CAAC,gBAAgB,CAAC;;;8DAMvB;IAWD;QADC,YAAK,CAAC,aAAa,CAAC;;;2DAMpB;IAWD;QADC,YAAK,CAAC,eAAe,CAAC;;;6DAMtB;IAIgB;QAAhB,YAAK,CAAC,QAAQ,CAAC;;gDAA0B;IAGnB;QAAtB,YAAK,CAAC,cAAc,CAAC;;sDAAgC;IAExB;QAA7B,YAAK,CAAC,qBAAqB,CAAC;;6DAAsC;IAExC;QAA1B,YAAK,CAAC,kBAAkB,CAAC;;0DAAuC;IAE3C;QAArB,aAAM,CAAC,YAAY,CAAC;;oDAAsC;IAEvC;QAAnB,aAAM,CAAC,UAAU,CAAC;;kDAAkD;IAG1C;QAA1B,aAAM,CAAC,iBAAiB,CAAC;;yDAA0D;IAenE;QAAhB,gCAAa,EAAE;;sDAAqD;IApL5D,YAAY;QAJxB,gBAAS,CAAC;YACP,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,QAAQ;SACrB,CAAC;QAgMO,wBAAM,CAAC,8CAAyB,CAAC;yCAJV,8BAAgB;YAC5B,iBAAU;YACE,wBAAiB;YACnB,uBAAgB;OA9LjC,YAAY,CA61BxB;IAAD,mBAAC;CAAA;AA71BY,oCAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChIzB,iEAA8E;AAC9E,gEAAsD;AAEtD,kFAA6D;AAC7D,qEAA8C;AAC9C,2EAAuD;AACvD,8EAAwD;AAIxD;IAA0C,wCAA6B;IAAvE;;IAqNA,CAAC;6BArNY,oBAAoB;IAEtB,8BAAS,GAAhB,UAAiB,OAAgB,EAAE,MAA+C,EAAE,MAAmC;QACnH,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,MAAM,YAAY,sBAAoB,EAAE;YACxC,GAAG,GAAG,MAAM,CAAC;SAChB;aAAM,IAAI,MAAM,MAAmC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,6BAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,yBAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YAChK,GAAG,GAAG,IAAI,sBAAoB,CAAC,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACvF;QACD,IAAI,GAAG,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,wCAAS,GAAT,UAAU,CAAgB;QACtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACpE;IACL,CAAC;IAED,4CAAa,GAAb,UAAc,OAAiB;QAC3B,iBAAM,aAAa,YAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEO,uDAAwB,GAAhC,UAAiC,OAAgB,EAAE,OAAuB;;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO;QACjC,OAAO,CAAC,WAAW,SAAG,CAAC,OAAO,CAAC,IAAI,WAAI,OAAO,CAAC,QAAQ,0CAAE,IAAI,EAAC,0CAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE;YAClC,OAAO,CAAC,MAAM,GAAQ,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;SAC1D;aAAM;YACH,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,OAAO,CAAC,UAAU,EAAE;YAEpB,QAAQ,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBAEtC;oBACI,IAAM,CAAC,GAAyB,OAAO,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC/B,MAAM;gBAEV;oBACI,IAAM,CAAC,GAAwB,OAAO,CAAC,UAAU,CAAC;oBAClD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAElC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;oBAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,MAAM;gBAEV;oBACI,IAAM,EAAE,GAAwB,OAAO,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC5C,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;oBAEnC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;oBACxC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;oBAEjC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC;oBAC7B,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7B,MAAM;gBAEV;oBACI,IAAM,EAAE,GAAwB,OAAO,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC5C,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;oBAEnC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;oBACxC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;oBAEjC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;oBACtC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;oBAE/B,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;oBAC/B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC/B,MAAM;gBAEV;oBACI,IAAM,CAAC,GAA4B,OAAO,CAAC,UAAU,CAAC;oBACtD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAElC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC9B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAEhC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;oBAC5B,OAAO,CAAC,QAAQ,GAAG,2BAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,IAAI,GAAG,EAAG,CAAC,CAAC,IAAI,IAAI,EAAE,gBAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAG3D,IAAI,CAAC,CAAC,KAAK,uBAA4B,IAAI,CAAC,CAAC,KAAK,8BAAkC,EAAE;wBAClF,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;wBACpB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBACD,IAAI,CAAC,CAAC,KAAK,8BAAgC,EAAE;wBACzC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBACD,IAAI,CAAC,CAAC,KAAK,8BAAkC,EAAE;wBAC3C,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBAED,MAAM;gBAEV;oBACI,IAAM,CAAC,GAA0B,OAAO,CAAC,UAAU,CAAC;oBACpD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAElC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC9B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAEhC,OAAO,CAAC,QAAQ,GAAG,2BAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,IAAI,GAAG,EAAG,CAAC,CAAC,eAAe,IAAI,EAAE,gBAAO,CAAC,CAAC,UAAU,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAG5E,IAAI,CAAC,CAAC,gBAAgB,uBAA4B,IAAI,CAAC,CAAC,gBAAgB,8BAAkC,EAAE;wBACxG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;wBACpB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBACD,IAAI,CAAC,CAAC,gBAAgB,8BAAgC,EAAE;wBACpD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBACD,IAAI,CAAC,CAAC,gBAAgB,8BAAkC,EAAE;wBACtD,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;qBACvB;oBAED,OAAO,CAAC,QAAQ,GAAG,EAAG,CAAC,CAAC,IAAI,IAAI,EAAE,gBAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAC/D,MAAM;gBAEV;oBACI,IAAM,EAAE,GAAwB,OAAO,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC5C,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;oBAEnC,OAAO,CAAC,QAAQ,GAAG,2BAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,GAAG,EAAG,EAAE,CAAC,eAAe,IAAI,EAAE,gBAAO,EAAE,CAAC,UAAU,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAE9E,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAI,EAAE,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,MAAM,GAAG,EAAG,EAAE,CAAC,IAAI,IAAI,EAAE,gBAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAC/D,MAAM;gBAEV;oBACI,IAAM,CAAC,GAAyB,OAAO,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAElC,OAAO,CAAC,QAAQ,GAAG,2BAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,IAAI,GAAG,EAAG,CAAC,CAAC,eAAe,IAAI,EAAE,gBAAO,CAAC,CAAC,UAAU,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAE5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAI,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,OAAO,CAAC,MAAM,GAAG,EAAG,CAAC,CAAC,WAAW,IAAI,EAAE,gBAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE,CAAC;oBAEtE,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC;oBACjC,MAAM;gBACV;oBAEI,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;wBACrD,IAAM,CAAC,GAAkB,OAAO,CAAC,UAAU,CAAC;wBAC5C,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;wBAC3C,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;wBAC5C,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;wBACjC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAI,CAAC,CAAC,YAAY,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE;aACR;SACJ;QAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAGK,0DAA2B,GAAjC;;;;;;;wBACI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;4BAAE,WAAO;wBACzC,cAAc,GAAsB,yBAAU,CAAC,GAAG,CAAC,mCAAiB,CAAC,CAAC;wBAC5E,IAAI,CAAC,cAAc;4BAAE,WAAO;wBAEtB,CAAC,GAAG,6BAAa,CAAC,MAAM,EAAE;6BAC3B,cAAc,wHAA8I;6BAC5J,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,WAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;;wBAAlD,GAAG,GAAG,SAA4C;;4BACxD,KAAoB,oBAAG,kEAAE;gCAAhB,OAAO;gCACN,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;gCAC9B,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAEhD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gCACxD,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gCACvE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gCAC3D,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gCACpE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gCACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gCAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gCAClD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gCACpE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gCACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gCAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gCAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gCAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gCAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;6BAC3D;;;;;;;;;;;;;KACJ;;IApNQ,oBAAoB;QADhC,4BAAkB,EAAE;OACR,oBAAoB,CAqNhC;IAAD,2BAAC;CAAA,CArNyC,uBAAa,GAqNtD;AArNY,oDAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXjC,wCAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACClB,8DAAgE;AAChE,6DAA2C;AAC3C,8DAAiD;AACjD,sDAAoF;AAEpF,sEAAmD;AACnD,gEAAsC;AACtC,gEAAyC;AAEzC;IAA6B,2BAAgB;IASzC,iBAAY,EAAoB;QAAhC,YACI,kBAAM,EAAE,CAAC,SAeZ;QA2BO,kBAAY,GAA4B,EAAE,CAAC;QAI3C,aAAO,GAAG,EAAE,CAAC;QA7CjB,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAC;YACrD,IAAI,CAAC,YAAY,sBAAa,EAAE;gBAC5B,IAAI,CAAC,CAAC,GAAG,KAAK,KAAI,CAAC,YAAY,EAAE;oBAC7B,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE;wBAChB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACrB,KAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;iBACJ;qBAAM,IAAI,KAAI,CAAC,QAAQ,EAAE;oBACtB,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,KAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;;IACP,CAAC;IAED,6BAAW,GAAX;QACI,iBAAM,WAAW,WAAE,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;IACL,CAAC;IAOD,6BAAW,GAAX;IAEA,CAAC;IAMD,+BAAa,GAAb;IAEA,CAAC;IAGD,sBAAW,gCAAW;aAAtB,cAAoD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAC/E,UAAuB,KAA8B,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAC,CAAC;;;OADN;IAI/E,kCAAgB,GAAhB,UAAiB,CAA2B,IAAS,CAAC;IAEtD,6BAAW,GAAX,UAAY,CAA2B,IAAU,CAAC;IAElD,kCAAgB,GAAhB,UAAiB,CAA6B,IAAS,CAAC;IAExD,+BAAa,GAAb,UAAiB,IAAY,EAAE,YAAgB;QAC3C,OAAO,eAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,+BAAa,GAAb,UAAc,IAAY,EAAE,KAAU,EAAE,YAAkB;QAA1D,iBA8BC;QA7BG,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC5B,YAAY,GAAG,CAAC,CAAC,eAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SACjD;aACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAChC,YAAY,GAAG,QAAQ,CAAC,eAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChE;aACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAChC,YAAY,GAAG,eAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SAC5C;aACI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzC,YAAY,GAAG,eAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACjD,KAAK,GAAG,MAAM,CAAM,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;aACrD;iBACI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC/B,KAAK,GAAG,wBAAgB,CAAW,KAAK,CAAC,CAAC;gBAC1C,YAAY,GAAG,wBAAgB,CAAC,YAAY,CAAC,CAAC;aACjD;iBACI,IAAI,eAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC9C,KAAK,GAAG,IAAI,CAAC;aAChB;SACJ;QACD,IAAI,eAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAClC;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;SACnC;QACD,IAAI,CAAC,QAAQ,CAAC,cAAM,YAAI,CAAC,cAAc,CAAC,KAAI,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACrF,CAAC;IAEM,oCAAkB,GAAzB,UAA0B,UAA8C,EAAE,QAAkB;QACxF,IAAM,CAAC,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,EAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,sBAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,gCAAc,GAAd,UAAe,CAA0B,EAAE,QAAkB;QACzD,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,aAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,mCAAiB,GAAjB,UAAkB,CAA2B,EAAE,QAAkB;QAC7D,CAAC,GAAG,aAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,+BAAa,GAAb,UAAc,CAA2B;QAAzC,iBAOC;QANG,IAAI,CAAC,QAAQ,CAAC;YACV,CAAC,GAAG,CAAC,IAAI,KAAI,CAAC,OAAO,CAAC;YAEtB,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,KAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACtB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACvB,CAAC;IAED,0BAAQ,GAAR;QAAA,iBA6BC;QA5BG,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAC;gBAElE,IAAI;oBACA,IAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;wBACxC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAChC;oBACD,KAAI,CAAC,YAAY,GAAG,aAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;oBACzC,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACjD;gBAAC,OAAO,CAAC,EAAE;iBAEX;gBACD,KAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAC;gBAE7D,IAAI;oBACA,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACzB,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACjD;gBAAC,OAAO,CAAC,EAAE;iBAEX;gBACD,KAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC,CAAC,CAAC;SACN;QACD,iBAAM,QAAQ,WAAE,CAAC;IACrB,CAAC;IAEM,wBAAM,GAAb,UAAc,SAAkB;QAC5B,OAAO,sBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEM,oBAAE,GAAT,UAAU,GAAW,EAAE,SAA4C,EAAE,QAAmC;QAAjF,6CAA4C;QAAE,0CAAmC;QACpG,OAAO,sBAAS,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAhKiB;QAAjB,mBAAM,CAAC,iBAAQ,CAAC;kCAAkB,iBAAQ;6CAAC;IAC5B;QAAf,mBAAM,CAAC,eAAM,CAAC;kCAAgB,eAAM;2CAAC;IACd;QAAvB,mBAAM,CAAC,uBAAc,CAAC;kCAAwB,uBAAc;mDAAC;IAgKlE,cAAC;CAAA,CApK4B,gCAAgB,GAoK5C;AApKY,0BAAO;;;;;;;;;;;;;;;;;;;;;;;;;;ACVpB,iDAA6B;AAa7B;IAAA;IAKA,CAAC;IAAD,qBAAC;AAAD,CAAC;AALqB,wCAAc;AAOpC;IAEI,oBAAY,IAAY;QACpB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;IACL,CAAC;IAED,6BAAQ,GAAR,UAAS,OAAgB,EAAE,QAAc;QACrC,OAAO,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,GAAG,CAAC;IAClG,CAAC;IACL,iBAAC;AAAD,CAAC;AAZY,gCAAU;AAavB;IAAA;IAsCA,CAAC;IApCU,YAAK,GAAZ,UAAa,IAAY,IAAgB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAC,CAAC;IAC/D,eAAQ,GAAf,UAAgB,IAA+B,EAAE,OAAgB,EAAE,QAAc;QAC7E,OAAO,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,GAAG,CAAC;IAC9F,CAAC;IAKM,0BAAmB,GAA1B,UAA2B,UAAmB;QAC1C,IAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,UAAU,EAAE;YACZ,IAAM,IAAI,GAAmB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QAGnC,SAAS,SAAS,CAAC,IAAyB;;YACxC,IAAI,IAAI,EAAE;gBACN,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC3B;qBACI;oBACJ,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,IAAI,EAAE;;4BACX,KAAgB,sBAAI,CAAC,IAAI,6CAAE;gCAAtB,IAAI,GAAG;gCAC7B,SAAS,CAAC,GAAG,CAAC,CAAC;6BACG;;;;;;;;;qBACJ;iBACJ;aACJ;QACL,CAAC;IACL,CAAC;IAEL,aAAC;AAAD,CAAC;AAtCY,wBAAM;AAwCnB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,WAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAC,CAAC;AACtD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAI,IAAI,QAAC,IAAI,EAAL,CAAK,CAAC,CAAC;;;;;;;;;;;;;AC1E1B;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,iDAAuC;;AAE7F,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,wBAAc;;AAEvC,eAAe,mBAAO,CAAC,qBAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,SAAS;AACxB;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA,kBAAkB;AAClB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,SAAS;AACxB;AACA,mBAAmB,EAAE;AACrB,mBAAmB,KAAK;AACxB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA,kBAAkB;AAClB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,WAAW;AAC5B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,iBAAiB,WAAW;AAC5B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,iBAAiB,WAAW;AAC5B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,iBAAiB,EAAE;AACnB,gBAAgB,EAAE;AAClB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,gBAAgB,OAAO;AACvB;;AAEA,GAAG;AACH;AACA;AACA,4FAA4F,aAAa;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,gBAAgB;AAChC;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,2B;;;;;;;;;;;AC9QA,oBAAoB,mBAAO,CAAC,6BAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,+G;;;;;;;;;;;ACfA,cAAc,mBAAO,CAAC,sBAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4G;;;;;;;;;;;;ACXa;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,iCAAuB;;AAE/C,YAAY,mBAAO,CAAC,mBAAS;;AAE7B,aAAa,mBAAO,CAAC,2BAAiB;;AAEtC,kBAAkB,mBAAO,CAAC,yBAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA,eAAe,WAAW;AAC1B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,iBAAiB,WAAW;AAC5B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,iBAAiB,EAAE;AACnB,gBAAgB,EAAE;AAClB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,4B;;;;;;;;;;;;AClGa;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,sBAAY;AACnC;AACA;AACA,IAAI,aAAa;AACjB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA,aAAa,SAAS,QAAQ;AAC9B;AACA,WAAW,SAAS;AACpB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,eAAe,WAAW;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,iBAAiB,gBAAgB,GAAG;AACpC;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,iBAAiB,UAAU,EAAE;AAC7B;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA,kBAAkB;AAClB,iBAAiB,WAAW;AAC5B;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,CAAC;;AAED,2B;;;;;;;;;;;;AClLa;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,iDAAiD,mBAAO,CAAC,oDAA0C;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iCAAiC,GAAG;AAChD;AACA,aAAa,aAAa;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAsD;AAClE,mBAAmB;AACnB;AACA,aAAa,WAAW;AACxB;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,gBAAgB;AACnE,uBAAuB;AACvB;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,uDAAuD;AACnE,qBAAqB;AACrB;AACA,aAAa,WAAW;AACxB;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAiD;AAC7D;AACA,aAAa,aAAa;AAC1B;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,iDAAiD;AAC7D;AACA,aAAa,sBAAsB;AACnC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iCAAiC,GAAG;AAChD;AACA,aAAa,UAAU,EAAE;AACzB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sCAAsC;AAClD;AACA,aAAa,aAAa;AAC1B;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,YAAY,wDAAwD;AACpE;AACA,aAAa,WAAW;AACxB;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;AACH,E;;;;;;;;;;;AClNA,wBAAwB,mBAAO,CAAC,kCAAwB;AACxD,sBAAsB,mBAAO,CAAC,gCAAsB;AACpD,iCAAiC,mBAAO,CAAC,2CAAiC;AAC1E,wBAAwB,mBAAO,CAAC,kCAAwB;AACxD;AACA;AACA;AACA,kH;;;;;;;;;;;ACPA,uBAAuB,mBAAO,CAAC,gCAAuB;AACtD;AACA;AACA;AACA,kH;;;;;;;;;;;ACJA;AACA;AACA;AACA,gH;;;;;;;;;;;ACHA,uBAAuB,mBAAO,CAAC,gCAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2H;;;;;;;;;;;ACTA;AACA;AACA;AACA,kH;;;;;;;;;;;;ACHa;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,cAAc;AAC7B;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB;AAC7B,eAAe,cAAc;AAC7B;AACA,iBAAiB,OAAO,iBAAiB,EAAE;AAC3C;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAuB;AAC/B;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO,iBAAiB,EAAE;AAC3C,gBAAgB,MAAM;AACtB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB;AAC7B,eAAe,OAAO;AACtB,kBAAkB;AAClB,yBAAyB;AACzB,gBAAgB,MAAM;AACtB;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,iBAAiB,QAAQ;AACzB,mBAAmB;AACnB;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,uB;;;;;;;;;;;;AC5Qa;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,qBAAY;;AAEnC,aAAa,mBAAO,CAAC,oBAAU;AAC/B;AACA,gEAAgE;AAChE;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,cAAc;AACd,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B,WAAW,qBAAqB;AAChC,cAAc,MAAM;AACpB,uBAAuB,gBAAgB;AACvC,eAAe,UAAU;AACzB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA,eAAe,OAAO,eAAe,EAAE;AACvC,iBAAiB,qBAAqB;AACtC;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,aAAa,qBAAqB;AAClC;AACA,gBAAgB,MAAM;AACtB;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,wB;;;;;;;;;;;;AC/Oa;;AAEb;AACA;AACA;AACA;AACA,QAAQ,mBAAO,CAAC,qBAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,iBAAiB;AACjB;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,E;;;;;;;;;;;;AC/Na;;AAEb,6BAA6B,mBAAO,CAAC,uDAA8C;;AAEnF,8CAA8C,mBAAO,CAAC,gDAAuC;;AAE7F,2CAA2C,mBAAO,CAAC,6CAAoC;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA,6B;;;;;;;;;;;;AC/Fa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,QAAQ;AACR;AACA,OAAO;AACP,QAAQ;AACR;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,cAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,cAAc,EAAE;AAChB,cAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;;;;;;;;;;;;;;;AC/NA,yDAA8M;AAE9M,+DAA0C;AAczC,CAAC;AAiBF;IAWI,qCAAY,GAAkC,EAAE,YAA0B;QAA1E,iBA+CC;QA/C+C,iDAA0B;QACtE,IAAI,GAAG,EAAE;YACL,IAAI,UAAU,GAAyB,GAAG,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,YAAY,GAAoB,uBAAU,CAAC,GAAG,CAAC,sBAAe,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,GAAoB,uBAAU,CAAC,GAAG,CAAC,sBAAe,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBACzC,IAAM,IAAI,GAAW,uBAAU,CAAC,GAAG,CAAC,aAAM,CAAC,CAAC;gBAC5C,IAAI,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yB;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yB;;;;;;;;;;;AC5MA,qCAAqC,grD;;;;;;;;;;;ACArC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;;ACAxC;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;;ACPA;AAAe;AACf;AACA;AACA,WAAW,qBAAuB;AAClC;AACA;AACA;AACA,K;;;;;;;;;;;ACPA,qCAAqC,o7E;;;;;;;;;;;ACArC,qCAAqC,g2E;;;;;;;;;;;ACArC,qCAAqC,wjI;;;;;;;;;;;ACArC,qCAAqC,gjF;;;;;;;;;;;ACArC,qCAAqC,4U;;;;;;;;;;;ACArC,qCAAqC,43C;;;;;;;;;;;ACArC,qCAAqC,oe;;;;;;;;;;;ACArC,qCAAqC,4d;;;;;;;;;;;ACArC,qCAAqC,ggB;;;;;;;;;;;ACArC,qCAAqC,g3B;;;;;;;;;;;ACArC,qCAAqC,orC;;;;;;;;;;;ACArC,qCAAqC,orI;;;;;;;;;;;ACArC,qCAAqC,wX;;;;;;;;;;;ACArC,qCAAqC,glB;;;;;;;;;;;ACArC,qCAAqC,onB;;;;;;;;;;;ACArC,qCAAqC,4mB;;;;;;;;;;;ACArC,qCAAqC,ge;;;;;;;;;;;ACArC,qCAAqC,4jB;;;;;;;;;;;ACArC,qCAAqC,gkB;;;;;;;;;;;ACArC,qCAAqC,gc;;;;;;;;;;;ACArC,qCAAqC,glB;;;;;;;;;;;ACArC,qCAAqC,giC;;;;;;;;;;;ACArC,qCAAqC,ggD;;;;;;;;;;;ACArC,qCAAqC,gsB;;;;;;;;;;;ACArC,qCAAqC,g0C;;;;;;;;;;;ACArC,qCAAqC,woC;;;;;;;;;;;ACArC,qCAAqC,grB;;;;;;;;;;;ACArC,qCAAqC,omC;;;;;;;;;;;ACArC,qCAAqC,oqB;;;;;;;;;;;ACArC,qCAAqC,4xB;;;;;;;;;;;ACArC,qCAAqC,g5B;;;;;;;;;;;ACArC,qCAAqC,4hB;;;;;;;;;;;ACArC,qCAAqC,wY;;;;;;;;;;;ACArC,qCAAqC,oZ;;;;;;;;;;;ACArC,qCAAqC,4lD;;;;;;;;;;;ACArC,qCAAqC,wkB;;;;;;;;;;;ACArC,qCAAqC,gZ;;;;;;;;;;;ACArC,qCAAqC,od;;;;;;;;;;;ACArC,qCAAqC,wQ;;;;;;;;;;;ACArC,qCAAqC,gjB;;;;;;;;;;;ACArC,qCAAqC,ob;;;;;;;;;;;ACArC,qCAAqC,4tB;;;;;;;;;;;ACArC,qCAAqC,goE;;;;;;;;;;;ACArC,qCAAqC,4sC;;;;;;;;;;;ACArC,qCAAqC,gZ;;;;;;;;;;;ACArC,qCAAqC,o1B;;;;;;;;;;;ACArC,qCAAqC,wQ;;;;;;;;;;;ACArC,qCAAqC,gQ;;;;;;;;;;;ACArC,qCAAqC,4oB;;;;;;;;;;;ACArC,qCAAqC,wkC;;;;;;;;;;;ACArC,qCAAqC,wX;;;;;;;;;;;ACArC,qCAAqC,gxB;;;;;;;;;;;ACArC,qCAAqC,43H;;;;;;;;;;;ACArC,qCAAqC,4a;;;;;;;;;;;AC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yB;;;;;;;;;;;AClBA,sCAAsC,oBAAoB,EAAE,G;;;;;;;;;;;ACA5D,qCAAqC,cAAc,uCAAuC,8CAA8C,sBAAsB,oCAAoC,EAAE,gCAAgC,oBAAoB,0BAA0B,8BAA8B,0BAA0B,EAAE,oCAAoC,yBAAyB,EAAE,wDAAwD,0BAA0B,EAAE,qEAAqE,8BAA8B,EAAE,oCAAoC,sBAAsB,EAAE,qDAAqD,wBAAwB,EAAE,0BAA0B,qBAAqB,EAAE,wCAAwC,8BAA8B,+BAA+B,uCAAuC,EAAE,gEAAgE,mCAAmC,kDAAkD,EAAE,iFAAiF,gCAAgC,EAAE,8EAA8E,mCAAmC,wCAAwC,EAAE,+FAA+F,2BAA2B,6CAA6C,EAAE,qGAAqG,yCAAyC,EAAE,kDAAkD,eAAe,sCAAsC,EAAE,yDAAyD,+BAA+B,EAAE,wDAAwD,wBAAwB,iCAAiC,0BAA0B,EAAE,gEAAgE,wCAAwC,mCAAmC,EAAE,G;;;;;;;;;;;ACAzkE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,8BAAoB;;AAE/C;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,mBAAmB,mBAAO,CAAC,oBAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9rBA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA,iEAAwF;AAExF,yCAA2E;AAE3E;IAAgI,qCAAuB;IAiDnJ,2BAAY,OAAkD;QAA9D,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAa,qBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;IACpE,CAAC;IA3BD,qCAAS,GAAT;QACI,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAMA,qCAAS,GAAT,UAAU,MAAiB,EAAE,aAAuB;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,aAAa,EAAE;gBAChB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;IACL,CAAC;IAaK,0CAAc,GAApB,UAAqB,GAAW,EAAE,QAAY;;;;;4BAChC,WAAM,iBAAM,cAAc,YAAC,GAAG,EAAE,IAAI,CAAC;;wBAA3C,GAAG,GAAG,SAAqC;6BAC3C,IAAG,KAAK,IAAI,GAAZ,cAAY;wBAEL,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;wBAAnC,GAAG,GAAG,CAAC,SAA4B,CAAC,IAAI,QAAQ,CAAC;;4BAErD,WAAO,GAAG,EAAC;;;;KACd;IAES,wCAAY,GAAtB,UAAuB,GAAW,EAAE,KAAa;QAC7C,IAAM,GAAG,GAAG,mBAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,qBAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,qBAAO,CAAC,KAAK,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,KAAK,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEK,yCAAa,GAAnB,UAAoB,GAAW,EAAE,KAAa,EAAE,mBAA6B;;;;;;wBACzE,CAAC,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC5D,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;wBAA5D,GAAG,GAAG,SAAsD;wBAClE,CAAC,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;wBACtE,WAAO,GAAG,EAAC;;;;KACd;IAGD,4CAAgB,GAAhB;QAEI,IAAI,qBAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAEvF,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAC,IAAI,QAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;gBAGzH,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;oBACrC,IAAM,EAAE,GAAG,mBAAK,EAAE,CAAC;oBACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBACzB,IAAI,EAAE,CAAC,KAAK,EAAE;wBACV,OAAO;qBACV;iBACJ;gBAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aACxF;SACJ;IACL,CAAC;IAEL,wBAAC;AAAD,CAAC,CAzG+H,kCAAoB,GAyGnJ;AAzGY,8CAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJ9B,yDAAwC;AACxC,0DAA2C;AAE3C,gEAA8E;AAC9E,uEAAmD;AAEnD,4EAAwD;AACxD,8DAA0C;AAC1C,0EAAsD;AAQtD;IACI,2BAAmB,eAAmC,EAAS,iBAAuC;QAAnF,oBAAe,GAAf,eAAe,CAAoB;QAAS,sBAAiB,GAAjB,iBAAiB,CAAsB;QAClG,wBAAS,CAAC,YAAY,CAAC,MAAM,CAAC,WAAC,IAAI,QAAC,CAAC,SAAS,EAAX,CAAW,CAAC,CAAC,SAAS,CAAC;;;;gBACtD,KAAuB,uDAAkB,CAAC,cAAc,EAAE,6CAAE;oBAAvD,IAAI,UAAU;oBACf,IAAM,EAAE,GAAG,qCAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACxD,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE;wBACrB,EAAE,CAAC,WAAW,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;wBACpD,EAAE,CAAC,KAAK,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;wBACxC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;4BAC3E,4CAAe,EAAE,CAAC,UAAU,mCAAI,EAAE,8CAAE;gCAA/B,IAAI,EAAE;gCACP,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;oCACZ,EAAE,CAAC,WAAW,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;oCACpD,EAAE,CAAC,IAAI,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oCACtC,IAAI,EAAE,CAAC,kBAAkB,EAAE;;4CACvB,KAAe,mCAAE,CAAC,kBAAkB,8CAAE;gDAAjC,IAAI,EAAE;gDACP,EAAE,CAAC,WAAW,IAAI,wBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;6CACvD;;;;;;;;;qCACJ;iCACJ;6BACJ;;;;;;;;;qBACJ;iBACJ;;;;;;;;;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yCAAa,GAAb;IACA,CAAC;IA1BQ,iBAAiB;QAN7B,eAAQ,CAAC;YACN,YAAY,EAAE,CAAC,uBAAW,EAAE,mCAAiB,CAAC;YAC9C,OAAO,EAAE,CAAC,uBAAW,EAAE,mCAAiB,CAAC;YACzC,OAAO,EAAE,CAAC,iBAAU,EAAE,4BAAa,EAAE,kCAAgB,CAAC;YACtD,SAAS,EAAE,CAAC,qCAAkB,CAAC;SAClC,CAAC;yCAEsC,qCAAkB,EAA4B,mCAAoB;OAD7F,iBAAiB,CA2B7B;IAAD,wBAAC;CAAA;AA3BY,8CAAiB;;;;;;;;;;;;;;;;;;;;;AChB9B,yDAAyC;AACzC,iEAAsE;AACtE,0EAAsD;AActD;IAAA;IAEA,CAAC;IAFY,gBAAgB;QAZ5B,eAAQ,CAAC;YACN,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE;gBACL,2BAAa;aAChB;YACD,SAAS,EAAE;gBACP,mCAAiB;gBACjB,EAAE,OAAO,EAAE,mCAAqB,EAAE,QAAQ,EAAE,mCAAiB,EAAE;aAClE;YACD,OAAO,EAAE,EAAE;SACd,CAAC;OACW,gBAAgB,CAE5B;IAAD,uBAAC;CAAA;AAFY,4CAAgB;;;;;;;;;;;;AChB7B,uGAAuG,YAAY,eAAe,wCAAwC,gBAAgB,wDAAwD,qFAAqF,OAAO,4DAA4D,OAAO,eAAe,wCAAwC,gBAAgB,qDAAqD,2FAA2F,OAAO,qEAAqE,OAAO,eAAe,wCAAwC,+DAA+D,4BAA4B,mFAAmF,wCAAwC,0CAA0C,6CAA6C,+WAA+W,YAAY,uDAAuD,gDAAgD,ocAAoc,0BAA0B,oCAAoC,qEAAqE,2CAA2C,aAAa,gI;;;;;;;;;;;ACAhoE,qCAAqC,kvBAAkvB,eAAe,aAAa,gBAAgB,cAAc,uBAAuB,eAAe,EAAE,kBAAkB,iBAAiB,EAAE,8BAA8B,kBAAkB,mBAAmB,2BAA2B,kBAAkB,sBAAsB,EAAE,uCAAuC,uBAAuB,iCAAiC,EAAE,G;;;;;;;;;;;;;;;;;ACAvoC,0DAAiC;AACjC,6DAAkC;AAClC,sDAA4B;AAC5B,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC;AACzC,kEAAyC;AACzC,yDAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACP/B,8DAAyC;AACzC,gEAAmF;AAInF,8DAA0C;AAE1C;IAAkC,gCAAW;IAA7C;;IAqGA,CAAC;IA/FG,sBAAI,+BAAK;aAAT,cAAuB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;aAC5C,UAAU,KAAc;YACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;aAClC;QACN,CAAC;;;OAN2C;IAY5C,sBAAI,qCAAW;aAAf,cAAyC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAOpE,UAAgB,KAAK;YAArB,iBAUC;YATG,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;gBAC7B,IAAI,CAAC,YAAY,IAAI,uCAAwB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,cAAQ,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxD,IAAI,CAAC,YAAY,IAAI,uCAAwB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,cAAM,YAAI,CAAC,WAAW,EAAE,EAAlB,CAAkB,CAAC,CAAC;aACpG;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;QACL,CAAC;;;OAjBmE;IAmBpE,uCAAgB,GAAhB,UAAiB,CAAsB;QACnC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YACpC,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;gBACjG,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;aAC5E;SACJ;QACD,iBAAM,gBAAgB,YAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAMD,sCAAe,GAAf,UAAgB,CAAsB,IAAI,CAAC;IAQpC,kCAAW,GAAlB;QACI,IAAI,CAAC,aAAa,CAAC,oBAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjD,CAAC;IAGD,+BAAQ,GAAR;QACI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,iBAAM,QAAQ,WAAE,CAAC;IACrB,CAAC;IAID,sBAAW,oCAAU;aAArB,cAAkD,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;aAC5E,UAAsB,KAA6B;YAC/C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACpC,IAAI,yBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;iBAChD;aACJ;QACL,CAAC;;;OAT2E;IAW5E,sBAAW,mCAAS;aAApB;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;;;OAAA;IAEM,8BAAO,GAAd;QACI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAEM,4CAAqB,GAA5B,UAA6B,MAAuB;QAChD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,iBAAe,MAAQ,CAAC;aAC3D;iBAAM;gBACH,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;aACjD;YACD,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;SACxC;IACL,CAAC;IAlGe;QAAf,qBAAM,CAAC,eAAM,CAAC;kCAAgB,eAAM;gDAAC;IAmG1C,mBAAC;CAAA,CArGiC,uBAAW,GAqG5C;AArGY,oCAAY;;;;;;;;;;;;;;;;;;ACNzB,uEAA6C;AAC7C,4EAAiD;AACjD,yEAA8C;AAC9C,wEAA6C;AAC7C,8EAAoD;AACpD,8EAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNpD,qDAAoC;AACpC,gGAA0E;AAC1E,iEAAkD;AASlD;IAAoD,kDAA+C;IAE/F,wCAAY,GAAwB,EAAE,cAAoC;eACtE,kBAAM,GAAG,EAAE,cAAc,CAAC;IAC9B,CAAC;IAED,sBAAc,8DAAkB;aAAhC;YACI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,YAAY,mBAAmB;oBACxE,CAAC,CAAC,IAAI,CAAC,aAAa;oBACpB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aACtD;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;QACpC,CAAC;;;OAAA;IAbQ,8BAA8B;QAP1C,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,yBAAyB;YACjC,MAAM,EAAE,uDAA0B,CAAC,MAAM;YACzC,OAAO,EAAE,uDAA0B,CAAC,OAAO;YAC3C,IAAI,EAAE,uDAA0B,CAAC,IAAI;SAC1C,CAAC;QACD,2BAAe,EAAE;yCAGG,EAAE,CAAC,gBAAgB,EAAkB,EAAE,CAAC,iBAAiB;OAFjE,8BAA8B,CAc1C;IAAD,qCAAC;CAAA,CAdmD,uDAA0B,GAc7E;AAdY,wEAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACX3C,qDAAoC;AACpC,gGAA0E;AAC1E,iEAAkD;AASlD;IAAiD,+CAA4C;IAEzF,qCAAY,GAAwB,EAAE,cAAoC;eACtE,kBAAM,GAAG,EAAE,cAAc,CAAC;IAC9B,CAAC;IAED,sBAAc,2DAAkB;aAAhC;YACI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,YAAY,gBAAgB;oBACrE,CAAC,CAAC,IAAI,CAAC,aAAa;oBACpB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aACnD;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;QACpC,CAAC;;;OAAA;IAEM,+CAAS,GAAhB,UAAiB,MAAqB;QAClC,IAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,YAAY,gBAAgB,EAAE;YAChC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE;aAElD;iBACI,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClD,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE;oBACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,IAAI,CAAC,EAAE,CAAC,QAAQ;wBACZ,EAAE,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,eAAe,EAAE,CAAC;iBAC5B;qBAAM,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;oBAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,CAAC,EAAE,CAAC,QAAQ;wBACZ,EAAE,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,eAAe,EAAE,CAAC;iBAC5B;aACJ;SACJ;QACD,iBAAM,SAAS,YAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAMS,uDAAiB,GAA3B;QACI,IAAI,GAAG,GAAG,iBAAM,iBAAiB,WAAE,CAAC;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAClC,KAAK,UAAU;oBACX,IAAI,KAAK,CAAC,GAAG,CAAC;wBACV,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;yBACrC;wBACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO;4BAC/B,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;;4BAEjC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACzC;oBACD,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO;wBAC/B,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;aACb;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAKS,qDAAe,GAAzB,UAA0B,KAAU;QAChC,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAClC,KAAK,UAAU;oBACX,IAAI,KAAK,CAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;wBAE3C,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC;qBAC7C;yBAAM;wBAEH,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC7F;oBACD,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;oBACpF,MAAM;gBACV;oBACI,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBACzC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK,KAAK,EAAE;wBACzC,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;qBACzC;oBACD,MAAM;aACb;SACJ;IACL,CAAC;IA7FQ,2BAA2B;QAPvC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,sBAAsB;YAC9B,MAAM,EAAE,uDAA0B,CAAC,MAAM;YACzC,OAAO,EAAE,uDAA0B,CAAC,OAAO;YAC3C,IAAI,EAAE,uDAA0B,CAAC,IAAI;SAC1C,CAAC;QACD,2BAAe,EAAE;yCAGG,EAAE,CAAC,gBAAgB,EAAkB,EAAE,CAAC,iBAAiB;OAFjE,2BAA2B,CA8FvC;IAAD,kCAAC;CAAA,CA9FgD,uDAA0B,GA8F1E;AA9FY,kEAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXxC,qDAAoC;AACpC,2DAA0C;AAC1C,+EAA8D;AAC9D,uFAAmE;AACnE,4EAAsD;AACtD,iEAAkD;AAClD,yDAAyC;AAMzC;IAAgD,8CAAgC;IAE5E,oCAAoC,aAA6B,EAAqB,SAAqC,EAAE,GAAwB,EAAE,cAAoC;QAA3L,YACI,kBAAM,aAAa,EAAE,GAAG,EAAE,cAAc,CAAC,SAC5C;QAFqF,eAAS,GAAT,SAAS,CAA4B;;IAE3H,CAAC;IAeD,gDAAW,GAAX,UAAY,OAAO;QACf,IAAwB,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;SACnB;IACL,CAAC;IAED,6CAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ,GAAQ;gBACjB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAE,IAAI,QAAsB,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,GAAtC,CAAsC,CAAC,CAAC,OAAO,EAAE;aAC9G,CAAC;SACL;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAEO,6CAAQ,GAAhB;QACI,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACnC,IAAI,CAAC,QAAQ,GAAG,oCAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,IAAI,GAAG,2BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAA8B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAChC;aAAM;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACrD;QACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAChD,CAAC;IAtC0B;QAA1B,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;kCAAa,MAAM;kEAAC;IAKxB;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAAuC;IAdnD,0BAA0B;QAJtC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,qBAAqB;SAClC,CAAC;QACD,2BAAe,EAAE;QAGA,aAAE,CAAC,IAAI,EAAE,GAAE,0BAAQ,EAAE,GAAiC,0BAAQ,EAAE;yCAA3B,OAAO,CAAC,MAAM,EAAgC,OAAO,CAAC,kBAAkB,EAAO,EAAE,CAAC,gBAAgB,EAAkB,EAAE,CAAC,iBAAiB;OAFlL,0BAA0B,CAgDtC;IAAD,iCAAC;CAAA,CAhD+C,iCAAgB,GAgD/D;AAhDY,gEAA0B;;;;;;;;;;;;;;;ACZvC;IAII,0BAAY,MAAc,EAAE,OAAe;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,sCAAW,GAAX,UAAY,OAAe,EAAE,eAAyB;QAAtD,iBAoBC;QAnBG,IAAI,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YACxC,KAAI,CAAC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC;YACnC,IAAI,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;gBACnC,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;gBACzB,MAAM,CAAC,mBAAmB,GAAS,CAAC,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC;YAEF,OAAO,CAAC,eAAe,GAAG,UAAU,CAAC;gBACjC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEP,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,mCAAQ,GAAR,UAAS,SAAiB,EAAE,GAAQ;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;gBAClC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;gBACnB,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAChD,OAAmB,CAAC;YAExB,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,CAAC,SAAS,GAAG,UAAU,KAAY;gBACtC,OAAO,CAAO,KAAK,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,iCAAM,GAAN,UAAO,SAAiB,EAAE,QAAsB,EAAE,YAA2B;QACzE,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;gBAClC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;gBACnB,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAChD,MAAM,GAAe,EAAE,EACvB,OAAmB,CAAC;YACpB,IAAG,YAAY,EAAE;gBACb,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,KAAK,GAAuB,CAAC,YAAY,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClF,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aAC/C;iBACI;gBACD,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC9C;YAEL,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;gBACzB,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,UAAU,GAAU;gBACpC,IAAI,MAAM,GAAsB,GAAG,CAAC,MAAO,CAAC,MAAM,CAAC;gBACnD,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;iBACxB;qBAAM;oBACH,OAAO,CAAC,MAAM,CAAC,CAAC;iBACnB;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,8BAAG,GAAH,UAAI,SAAiB,EAAE,KAAU,EAAE,GAAS;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBACnC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;oBACf,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,SAAS,GAAG,UAAC,GAAQ;gBACzB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,iCAAM,GAAN,UAAO,SAAiB,EAAE,KAAU,EAAE,GAAS;QAC3C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBACnC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;oBACf,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC;gBACD,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErD,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,iCAAM,GAAN,UAAO,SAAiB,EAAE,GAAQ;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YAC5C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBACnC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;oBACf,OAAO,EAAE,CAAC;gBACd,CAAC;gBACD,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErD,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,qCAAU,GAAV,UAAW,SAAiB,EAAE,cAAoC,EAAE,QAAsB;QACtF,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YAC5C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;gBAClC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;oBACf,OAAO,EAAE,CAAC;gBACd,CAAC;gBACD,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAChD,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE/C,OAAO,CAAC,SAAS,GAAG,UAAC,GAAU;gBAC3B,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,gCAAK,GAAL,UAAM,SAAiB;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YAC5C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;gBACnC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;oBACf,OAAO,EAAE,CAAC;gBACd,CAAC;gBACD,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACrD,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,qCAAU,GAAV,UAAW,SAAiB,EAAE,SAAiB,EAAE,GAAQ;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM;YAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;gBAClC,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,KAAK,EAAE,UAAC,CAAQ;oBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,QAAQ,EAAE,UAAC,CAAQ;gBACnB,CAAC;aACJ,CAAC,EACF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAChD,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EACpC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE7B,OAAO,CAAC,SAAS,GAAG,UAAC,KAAK;gBACtB,OAAO,CAAoB,KAAK,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IACL,uBAAC;AAAD,CAAC;AA/PY,4CAAgB;AAiQ7B;IAII;QACI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAU,MAAO,CAAC,YAAY,IAAU,MAAO,CAAC,eAAe,IAAU,MAAO,CAAC,WAAW,CAAC;QAC9H,IAAI,CAAC,MAAM,GAAG;YACV,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;SACzB,CAAC;IACN,CAAC;IACL,YAAC;AAAD,CAAC;AAeD;IAKI,mBAAY,MAAc,EAAE,OAAe;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,qCAAiB,GAAjB,UAAkB,SAAiB;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAAA,CAAC;IAEF,6CAAyB,GAAzB,UAA0B,SAAiB,EAAE,MAAgB;QACzD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,MAAM,CAAC,oFAAoF,CAAC,CAAC;SAChG;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,CAAC,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAAC,CAAC;SACzD;IACL,CAAC;IAED,qCAAiB,GAAjB,UAAkB,OAA2I;QACzJ,IAAI,KAAK,GAAmB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnF,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;QACpC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IACL,gBAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzTD,yDAAmD;AACnD,gEAA2F;AAC3F,uGAA8E;AAS9E;IAII,2BAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QACjC,yBAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,+BAAgB,IAAI,CAAC,mBAAiB,CAAC,UAAU,EAAE;YACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;IACL,CAAC;0BATQ,iBAAiB;IAWpB,8CAAkB,GAAxB;;;;4BACI,WAAM,gDAAqB,EAAE;;wBAA7B,SAA6B,CAAC;wBAC9B,mBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;;;;;KACvC;;IAdQ,iBAAiB;QAP7B,eAAQ,CAAC;YACN,OAAO,EAAE,EAAG;YACZ,OAAO,EAAE,EAAG;YACZ,YAAY,EAAE,EAAG;YACjB,SAAS,EAAE,EAAG;SACjB,CAAC;QACD,4BAAa,EAAE;yCAKiB,eAAQ;OAJ5B,iBAAiB,CAgB7B;IAAD,wBAAC;CAAA;AAhBY,8CAAiB;;;;;;;;;;;;ACZ9B,qsBAAqsB,wBAAwB,gjB;;;;;;;;;;;ACA7tB,0DAA0D,0BAA0B,wBAAwB,mBAAmB,kBAAkB,qBAAqB,qBAAqB,sBAAsB,EAAE,G;;;;;;;;;;;ACAnN,6EAA6E,OAAO,0K;;;;;;;;;;;ACApF,4C;;;;;;;;;;;ACAA,w6BAAw6B,cAAc,qxBAAqxB,yDAAyD,k3CAAk3C,yDAAyD,6mB;;;;;;;;;;;ACA/qG,kFAAkF,yBAAyB,EAAE,G;;;;;;;;;;;ACA7G,0VAA0V,mBAAmB,gWAAgW,8HAA8H,+KAA+K,mGAAmG,yKAAyK,8HAA8H,2KAA2K,kGAAkG,qKAAqK,iGAAiG,+LAA+L,qCAAqC,6gBAA6gB,mBAAmB,OAAO,kEAAkE,wBAAwB,yM;;;;;;;;;;;ACA5vF,sDAAsD,yBAAyB,EAAE,yCAAyC,oBAAoB,gBAAgB,iBAAiB,EAAE,6CAA6C,kBAAkB,EAAE,wDAAwD,oBAAoB,EAAE,gDAAgD,wBAAwB,uBAAuB,8BAA8B,0BAA0B,EAAE,wCAAwC,gBAAgB,8BAA8B,EAAE,gCAAgC,qBAAqB,eAAe,oBAAoB,EAAE,wCAAwC,6BAA6B,qBAAqB,0BAA0B,EAAE,mDAAmD,4BAA4B,4CAA4C,iEAAiE,qCAAqC,kEAAkE,QAAQ,G;;;;;;;;;;;ACA5iC,iIAAiI,wDAAwD,iFAAiF,OAAO,qDAAqD,gwBAAgwB,OAAO,eAAe,wCAAwC,gBAAgB,uEAAuE,6GAA6G,OAAO,4GAA4G,wCAAwC,uqBAAuqB,MAAM,2N;;;;;;;;;;;ACAhpE,qCAAqC,svBAAsvB,iBAAiB,8BAA8B,gDAAgD,qBAAqB,+BAA+B,EAAE,gDAAgD,+BAA+B,0BAA0B,EAAE,oDAAoD,2BAA2B,EAAE,4DAA4D,kCAAkC,oBAAoB,EAAE,wDAAwD,gCAAgC,yBAAyB,EAAE,8DAA8D,wBAAwB,gCAAgC,kDAAkD,EAAE,sDAAsD,eAAe,gBAAgB,iBAAiB,EAAE,4CAA4C,oBAAoB,EAAE,8BAA8B,qCAAqC,4BAA4B,gBAAgB,gCAAgC,EAAE,yCAAyC,2BAA2B,yBAAyB,qBAAqB,8BAA8B,iBAAiB,gBAAgB,eAAe,EAAE,mDAAmD,sBAAsB,EAAE,mDAAmD,sBAAsB,EAAE,8LAA8L,oCAAoC,kCAAkC,sBAAsB,qBAAqB,EAAE,+CAA+C,oCAAoC,kCAAkC,gCAAgC,EAAE,kDAAkD,mCAAmC,EAAE,+CAA+C,4BAA4B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA5vF,qDAAoC;AACpC,sEAAgD;AAEhD,oEAAqD;AAQrD;IAAqD,mDAA2B;IAAhF;;IAeA,CAAC;IARgB,iDAAO,GAApB;;;;;6BACQ,IAAI,CAAC,UAAU,EAAf,cAAe;wBACf,WAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;;wBAAxC,SAAwC,CAAC;wBACzC,IAAI,CAAC,KAAK,EAAE,CAAC;;;wBAEb,IAAI,CAAC,KAAK,EAAE,CAAC;;;;;;KAEpB;IAZsB;QAAtB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;;kEAAY;IAFzB,+BAA+B;QAJ3C,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,mBAAO,CAAC,wCAA8B,CAAC;SACpD,CAAC;QACD,2BAAe,EAAE;OACL,+BAA+B,CAe3C;IAAD,sCAAC;CAAA,CAfoD,qBAAS,GAe7D;AAfY,0EAA+B;;;;;;;;;;;;ACX5C,i5B;;;;;;;;;;;;;;;;;;;;;;;ACAA,yDAAqM;AACrM,gEAA6C;AAC7C,gEAA2J;AAC3J,yEAAqG;AACrG,oEAAqD;AACrD,gFAA0D;AAE1D,6CAAiC;AAEjC,oBAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAS3B;IA8FI,2BAAmB,QAAmB,EAAU,cAAiC,EAAU,EAAc;QAAtF,aAAQ,GAAR,QAAQ,CAAW;QAAU,mBAAc,GAAd,cAAc,CAAmB;QAAU,OAAE,GAAF,EAAE,CAAY;QA1FpF,eAAU,GAAG,IAAI,CAAC;QAClB,eAAU,GAAG,IAAI,CAAC;QAGvB,UAAK,GAAmB,IAAI,CAAC;QAC/B,QAAG,GAAoB,GAAG,CAAC;QAExB,WAAM,GAAoB,GAAG,CAAC;QAE1B,cAAS,GAAoB,GAAG,CAAC;QAClC,aAAQ,GAAoB,GAAG,CAAC;QAEhC,cAAS,GAAY,IAAI,CAAC;QAC1B,cAAS,GAAY,IAAI,CAAC;QAC3B,aAAQ,GAAY,IAAI,CAAC;QAG7B,cAAS,GAAW,SAAS,CAAC;QAMpB,kBAAa,GAAG,IAAI,mBAAY,EAAW,CAAC;QAqB9D,oBAAe,GAAG,IAAI,mBAAY,EAAW,CAAC;QAM9C,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAW,kBAAG,EAAE,CAAC;IAuChC,CAAC;IAxED,sBAAW,mCAAI;aAAf;YACI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;QACxC,CAAC;;;OAAA;IAiCD,oCAAQ,GAAR,UAAS,GAAW;QAChB,IAAI,CAAC,KAAK,GAAG,QAAI,IAAI,CAAC,KAAK,IAAI,EAAE,UAAI,GAAK,EAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,uCAAW,GAAX,UAAY,GAAW;QACnB,IAAI,CAAC,KAAK,GAAG,QAAI,IAAI,CAAC,KAAK,IAAI,EAAE,OAAG,EAAC,OAAO,CAAC,MAAI,GAAG,MAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAOD,sBAAW,yCAAU;aAArB;YACI,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;aAED,UAAsB,MAAsB;YAA5C,iBASC;YARG,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,YAAY,eAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACnH,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YAEzB,UAAU,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;YAEpD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC;QACL,CAAC;;;OAXA;IAaD,sBAAW,iCAAE;aAAb;YACI,IAAI,CAAC,sBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC;aACtD;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;;;OAAA;IAKO,qCAAS,GAAjB,UAAkB,CAAkB,EAAE,QAAgB;QAClD,IAAI,GAAG,GAAG,yBAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ;gBAAE,GAAG,GAAG,QAAQ,CAAC;SAC7C;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,yCAAa,GAArB,UAAsB,CAAkB,EAAE,QAAgB;QACtD,IAAI,GAAG,CAAC;QACR,IAAI,CAAC,sBAAO,CAAC,CAAC,CAAC,EAAE;YACb,GAAG,GAAG,CAAC,CAAC,CAAC;YACT,IAAI,GAAG,GAAG,CAAC;gBAAE,GAAG,GAAG,CAAC,CAAC;YACrB,IAAI,QAAQ,GAAG,CAAC,EAAE;gBACd,IAAI,GAAG,GAAG,QAAQ;oBAAE,GAAG,GAAG,QAAQ,CAAC;aACtC;SACJ;aAAM;YACH,GAAG,GAAG,CAAC,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,yCAAa,GAAb;QACI,4BAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAEO,2CAAe,GAAvB;QACI,IAAI,2BAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE;YAC5F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;aAAM;YACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC/C;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,oCAAQ,GAAR;QAAA,iBAsEC;QArEG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,6BAAc,CAAC,SAAS,CAAC,UAAC,CAAC;YAChD,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,yBAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,yBAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7D,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC;QACtI,IAAM,OAAO,GAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,SAAI,gBAAkB,CAAC;QAC1E,IAAI,OAAO,EAAE;YAOT,IAAI,CAAC,sBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;aACtC;YASD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;YAGvB,yCAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,WAAE,EAAE,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAC;YACrG,yCAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,WAAE,EAAE,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAC;YACtG,yCAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,OAAO,WAAE,EAAE,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAC;YAG9G,yCAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,WAAE,EAAE,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAC;YACpG,yCAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,WAAE,EAAE,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAA3C,CAA2C,CAAC,CAAC;SAsBtG;IACL,CAAC;IAED,uCAAW,GAAX,UAAY,CAAgB;QACxB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE;YAC7G,IAAI,CAAC,CAAC,SAAS,EAAE;gBACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;aAC3C;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;IACL,CAAC;IAEO,2CAAe,GAAvB;QAAA,iBA6DC;QA5DG,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,sCAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,sCAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpC,sCAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAC/C;aAAM;YAEH,uCAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,uCAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACrC,uCAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,sCAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,sCAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACpC;aAAM;YAEH,uCAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,uCAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACrC;QAED,uBAAQ,CAAC;YAGL,IAAI,KAAI,CAAC,SAAS,EAAE;gBAChB,KAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,KAAI,CAAC,SAAS,CAAC;aAC1C;YACD,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACf,KAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAI,CAAC,QAAQ,CAAC;aACxC;YAGD,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,EAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,MAAM,EAAE,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;YAC3D,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;YAC9B,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC;YAMhC,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;YAC3E,KAAI,CAAC,GAAG,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAC3E,KAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAI,CAAC,IAAI,CAAC;YACpC,KAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAI,CAAC,GAAG,CAAC;YAGlC,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,IAAI,CAAC;YAC1B,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,GAAG,CAAC;YACxB,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC;YAC5B,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,MAAM,CAAC;YAE9B,KAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACtB,KAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC3B,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACrB;YACD,KAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACvC,CAAC,EAAE,CAAC,EAAK,IAAI,CAAC,QAAQ,qBAAkB,CAAC,CAAC;IAC9C,CAAC;IASM,sCAAU,GAAjB,UAAkB,KAAe;QAAjC,iBAmFC;QAlFG,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK,EAAE;YAEjC,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE;gBAChB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;aAC3C;iBAAM;gBACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;aAC/B;YACD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,YAAY;gBAAE,OAAO;YACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;YACzC,IAAI,IAAI,CAAC,YAAY,EAAE;gBAEnB,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE;oBAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;iBACjC;gBACD,uCAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpC,uCAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAGrC,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE;oBAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;iBAC3B;gBACD,uCAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACnC,uCAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAGlC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;gBAChC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,GAAG,oBAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;gBAClE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;gBACnE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;gBAKjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;iBAAM;gBAEH,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAE/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE/D,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAM,IAAI,CAAC,KAAK,OAAI,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAM,IAAI,CAAC,MAAM,OAAI,CAAC;gBAE1C,sCAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,sCAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/E,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAM,IAAI,CAAC,IAAI,OAAI,CAAC;gBACtC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAM,IAAI,CAAC,GAAG,OAAI,CAAC;gBACpC,sCAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClC,sCAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAEjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBAEtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;YAGD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YAG5B,UAAU,CAAC;gBACP,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzG,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACnH,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;IACL,CAAC;IAED,gCAAI,GAAJ,UAAK,IAAS;QAAd,iBAGC;QAFG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,OAAO,CAAC,iBAAO,IAAI,YAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAC,IAAI,cAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC,EAA/C,CAA+C,CAAC,CAAC;IACnF,CAAC;IACM,kCAAM,GAAb;QACI,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;aAChC;YAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACxC;IACL,CAAC;IAED,gCAAI,GAAJ;QACI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IACM,kCAAM,GAAb;QACI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;IACnE,CAAC;IAOM,iCAAK,GAAZ,UAAa,WAAiB;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;IACL,CAAC;IACD,yCAAa,GAAb,UAAc,YAAgC;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAGD,sDAA0B,GAA1B;QAAA,iBAOC;QANG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,sBAAsB,GAAG,mCAAoB,CAAC,SAAS,EAAE,UAAC,KAAoB;YAC/E,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1E,KAAI,CAAC,KAAK,EAAE,CAAC;aAChB;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,wDAA4B,GAA5B;QACI,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;IACL,CAAC;IAED,yDAA6B,GAA7B;QAAA,iBAuBC;QAtBG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,UAAC,KAAK;YACjF,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;iBAAM,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACtB,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzB;YACD,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;YAE1D,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,KAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAE/F,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxB;iBAAM,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACtB,IAAM,MAAM,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,KAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACtB,KAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACxB,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrF,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2DAA+B,GAA/B;QACI,IAAG,IAAI,CAAC,yBAAyB,EAAE;YAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;IACL,CAAC;IAGO,8CAAkB,GAA1B;QACI,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;SAE/C;IACL,CAAC;IAEO,gDAAoB,GAA5B;QACI,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;IAElD,CAAC;IAree;QAAf,YAAK,CAAC,OAAO,CAAC;;oDAAe;IACb;QAAhB,YAAK,CAAC,QAAQ,CAAC;;qDAAgB;IACjB;QAAd,YAAK,CAAC,MAAM,CAAC;;mDAAc;IACP;QAApB,YAAK,CAAC,YAAY,CAAC;;yDAAmB;IAClB;QAApB,YAAK,CAAC,YAAY,CAAC;;yDAAmB;IACjB;QAArB,YAAK,CAAC,aAAa,CAAC;;yDAAiB;IAEtB;QAAf,YAAK,CAAC,OAAO,CAAC;;oDAA8B;IAC/B;QAAb,YAAK,CAAC,KAAK,CAAC;;kDAA4B;IAC1B;QAAd,YAAK,CAAC,MAAM,CAAC;;mDAAuB;IACpB;QAAhB,YAAK,CAAC,QAAQ,CAAC;;qDAA+B;IAE1B;QAApB,YAAK,CAAC,YAAY,CAAC;;wDAAkC;IAClC;QAAnB,YAAK,CAAC,WAAW,CAAC;;uDAAiC;IAEhC;QAAnB,YAAK,CAAC,WAAW,CAAC;;wDAA2B;IAC1B;QAAnB,YAAK,CAAC,WAAW,CAAC;;wDAA2B;IAC3B;QAAlB,YAAK,CAAC,UAAU,CAAC;;uDAA0B;IAG7B;QAAd,YAAK,CAAC,MAAM,CAAC;;wDAA+B;IAMpB;QAAxB,aAAM,CAAC,eAAe,CAAC;;4DAA6C;IAEhD;QAApB,gBAAS,CAAC,QAAQ,CAAC;kCAAQ,eAAM;oDAAC;IAET;QAAzB,gBAAS,CAAC,aAAa,CAAC;kCAAc,iBAAU;0DAAC;IA/BzC,iBAAiB;QAP7B,gBAAS,CAAC;YACP,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,CAAC,mBAAO,CAAC,kCAAwB,CAAC,CAAC;YAC3C,eAAe,EAAE,8BAAuB,CAAC,OAAO;YAChD,QAAQ,EAAE,mBAAO,CAAC,kCAAwB,CAAC;SAC9C,CAAC;QACD,2BAAe,EAAE;yCA+Fe,gBAAS,EAA0B,wBAAiB,EAAc,iBAAU;OA9FhG,iBAAiB,CAye7B;IAAD,wBAAC;CAAA;AAzeY,8CAAiB;;;;;;;;;;;;AClB9B,wCAAwC,wBAAwB,EAAE,G;;;;;;;;;;;ACAlE,glBAAglB,2CAA2C,4HAA4H,MAAM,kDAAkD,+BAA+B,mDAAmD,QAAQ,mHAAmH,wGAAwG,46B;;;;;;;;;;;ACApmC,gGAAgG,8BAA8B,0RAA0R,+DAA+D,2JAA2J,oDAAoD,yCAAyC,oEAAoE,6aAA6a,4GAA4G,oaAAoa,cAAc,iJAAiJ,aAAa,GAAG,oBAAoB,wLAAwL,WAAW,kBAAkB,qVAAqV,4GAA4G,o8CAAo8C,+CAA+C,2BAA2B,aAAa,GAAG,oBAAoB,k3EAAk3E,2DAA2D,o6C;;;;;;;;;;;ACAxgN,oCAAoC,qBAAqB,EAAE,G;;;;;;;;;;;ACA3D,oCAAoC,kCAAkC,wCAAwC,SAAS,QAAQ,6CAA6C,yBAAyB,0BAA0B,wBAAwB,EAAE,4CAA4C,sBAAsB,qCAAqC,EAAE,4DAA4D,iCAAiC,mCAAmC,EAAE,iDAAiD,sBAAsB,EAAE,iDAAiD,iCAAiC,EAAE,2CAA2C,yBAAyB,EAAE,G;;;;;;;;;;;ACAvsB,k0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,yDAAkD;AAElD,oEAAqD;AACrD,sEAAgD;AAChD,gEAA8C;AAC9C,8FAAsG;AAMtG;IAAuC,qCAAkB;IAAzD;QAAA,qEA0FC;QAhFU,4BAAsB,GAAW,CAAC,CAAC,CAAC;;IAgF/C,CAAC;0BA1FY,iBAAiB;IAmBb,uBAAK,GAAlB,UAAmB,SAAgC,EAAE,gBAAuB;QAAvB,0DAAuB;;;;4BACjE,WAAM,qBAAM,CAAC,IAAI,CAAC,mBAAiB,EAAE,EAAE,SAAS,aAAE,gBAAgB,oBAAE,CAAC,CAAC,MAAM;4BAAnF,WAAO,SAA4E,EAAC;;;;KACvF;IAED,oCAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,sCAAU,GAAV,UAAW,CAAa;QACpB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO;QACrC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;SAC7C;aACI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAClC,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjH,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE;gBACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;gBAC1C,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC;aAC7E;SACJ;aAAM,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACtC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,UAAU,IAAI,2CAA2C,CAAC;SAC7F;aAAM;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEY,yCAAa,GAA1B;;;;;;;wBACI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;wBAC3B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;wBACjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,WAAC,IAAI,YAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC;;;;wBAEnF,SAAI;wBAAU,WAAM,IAAI,CAAC,SAAS,EAAE;;wBAApC,GAAK,MAAM,GAAG,SAAsB,CAAC;wBACzB,WAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;wBAAzD,GAAG,GAAG,SAAmD;wBAC/D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;;;;wBAErB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,MAAM,GAAC,CAAC;;;;;KAEf;IAEM,uCAAW,GAAlB;QACI,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;IAEM,kCAAM,GAAb;QACI,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;iBAAM;gBACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClD;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;;IA1E6B;QAA7B,qBAAM,CAAC,wCAAoB,CAAC;kCAAoB,wCAAoB;gEAAC;IAb7D,iBAAiB;QAJ7B,gBAAS,CAAC;YACP,QAAQ,EAAE,mBAAO,CAAC,kCAAwB,CAAC;SAC9C,CAAC;QACD,2BAAe,EAAE;OACL,iBAAiB,CA0F7B;IAAD,wBAAC;CAAA,CA1FsC,qBAAS,GA0F/C;AA1FY,8CAAiB;;;;;;;;;;;;ACX9B,iWAAiW,cAAc,yUAAyU,oCAAoC,qIAAqI,oCAAoC,4Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAr4B,yDAAoE;AACpE,oEAAqD;AACrD,sEAAgD;AAChD,gEAAsD;AAMtD;IAAqC,mCAAkB;IAUnD,yBAAY,GAAqB;QAAjC,YACI,kBAAM,GAAG,EAAE,IAAI,CAAC,SACnB;QARD,WAAK,GAAW,GAAG,CAAC;QAEpB,eAAS,GAAG,KAAK,CAAC;;IAMlB,CAAC;IAED,kCAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACnF,CAAC;IAED,+BAAK,GAAL,UAAM,WAAqB;QACvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,sBAAO,CAAC,WAAW,CAAC,EAAE;YAChD,iBAAM,KAAK,YAAC,WAAW,CAAC,CAAC;SAC5B;IACL,CAAC;IAvBQ,eAAe;QAJ3B,gBAAS,CAAC;YACP,QAAQ,EAAE,mBAAO,CAAC,gCAAsB,CAAC;SAC5C,CAAC;QACD,2BAAe,EAAE;yCAWG,uBAAgB;OAVxB,eAAe,CAwB3B;IAAD,sBAAC;CAAA,CAxBoC,qBAAS,GAwB7C;AAxBY,0CAAe;;;;;;;;;;;;ACT5B,gJAAgJ,MAAM,GAAG,mDAAmD,8RAA8R,oBAAoB,6vB;;;;;;;;;;;ACA9f,6EAA6E,oDAAoD,iFAAiF,OAAO,wCAAwC,OAAO,8CAA8C,mFAAmF,uFAAuF,OAAO,6EAA6E,OAAO,2BAA2B,4DAA4D,6GAA6G,kBAAkB,+DAA+D,oCAAoC,MAAM,+GAA+G,MAAM,qBAAqB,qCAAqC,6IAA6I,OAAO,6E;;;;;;;;;;;ACA7rC,qCAAqC,2rB;;;;;;;;;;;ACArC,6FAA6F,0DAA0D,iFAAiF,OAAO,6CAA6C,OAAO,GAAG,qBAAqB,gBAAgB,oEAAoE,uFAAuF,OAAO,mIAAmI,OAAO,gBAAgB,+BAA+B,4CAA4C,aAAa,+EAA+E,0HAA0H,2CAA2C,kGAAkG,MAAM,qBAAqB,qCAAqC,0JAA0J,OAAO,qI;;;;;;;;;;;ACAtxC,qCAAqC,2rB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACArC,qDAAoC;AACpC,+EAAyD;AACzD,iEAAkD;AAClD,uEAAwG;AACxG,8EAA2D;AA6B3D;IAA4C,0CAAa;IAAzD;QAAA,qEA4DC;QAzD0B,eAAS,GAAG,EAAE,CAAC;QAUZ,iBAAW,GAAG,IAAI,EAAE,CAAC,YAAY,EAAiB,CAAC;QAC9C,sBAAgB,GAAG,IAAI,EAAE,CAAC,YAAY,EAA+B,CAAC;;IA8CzG,CAAC;IArCG,yCAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,4CAAW,GAAX,UAAY,EAAE;QACV,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAID,sCAAK,GAAL,UAAM,YAAqB;QAA3B,iBAwBC;QAvBG,IAAI,CAAC,UAAU,GAAG,eAAO,CAAC,IAAI,CAAC,UAAU,EAAE,iCAAiC,CAAC,CAAC;QAC9E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACnG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACvG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACxE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAClE,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,kCAAoB,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAC,IAAI,YAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAC,IAAI,YAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAxB,CAAwB,CAAC,CAAC;aAClE;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACpB;SACJ;aACI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACpB;IACL,CAAC;IAxDoB;QAApB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;kCAAU,kCAAoB;2DAAC;IAC5B;QAAtB,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;;6DAAgB;IAER;QAA7B,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;kCAAmB,EAAE,CAAC,WAAW;oEAAM;IACpC;QAA/B,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;kCAAqB,EAAE,CAAC,WAAW;sEAAM;IAC5C;QAA3B,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;kCAAiB,EAAE,CAAC,WAAW;kEAAM;IACtC;QAAzB,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;kCAAe,EAAE,CAAC,WAAW;gEAAM;IAChC;QAA3B,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;kCAAiB,EAAE,CAAC,WAAW;kEAAM;IAExC;QAAvB,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;;8DAAoB;IAEjB;QAAzB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;;+DAAoD;IAC9C;QAA9B,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;;oEAAuE;IAEtE;QAA9B,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC;kCAAwB,EAAE,CAAC,WAAW;yEAAM;IAC7C;QAA5B,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;kCAAsB,EAAE,CAAC,WAAW;uEAAM;IACvC;QAA9B,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC;kCAAwB,EAAE,CAAC,WAAW;yEAAM;IAlBjE,sBAAsB;QANlC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,iBAAiB;YAC3B,QAAQ,EAAE,mBAAO,CAAC,wCAA8B,CAAC;YACjD,MAAM,EAAE,CAAC,mBAAO,CAAC,wCAA8B,CAAC,CAAC;SACpD,CAAC;QACD,2BAAe,EAAE;OACL,sBAAsB,CA4DlC;IAAD,6BAAC;CAAA,CA5D2C,8BAAa,GA4DxD;AA5DY,wDAAsB;;;;;;;;;;;;ACjCnC,sSAAsS,WAAW,4BAA4B,qPAAqP,oBAAoB,kHAAkH,WAAW,iDAAiD,wRAAwR,WAAW,4BAA4B,4dAA4d,eAAe,oX;;;;;;;;;;;ACA9iD,qCAAqC,2sBAA2sB,mBAAmB,iBAAiB,uBAAuB,EAAE,gDAAgD,qBAAqB,uBAAuB,yBAAyB,mBAAmB,EAAE,6DAA6D,oBAAoB,oBAAoB,2BAA2B,EAAE,kFAAkF,sBAAsB,sBAAsB,EAAE,oEAAoE,uBAAuB,yBAAyB,EAAE,oEAAoE,uBAAuB,oBAAoB,yBAAyB,EAAE,2DAA2D,2BAA2B,gBAAgB,iBAAiB,eAAe,kBAAkB,EAAE,uEAAuE,6BAA6B,EAAE,gFAAgF,kCAAkC,yBAAyB,mCAAmC,0BAA0B,EAAE,kFAAkF,kCAAkC,mCAAmC,EAAE,yEAAyE,uBAAuB,qDAAqD,EAAE,mFAAmF,2BAA2B,EAAE,G;;;;;;;;;;;ACAnyE,mFAAmF,gFAAgF,iFAAiF,OAAO,wCAAwC,OAAO,gBAAgB,qDAAqD,uFAAuF,OAAO,4DAA4D,OAAO,gBAAgB,oEAAoE,6LAA6L,2EAA2E,mBAAmB,wQAAwQ,+G;;;;;;;;;;;ACAvoC,qCAAqC,mtBAAmtB,oBAAoB,EAAE,sDAAsD,uCAAuC,oBAAoB,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAj4B,qDAAoC;AACpC,gEAAoC;AACpC,+EAAyD;AACzD,iEAAkD;AAYlD;IAA+C,6CAAa;IA2BxD,mCAA0B,aAAmC,EAAiB,YAAsB;QAApG,YACI,kBAAM,aAAa,EAAE,YAAY,CAAC,SACrC;QAhBkB,WAAK,GAAW,IAAI,CAAC;QAGd,iBAAW,GAAG,IAAI,EAAE,CAAC,YAAY,EAAU,CAAC;QAGpD,eAAS,GAAW,EAAE,CAAC;;IAUzC,CAAC;IAvBD,sBAAW,kDAAW;aAAtB,cAAmC,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;;;OAAA;IAcvH,sBAAW,2CAAI;aAAf;YACI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/F,CAAC;;;OAAA;IAUD,4CAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;IACL,CAAC;IAEM,mDAAe,GAAtB,UAAuB,KAAa;QAChC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,4CAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IA/CkB;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;4DAAe;IACX;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;+DAAmB;IACf;QAAxB,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;;uEAA0B;IACpB;QAA7B,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;;2EAA8B;IAGtC;QAApB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;;8DAAkB;IAChB;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAA2B;IAI7B;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;4DAAsB;IAGd;QAAzB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;;kEAA6C;IAGpD;QAAjB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;gEAAwB;IAMtB;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;4DAAuC;IAzBhD,yBAAyB;QAPrC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,oBAAoB;YAC9B,QAAQ,EAAE,mBAAO,CAAC,2CAAiC,CAAC;YACpD,MAAM,EAAE,CAAC,mBAAO,CAAC,2CAAiC,CAAC,CAAC;YACpD,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM;SACrD,CAAC;QACD,2BAAe,EAAE;QA4BD,aAAE,CAAC,QAAQ,EAAE,GAAsC,aAAE,CAAC,QAAQ,EAAE;yCAAnC,EAAE,CAAC,gBAAgB;OA3BpD,yBAAyB,CAkDrC;IAAD,gCAAC;CAAA,CAlD8C,8BAAa,GAkD3D;AAlDY,8DAAyB;;;;;;;;;;;;ACftC,iFAAiF,0DAA0D,+DAA+D,OAAO,8CAA8C,OAAO,gBAAgB,+BAA+B,uFAAuF,OAAO,2HAA2H,aAAa,yP;;;;;;;;;;;ACA3hB,wCAAwC,0BAA0B,EAAE,G;;;;;;;;;;;ACApE,wGAAwG,+DAA+D,iFAAiF,OAAO,wCAAwC,YAAY,gBAAgB,uEAAuE,uFAAuF,OAAO,mHAAmH,cAAc,8GAA8G,YAAY,wCAAwC,uCAAuC,+HAA+H,2HAA2H,mDAAmD,6YAA6Y,YAAY,yK;;;;;;;;;;;ACAx/C,qCAAqC,2rB;;;;;;;;;;;ACArC,oFAAoF,mEAAmE,iFAAiF,OAAO,wCAAwC,OAAO,gBAAgB,qDAAqD,uFAAuF,OAAO,iDAAiD,OAAO,gBAAgB,4FAA4F,qSAAqS,aAAa,yBAAyB,mGAAmG,mBAAmB,gCAAgC,cAAc,yBAAyB,gL;;;;;;;;;;;ACA7mC,qCAAqC,otBAAotB,yBAAyB,4BAA4B,wBAAwB,qBAAqB,EAAE,0CAA0C,oBAAoB,EAAE,kGAAkG,sBAAsB,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAvhC,yDAAmI;AACnI,gEAAuE;AACvE,wFAAoF;AACpF,+EAAyD;AACzD,iEAAkD;AAkBlD;IAAsC,oCAAa;IAwB/C,0BAAY,GAAqB,EAAU,GAAa;QAAxD,YACI,kBAAM,GAAG,CAAC,SAEb;QAH0C,SAAG,GAAH,GAAG,CAAU;QAXhC,kBAAY,GAAW,EAAE,CAAC;QAG9B,cAAQ,GAAG,IAAI,mBAAY,EAAW,CAAC;QACrC,gBAAU,GAAG,IAAI,mBAAY,EAAQ,CAAC;QAY5D,qBAAe,GAAY,IAAI,CAAC;QAH5B,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gDAAuB,CAAC,CAAC;;IACxD,CAAC;IAKM,qCAAU,GAAjB;QACI,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,mBAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,mBAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,mBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAErF,IAAM,KAAK,GAAG,CAAC,CAAC,6HAA6H,CAAC,CAAC;YAC/I,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;SACtD;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEM,uCAAY,GAAnB;QACI,IAAI,mBAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,mBAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,mBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAErF,IAAM,KAAK,GAAG,CAAC,CAAC,6HAA6H,CAAC,CAAC;YAC/I,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEK,0CAAe,GAArB;;;;;;wBACQ,GAAG,GAAG,IAAI,CAAC;6BACX,QAAO,IAAI,CAAC,WAAW,KAAK,UAAU,GAAtC,cAAsC;wBAChC,WAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;;wBAAlD,GAAG,GAAG,SAA4C,CAAC;;;6BAE9C,KAAI,CAAC,WAAW,YAAY,OAAO,GAAnC,cAAmC;wBAClC,WAAM,IAAI,CAAC,WAAW;;wBAA5B,GAAG,GAAG,SAAsB,CAAC;;;wBAE5B,IAAI,yBAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;4BACnC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;yBAC5B;;4BACD,WAAO,GAAG,KAAK,KAAK,EAAC;;;;KACxB;IAEK,4CAAiB,GAAvB;;;;;;wBACQ,GAAG,GAAG,IAAI,CAAC;6BACX,QAAO,IAAI,CAAC,aAAa,KAAK,UAAU,GAAxC,cAAwC;wBAClC,WAAM,IAAI,CAAC,aAAa,EAAE;;wBAAhC,GAAG,GAAG,SAA0B,CAAC;;;6BAE5B,KAAI,CAAC,aAAa,YAAY,OAAO,GAArC,cAAqC;wBACpC,WAAM,IAAI,CAAC,aAAa;;wBAA9B,GAAG,GAAG,SAAwB,CAAC;;;wBAE9B,IAAI,yBAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;4BACrC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;yBAC9B;;4BACD,WAAO,GAAG,KAAK,KAAK,EAAC;;;;KACxB;IAGD,mCAAQ,GAAR;QAAA,iBAkBC;QAjBG,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,mBAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,yBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,sBAAO,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;iBAC7D,IAAI,sBAAO,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;SAC1E;QACD,IAAI,CAAC,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,EAAE,GAAG,sBAAO,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAG,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAC,IAAI,QAAC,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,EAAhB,CAAgB,CAAC,EAAE;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAkB,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;SAClC;IACL,CAAC;IAED,sCAAW,GAAX;QACI,iBAAM,WAAW,WAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAzGqB;QAArB,YAAK,CAAC,aAAa,CAAC;kCAAc,kBAAW;yDAAM;IAEvC;QAAZ,YAAK,CAAC,IAAI,CAAC;;gDAAY;IACP;QAAhB,YAAK,CAAC,QAAQ,CAAC;;oDAAiB;IACd;QAAlB,YAAK,CAAC,UAAU,CAAC;;sDAAmB;IAEH;QAAjC,YAAK,CAAC,yBAAyB,CAAC;;mEAAgC;IAE/C;QAAjB,YAAK,CAAC,SAAS,CAAC;;mDAAe;IACX;QAApB,YAAK,CAAC,YAAY,CAAC;;wDAAqB;IAClB;QAAtB,YAAK,CAAC,cAAc,CAAC;;yDAAsB;IACrB;QAAtB,YAAK,CAAC,cAAc,CAAC;;yDAAsB;IACpB;QAAvB,YAAK,CAAC,eAAe,CAAC;;0DAA2B;IAC/B;QAAlB,YAAK,CAAC,UAAU,CAAC;;sDAAmB;IAEjB;QAAnB,aAAM,CAAC,UAAU,CAAC;;sDAAwC;IACrC;QAArB,aAAM,CAAC,YAAY,CAAC;;wDAAuC;IAEtC;QAArB,YAAK,CAAC,aAAa,CAAC;;yDAAgG;IAC7F;QAAvB,YAAK,CAAC,eAAe,CAAC;;2DAAgF;IApB9F,gBAAgB;QAd5B,gBAAS,CAAC;YACP,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,iTASb;SACA,CAAC;QACD,2BAAe,EAAE;yCAyBG,uBAAgB,EAAe,eAAQ;OAxB/C,gBAAgB,CA4G5B;IAAD,uBAAC;CAAA,CA5GqC,8BAAa,GA4GlD;AA5GY,4CAAgB;;;;;;;;;;;;ACtB7B,+dAA+d,oHAAoH,qDAAqD,oDAAoD,aAAa,sN;;;;;;;;;;;ACAzsB,4EAA4E,iBAAiB,EAAE,uEAAuE,uCAAuC,EAAE,uGAAuG,4BAA4B,kBAAkB,yCAAyC,gCAAgC,EAAE,2EAA2E,mCAAmC,2BAA2B,0BAA0B,kBAAkB,mBAAmB,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAznB,yDAAmF;AACnF,2DAAwD;AACxD,iEAAkD;AAClD,+EAAyD;AACzD,iIAA4G;AAE5G,IAAK,UASJ;AATD,WAAK,UAAU;IAEX,iDAAW;IAEX,mDAAY;IAEZ,mDAAY;IAEZ,uDAAc;AAClB,CAAC,EATI,UAAU,KAAV,UAAU,QASd;AASD;IAA8C,4CAAa;IAA3D;QAAA,qEAoJC;QAnJY,yBAAmB,GAAG,YAAY,CAAC;QACnC,wBAAkB,GAAG,WAAW,CAAC;QACjC,sBAAgB,GAAG,SAAS,CAAC;QAC7B,mBAAa,GAAG,MAAM,CAAC;QAkCzB,iBAAW,GAAG;YACjB,2CAA2C;YAC3C,+CAA+C;YAC/C,kDAAkD;YAClD,qDAAqD;SACxD,CAAC;QAEK,kBAAY,GAAG;YAClB,qCAAqC;YACrC,sCAAsC;YACtC,kCAAkC;YAClC,+BAA+B;YAC/B,+BAA+B;YAC/B,oCAAoC;YACpC,qCAAqC;SACxC,CAAC;QAEK,gBAAU,GAAG,UAAU,CAAC,OAAO,CAAC;QAChC,iBAAW,KAAsB;QACjC,WAAK,GAAW,CAAC,CAAC;QAClB,UAAI,GAAuB,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAuClD,WAAK,GAAG,KAAK,CAAC;;IAmD1B,CAAC;IAzIG,6CAAU,GAAV;QACI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,IAAI,MAAM,GAAQ,IAAI,CAAC,eAAe,CAAC;QACvC,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,EAAE;YAChC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE;gBACtB,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;oBAC5C,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;iBAChC;qBAAM;oBACH,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;iBAC9B;aACJ;YACD,IAAI,MAAM,YAAY,+CAAsB,EAAE;gBAC1C,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;aAC7B;iBAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;gBAChD,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;aAC5C;iBAAM;gBACH,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;aACnC;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IA8BD,8CAAW,GAAX,UAAY,CAAgB;QACxB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,mBAAmB,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE;YACvG,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;SACzC;IACL,CAAC;IAED,2CAAQ,GAAR;QACI,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,+CAAY,GAAZ;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,+CAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACnF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;IACL,CAAC;IAED,8CAAW,GAAX,UAAY,gBAAwB,EAAE,UAAuB;QAA7D,iBAYC;QAXG,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,IAAI,mBAAW,EAAE,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;SACxD;QACD,IAAI,UAAU,KAAK,OAAO,EAAE;YACxB,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACrE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAM,YAAI,CAAC,oBAAoB,EAAE,EAA3B,CAA2B,CAAC,CAAC,CAAC;SACvH;QACD,OAAoB,OAAO,CAAC;IAChC,CAAC;IAIM,gDAAa,GAApB;QACI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,KAAsB,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,EAAE;oBACnF,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;iBAClB;qBAAM;oBACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;iBACnC;gBACD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,CAAC;gBAClG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5E,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACtB;SACJ;IACL,CAAC;IAED,uDAAoB,GAApB;QACI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAM,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7D,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;aAC/H;YACD,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAmB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC9C,IAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACtD,IAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAClD,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;oBACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;oBAC/B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;wBACjB,IAAI,OAAO,KAAK,CAAC,EAAE;4BACf,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;yBAC5H;6BAAM;4BACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;yBACjI;qBACJ;iBACJ;gBACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACtB;SACJ;IACL,CAAC;IAlJQ;QAAR,YAAK,EAAE;;yEAAoC;IACnC;QAAR,YAAK,EAAE;;wEAAkC;IACjC;QAAR,YAAK,EAAE;;sEAA8B;IAC7B;QAAR,YAAK,EAAE;;mEAAwB;IAGvB;QAAR,YAAK,EAAE;kCAAY,iBAAS;+DAAC;IAGX;QAAlB,YAAK,CAAC,UAAU,CAAC;;+DAAoB;IAV7B,wBAAwB;QANpC,gBAAS,CAAC;YACP,QAAQ,EAAE,mBAAmB;YAC7B,QAAQ,EAAE,mBAAO,CAAC,0CAAgC,CAAC;YACnD,MAAM,EAAE,CAAC,mBAAO,CAAC,0CAAgC,CAAC,CAAC;SACtD,CAAC;QACD,2BAAe,EAAE;OACL,wBAAwB,CAoJpC;IAAD,+BAAC;CAAA,CApJ6C,8BAAa,GAoJ1D;AApJY,4DAAwB;;;;;;;;;;;;ACxBrC,2TAA2T,8BAA8B,eAAe,6gBAA6gB,8BAA8B,eAAe,if;;;;;;;;;;;ACAl6B,qCAAqC,4uBAA4uB,kBAAkB,kCAAkC,wBAAwB,yBAAyB,oBAAoB,EAAE,oDAAoD,wBAAwB,EAAE,mDAAmD,yBAAyB,EAAE,kCAAkC,iBAAiB,mBAAmB,qBAAqB,EAAE,0CAA0C,mBAAmB,yBAAyB,2BAA2B,EAAE,iDAAiD,qBAAqB,yBAAyB,2BAA2B,yBAAyB,4BAA4B,EAAE,gDAAgD,qBAAqB,EAAE,iDAAiD,uBAAuB,EAAE,+CAA+C,qBAAqB,yBAAyB,2BAA2B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;ACAprD,yDAA2E;AAC3E,iEAAkD;AAWlD;IAKE,6BAAmB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAC5C,CAAC;IAED,sCAAQ,GAAR;QACE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC;QACrG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACrF,CAAC;IAToB;QAApB,YAAK,CAAC,YAAY,CAAC;;6DAAsB;IACb;QAA5B,YAAK,CAAC,oBAAoB,CAAC;;8DAAuB;IAHxC,mBAAmB;QAJ/B,gBAAS,CAAC;YACT,QAAQ,EAAE,cAAc;SACzB,CAAC;QACD,2BAAe,EAAE;yCAMY,uBAAgB;OALjC,mBAAmB,CAY/B;IAAD,0BAAC;CAAA;AAZY,kDAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZhC,yDAAsF;AACtF,2DAAkG;AAClG,gEAA+F;AAC/F,oEAAqD;AACrD,kGAA6E;AAC7E,qGAA+E;AAU/E;IAA8C,4CAAiD;IAA/F;QAAA,qEA8LC;QA1LU,iBAAW,GAAG;YACjB,uCAAuC;YACvC,qCAAqC;YACrC,wCAAwC;YACxC,wCAAwC;SAC3C,CAAC;QAiJK,iBAAW,GAAG;YACjB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACxC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAC/C;QAMM,cAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;aACvD,KAAK,CAAE,MAAM,CAAC,aAAa,CAAM,IAAI,CAAS,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAA1B,CAA0B,CAAC,CAAC;aAC5F,OAAO,EAAE,CAAC;QAMR,YAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;aACrD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,EAAnE,CAAmE,CAAC,CAAC;aAC5G,OAAO,EAAE,CAAC;QAMR,UAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aAChC,MAAM,CAAC,WAAC,IAAI,QAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAvH,CAAuH,CAAC;aACpI,OAAO,EAAE,CAAC;;IAGnB,CAAC;iCA9LY,wBAAwB;IAWjC,2CAAQ,GAAR;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;QAChD,iBAAM,QAAQ,WAAE,CAAC;IACrB,CAAC;IAES,qDAAkB,GAA5B,UAA6B,OAA0B;IAEvD,CAAC;IAKa,8CAAqB,GAAnC,UAAoC,KAAW,EAAE,EAAgB;QAC7D,EAAE,GAAG,EAAE,IAAI,yBAAU,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC;QACvC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;YACjB,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAChC,QAAQ,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,kBAAU,CAAC,QAAQ,CAAC;YAC/F,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,KAA4B,EAAE,kBAAU,CAAC,QAAQ,CAAC;YAC/E,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;YAC9B,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC/B,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;YACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YAChC,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACxC,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;YAClC,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAES,gDAAa,GAAvB,UAAwB,KAAW;QAAnC,iBAaC;QAZG,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChF,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;QAChB,IAAM,GAAG,GAAG,0BAAwB,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,WAAC;YACxB,KAAK,IAAI,QAAQ,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;oBAC5B,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,KAAI,CAAC,EAAE,CAAC;oBAC/E,EAAE,IAAI,2BAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,2BAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAC/D;aACJ;QACL,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAEa,kCAAS,GAAvB,UAAwB,KAAmB;QACvC,IAAM,GAAG,GAAG,KAAK,IAAkB,EAAE,CAAC;QACtC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QAClC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,KAA4B,CAAC;QAC5D,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3D,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;QACjC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACf,CAAC;IAES,qDAAkB,GAA5B;QACI,OAAO,0BAAwB,CAAC,SAAS,CAAC,iBAAM,kBAAkB,WAAE,CAAC,CAAC;IAC1E,CAAC;IAED,2CAAQ,GAAR,UAAS,KAAmB;QACxB,iBAAM,QAAQ,YAAC,0BAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAES,8CAAW,GAArB;QACI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1D;QACD,IAAI,IAAI,CAAC,OAAO,YAAY,mBAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,YAAY,iBAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1G,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC5C;aAAM;SAEN;QACD,iBAAM,WAAW,WAAE,CAAC;IACxB,CAAC;IAED,6CAAU,GAAV,UAAW,WAAmB;QAC1B,IAAI,GAAG,GAA4B,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,EAAE;YACN,GAAG,GAAG,IAAI,mBAAW,CAAC,EAAE,EAAE,mCAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;YACf,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SAC1D;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAMM,kDAAe,GAAtB,UAAuB,WAAmB,EAAE,GAAW;QACnD,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9D,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAMM,kDAAe,GAAtB,UAAuB,WAAmB,EAAE,GAAW,EAAE,KAAc;QACnE,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,IAAM,cAAc,GAAG,qBAAM,CAAC,YAAY,CAAC,CAAC;QAE5C,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE;YACpB,YAAY,GAAG,EAAE,CAAC;SACrB;aACI,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;aACI,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3C,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,IAAI,qBAAM,CAAC,YAAY,CAAC,KAAK,cAAc,EAAE;YACzC,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,UAAK,YAAY,EAAE,CAAC;SACvC;QACD,IAAI,CAAC,eAAa,WAAa,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC;IACxB,CAAC;IAEM,iDAAc,GAArB,UAAsB,CAA+B,EAAE,MAAa;QAApE,iBASC;QARG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,sBAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACjD,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;iBACZ,OAAO,CAAC,WAAC,IAAI,QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC;iBAC9B,MAAM,CAAC,WAAC,IAAI,aAAM,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,MAAM,KAAK,CAAC,EAAd,CAAc,CAAC,CAAC,MAAM,CAAC,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC,cAAc,EAAE,IAAI,GAAG,EAArG,CAAqG,CAAC;iBAClH,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;IACL,CAAC;;IAlJoB;QAApB,qBAAM,CAAC,mBAAW,CAAC;kCAAK,mBAAW;wDAAC;IAF5B,wBAAwB;QAPpC,gBAAS,CAAC;YACP,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,mBAAO,CAAC,qCAA2B,CAAC;YAC9C,MAAM,EAAE,CAAC,mBAAO,CAAC,qCAA2B,CAAC,CAAC;SAEjD,CAAC;QACD,2BAAe,EAAE;OACL,wBAAwB,CA8LpC;IAAD,+BAAC;CAAA,CA9L6C,+CAAsB,GA8LnE;AA9LY,4DAAwB;;;;;;;;;;;;ACfrC,43DAA43D,oBAAoB,2kBAA2kB,oBAAoB,woBAAwoB,oBAAoB,8hBAA8hB,oBAAoB,2I;;;;;;;;;;;ACA7rH,qCAAqC,+uBAA+uB,qBAAqB,EAAE,qCAAqC,oBAAoB,sBAAsB,EAAE,gDAAgD,+BAA+B,wBAAwB,sBAAsB,EAAE,iEAAiE,4BAA4B,4BAA4B,6BAA6B,EAAE,iFAAiF,qBAAqB,EAAE,mIAAmI,uBAAuB,EAAE,0JAA0J,qBAAqB,yBAAyB,EAAE,iDAAiD,wBAAwB,EAAE,oEAAoE,uBAAuB,EAAE,kFAAkF,8BAA8B,EAAE,+GAA+G,0BAA0B,2BAA2B,EAAE,4GAA4G,0BAA0B,2BAA2B,EAAE,6GAA6G,0BAA0B,4BAA4B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAz2E,yDAA0C;AAE1C,gEAAyC;AACzC,oEAAqD;AACrD,4FAAsE;AAStE;IAAiD,+CAA6C;IAA9F;QAAA,qEAmHC;QAjHU,iBAAW,GAAG;YACjB,qCAAqC;YACrC,qCAAqC;YACrC,wCAAwC;YACxC,wCAAwC;SAC3C,CAAC;;IA4GN,CAAC;oCAnHY,2BAA2B;IAS1B,mDAAa,GAAvB,UAAwB,KAAW;QAC/B,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChF,OAAO,iBAAM,aAAa,YAAC,KAAK,EAC5B;YACI,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;SACzC,CAAC,CAAC;IACX,CAAC;IAEa,qCAAS,GAAvB,UAAwB,KAA0B;QAC9C,IAAM,GAAG,GAAwB,kDAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3E,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC;IACf,CAAC;IAES,wDAAkB,GAA5B;QACI,OAAO,6BAA2B,CAAC,SAAS,CAAC,iBAAM,kBAAkB,WAAE,CAAC,CAAC;IAC7E,CAAC;IAED,8CAAQ,GAAR,UAAS,KAA0B;QAC/B,iBAAM,QAAQ,YAAC,6BAA2B,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,iDAAW,GAAX;QACI,OAAO,6BAA2B,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAEM,yCAAa,GAApB,UAAqB,CAAmB;QACpC,QAAQ,CAAC,EAAE;YACP,MAA4B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClH,MAA4B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClH,MAA6B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnH,MAA+B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrH,MAA8B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpH,MAA4B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClH,MAA8B,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpH,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;SACtB;IACL,CAAC;IAGM,0CAAc,GAArB,UAAsB,CAAsB;QAA5C,iBAiEC;;QAhEG,SAAS,CAAC,CAAC,YAAoB,EAAE,WAAmB,EAAE,IAAU;YAC5D,IAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,IAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBACxC,YAAY,GAAG,qCAAmC,YAAc,CAAC;aACpE;YACD,OAAO,MAAM,GAAG,wBAAS,CAAC,OAAO,CAAI,YAAY,SAAI,CAAG,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAC7E,CAAC;QAED,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,GAAG,EAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,WAAW,KAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,UAAU,EAAE;YACnB;gBACI,WAAW,GAAG,EAAE,CAAC;gBACjB,MAAM;YACV;gBAEI,MAAM;YACV;gBACI,IAAI,QAAC,CAAC,WAAW,0CAAE,MAAM,IAAG,CAAC,EAAE;oBAC3B,IAAM,IAAI,GAAG;wBACT,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAC,IAAI,QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC;6BAC9C,MAAM,CAAC,WAAC,IAAI,QAAC,IAAI,CAAC,CAAC;4BAChB,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC;4BAChC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAC,CAAC,KAAC,CAAC,EAF7B,CAE6B,CACzC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC5B;oBACD,GAAG,IAAI,CAAC,CAAC,aAAa,EAAE,gCAAgC,EAAE,IAAI,CAAC,CAAC;iBACnE;qBAAM;oBACH,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;iBAC1C;gBACD,IAAI,QAAC,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAC1B;oBACI,GAAG,IAAI,CAAC,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAC,IAAI,QAAC,EAAD,CAAC,CAAC,CAAC,MAAM,CAAC,WAAC,IAAI,YAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAArB,CAAqB,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;iBAChJ;gBACD,MAAM;YACV;gBACI,IAAI,QAAC,CAAC,YAAY,0CAAE,MAAM,IAAG,CAAC,EAAE;oBAC5B,GAAG,IAAI,CAAC,CAAC,cAAc,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,WAAC,IAAI,QAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,EAAC,CAAC,KAAC,CAAC,EAApC,CAAoC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;iBACvJ;qBAAM;oBACH,GAAG,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;iBAC1C;gBACD,IAAI,QAAC,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,EAC3B;oBACI,GAAG,IAAI,CAAC,CAAC,eAAe,EAAE,wBAAwB,EAC9C;wBACI,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAC,IAAI,QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC,MAAM,CAAC,WAAC,IAAI,QAAC,IAAI,CAAC,CAAC;4BAC1D,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC;4BACjC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,EAAC,CAAC,KAAC,CAAC,EAFa,CAEb,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC9E,CAAC,CAAC;iBACV;gBACL,MAAM;SACT;QACD,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,GAAG,EAAE;YACL,IAAI,WAAW,EAAE;gBACb,GAAG,GAAM,WAAW,UAAK,GAAG,MAAG,CAAC;aACnC;SACJ;aAAM;YACH,GAAG,GAAG,WAAW,CAAC;SACrB;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;;IAlHQ,2BAA2B;QANvC,gBAAS,CAAC;YACP,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,mBAAO,CAAC,6CAAmC,CAAC;YACtD,MAAM,EAAE,CAAC,mBAAO,CAAC,6CAAmC,CAAC,CAAC;SACzD,CAAC;QACD,2BAAe,EAAE;OACL,2BAA2B,CAmHvC;IAAD,kCAAC;CAAA,CAnHgD,kDAAwB,GAmHxE;AAnHY,kEAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZxC,2DAAkG;AAClG,gEAA+F;AAC/F,+FAA0E;AAC1E,kGAA4E;AAG5E;IAAkF,4CAA8C;IAAhI;QAAA,qEAwLC;QApLU,iBAAW,GAAG;YACjB,qCAAqC;YACrC,wCAAwC;YACxC,wCAAwC;SAC3C,CAAC;QA4IK,iBAAW,GAAG;YACjB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACxC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC3C,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAC/C;QAMM,cAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;aACvD,KAAK,CAAE,MAAM,CAAC,aAAa,CAAM,IAAI,CAAS,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAA1B,CAA0B,CAAC,CAAC;aAC5F,OAAO,EAAE,CAAC;QAMR,YAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;aACrD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,EAAnE,CAAmE,CAAC,CAAC;aAC5G,OAAO,EAAE,CAAC;QAMR,UAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aAChC,MAAM,CAAC,WAAC,IAAI,QAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAvH,CAAuH,CAAC;aACpI,OAAO,EAAE,CAAC;;IAGnB,CAAC;IA9KG,2CAAQ,GAAR;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;QAChD,iBAAM,QAAQ,WAAE,CAAC;IACrB,CAAC;IAES,qDAAkB,GAA5B,UAA6B,OAA0B;IAEvD,CAAC;IAKa,8CAAqB,GAAnC,UAAoC,WAAiB,EAAE,KAAW,EAAE,EAAgB;QAChF,EAAE,GAAG,EAAE,IAAI,yBAAU,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC;QACvC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QAEpB,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAChC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,kBAAU,CAAC,QAAQ,CAAC;YACxD,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;YACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YAChC,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACxC,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;SACrC,EAAE,WAAW,CAAC,CAAC;QAEhB,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAES,gDAAa,GAAvB,UAAwB,KAAW,EAAE,WAAiB;QAAtD,iBAaC;QAZG,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChF,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;QAChB,IAAM,GAAG,GAAG,wBAAwB,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,WAAC;YACxB,KAAK,IAAI,QAAQ,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;oBAC5B,IAAM,EAAE,GAAG,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,KAAI,CAAC,EAAE,CAAC;oBAC/E,EAAE,IAAI,2BAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,2BAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAC/D;aACJ;QACL,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAEa,kCAAS,GAAvB,UAAwB,KAAuB;QAC3C,IAAM,GAAG,GAAG,KAAK,IAAsB,EAAE,CAAC;QAC1C,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QAClC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACf,CAAC;IAES,qDAAkB,GAA5B;QACI,OAAkB,wBAAwB,CAAC,SAAS,CAAC,iBAAM,kBAAkB,WAAE,CAAC,CAAC;IACrF,CAAC;IAED,2CAAQ,GAAR,UAAS,KAAgB;QACrB,iBAAM,QAAQ,YAAY,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAES,8CAAW,GAArB;QACI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1D;QACD,IAAI,IAAI,CAAC,OAAO,YAAY,mBAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,YAAY,iBAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1G,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC5C;aAAM;SAEN;QACD,iBAAM,WAAW,WAAE,CAAC;IACxB,CAAC;IAED,6CAAU,GAAV,UAAW,WAAmB;QAC1B,IAAI,GAAG,GAA4B,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,EAAE;YACN,GAAG,GAAG,IAAI,mBAAW,CAAC,EAAE,EAAE,mCAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;YACf,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SAC1D;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAMM,kDAAe,GAAtB,UAAuB,WAAmB,EAAE,GAAW;QACnD,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9D,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAMM,kDAAe,GAAtB,UAAuB,WAAmB,EAAE,GAAW,EAAE,KAAc;QACnE,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,IAAM,cAAc,GAAG,qBAAM,CAAC,YAAY,CAAC,CAAC;QAE5C,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE;YACpB,YAAY,GAAG,EAAE,CAAC;SACrB;aACI,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;aACI,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3C,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,IAAI,qBAAM,CAAC,YAAY,CAAC,KAAK,cAAc,EAAE;YACzC,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,UAAK,YAAY,EAAE,CAAC;SACvC;QACD,IAAI,CAAC,eAAa,WAAa,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC;IACxB,CAAC;IAEM,iDAAc,GAArB,UAAsB,CAA+B,EAAE,MAAa;QAApE,iBASC;QARG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,sBAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACjD,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;iBACZ,OAAO,CAAC,WAAC,IAAI,QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC;iBAC9B,MAAM,CAAC,WAAC,IAAI,aAAM,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,MAAM,KAAK,CAAC,EAAd,CAAc,CAAC,CAAC,MAAM,CAAC,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC,cAAc,EAAE,IAAI,GAAG,EAArG,CAAqG,CAAC;iBAClH,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;IACL,CAAC;IA5IoB;QAApB,qBAAM,CAAC,mBAAW,CAAC;kCAAK,mBAAW;wDAAC;IAsLzC,+BAAC;CAAA,CAxLiF,+CAAsB,GAwLvG;AAxLY,4DAAwB;;;;;;;;;;;;ACPrC,kMAAkM,mCAAmC,4gCAA4gC,oBAAoB,2kBAA2kB,oBAAoB,woBAAwoB,oBAAoB,8hBAA8hB,oBAAoB,2I;;;;;;;;;;;ACAljG,qCAAqC,+vBAA+vB,qBAAqB,EAAE,qDAAqD,oBAAoB,sBAAsB,EAAE,gEAAgE,+BAA+B,wBAAwB,sBAAsB,EAAE,iFAAiF,4BAA4B,4BAA4B,6BAA6B,EAAE,mFAAmF,mBAAmB,0BAA0B,EAAE,qFAAqF,wBAAwB,EAAE,mFAAmF,+BAA+B,EAAE,iGAAiG,qBAAqB,EAAE,mJAAmJ,uBAAuB,EAAE,0LAA0L,qBAAqB,yBAAyB,EAAE,iEAAiE,wBAAwB,EAAE,oFAAoF,uBAAuB,EAAE,kGAAkG,8BAA8B,EAAE,+HAA+H,0BAA0B,2BAA2B,EAAE,4HAA4H,0BAA0B,2BAA2B,EAAE,6HAA6H,0BAA0B,4BAA4B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA96F,qDAAoC;AACpC,gEAAuC;AACvC,iEAAkD;AASlD;IAAiD,+CAAO;IAAxD;;IAgCA,CAAC;IA3BG,sBAAW,0DAAiB;aAA5B,cAAiC,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAC,CAAC;;;OAAA;IAC3F,sBAAW,0DAAiB;aAA5B,cAAiC,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,iBAAiB,EAAC,CAAC;;;OAAA;IAI3F,qDAAe,GAAf;;QACI,iBAAM,eAAe,WAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAC7E,UAAI,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,0CAAE,MAAM,GAAG;YACrE,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;YACzE,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,UAAI,CAAC,aAAa,CAAC,aAAa,CAAC,4BAA4B,CAAC,0CAAE,MAAM,GAAG;gBACzE,UAAI,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,0CAAE,MAAM,GAAG;aAC3E;iBACI;gBACD,UAAI,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,0CAAE,MAAM,GAAG;aAC9D;YACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;SAC5B;IAEL,CAAC;IA1B6B;QAA7B,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;kCAAoB,EAAE,CAAC,WAAW;0EAAM;IACjC;QAAnC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;kCAAqB,EAAE,CAAC,WAAW;2EAAM;IAHnE,2BAA2B;QAPvC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,8CAA8C;YACxD,QAAQ,EAAE,mBAAO,CAAC,6CAAmC,CAAC;YACtD,MAAM,EAAE,CAAC,mBAAO,CAAC,6CAAmC,CAAC,CAAC;YACtD,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI;SAC3C,CAAC;QACD,2BAAe,EAAE;OACL,2BAA2B,CAgCvC;IAAD,kCAAC;CAAA,CAhCgD,sBAAO,GAgCvD;AAhCY,kEAA2B;;;;;;;;;;;;ACXxC,kGAAkG,+CAA+C,oa;;;;;;;;;;;ACAjJ,qCAAqC,sBAAsB,iBAAiB,gBAAgB,EAAE,uBAAuB,iBAAiB,gBAAgB,EAAE,oDAAoD,0BAA0B,EAAE,wCAAwC,kBAAkB,0BAA0B,mCAAmC,oCAAoC,EAAE,0FAA0F,6BAA6B,EAAE,qCAAqC,qGAAqG,yBAAyB,EAAE,4DAA4D,oBAAoB,yBAAyB,yBAAyB,EAAE,gIAAgI,+BAA+B,EAAE,2CAA2C,kBAAkB,uBAAuB,gCAAgC,iCAAiC,EAAE,gGAAgG,6BAA6B,EAAE,mIAAmI,yBAAyB,EAAE,mIAAmI,uBAAuB,EAAE,kQAAkQ,8BAA8B,EAAE,8SAA8S,mBAAmB,2BAA2B,EAAE,oTAAoT,oBAAoB,2BAA2B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;ACA7/E,yDAAoK;AACpK,iEAAkD;AAIlD;IACI,mCAAmB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACrC,UAAU,CAAC,cAAM,QAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,EAAtC,CAAsC,CAAC,CAAC;IAC7D,CAAC;IAHQ,yBAAyB;QAFrC,gBAAS,CAAC,EAAC,QAAQ,EAAE,+BAA+B,EAAC,CAAC;QACtD,2BAAe,EAAE;yCAEiB,iBAAU;OADhC,yBAAyB,CAIrC;IAAD,gCAAC;CAAA;AAJY,8DAAyB;AAQtC;IACI,8BAAmB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACrC,UAAU,CAAC;YACP,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IALQ,oBAAoB;QAFhC,gBAAS,CAAC,EAAC,QAAQ,EAAE,gDAAgD,EAAC,CAAC;QACvE,2BAAe,EAAE;yCAEiB,iBAAU;OADhC,oBAAoB,CAMhC;IAAD,2BAAC;CAAA;AANY,oDAAoB;AA8BjC;IAAA;QAGa,cAAS,GAAW,MAAM,CAAC;IASxC,CAAC;IALG,+CAAe,GAAf;QACI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC;aACjD,MAAM,CAAC,UAAC,OAAgB,IAAK,cAAO,CAAC,QAAQ,KAAK,SAAS,EAA9B,CAA8B,CAAC;aAC5D,GAAG,CAAC,UAAC,OAAgB,IAAK,cAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAhD,CAAgD,CAAC,CAAC;IACrF,CAAC;IAVQ;QAAR,YAAK,EAAE;;uDAAc;IACb;QAAR,YAAK,EAAE;;wDAAe;IACd;QAAR,YAAK,EAAE;;4DAA4B;IAC3B;QAAR,YAAK,EAAE;;wDAAe;IACI;QAA1B,gBAAS,CAAC,cAAc,CAAC;kCAAe,iBAAU;+DAAC;IAL3C,qBAAqB;QAfjC,gBAAS,CAAC;YACP,eAAe,EAAE,8BAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,6SASb;SACA,CAAC;QACD,2BAAe,EAAE;OACL,qBAAqB,CAYjC;IAAD,4BAAC;CAAA;AAZY,sDAAqB;AAgClC;IAAA;IAUA,CAAC;IAHG,+CAAe,GAAf;QACI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;IARQ;QAAR,YAAK,EAAE;;uDAAc;IACb;QAAR,YAAK,EAAE;;yDAAgB;IACf;QAAR,YAAK,EAAE;;wDAAe;IAEQ;QAA9B,gBAAS,CAAC,kBAAkB,CAAC;kCAAmB,iBAAU;mEAAC;IALnD,qBAAqB;QAbjC,gBAAS,CAAC;YACP,eAAe,EAAE,8BAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,wQAOP;SACN,CAAC;QACD,2BAAe,EAAE;OACL,qBAAqB,CAUjC;IAAD,4BAAC;CAAA;AAVY,sDAAqB;AA2BlC;IAAA;QAEmB,SAAI,GAAW,6BAA6B,CAAC;QACzC,aAAQ,GAAY,KAAK,CAAC;IACjD,CAAC;IAHmB;QAAf,YAAK,CAAC,OAAO,CAAC;;0DAAe;IACf;QAAd,YAAK,CAAC,MAAM,CAAC;;yDAA8C;IACzC;QAAlB,YAAK,CAAC,UAAU,CAAC;;6DAA2B;IAHpC,uBAAuB;QAVnC,gBAAS,CAAC;YACP,eAAe,EAAE,8BAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,8MAIP;SACN,CAAC;QACD,2BAAe,EAAE;OACL,uBAAuB,CAInC;IAAD,8BAAC;CAAA;AAJY,0DAAuB;AAmBpC;IAAA;IA6BA,CAAC;IAxBG,oDAAe,GAAf;QAEI,IAAM,WAAW,GAA0B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEvG,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;SACrD;aAAM;YACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;SACtE;IACL,CAAC;IAED,gDAAW,GAAX,UAAY,EAAO,EAAE,SAAiB;QAElC,IAAI,EAAE,CAAC,UAAU,EAAE;YACf,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACxE,OAAO,EAAE,CAAC,UAAU,CAAC;aACxB;iBAAM;gBACH,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;aACrD;SACJ;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IA3BQ;QAAR,YAAK,EAAE;;6DAAe;IACd;QAAR,YAAK,EAAE;;+DAAiB;IACD;QAAvB,gBAAS,CAAC,WAAW,CAAC;kCAAY,iBAAU;iEAAC;IAHrC,0BAA0B;QAXtC,gBAAS,CAAC;YACP,eAAe,EAAE,8BAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,CAAC,oFAAoF,CAAC;YAC9F,QAAQ,EAAE,8FAIb;SACA,CAAC;QACD,2BAAe,EAAE;OACL,0BAA0B,CA6BtC;IAAD,iCAAC;CAAA;AA7BY,gEAA0B;AA6CvC;IAAA;IAEA,CAAC;IADY;QAAR,YAAK,EAAE;;iEAAe;IADd,8BAA8B;QAd1C,gBAAS,CAAC;YACP,eAAe,EAAE,8BAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,mBAAmB;YAC7B,QAAQ,EAAE,mPAQb;SACA,CAAC;QACD,2BAAe,EAAE;OACL,8BAA8B,CAE1C;IAAD,qCAAC;CAAA;AAFY,wEAA8B;;;;;;;;;;;;ACtK3C,8EAA8E,wDAAwD,iFAAiF,OAAO,wCAAwC,OAAO,gBAAgB,iEAAiE,uFAAuF,OAAO,sDAAsD,wCAAwC,8CAA8C,YAAY,4xB;;;;;;;;;;;ACAplB,gCAAgC,uBAAuB,EAAE,qEAAqE,yBAAyB,iBAAiB,sBAAsB,mBAAmB,oCAAoC,EAAE,qFAAqF,mBAAmB,EAAE,mCAAmC,eAAe,EAAE,mCAAmC,gBAAgB,EAAE,oDAAoD,2BAA2B,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA3hB,qDAAoC;AACpC,gEAA+E;AAC/E,wEAAiD;AACjD,+EAAyD;AACzD,uFAAmE;AACnE,iEAAkD;AAElD,mGAA8E;AAa9E;IAAgD,8CAAa;IAA7D;QAAA,qEAmRC;QA/Q6B,iBAAW,GAAG,IAAI,EAAE,CAAC,YAAY,EAA2B,CAAC;QACjE,gBAAU,GAAY,KAAK,CAAC;QAC/B,WAAK,GAAW,EAAE,CAAC;QAY/B,eAAS,GAAW,EAAE,CAAC;QACvB,eAAS,GAAW,CAAC,CAAC;QAErB,mBAAa,GAAY,KAAK,CAAC;QAC/B,eAAS,GAAY,KAAK,CAAC;QAC3B,cAAQ,GAAY,KAAK,CAAC;QA0H3B,oBAAc,GAAY,KAAK,CAAC;QA0GhC,YAAM,GAAY,UAAU,CAAC;;IAwBxC,CAAC;mCAnRY,0BAA0B;IAyBnC,gDAAW,GAAX,UAAY,OAAO;;QACf,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,sBAAO,CAAC,MAAK,IAAI,CAAC,gBAAgB,0CAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACxB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;aACxB;iBAAM;gBACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;oBAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;oBACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7B;qBAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;oBAChD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACxB;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;oBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7B;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;oBACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7B;aACJ;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;IACL,CAAC;IAEM,iDAAY,GAAnB,UAAoB,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,QAAQ,IAAI,CAAC,IAAI,EAAE;YASnB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,UAAU;gBACX,MAAM;YACV;gBACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM;SACT;IACL,CAAC;IAEM,iDAAY,GAAnB,UAAoB,SAAiB;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/E;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACzD;IACL,CAAC;IAEM,6CAAQ,GAAf,UAAgB,KAAU;QAA1B,iBAsDC;QArDG,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,MAAM;gBACP,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE;oBAChB,KAAK,GAAG,SAAS,CAAC;oBAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;iBACvB;qBAAM;oBACH,KAAK,GAAG,CAAC,KAAK,CAAC;oBACf,IAAI,CAAC,SAAS,GAAG,wBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAC,IAAI,QAAC,CAAC,KAAK,KAAK,KAAK,EAAjB,CAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;iBAC1H;gBACD,IAAI,CAAC,SAAS,GAAG,sBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChD,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE;oBAChB,KAAK,GAAG,SAAS,CAAC;oBAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;iBACvB;qBAAM;oBACH,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC7B,IAAI,CAAC,SAAS,GAAG,KAAK;wBAClB,CAAC,CAAC,wBAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC;wBACrC,CAAC,CAAC,wBAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;iBAC7C;gBACD,IAAI,CAAC,SAAS,GAAG,sBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,KAAK,EAAE;oBACP,IAAI,sBAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE;wBACjC,IAAI,CAAC,SAAS,GAAM,wBAAS,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,WAAW,EAAE,SAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAG,CAAC;qBAClI;yBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,sBAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;wBACxC,IAAI,CAAC,SAAS,GAAM,wBAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,WAAW,EAAE,SAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAG,CAAC;qBACrI;yBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE;wBAC/B,IAAI,CAAC,SAAS,GAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAG,CAAC;qBAChH;yBAAM;wBACH,KAAK,GAAG,SAAS,CAAC;wBAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;qBACvB;iBACJ;qBAAM;oBACH,KAAK,GAAG,SAAS,CAAC;oBAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;iBACvB;gBACD,MAAM;YACV;gBACI,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBAAE,KAAK,GAAG,SAAS,CAAC;gBAC9B,MAAM;SACb;QACD,IAAI,CAAC,QAAQ,GAAG,yBAAU,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACrB;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,cAAM,YAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,EAAjC,CAAiC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;SAC9E;IACL,CAAC;IAQM,gDAAW,GAAlB;QAAA,iBAwBC;QAvBG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACrB;iBAAM;gBACH,IAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,CAAC;gBACpE,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC9B;qBAAM;oBACH,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;oBACtB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;iBACvB;gBACD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACxB,KAAK,CAAC,QAAQ,GAAG;oBACb,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAC5B,KAAI,CAAC,YAAY,EAAE,CAAC;gBACxB,CAAC,CAAC;gBACF,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC/C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;IAEM,gDAAW,GAAlB,UAAmB,KAAK;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,aAAa;gBACnB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACxC;aAAM;YACH,IAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;gBACjF,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC9E,IAAI,yBAAU,CAAC,gBAAgB,CAAC,EAAE;oBAC9B,IAAI,WAAW,GAAG,SAAS,CAAC;oBAC5B,IAAI,IAAI,CAAC,GAAG,EAAE;wBACV,WAAW,GAAG,sBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;qBAClG;yBACI,IAAI,gBAAgB,EAAE;wBACvB,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;qBACzD;oBACD,IAAI,yBAAU,CAAC,WAAW,CAAC,EAAE;wBACzB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;4BAC1B,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;4BAClC,IAAI,WAAW,CAAC,OAAO,EAAE;gCACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;6BACzD;yBACJ;6BACI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;4BACtC,IAAI,IAAI,CAAC,GAAG,EAAE;gCACV,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;6BACpD;4BACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,gBAAgB,EAAE;gCACrD,WAAW,GAAG,gCAAa,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;6BAC9D;4BACD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gCACjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;6BAC9B;yBACJ;6BAAM;4BACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;yBAC9B;qBACJ;iBACJ;aACJ;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBACrB,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvB,IAAI,CAAC,IAAI,KAAK,QAAQ;;oBAGtB,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACpC;iBAAM;aAEN;SACJ;QAED,KAAK,CAAC,eAAe,EAAE,CAAC;IAC5B,CAAC;IAEM,8CAAS,GAAhB,UAAiB,CAAgB;QAC7B,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEM,sCAAW,GAAlB,UAAmB,MAAgB;QAC/B,QAAQ,MAAM,EAAE;YACZ,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrD,KAAK,gBAAgB,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3D,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,WAAW,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACpE,OAAO,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SAChD;IACL,CAAC;IAEM,oCAAS,GAAhB,UAAiB,MAAgB;QAC7B,QAAQ,MAAM,EAAE;YACZ,KAAK,UAAU,CAAC;YAAC,KAAK,gBAAgB,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC;YACxD,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3D,KAAK,WAAW,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC;SAC5B;IACL,CAAC;IAGM,8CAAS,GAAhB,UAAiB,IAAc;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,QAAQ,IAAI,EAAE;YACV,KAAK,UAAU,CAAC;YAChB,KAAK,gBAAgB;gBACjB,IAAI,CAAC,QAAQ,CAAC;oBACV,IAAI,EAAE,4BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC;oBAClD,EAAE,EAAE,IAAI;iBACX,CAAC,CAAC;gBACH,MAAM;YACV,KAAK,OAAO,CAAC;YACb,KAAK,WAAW;gBACZ,IAAI,CAAC,QAAQ,CAAC;oBACV,IAAI,EAAE,4BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC;oBAClD,EAAE,EAAE,4BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC;iBACjD,CAAC,CAAC;gBACH,MAAM;YACV;gBACI,MAAM;SACb;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;;IA/Q6B;QAA7B,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;;wEAAwC;IAClD;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;6DAAgC;IACxB;QAAzB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;;mEAA8D;IACjE;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;kEAA6B;IAC/B;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;6DAAoB;IACrB;QAAhB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;;2DAAyB;IAElB;QAAtB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;kCAAQ,uCAAmB;6DAAC;IAC7B;QAApB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;kCAAM,EAAE,CAAC,UAAU;2DAAC;IACjB;QAAtB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;kCAAQ,EAAE,CAAC,UAAU;6DAAC;IAEZ;QAA/B,qBAAM,CAAC,8CAAsB,CAAC;kCAAa,8CAAsB;kEAAC;IAGjD;QAAjB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;4DAAmF;IAhB3F,0BAA0B;QAPtC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,mBAAO,CAAC,gDAAsC,CAAC;YACzD,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM;YAClD,MAAM,EAAE,CAAC,mBAAO,CAAC,gDAAsC,CAAC,CAAC;SAC5D,CAAC;QACD,2BAAe,EAAE;OACL,0BAA0B,CAmRtC;IAAD,iCAAC;CAAA,CAnR+C,8BAAa,GAmR5D;AAnRY,gEAA0B;;;;;;;;;;;;ACpBvC,4EAA4E,OAAO,gBAAgB,0FAA0F,2EAA2E,8CAA8C,4IAA4I,4BAA4B,0iFAA0iF,8BAA8B,gOAAgO,oCAAoC,2OAA2O,+BAA+B,yNAAyN,2BAA2B,+nBAA+nB,mBAAmB,2GAA2G,SAAS,yGAAyG,qBAAqB,6E;;;;;;;;;;;ACA5qJ,sFAAsF,uBAAuB,wBAAwB,iBAAiB,sBAAsB,8CAA8C,EAAE,qDAAqD,kBAAkB,mBAAmB,0BAA0B,oCAAoC,8BAA8B,EAAE,kEAAkE,wBAAwB,6CAA6C,EAAE,2DAA2D,oBAAoB,EAAE,oDAAoD,yBAAyB,eAAe,EAAE,gEAAgE,wBAAwB,EAAE,wDAAwD,mBAAmB,EAAE,uDAAuD,iBAAiB,0DAA0D,IAAI,qDAAqD,kBAAkB,qBAAqB,eAAe,kBAAkB,qCAAqC,4BAA4B,EAAE,gEAAgE,gBAAgB,EAAE,6DAA6D,kBAAkB,EAAE,wDAAwD,mBAAmB,EAAE,uDAAuD,wBAAwB,EAAE,0CAA0C,qBAAqB,EAAE,uDAAuD,oBAAoB,EAAE,2EAA2E,kCAAkC,EAAE,+DAA+D,oBAAoB,6BAA6B,EAAE,G;;;;;;;;;;;ACAz2D,yDAAyD,WAAW,yBAAyB,2EAA2E,eAAe,gHAAgH,yBAAyB,mEAAmE,2BAA2B,kGAAkG,WAAW,iBAAiB,qZAAqZ,WAAW,iBAAiB,+MAA+M,yLAAyL,kFAAkF,ySAAyS,WAAW,iBAAiB,2MAA2M,WAAW,0BAA0B,6K;;;;;;;;;;;ACA59D,sEAAsE,kBAAkB,EAAE,sCAAsC,oCAAoC,EAAE,+CAA+C,8BAA8B,oBAAoB,EAAE,qDAAqD,kCAAkC,EAAE,wCAAwC,4BAA4B,kBAAkB,EAAE,sDAAsD,wBAAwB,yBAAyB,oBAAoB,8BAA8B,4BAA4B,EAAE,0EAA0E,oBAAoB,8BAA8B,uBAAuB,EAAE,uDAAuD,gCAAgC,EAAE,+DAA+D,oCAAoC,EAAE,kEAAkE,oCAAoC,uBAAuB,EAAE,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAnkC,qDAAoC;AACpC,+EAAyD;AACzD,iEAAkD;AAClD,gEAAoC;AACpC,6FAAwE;AACxE,uFAAmE;AAUnE;IAAgD,8CAAa;IAA7D;QAAA,qEA4DC;QA1DsB,WAAK,GAAW,EAAE,CAAC;QAEb,iBAAW,GAAW,EAAE,CAAC;QAI3B,eAAS,GAAoB,GAAG,CAAC;QAElC,cAAQ,GAAY,KAAK,CAAC;QACzB,eAAS,GAAY,IAAI,CAAC;QAC3B,cAAQ,GAAY,KAAK,CAAC;QAMzC,iBAAW,GAAW,EAAE,CAAC;;IA0CpC,CAAC;IAxCG,6CAAQ,GAAR;QAAA,iBAcC;QAbG,iBAAM,QAAQ,WAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAM,YAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,WAAC;gBAChC,KAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,SAAS,EAAE;oBACb,KAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;iBACvB;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,oDAAe,GAAf;QACI,iBAAM,eAAe,WAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;IACL,CAAC;IAEM,+CAAU,GAAjB,UAAkB,CAAQ;QACtB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,yCAAI,GAAX,UAAY,MAAM;QACd,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACjG,CAAC;IAED,sDAAiB,GAAjB;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;IAzDkB;QAAlB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;6DAAoB;IAEb;QAAxB,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;;mEAA0B;IAE5B;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAAkB;IAEhB;QAAtB,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;;iEAAkC;IAClC;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAA2B;IAC1B;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAA2B;IACzB;QAAtB,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;;iEAA2B;IAC3B;QAArB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;;gEAA2B;IAET;QAAtC,EAAE,CAAC,YAAY,CAAC,0CAAoB,CAAC;kCAAW,0CAAoB;gEAAC;IAEnC;QAAlC,EAAE,CAAC,SAAS,CAAC,uCAAmB,CAAC;kCAAU,uCAAmB;+DAAC;IAhBvD,0BAA0B;QARtC,EAAE,CAAC,SAAS,CAAC;YACV,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,mBAAO,CAAC,6CAAmC,CAAC;YACtD,MAAM,EAAE,CAAC,mBAAO,CAAC,6CAAmC,CAAC,CAAC;YACtD,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI;YACxC,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM;SACrD,CAAC;QACD,2BAAe,EAAE;OACL,0BAA0B,CA4DtC;IAAD,iCAAC;CAAA,CA5D+C,8BAAa,GA4D5D;AA5DY,gEAA0B;;;;;;;;;;;;ACfvC,qDAAqD,OAAO,uNAAuN,4CAA4C,wHAAwH,0IAA0I,gBAAgB,+TAA+T,cAAc,0M;;;;;;;;;;;ACA95B,uFAAuF,gCAAgC,qBAAqB,EAAE,uDAAuD,2CAA2C,4CAA4C,kCAAkC,EAAE,oDAAoD,8CAA8C,+CAA+C,qCAAqC,EAAE,uDAAuD,+BAA+B,EAAE,wCAAwC,qCAAqC,4CAA4C,6CAA6C,EAAE,+CAA+C,oBAAoB,uCAAuC,EAAE,0CAA0C,uCAAuC,EAAE,G;;;;;;;;;;;ACAv7B,qaAAqa,+EAA+E,iFAAiF,UAAU,gIAAgI,eAAe,mPAAmP,OAAO,8RAA8R,wDAAwD,oYAAoY,kBAAkB,sPAAsP,eAAe,sgB;;;;;;;;;;;ACAz8D,8BAA8B,0BAA0B,EAAE,sCAAsC,yBAAyB,oBAAoB,kBAAkB,mBAAmB,sBAAsB,8BAA8B,+CAA+C,EAAE,qDAAqD,oBAAoB,qBAAqB,2BAA2B,EAAE,+CAA+C,2BAA2B,qBAAqB,oBAAoB,qBAAqB,sBAAsB,EAAE,sDAAsD,sBAAsB,uBAAuB,sCAAsC,mCAAmC,uCAAuC,gCAAgC,EAAE,iEAAiE,yBAAyB,yBAAyB,yBAAyB,EAAE,kDAAkD,2BAA2B,eAAe,gBAAgB,iBAAiB,EAAE,sDAAsD,2BAA2B,eAAe,iBAAiB,yBAAyB,0BAA0B,qBAAqB,oBAAoB,sEAAsE,EAAE,mDAAmD,2BAA2B,eAAe,iBAAiB,yBAAyB,0BAA0B,qBAAqB,mBAAmB,EAAE,iCAAiC,oBAAoB,0BAA0B,0BAA0B,kCAAkC,EAAE,sDAAsD,yBAAyB,EAAE,0BAA0B,sBAAsB,EAAE,G;;;;;;;;;;;;;;;;;;;;ACGpyD,yDAAiE;AACjE,kFAA0D;AAC1D,wFAA+E;AAC/E,2DAAkE;AAClE,8DAA+C;AAK/C,4FAA4D;AAE5D,+EAAgE;AAChE,yFAAyE;AACzE,yFAAyE;AACzE,+FAA+E;AAC/E,4FAA4E;AAC5E,gFAAgE;AAIhE,iEAA+C;AAC/C,yEAAuD;AACvD,4EAAyD;AACzD,wEAAqD;AACrD,6DAA+D;AAC/D,6GAAqG;AACrG,qHAAsG;AAyBtG;IAAA;IAAmC,CAAC;IAAvB,mBAAmB;QAvB/B,eAAQ,CAAC;YACN,YAAY,EAAE,CAAC,4BAAgB,CAAC;YAChC,OAAO,EAAE,CAAC,4BAAgB,CAAC;YAC3B,OAAO,EAAE;gBACL,2CAAe;gBACf,gCAAa;gBACb,oCAAuB;gBACvB,mBAAW;gBACX,2BAAmB;gBACnB,qBAAY;gBACZ,qBAAY,EAAE,2BAAe,EAAE,2BAAe,EAAE,+BAAiB,EAAE,6BAAgB;gBACnF,qBAAY;gBACZ,2BAAa;gBACb,mCAAiB;gBACjB,iCAAgB;gBAChB,qCAAkB,CAAC,QAAQ,EAAE;aAChC;YACD,SAAS,EAAE;gBACP,0BAAc;gBACd,EAAE,OAAO,EAAE,0DAAkC,EAAE,QAAQ,EAAE,mDAA4B,EAAE;aAC1F;YACD,OAAO,EAAE,CAAC,6BAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAI;IAAD,0BAAC;CAAA;AAAvB,kDAAmB;;;;;;;;;;;;;ACtDhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AAC8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D,mBAAmB,wEAAmB;AACtC;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,0EAA0E;AAC1E;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,oEAAoE;AACpE;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,oEAAoE;AACpE;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,iFAAiF;AACjF;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,4FAA4F;AAC5F;AACA;AACA,gBAAgB;AAChB;AACA,mDAAmD;AACnD;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,wBAAwB,EAAE;AACpD;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,wBAAwB,EAAE;AACpD;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA,uBAAuB,EAAE;AACzB;AACA;AACA,oBAAoB;AACpB;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,wCAAwC,kDAAkD,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA,4BAA4B,EAAE;AAC9B;AACA;AACA;AACA;AACA,qDAAqD,yCAAyC,EAAE;AAChG;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,qDAAqD,2CAA2C,EAAE;AAClG;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA,iDAAiD,EAAE;AACnD;AACA,sDAAsD,EAAE;AACxD;AACA,oDAAoD,EAAE;AACtD;AACA,iDAAiD,EAAE;AACnD;AACA,mDAAmD,EAAE;AACrD;AACA,4DAA4D,EAAE;AAC9D;AACA,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,qCAAqC,0DAA0D,EAAE;AACjG;AACA;AACA,oCAAoC,EAAE;AACtC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,oCAAoC,qBAAqB;AACzD,iCAAiC,kBAAkB;AACnD,mBAAmB,EAAE,yCAAyC,qEAAQ,YAAY,EAAE;AACpF;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,uBAAuB,EAAE,8DAA8D,8BAA8B,EAAE;AACvH;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA,qEAAqE,kCAAkC,EAAE;AACzG;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,wCAAwC,8CAA8C,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oDAAoD,uEAAuE,EAAE;AAC7H;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,2CAA2C,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA,kDAAkD,EAAE;AACpD;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA,2BAA2B,kEAAK;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B,2EAA2E,EAAE;AAC7E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,wDAAwD,iCAAiC;AACzF;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,uCAAuC,EAAE;AACnE;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,gDAAgD,YAAY,EAAE;AAC9D;AACA,oCAAoC;AACpC;AACA;AACA,gBAAgB;AAChB;AACA,qEAAqE,iEAAiE;AACtI;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,+DAAU;AACvF,+CAA+C,+DAAU;AACzD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,EAAE;AACrC;AACA;AACA,qFAAqF,+DAAU;AAC/F;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB;AAChB;AACA,mEAAmE,qEAAqE;AACxI;AACA,gBAAgB;AAChB;AACA,8DAA8D,+CAA+C;AAC7G;AACA;AACA,oBAAoB;AACpB;AACA;AACA,2BAA2B,EAAE;AAC7B,gCAAgC,EAAE;AAClC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,uBAAuB,EAAE;AACzB;AACA,gCAAgC,EAAE,UAAU,mBAAmB;AAC/D,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAQ;AACpB;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,wCAAwC,oCAAoC,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE,yCAAyC,qEAAQ,YAAY,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,2CAA2C,iDAAiD,EAAE;AAC9F;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C,uBAAuB,EAAE;AACzB;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA,SAAS;AACT;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA,8FAA8F,YAAY,EAAE;AAC5G;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gEAAgE,EAAE;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,4BAA4B,EAAE,UAAU,qCAAqC;AAC7E,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,4CAA4C,gDAAgD,EAAE;AAC9F;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,2DAA2D,+BAA+B,EAAE;AAC5F;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,sEAAsE,iBAAiB,EAAE;AACzF,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB;AACpB;AACA;AACA,2BAA2B,EAAE;AAC7B,4EAA4E,mDAAmD,EAAE;AACjI;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B,+BAA+B,EAAE;AACjC,+BAA+B,EAAE;AACjC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,EAAE;AAC7D;AACA,sEAAsE,yBAAyB,EAAE;AACjG;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA,kEAAkE;AAClE;AACA,uBAAuB,EAAE;AACzB;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA,uBAAuB,EAAE,cAAc,gEAAgE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,mCAAmC,EAAE;AACrC;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA,yDAAyD,yBAAyB,EAAE;AACpF;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,mCAAmC,EAAE;AACrC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,4BAA4B,EAAE,UAAU,iBAAiB;AACzD,+BAA+B,EAAE;AACjC;AACA;AACA;AACA,oCAAoC,EAAE;AACtC;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA,SAAS;AACT,2DAA2D,iCAAiC,EAAE;AAC9F,uBAAuB,EAAE;AACzB;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,EAAE,oFAAoF;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D,uBAAuB,EAAE;AACzB,2BAA2B,EAAE;AAC7B,0CAA0C,qEAAqE,EAAE;AACjH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B;AACA,+BAA+B,EAAE;AACjC,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE,cAAc,2EAA2E;AAClH;AACA;AACA;AACA,mCAAmC,0DAA0D,EAAE;AAC/F;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA,uCAAuC,EAAE;AACzC,uCAAuC,EAAE;AACzC;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C,2CAA2C,EAAE,iBAAiB,wEAAmB;AACjF;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA,uBAAuB,wEAAmB;AAC1C;AACA;AACA;AACA,uBAAuB,0EAAqB;AAC5C;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,aAAa,iIAAiI;AAC9I;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,gGAAgG;AAChG;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,iIAAiI;AACjI;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,oGAAoG,qBAAqB;AACzH;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA,yCAAyC,qEAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,wCAAwC,qBAAqB;AAC7D,2CAA2C,wBAAwB;AACnE,uBAAuB,EAAE;AACzB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB,iCAAiC,wBAAwB,EAAE;AAC3D;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA,+BAA+B,EAAE;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,wEAAwE,SAAS;AACjF;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,sCAAsC,EAAE,MAAM,+EAA+E;AAC7H,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,uBAAuB,EAAE,cAAc,qEAAqE;AAC5G;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,oBAAoB;AACpB;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA,mDAAmD,iCAAiC,EAAE;AACtF;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA,mCAAmC,EAAE;AACrC,mCAAmC,EAAE;AACrC,wDAAwD,EAAE;AAC1D;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,2BAA2B,EAAE,6EAA6E,oBAAoB,EAAE;AAChI;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gDAAgD,aAAa,EAAE;AAC/D,+CAA+C,aAAa,EAAE;AAC9D;AACA;AACA,mDAAmD,iBAAiB,EAAE;AACtE;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,WAAW,EAAE;AACvC;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,WAAW,EAAE;AACvC;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,aAAa,iIAAiI;AAC9I;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB;AACA;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,kDAAkD,EAAE;AAC7G,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mDAAmD,aAAa,EAAE;AAClE;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,2BAA2B,EAAE;AAC7B;AACA,+BAA+B,EAAE;AACjC,6BAA6B,+DAAU;AACvC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,uBAAuB,EAAE;AACzB;AACA,2BAA2B,EAAE;AAC7B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,+BAA+B,EAAE;AACjC;AACA,mCAAmC,EAAE;AACrC;AACA;AACA,qBAAqB;AACrB;AACA;AACA,oCAAoC,EAAE,UAAU,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,0BAA0B,EAAE;AACzF;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,qBAAqB,EAAE;AACjD;AACA;AACA,KAAK;AACL;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,2DAA2D,2BAA2B;AACtF;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,0DAA0D,0BAA0B;AACpF;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,6DAA6D,6BAA6B;AAC1F;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,oDAAoD,aAAa,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,4DAA4D,sBAAsB;AAClF;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,aAAa,EAAE;AACrE;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,8DAA8D,0CAA0C;AACxG;AACA,gBAAgB;AAChB;AACA,6DAA6D,6CAA6C;AAC1G;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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AW,CAAC,CAAC;QACpD,cAAY,CAAC,UAAU,GAAG,IAAI,CAAC;IACnC,CAAC;;IAdQ,YAAY;QArBxB,eAAQ,CAAC;YACN,OAAO,EAAE;gBACL,qBAAY;gBACZ,2BAAmB;gBACnB,2BAAa;gBACb,oCAAiB;aACpB;YAED,OAAO,EAAE;gBACL,gBAAgB;gBAChB,2BAAa;aAChB;YACD,YAAY,EAAE,CAAE,gBAAgB,CAAE;YAElC,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,QAAQ,CAAC,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,EAAE;gBACrF,QAAQ,CAAC,aAAa;gBACtB,QAAQ,CAAC,iBAAiB;aAC7B;SACJ,CAAC;QACD,4BAAa,EAAE;yCAIiB,eAAQ;OAH5B,YAAY,CAexB;IAAD,mBAAC;CAAA;AAfY,oCAAY;;;;;;;;;;;;AClDzB;AACA,CAAC,KAA4D,WAAW,mBAAO,CAAC,iBAAS;AACzF;AACA;AACA,CAAC,wBAAwB;;AAEzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,2BAA2B,EAAE;AAClE,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC7dD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,IAA0C;AAClD,QAAQ,iCAAO,CAAC,sCAAS,CAAC,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAC;;AAEpC;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA,yCAAyC,iBAAiB;AAC1D;AACA;AACA,oCAAoC,aAAa;AACjD;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,GAAG,YAAY,GAAG,4BAA4B,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,GAAG,cAAc,KAAK,EAAE;AAC1E,kDAAkD,cAAc;AAChE,0EAA0E,EAAE,YAAY,EAAE,4BAA4B,IAAI,KAAK,EAAE,GAAG,EAAE,WAAW,SAAS;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,aAAa;AACb,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS,EAAE,KAAK;AACxD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA,wDAAwD;AACxD,wDAAwD;AACxD,yDAAyD;AACzD,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;;AAEA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,iBAAiB;AACjB,8BAA8B,eAAe;AAC7C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,CAAC;;;;;;;;;;;;ACh7BD,uoCAAuoC,+FAA+F,89BAA89B,+FAA+F,4+BAA4+B,+FAA+F,y+BAAy+B,+FAA+F,0/BAA0/B,+FAA+F,y1BAAy1B,+FAA+F,y4Q;;;;;;;;;;;ACAv8M,mFAAmF,gBAAgB,EAAE,G;;;;;;;;;;;;;;;;;;;;ACArG,yDAAyC;AACzC,gEAA6C;AAC7C,wFAAmE;AAQnE;IAAA;IACA,CAAC;IADY,mBAAmB;QAN/B,eAA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","file":"system.bundle.js","sourcesContent":["export * from './app.base';\r\nexport * from './app.directive';\r\nexport * from './app.component';\r\nexport * from './app.page';\r\nexport * from './components';\r\nexport * from './decorators';\r\nexport * from './directives';\r\nexport * from './interfaces'\r\nexport * from './pipes';\r\nexport * from './services';\r\nexport * from './utils';\r\nexport * from './core.module';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/index.ts","export * from './components';\r\nexport * from './components.module';\r\nexport * from './decorators';\r\nexport * from './directives';\r\nexport * from './services';\r\nexport * from './systemTasks';\r\nexport * from './theme';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/index.ts","export * from './crud-api.service';\r\nexport * from './crud-metadata-api.service';\r\nexport * from './crud-service.decorator';\r\nexport * from './crud-framed.service';\r\nexport * from './enum.pipe';\r\nexport * from './entity-edit-dialog.decorator';\r\nexport * from './expression.pipe'; \r\nexport * from './metadata.module';\r\nexport * from './metadata.service';\r\nexport * from './utils';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/index.ts","import { Type } from '@angular/core';\r\nimport { appComponents, appServices } from '@core.module';\r\n\r\nexport const SystemService = () => target => {\r\n if (!systemServices.contains(target) && !appServices.contains(target))\r\n systemServices.push(target);\r\n}\r\n\r\nexport const SystemComponent = () => target => {\r\n if (!systemComponents.contains(target) && !appComponents.contains(target))\r\n systemComponents.push(target);\r\n}\r\n\r\nexport const systemServices: Type[] = [];\r\nexport const systemComponents: Type[] = [];\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/internals.ts","import { Subscription, Observable, Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { fromEvent } from 'rxjs/observable/fromEvent';\r\nimport { EventTargetLike } from 'rxjs/observable/FromEventObservable';\r\nimport { Md5 } from './js.net.md5';\r\nimport md5 = Md5.md5;\r\nimport { isDuration } from 'moment';\r\nimport * as ng from '@angular/core';\r\n\r\nconst ST: any = require('stacktrace-js');\r\n//const MIME = require('mime-types');\r\nimport * as moment from 'moment';\r\nimport { translate } from '../interfaces/core-translate.service';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\n\r\nexport const TO_DEGREES = 180 / Math.PI;\r\nexport const TO_RADIANS = 1 / TO_DEGREES;\r\n\r\nexport const DIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\r\n\r\nexport interface UssFormatDisplayText {\r\n displayText: string;\r\n checkAfter?: number;\r\n}\r\n\r\nexport interface IDestroyable {\r\n /** Признак того, что объект уничтожен (может устанавливаться, например, в событии ngOnDestroy) */\r\n isDestroyed: boolean;\r\n /** Событие, вызываемое при уничтожении объекта (может вызываться, например, в событии ngOnDestroy) */\r\n readonly destroyed$: Subject;\r\n}\r\n\r\n/**\r\n * Return duration in milliseconds\r\n */\r\nexport function getDuration(endDate: DateTime, beginDate: DateTime): number {\r\n return moment(endDate).diff(beginDate);\r\n}\r\n\r\nexport function durationToString(duration: moment.Duration | string, showMs?: boolean): string;\r\nexport function durationToString(durationMs: number, showMs?: boolean): string;\r\nexport function durationToString(duration, showMs?) {\r\n let res = null;\r\n if (!moment.isDuration(duration)) {\r\n duration = moment.duration(duration);\r\n }\r\n if (duration && moment.isDuration(duration) && duration.isValid())\r\n {\r\n const hours = duration.get('hours');\r\n const minutes = duration.get('minutes');\r\n const seconds = duration.get('seconds');\r\n const milliSecs = duration.get('milliseconds');\r\n res = `${formatNumber(hours, '00')}:${formatNumber(minutes, '00')}`;\r\n if (seconds > 0) res = `${res}:${formatNumber(seconds, '00')}`;\r\n if (showMs && milliSecs > 0) res = `${res}.${milliSecs}`;\r\n }\r\n return res;\r\n}\r\n\r\nexport function parseDuration(s: string | moment.Duration | number): moment.Duration {\r\n let res = null;\r\n if (s) {\r\n res = moment.duration(s);\r\n if (!res.isValid()) res = null;\r\n }\r\n return res;\r\n}\r\n\r\nexport function isNumbersEqual(n1, n2: number, tolerance: number = 0.00000001): boolean {\r\n return Math.abs(+n1 - n2) <= tolerance;\r\n}\r\n\r\nexport function convertToValue(v: any, pi: App.PropertyMetadata): any {\r\n let res = v;\r\n if (pi && v !== undefined && v !== null) {\r\n if (pi.TypeName === 'integer')\r\n res = parseInt(v);\r\n else if (pi.TypeName === 'float')\r\n res = parseFloat(v);\r\n else if (pi.TypeName === 'datetime')\r\n res = moment(v);\r\n else if (pi.TypeName === 'boolean')\r\n res = !!v;\r\n else if (pi.TypeName === 'string')\r\n res = v.toString();\r\n }\r\n return res;\r\n}\r\n\r\nexport function downloadAsFileResult(data: App.FileResult, filename?: string, newPage: boolean = false) {\r\n const type = mime.lookup(data.FileDownloadName);\r\n const blob = b64ToBlob(data.Data, type);\r\n download(blob, filename || data.FileDownloadName, newPage);\r\n}\r\n\r\nexport function download(link: string | Blob, filename?: string, newPage: boolean = false) {\r\n if (link instanceof Blob && filename) {\r\n const type = mime.lookup(filename);\r\n const blob = new Blob([link], { type: type });\r\n link = URL.createObjectURL(blob);\r\n newPage = newPage && type;\r\n }\r\n if (typeof link === 'string' && link.length > 1000) {\r\n const type = filename && mime.lookup(filename) || 'text/plain';\r\n const blob = new Blob([link], { type: type });\r\n link = URL.createObjectURL(blob);\r\n newPage = newPage && type;\r\n }\r\n\r\n if (!newPage) {\r\n const element = document.createElement('a');\r\n element.setAttribute('href', link as string);\r\n filename && element.setAttribute('download', filename);\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n } else {\r\n window.open(link as string, filename);\r\n }\r\n}\r\n\r\nexport function callerName(level: number = 0, getLastPartOfName: boolean = true) {\r\n let res;\r\n const stackTrace = ST.getSync({offline: true});\r\n // If minification, two more calls includes to stack starting from getSync method\r\n const self = stackTrace.firstOrDefault(x => x.functionName && (x.functionName === 'getSync' /* IE */ || x.functionName.EndsWith('.getSync') /* Others */));\r\n if (self) {\r\n const index = stackTrace.indexOf(self) + 1;\r\n level += index;\r\n }\r\n res = stackTrace[level + 1].functionName;\r\n if (getLastPartOfName) {\r\n const arr = res.split('.');\r\n res = arr[arr.length - 1];\r\n }\r\n return res;\r\n}\r\n\r\nexport function detectChanges(changeDetector : ChangeDetectorRef) {\r\n try {\r\n changeDetector && !(changeDetector).destroyed && changeDetector.detectChanges();\r\n } catch (e) {} \r\n} \r\n\r\nconst COLORS: string[] = [\r\n '#FAEBD7',\r\n '#00FFFF',\r\n '#7FFFD4',\r\n '#F0FFFF',\r\n '#F5F5DC',\r\n '#FFE4C4',\r\n '#000000',\r\n '#FFEBCD',\r\n '#0000FF',\r\n '#8A2BE2',\r\n '#A52A2A',\r\n '#DEB887',\r\n '#5F9EA0',\r\n '#7FFF00',\r\n '#D2691E',\r\n '#FF7F50',\r\n '#6495ED',\r\n '#FFF8DC',\r\n '#DC143C',\r\n '#00FFFF',\r\n '#00008B',\r\n '#008B8B',\r\n '#B8860B',\r\n '#A9A9A9',\r\n '#A9A9A9',\r\n '#006400',\r\n '#BDB76B',\r\n '#8B008B',\r\n '#556B2F',\r\n '#FF8C00',\r\n '#9932CC',\r\n '#8B0000',\r\n '#E9967A',\r\n '#8FBC8F',\r\n '#483D8B',\r\n '#2F4F4F',\r\n '#2F4F4F',\r\n '#00CED1',\r\n '#9400D3'];\r\n\r\nexport function getRandomItem(array: T[]): T {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n\r\nexport function getNextItem(array: T[]): T {\r\n let currentIndex = array['__currentIndex'] || 0;\r\n const res = array[currentIndex];\r\n currentIndex++;\r\n if (currentIndex >= array.length)\r\n currentIndex = 0;\r\n array['__currentIndex'] = currentIndex;\r\n return res;\r\n}\r\n\r\nexport function getRandomColor(): string {\r\n return getRandomItem(COLORS);\r\n}\r\n\r\nexport function getNextColor(): string {\r\n return getNextItem(COLORS);\r\n}\r\n\r\nexport function colorLighten(color: string, percent: number): string {\r\n/*\r\n if (!color) color = 'black';\r\n if (!color.startsWith('#')) color = colorNameToHex(color);\r\n\r\n const r = parseInt(color.substr(1, 2), 16),\r\n g = parseInt(color.substr(3, 2), 16),\r\n b = parseInt(color.substr(5, 2), 16);\r\n\r\n const res = '#' +\r\n (((0 | (1 << 8) + r + (256 - r) * percent / 100).toString(16)) + '0').substr(1, 2) +\r\n (((0 | (1 << 8) + g + (256 - g) * percent / 100).toString(16)) + '0').substr(1, 2) +\r\n (((0 | (1 << 8) + b + (256 - b) * percent / 100).toString(16)) + '0').substr(1, 2);\r\n return res;\r\n*/\r\n if (!color) color = 'black';\r\n if (!color.startsWith('#')) color = colorNameToHex(color);\r\n const num = parseInt(color.slice(1), 16);\r\n let r = (num >> 16) + Math.round(2.55 * percent);\r\n let g = ((num >> 8) & 0x00FF) + Math.round(2.55 * percent);\r\n let b = (num & 0x0000FF) + Math.round(2.55 * percent);\r\n // Ограничиваем значения в диапазоне от 0 до 255\r\n r = r < 0 ? 0 : r > 255 ? 255 : r;\r\n g = g < 0 ? 0 : g > 255 ? 255 : g;\r\n b = b < 0 ? 0 : b > 255 ? 255 : b;\r\n\r\n// Формируем осветленный цвет в формате HEX\r\n const lightenedColor = (r << 16) | (g << 8) | b;\r\n const res = `#${lightenedColor.toString(16).padStart(6, '0')}`;\r\n return res;\r\n}\r\n\r\nexport function colorDarken(color: string, percent: number): string {\r\n return colorLighten(color, -percent);\r\n}\r\n\r\nexport function colorToRgb(color: string, opacity?: number): string {\r\n if (!color) color = 'black';\r\n if (!color.StartsWith('#'))\r\n color = colorNameToHex(color);\r\n\r\n const r = parseInt(color.substring(1, 1+2), 16),\r\n g = parseInt(color.substring(3, 3+2), 16),\r\n b = parseInt(color.substring(5, 5+2), 16);\r\n return opacity ? `rgba(${r},${g},${b},${+opacity})` : `rgb(${r},${g},${b})`;\r\n}\r\n\r\nfunction padZero(str, len?: number): string {\r\n len = len || 2;\r\n const zeros = new Array(len).join('0');\r\n return (zeros + str).slice(-len);\r\n}\r\n\r\nexport function invertColor(color: string, bw: boolean = true) {\r\n if (!color) color = 'black';\r\n if (!color.StartsWith('#'))\r\n color = colorNameToHex(color);\r\n const r = parseInt(color.substring(1, 1+2), 16);\r\n const g = parseInt(color.substring(3, 3+2), 16);\r\n const b = parseInt(color.substring(5, 5+2), 16);\r\n if (bw) {\r\n // http://stackoverflow.com/a/3943023/112731\r\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\r\n ? '#000000'\r\n : '#FFFFFF';\r\n }\r\n // invert color components\r\n // pad each with zeros and return\r\n return '#' + padZero((255 - r).toString(16)) + padZero((255 - g).toString(16)) + padZero((255 - b).toString(16));\r\n}\r\n\r\nexport function colorNameToHex(color) {\r\n const colors = {\r\n \"aliceblue\": '#f0f8ff', \"antiquewhite\": '#faebd7', \"aqua\": '#00ffff', \"aquamarine\": '#7fffd4', \"azure\": '#f0ffff',\r\n \"beige\": '#f5f5dc', \"bisque\": '#ffe4c4', \"black\": '#000000', \"blanchedalmond\": '#ffebcd', \"blue\": '#0000ff', \"blueviolet\": '#8a2be2', \"brown\": '#a52a2a', \"burlywood\": '#deb887',\r\n \"cadetblue\": '#5f9ea0', \"chartreuse\": '#7fff00', \"chocolate\": '#d2691e', \"coral\": '#ff7f50', \"cornflowerblue\": '#6495ed', \"cornsilk\": '#fff8dc', \"crimson\": '#dc143c', \"cyan\": '#00ffff',\r\n \"darkblue\": '#00008b', \"darkcyan\": '#008b8b', \"darkgoldenrod\": '#b8860b', \"darkgray\": '#a9a9a9', \"darkgreen\": '#006400', \"darkkhaki\": '#bdb76b', \"darkmagenta\": '#8b008b', \"darkolivegreen\": '#556b2f',\r\n \"darkorange\": '#ff8c00', \"darkorchid\": '#9932cc', \"darkred\": '#8b0000', \"darksalmon\": '#e9967a', \"darkseagreen\": '#8fbc8f', \"darkslateblue\": '#483d8b', \"darkslategray\": '#2f4f4f', \"darkturquoise\": '#00ced1',\r\n \"darkviolet\": '#9400d3', \"deeppink\": '#ff1493', \"deepskyblue\": '#00bfff', \"dimgray\": '#696969', \"dodgerblue\": '#1e90ff',\r\n \"firebrick\": '#b22222', \"floralwhite\": '#fffaf0', \"forestgreen\": '#228b22', \"fuchsia\": '#ff00ff',\r\n \"gainsboro\": '#dcdcdc', \"ghostwhite\": '#f8f8ff', \"gold\": '#ffd700', \"goldenrod\": '#daa520', \"gray\": '#808080', \"green\": '#008000', \"greenyellow\": '#adff2f',\r\n \"honeydew\": '#f0fff0', \"hotpink\": '#ff69b4',\r\n \"indianred \": '#cd5c5c', \"indigo\": '#4b0082', \"ivory\": '#fffff0', \"khaki\": '#f0e68c',\r\n \"lavender\": '#e6e6fa', \"lavenderblush\": '#fff0f5', \"lawngreen\": '#7cfc00', \"lemonchiffon\": '#fffacd', \"lightblue\": '#add8e6', \"lightcoral\": '#f08080', \"lightcyan\": '#e0ffff', \"lightgoldenrodyellow\": '#fafad2',\r\n \"lightgrey\": '#d3d3d3', \"lightgreen\": '#90ee90', \"lightpink\": '#ffb6c1', \"lightsalmon\": '#ffa07a', \"lightseagreen\": '#20b2aa', \"lightskyblue\": '#87cefa', \"lightslategray\": '#778899', \"lightsteelblue\": '#b0c4de',\r\n \"lightyellow\": '#ffffe0', \"lime\": '#00ff00', \"limegreen\": '#32cd32', \"linen\": '#faf0e6',\r\n \"magenta\": '#ff00ff', \"maroon\": '#800000', \"mediumaquamarine\": '#66cdaa', \"mediumblue\": '#0000cd', \"mediumorchid\": '#ba55d3', \"mediumpurple\": '#9370d8', \"mediumseagreen\": '#3cb371', \"mediumslateblue\": '#7b68ee',\r\n \"mediumspringgreen\": '#00fa9a', \"mediumturquoise\": '#48d1cc', \"mediumvioletred\": '#c71585', \"midnightblue\": '#191970', \"mintcream\": '#f5fffa', \"mistyrose\": '#ffe4e1', \"moccasin\": '#ffe4b5',\r\n \"navajowhite\": '#ffdead', \"navy\": '#000080',\r\n \"oldlace\": '#fdf5e6', \"olive\": '#808000', \"olivedrab\": '#6b8e23', \"orange\": '#ffa500', \"orangered\": '#ff4500', \"orchid\": '#da70d6',\r\n \"palegoldenrod\": '#eee8aa', \"palegreen\": '#98fb98', \"paleturquoise\": '#afeeee', \"palevioletred\": '#d87093', \"papayawhip\": '#ffefd5', \"peachpuff\": '#ffdab9', \"peru\": '#cd853f', \"pink\": '#ffc0cb', \"plum\": '#dda0dd', \"powderblue\": '#b0e0e6', \"purple\": '#800080',\r\n \"red\": '#ff0000', \"rosybrown\": '#bc8f8f', \"royalblue\": '#4169e1',\r\n \"saddlebrown\": '#8b4513', \"salmon\": '#fa8072', \"sandybrown\": '#f4a460', \"seagreen\": '#2e8b57', \"seashell\": '#fff5ee', \"sienna\": '#a0522d', \"silver\": '#c0c0c0', \"skyblue\": '#87ceeb', \"slateblue\": '#6a5acd', \"slategray\": '#708090', \"snow\": '#fffafa', \"springgreen\": '#00ff7f', \"steelblue\": '#4682b4',\r\n \"tan\": '#d2b48c', \"teal\": '#008080', \"thistle\": '#d8bfd8', \"tomato\": '#ff6347', \"turquoise\": '#40e0d0',\r\n \"violet\": '#ee82ee',\r\n \"wheat\": '#f5deb3', \"white\": '#ffffff', \"whitesmoke\": '#f5f5f5',\r\n \"yellow\": '#ffff00', \"yellowgreen\": '#9acd32'\r\n };\r\n\r\n if (!color) color = 'black';\r\n\r\n if (typeof colors[color.toLowerCase()] != 'undefined')\r\n return colors[color.toLowerCase()];\r\n\r\n return color;\r\n}\r\n\r\n\r\nexport function getFnBody(fn: Function): string {\r\n // Get content between first { and last }\r\n // test function(...) { body }\r\n const fnText = fn?.toString()?.trim();\r\n let m = fnText?.match(/\\{([.]*)\\}/m);\r\n let body = m ? m[1] : null;\r\n if (isEmpty(body)) {\r\n // test (...) => body\r\n m = fnText.match(/\\(.*\\)\\s*=>\\s*(.*)/m);\r\n body = m ? m[1] : null;\r\n }\r\n if (!isEmpty(body)) {\r\n // trim { ... }\r\n body = body.trim();\r\n if (body.startsWith('{') && body.endsWith('}')) {\r\n body = body.substring(1, body.length - 1);\r\n }\r\n // Strip comments\r\n body = body.replace(/^\\s*\\/\\/.*$/mg, '');\r\n } else {\r\n body = fnText;\r\n }\r\n return body?.trim() || '';\r\n}\r\n\r\nexport function isFnEmpty(fn: Function): boolean {\r\n return (getFnBody(fn) || '').trim() === '';\r\n}\r\n\r\nexport function isBoolean(obj) {\r\n return typeof obj === 'boolean';\r\n}\r\nexport function isNumber(obj) {\r\n return typeof obj === 'number';\r\n}\r\nexport function isString(obj) {\r\n return typeof obj === 'string';\r\n}\r\nexport function isFunction(obj) {\r\n return typeof obj === 'function';\r\n}\r\nexport function isType(obj) {\r\n return isFunction(obj);\r\n}\r\nexport function isStringMap(obj) {\r\n return obj !== null && typeof obj === 'object';\r\n}\r\nvar STRING_MAP_PROTO = Object.getPrototypeOf({});\r\nexport function isStrictStringMap(obj) {\r\n return isStringMap(obj) && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\r\n}\r\nexport function isPromise(obj) {\r\n // allow any Promise/A+ compliant thenable.\r\n // It's up to the caller to ensure that obj.then conforms to the spec\r\n return isNotEmpty(obj) && isFunction(obj.then);\r\n}\r\nexport function isArray(obj) {\r\n return Array.isArray(obj);\r\n}\r\nexport function toArray(obj) {\r\n return Array.isArray(obj) ? obj : (!!obj ? [obj] : []);\r\n}\r\nexport function isDate(obj) {\r\n return obj instanceof Date && !isNaN(obj.valueOf());\r\n}\r\nexport function isArrayBuffer(value) {\r\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\r\n}\r\n\r\nexport function isBlob(value) {\r\n return typeof Blob !== 'undefined' && value instanceof Blob;\r\n}\r\n\r\nexport function isFormData(value) {\r\n return typeof FormData !== 'undefined' && value instanceof FormData;\r\n}\r\n\r\nexport function isUrlSearchParams(value) {\r\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\r\n}\r\n\r\n/**\r\n * Returns true if context equals null or undefined. \r\n */\r\nexport function isEmpty(context: any): boolean {\r\n return context === undefined || context === null;\r\n}\r\n/**\r\n * Returns true if context doesn't equal neither null nor undefined. \r\n */\r\nexport function isNotEmpty(obj) {\r\n return obj !== undefined && obj !== null;\r\n}\r\n\r\nexport function resolveValue(value: T | (() => T)): T {\r\n return (typeof value === 'function') ? (value)() : value;\r\n}\r\n\r\n/**\r\n * Returns value if context equals null or undefined or context in another case.\r\n */\r\nexport function ifEmpty(context: T, value: T | (() => T)): T {\r\n return isEmpty(context) ? resolveValue(value) : context;\r\n}\r\n/**\r\n * Returns value if context doesn't equal neither null nor undefined. Otherwise undefined.\r\n */\r\nexport function ifNotEmpty(context: any, value: T | (() => T)): T {\r\n return isNotEmpty(context) ? resolveValue(value) : undefined;\r\n}\r\n/**\r\n * Returns value if context equals null or undefined or context in another case.\r\n */\r\nexport function coalesce(context: T, value: T | (() => T)): T {\r\n return ifEmpty(context, value);\r\n}\r\n\r\nexport function isJsObject(o) {\r\n return o !== null && (typeof o === 'function' || typeof o === 'object');\r\n}\r\n\r\nexport function isPrimitive(obj) {\r\n return !isJsObject(obj);\r\n}\r\nexport function hasConstructor(value, type) {\r\n return value.constructor === type;\r\n}\r\nexport function escape(s) {\r\n return htmlEscape(s);\r\n}\r\nexport function htmlEscape(str) {\r\n return (str || '').toString()\r\n .replace(/&/g, '&')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n .replace(//g, '>');\r\n}\r\nexport function htmlUnescape(str) {\r\n return (str || '').toString()\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/&/g, '&');\r\n}\r\nexport function escapeRegExp(s) {\r\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\r\n}\r\nexport function getRandomArbitrary(min, max) {\r\n return Math.random() * (max - min) + min;\r\n}\r\n\r\nexport function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n}\r\n\r\nexport function guid(): string {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\r\n s4() + '-' + s4() + s4() + s4();\r\n}\r\n\r\nlet UID = 1;\r\nexport function uid(): string {\r\n return (UID++).toString();\r\n}\r\n\r\nexport function b64ToBlob(b64Data: any, contentType?: string, sliceSize?: number) {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n const byteCharacters = atob(b64Data || []);\r\n const byteArrays: Uint8Array[] = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n}\r\n\r\n/*\r\nexport function download(link: string | Blob, filename?: string, newPage: boolean = false) {\r\n if (link instanceof Blob && filename) {\r\n const type = MIME.lookup(filename);\r\n const blob = new Blob([link], { type: type });\r\n link = URL.createObjectURL(blob);\r\n newPage = newPage && type;\r\n }\r\n \r\n if (!newPage) {\r\n const element = document.createElement('a');\r\n element.setAttribute('href', link as string);\r\n filename && element.setAttribute('download', filename);\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n } else {\r\n window.open(link as string, filename);\r\n }\r\n}\r\n*/\r\n\r\nexport function getRandomString(digitsNum: number = 12)\r\n{\r\n let text = '';\r\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\r\n\r\n for( let i=0; i < digitsNum; i++ )\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n\r\n return text;\r\n}\r\n\r\n/**\r\n * Транслитерация кириллицы в URL\r\n */\r\nexport function urlRusLat(str: string): string {\r\n str = str.toLowerCase(); // все в нижний регистр \r\n\tconst cyr2LatChars = new Array(\r\n\t\t\t['Р°', 'a'], ['Р±', 'b'], ['РІ', 'v'], ['Рі', 'g'],\r\n\t\t\t['Рґ', 'd'], ['Рµ', 'e'], ['С‘', 'yo'], ['Р¶', 'zh'], ['Р·', 'z'],\r\n\t\t\t['Рё', 'i'], ['Р№', 'y'], ['Рє', 'k'], ['Р»', 'l'],\r\n\t\t\t['Рј', 'm'], ['РЅ', 'n'], ['Рѕ', 'o'], ['Рї', 'p'], ['СЂ', 'r'],\r\n\t\t\t['СЃ', 's'], ['С‚', 't'], ['Сѓ', 'u'], ['С„', 'f'],\r\n\t\t\t['С…', 'h'], ['С†', 'c'], ['С‡', 'ch'],['С€', 'sh'], ['С‰', 'shch'],\r\n\t\t\t['СЉ', ''], ['С‹', 'y'], ['СЊ', ''], ['СЌ', 'e'], ['СЋ', 'yu'], ['СЏ', 'ya'],\r\n\t\t\t\t\r\n\t\t\t['Рђ', 'A'], ['Р‘', 'B'], ['Р’', 'V'], ['Р“', 'G'],\r\n\t\t\t['Р”', 'D'], ['Р•', 'E'], ['РЃ', 'YO'], ['Р–', 'ZH'], ['Р—', 'Z'],\r\n\t\t\t['И', 'I'], ['Р™', 'Y'], ['Рљ', 'K'], ['Р›', 'L'],\r\n\t\t\t['Рњ', 'M'], ['Рќ', 'N'], ['Рћ', 'O'], ['Рџ', 'P'], ['Р ', 'R'],\r\n\t\t\t['РЎ', 'S'], ['Рў', 'T'], ['РЈ', 'U'], ['Р¤', 'F'],\r\n\t\t\t['РҐ', 'H'], ['Р¦', 'C'], ['Р§', 'CH'], ['РЁ', 'SH'], ['Р©', 'SHCH'],\r\n\t\t\t['РЄ', ''], ['Р«', 'Y'],\r\n\t\t\t['Р¬', ''],\r\n\t\t\t['Р­', 'E'],\r\n\t\t\t['Р®', 'YU'],\r\n\t\t\t['РЇ', 'YA'],\r\n\t\t\t\t\r\n\t\t\t['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd'], ['e', 'e'],\r\n\t\t\t['f', 'f'], ['g', 'g'], ['h', 'h'], ['i', 'i'], ['j', 'j'],\r\n\t\t\t['k', 'k'], ['l', 'l'], ['m', 'm'], ['n', 'n'], ['o', 'o'],\r\n\t\t\t['p', 'p'], ['q', 'q'], ['r', 'r'], ['s', 's'], ['t', 't'],\r\n\t\t\t['u', 'u'], ['v', 'v'], ['w', 'w'], ['x', 'x'], ['y', 'y'],\r\n\t\t\t['z', 'z'],\r\n\t\t\t\t\r\n\t\t\t['A', 'A'], ['B', 'B'], ['C', 'C'], ['D', 'D'],['E', 'E'],\r\n\t\t\t['F', 'F'],['G', 'G'],['H', 'H'],['I', 'I'],['J', 'J'],['K', 'K'],\r\n\t\t\t['L', 'L'], ['M', 'M'], ['N', 'N'], ['O', 'O'],['P', 'P'],\r\n\t\t\t['Q', 'Q'],['R', 'R'],['S', 'S'],['T', 'T'],['U', 'U'],['V', 'V'],\r\n\t\t\t['W', 'W'], ['X', 'X'], ['Y', 'Y'], ['Z', 'Z'],\r\n\t\t\t\t\r\n\t\t\t[' ', '_'],['0', '0'],['1', '1'],['2', '2'],['3', '3'],\r\n\t\t\t['4', '4'],['5', '5'],['6', '6'],['7', '7'],['8', '8'],['9', '9'],\r\n\t\t\t['-', '-'], ['/', '/']\r\n );\r\n\r\n var newStr = new String();\r\n\r\n for (var i = 0; i < str.length; i++) {\r\n\r\n let ch = str.charAt(i);\r\n var newCh = '';\r\n\r\n for (var j = 0; j < cyr2LatChars.length; j++) {\r\n if (ch === cyr2LatChars[j][0]) {\r\n newCh = cyr2LatChars[j][1];\r\n\r\n }\r\n }\r\n // Если найдено совпадение, то добавляется соответствие, если нет - пустая строка\r\n newStr += newCh;\r\n\r\n }\r\n // Удаляем повторяющие знаки - Именно на них заменяются пробелы.\r\n // Так же удаляем символы перевода строки, но это наверное уже лишнее\r\n return newStr.replace(/[_]{2,}/gim, '_').replace(/\\n/gim, '');\r\n}\r\n\r\n/**\r\n * Checks if value could be converted into integer number.\r\n */\r\nexport function isIntNumber(val: any): boolean {\r\n const isInt = !isNaN(val) && val.toString().indexOf('.') < 0 && Number(val) === Math.ceil(val);\r\n let result;\r\n if (val === '-' || isInt) {\r\n result = true;\r\n } else {\r\n result = false;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Checks if value could be converted into float number.\r\n */\r\nexport function isFloatNumber(val: any) {\r\n let result;\r\n if (typeof val === 'string') val = val.replace(',', '.');\r\n if (val === '-' || !isNaN(Number(val))) {\r\n result = true;\r\n } else {\r\n result = false;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/*\r\n** Returns the caret (cursor) position of the specified text field.\r\n** Return value range is 0-oField.value.length.\r\n*/\r\nexport function getCaretPosition(input: HTMLInputElement | HTMLTextAreaElement | any) {\r\n\r\n // Initialize\r\n let iCaretPos = 0;\r\n\r\n // IE Support\r\n if (document['selection']) {\r\n\r\n // Set focus on the element\r\n input.focus();\r\n\r\n // To get cursor position, get empty selection range\r\n const oSel = document['selection'].createRange();\r\n\r\n // Move selection start to 0 position\r\n oSel.moveStart('character', -input.value.length);\r\n\r\n // The caret position is selection length\r\n iCaretPos = oSel.text.length;\r\n }\r\n\r\n // Firefox support\r\n else if (input.selectionStart || input.selectionStart === 0)\r\n iCaretPos = input.selectionStart;\r\n\r\n // Return results\r\n return iCaretPos;\r\n}\r\n\r\n/** Возвращает `true` если элемент невидим на странице */ \r\nexport function isHidden(el: HTMLElement) {\r\n return (el.offsetParent === null) && !el.hidden;\r\n}\r\n\r\nexport function canFocus(el: HTMLElement) {\r\n return !isHidden(el) && !el['disabled'];\r\n}\r\n\r\n/**\r\n * Возвращает ближайший родительский элемент, удовлетворяющий указанному селектору вверх по иерархии DOM.\r\n * @param el элемент от которого производится поиск (он также учавствует в поиске и может быть найден)\r\n * @param selector селектор поиска\r\n * @param stopSelector если найден родитель, удовлетворяющий этому селектору - поиск будет прекращён\r\n * @param deepSearch если равно `true` - поиск будет также производится в дочерних элементах родительских элементов\r\n */\r\nexport function closest(el: Element, selector: string, stopSelector?: string, deepSearch?: boolean): Element {\r\n let retval = null;\r\n while (el) {\r\n if (el.matches(selector)) {\r\n retval = el;\r\n break;\r\n }\r\n if (deepSearch) {\r\n retval = el.querySelector(selector);\r\n if (retval) {\r\n break;\r\n }\r\n }\r\n if (stopSelector && el.matches(stopSelector)) {\r\n break;\r\n }\r\n el = el.parentElement;\r\n }\r\n return retval;\r\n}\r\n\r\nexport function getFormGroupElement(fromElement?: Element): Element {\r\n fromElement = fromElement || document.activeElement;\r\n return fromElement['form'] || closest(fromElement, '[form-group]') || closest(fromElement, 'form');\r\n}\r\n\r\n/**\r\n * Перемещает фокус на следующий элемент группы. Группой считаются все элементы, относящиеся к одной форме
,\r\n * находящиеся внутри контейнера с атрибутом [form-group] или внутри текущего сфокусированного компонента.\r\n * Элемент должен быть видимым и не запрещённым.\r\n * Если перемещение невозможно - возвращает `null` иначе элемент на который перешло.\r\n */\r\nexport function focusNextElement(fromElement?: Element, backward?: boolean | 0, form?: HTMLElement): HTMLElement {\r\n let res = null;\r\n //add all elements we want to include in our selection\r\n //const focussableElements = 'a:not([disabled]), button:not([disabled]), input[type=text]:not([disabled]), input[type=textarea]:not([disabled]), [tabindex]:not([disabled]):not([tabindex=\"-1\"])';\r\n const focussableElements = 'button, input, [tabindex], textarea';\r\n fromElement = fromElement || document.activeElement;\r\n form = (form || getFormGroupElement(fromElement) || fromElement);\r\n if (form) {\r\n const focussable = Array.prototype.filter.call(form.querySelectorAll(focussableElements),\r\n element => ((element.tabIndex >= 0) && canFocus(element) && (element.offsetWidth > 0 || element.offsetHeight > 0) || element === fromElement));\r\n let index = focussable.indexOf(fromElement);\r\n if (index === -1) {\r\n const fromElementFocusable = fromElement.querySelector(focussableElements);\r\n index = focussable.indexOf(fromElementFocusable);\r\n }\r\n if (backward === 0) {\r\n index = 0;\r\n }\r\n else if (index > -1) {\r\n index = backward ? index - 1 : index + 1;\r\n } else {\r\n index = backward ? focussable.length - 1 : 0;\r\n }\r\n let nextElement = focussable[index];\r\n if (!nextElement) {\r\n const parentFormGroup = (form).$component?.form?.parent; // родительская форма\r\n if (parentFormGroup?.nativeElement) {\r\n nextElement = focusNextElement(fromElement, backward, parentFormGroup.nativeElement);\r\n }\r\n nextElement = nextElement || (backward ? focussable[focussable.length - 1] : focussable[0]);\r\n }\r\n nextElement && nextElement.focus();\r\n res = nextElement;\r\n }\r\n return res;\r\n}\r\n\r\n/**\r\n * Принудительно устанавливает фокус на элемент. После установки в течение 500 (по умолчанию) миллисекунд проверяет, что фокус установлен,\r\n * если за это время фокус с элемента снимается - делается попытка установить его снова.\r\n */\r\nexport function focusElement(element: HTMLElement | string, checkPeriodMs: number = 500, parentElement?: Element) {\r\n if (typeof element === 'string') {\r\n element = (parentElement || document).querySelector(element);\r\n }\r\n if (element) {\r\n element['_checkFocusCount'] = ifEmpty(element['_checkFocusCount'], checkPeriodMs/50);\r\n setTimeout(() => {\r\n if (canFocus(element)) {\r\n (element).focus();\r\n }\r\n checkFocus(element);\r\n });\r\n }\r\n}\r\n\r\nfunction checkFocus(element: HTMLElement)\r\n{\r\n setTimeout(() => {\r\n element['_checkFocusCount'] = ifEmpty(element['_checkFocusCount'], 10) - 1;\r\n if (element['_checkFocusCount'] > 0) {\r\n if (document.activeElement !== element) {\r\n focusElement(element);\r\n } else {\r\n checkFocus(element);\r\n }\r\n }\r\n }, 50);\r\n}\r\n\r\n/**\r\n * Returns current decimal separator\r\n */\r\nexport function getDecimalSeparator(): string {\r\n return (1.1).toLocaleString().substring(1, 2);\r\n}\r\n\r\n\r\n\r\n// ReSharper disable once InconsistentNaming\r\nconst debounceHandlers = <{ context: string, timeoutHandler?: any }[]>[];\r\nexport function clearDebounce(context: any, startsWith: boolean = false) {\r\n if (!isEmpty(context)) { \r\n const currentHandler = debounceHandlers.firstOrDefault(v => startsWith ? ifEmpty(v.context.toString(), '').startsWith(context) : v.context === context);\r\n if (isJsObject(currentHandler)) {\r\n clearTimeout(currentHandler.timeoutHandler);\r\n debounceHandlers.Remove(currentHandler);\r\n }\r\n }\r\n}\r\nexport function debounce(fn: Function, debounceTime?: number, context?: any): any {\r\n if (!isFunction(fn)) {\r\n clearDebounce(context);\r\n return null;\r\n } else {\r\n if (isEmpty(context) && fn) {\r\n context = getFnBody(fn).ToMd5();\r\n }\r\n let currentHandler = debounceHandlers.firstOrDefault(v => v.context === context);\r\n if (isJsObject(currentHandler)) {\r\n clearTimeout(currentHandler.timeoutHandler);\r\n } else {\r\n currentHandler = { context };\r\n debounceHandlers.push(currentHandler);\r\n }\r\n currentHandler.timeoutHandler = setTimeout(() => {\r\n try {\r\n fn();\r\n } finally {\r\n debounceHandlers.Remove(currentHandler);\r\n } \r\n },\r\n debounceTime);\r\n return currentHandler.timeoutHandler;\r\n }\r\n}\r\n\r\nconst THROTTLE_HANDLERS = <{ context: string, fn: Function, timeoutHandler?: any }[]>[];\r\nexport function clearThrottle(context: any, startsWith: boolean = false) {\r\n if (!isEmpty(context)) {\r\n const currentHandler = THROTTLE_HANDLERS.firstOrDefault(v => startsWith ? ifEmpty(v.context.toString(), '').toString().startsWith(context) : v.context === context);\r\n if (isJsObject(currentHandler)) {\r\n clearTimeout(currentHandler.timeoutHandler);\r\n THROTTLE_HANDLERS.Remove(currentHandler);\r\n }\r\n }\r\n}\r\nexport function throttle(fn: Function, throttleTime?: number, context?: any): any {\r\n if (!isFunction(fn)) {\r\n clearThrottle(context);\r\n return null;\r\n } else {\r\n if (isEmpty(context) && fn) {\r\n context = getFnBody(fn).ToMd5();\r\n }\r\n let currentHandler = THROTTLE_HANDLERS.firstOrDefault(v => v.context === context);\r\n if (isJsObject(currentHandler)) {\r\n currentHandler.context = context;\r\n currentHandler.fn = fn;\r\n } else {\r\n currentHandler = { context, fn };\r\n THROTTLE_HANDLERS.push(currentHandler);\r\n currentHandler.timeoutHandler = setTimeout(() => {\r\n try {\r\n currentHandler.fn();\r\n } finally {\r\n THROTTLE_HANDLERS.Remove(currentHandler);\r\n } \r\n },\r\n throttleTime);\r\n }\r\n return currentHandler.timeoutHandler;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Форматирование числа по формату\r\n * @param value исходное значение\r\n * @param format формат вида '{any_text}000.00#,{any_text}' или 'n:{any_text}000.00#,{any_text}'\r\n */\r\nexport function formatNumber(value: number, format: string): string {\r\n let prefix = '';\r\n let suffix = '';\r\n let useGrouping = false;\r\n let minimumIntegerDigits = 0;\r\n let minimumFractionDigits = 0;\r\n let maximumFractionDigits = 0;\r\n let mode = 'prefix';\r\n for (let item of format) {\r\n switch (mode) {\r\n case 'prefix':\r\n if (item !== '0') {\r\n prefix += item;\r\n } else {\r\n minimumIntegerDigits++;\r\n mode = 'int';\r\n }\r\n break;\r\n case 'int':\r\n if (item === '0') {\r\n minimumIntegerDigits++;\r\n } else if (item === '.' || item === ',') {\r\n mode = 'frac';\r\n useGrouping = item === ',';\r\n } else {\r\n mode = 'suffix';\r\n suffix += item;\r\n }\r\n break;\r\n case 'frac':\r\n if (item === '0') {\r\n minimumFractionDigits++;\r\n maximumFractionDigits++;\r\n } else if (item === '#') {\r\n mode = 'frac1';\r\n maximumFractionDigits++;\r\n } else {\r\n mode = 'suffix';\r\n suffix += item;\r\n }\r\n break;\r\n case 'frac1':\r\n if (item === '#') {\r\n maximumFractionDigits++;\r\n } else {\r\n mode = 'suffix';\r\n suffix += item;\r\n }\r\n break;\r\n default:\r\n suffix += item;\r\n break;\r\n }\r\n }\r\n const val = value.toLocaleString(undefined, { minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, useGrouping: useGrouping});\r\n return prefix + val + suffix;\r\n}\r\n\r\nexport function formatEnum(value: any, values: {[key: string]: string}): string {\r\n return values[value.toString()] || '';\r\n}\r\n\r\nexport function ussFormat(value: any, format?: string, defaultText?: string): string {\r\n return ussFormatEx(value, format, defaultText).displayText;\r\n}\r\n\r\n/**\r\n * Универсальное форматирование значения. Тип определяется автоматически или может быть явно задан префиксом формата.\r\n * Поддерживаются следующие форматы:\r\n * - d:{dateFormat} - дата, {dateFormat}: формат как для moment.js (плюс дополнение, см. ниже в коде)\r\n * - b:{booleanFormat} - логическое значение, {booleanFormat}: {YES_TEXT}|{NO_TEXT}\r\n * - n:{numericFormat} - числовое значение, {numericFormat}: {any_text}000.00#,{any_text}\r\n * - e:{enumFormat} - перечисление, {enumFormat}: 0={value1}|1={value2}|2={value3})\r\n * - p:{diffFormat} - промежуток времени, {diffFormat}: dmhs|D|M|H|S\r\n * @param value форматируемое значение\r\n * @param format формат\r\n * @param defaultText значение по умолчанию (если результат форматирования пустая строка)\r\n */\r\nexport function ussFormatEx(value: any, format?: string, defaultText?: string): UssFormatDisplayText {\r\n defaultText = defaultText === undefined || defaultText === null ? '' : defaultText;\r\n format = format === undefined || format === null ? '' : format.toString();\r\n if (format === '') {\r\n if (moment.isMoment(value)) format = 'd:L';\r\n else if (moment.isDuration(value)) format = 'p:dmhs';\r\n }\r\n let checkAfter: number;\r\n let res = value === undefined || value === null ? '' : value.toString();\r\n if (format && res) {\r\n let formatType = '';\r\n if (format.StartsWith('b:', true)\r\n || format.StartsWith('n:', true)\r\n || format.StartsWith('d:', true)\r\n || format.StartsWith('e:', true)\r\n || format.StartsWith('p:', true)\r\n ) {\r\n formatType = format.substring(0, 1).toLowerCase();\r\n format = format.substring(2);\r\n }\r\n\r\n if (formatType === 'b' || typeof value === 'boolean') {\r\n // это форматирование логического типа - формат вида '{YES_TEXT}|{NO_TEXT}' or 'b:{YES_TEXT}|{NO_TEXT}'\r\n let key = true.toString();\r\n const values = {};\r\n format.split('|').forEach(x => {\r\n const arr = x.split('=', 2);\r\n if (arr.length === 1) {\r\n arr[1] = arr[0];\r\n arr[0] = key;\r\n }\r\n if (arr[0] === true.toString()) {\r\n key = false.toString();\r\n }\r\n values[arr[0]] = arr[1];\r\n });\r\n// res = (value ? values[0] : values[1]) || '';\r\n res = formatEnum(value, values);\r\n }\r\n else if (formatType === 'e') {\r\n // это форматирование перечисления - формат вида '0={value1}|1={value2}|2={value3}' or 'e:0={value1}|1={value2}|2={value3}'\r\n const values = {};\r\n format.split('|').forEach(x => {\r\n const arr = x.split('=', 2);\r\n values[arr[0]] = arr[1];\r\n });\r\n res = formatEnum(value, values);\r\n }\r\n else if (formatType === 'p' || moment.isDuration(value)) {\r\n res = formatDiff(value, format);\r\n }\r\n else if (formatType === 'n' || typeof value === 'number') {\r\n // это форматирование числа - формат вида '{any_text}000.00#{any_text}' или 'n:{any_text}000.00#,{any_text}'\r\n res = formatNumber(value, format);\r\n }\r\n else {\r\n const date = moment(value);\r\n date.locale(moment.locale());\r\n if (date.isValid()) {\r\n // это форматирование даты - формат как для moment.js\r\n // Примеры:\r\n // DD-MM-YYYY HH:mm:SS - 04.09.1986 20:30:15 \r\n // LT - 8:30 PM (20:30)\r\n // LTS - 8:30:25 PM (20:30:25)\r\n // L - 09/04/1986 (04.09.1986)\r\n // LL - September 4, 1986 (4 Сентября 1986)\r\n // ll - Sep 4, 1986 (4 Сент 1986)\r\n // LLL - September 4, 1986 8:30 PM (4 Сентября 1986 20:30)\r\n // lll - Sep 4, 1986 8:30 PM (4 Сент 1986 20:30)\r\n // -------------------------------------------------------\r\n // поддерживается дополнительные параметры после символа ~\r\n // t, T - заменяет сегодняшнюю дату на слово `сегодня` и `Сегодня` - локализация берётся из словаря moment.js\r\n // y, Y - заменяет вчерашнюю дату на слово `вчера` и `Вчера` - локализация берётся из словаря moment.js\r\n // a, A - используется метод ussTimeAgo() - локализация берётся из словаря moment.js.\r\n // если указан символ A - добавляется значение времени (если формат отображает время): 10 мин назад (12:33:54)\r\n // \r\n const arr = (format || 'L').split('~');\r\n format = arr[0];\r\n const extra = (arr[1] || '');\r\n res = date.format(format);\r\n const formats = format.split(' ');\r\n let onlyDateFormat = formats[0];\r\n let onlyTimeFormat = formats[1];\r\n if (['LLL', 'LLLL', 'lll', 'llll'].includes(onlyDateFormat)) {\r\n onlyDateFormat = onlyDateFormat.substring(0, 2);\r\n }\r\n if (onlyTimeFormat && !['LT', 'LTS'].includes(onlyTimeFormat) && !onlyTimeFormat.Contains(/H|m|S/)) {\r\n onlyTimeFormat = '';\r\n }\r\n if (extra.Contains('T', true)) {\r\n const dat = moment().startOf('day');\r\n let text = dat.calendar().split(' ')[0];\r\n if (extra.Contains('t', false)) text = text.toLocaleLowerCase();\r\n let todayFormat = dat.format(onlyDateFormat);\r\n res = res.replace(todayFormat, text);\r\n checkAfter = 1000 * 30; // следующая проверка через пол-минуты\r\n }\r\n if (extra.Contains('Y', true)) {\r\n const dat = moment().startOf('day').add(-1, 'day');\r\n let text = dat.calendar().split(' ')[0];\r\n if (extra.Contains('t', false)) text = text.toLocaleLowerCase();\r\n let todayFormat = dat.format(onlyDateFormat);\r\n res = res.replace(todayFormat, text);\r\n checkAfter = 1000 * 30; // следующая проверка через пол-минуты\r\n }\r\n if (extra.Contains('A', true)) {\r\n const r = ussTimeAgoEx(date, format);\r\n res = r.displayText;\r\n if (onlyTimeFormat && extra.Contains('A', false) && date.isSameOrAfter(moment().startOf('day'))) {\r\n res += ' (' + date.format(onlyTimeFormat) + ')';\r\n }\r\n checkAfter = r.checkAfter;\r\n }\r\n } \r\n }\r\n }\r\n return { displayText: res === '' ? defaultText : res, checkAfter };\r\n}\r\n\r\n/**\r\n * Форматирует вывод даты согласно разницы прошедшего времени от текущего\r\n */\r\nexport function ussTimeAgoEx(value: moment.MomentInput, format?: string): UssFormatDisplayText {\r\n const momentDate = moment(value).locale(moment().locale());\r\n const res = { displayText: momentDate.fromNow(), checkAfter: 1000 * 30 /* следующая проверка через пол-минуты */};\r\n if (value) {\r\n const now = moment();\r\n\r\n const daysDiff = now.clone().startOf('day').diff(momentDate.clone().startOf('day'), 'days');\r\n const minDiff = now.clone().diff(momentDate.clone(), 'minutes');\r\n\r\n format = format || 'L LT';\r\n const arr = format.split(' ');\r\n const timeFormat = arr[1] || arr[0];\r\n let formats = undefined;\r\n if (timeFormat.Contains('T') || timeFormat.Contains('H', true) || timeFormat.Contains('M', true) || timeFormat.Contains('S', true)) {\r\n formats = {\r\n lastDay: moment.localeData().calendar('lastDay', moment()).replace('LT', timeFormat), // вчера в HH:MM:SS\r\n sameDay: moment.localeData().calendar('sameDay', moment()).replace('LT', timeFormat), // сегодня в HH:MM:SS\r\n nextDay: moment.localeData().calendar('nextDay', moment()).replace('LT', timeFormat), // завтра в HH:MM:SS\r\n };\r\n }\r\n\r\n if (daysDiff >= 2) {\r\n // если разница более двух дней - выводим дату по формату\r\n res.displayText = moment(momentDate).format(format);\r\n res.checkAfter = 0; // обновлять не нужно\r\n } else if (daysDiff === 0 && minDiff <= 30.0 && minDiff >= 0) {\r\n // если разница меньше 30 минут - выводим в формате 'сегодня в HH:MM' или 'вчера в HH:MM'\r\n res.displayText = moment(momentDate).fromNow();\r\n }\r\n else {\r\n // иначе выводим в формате 'сегодня в HH:MM' или 'вчера в HH:MM'\r\n res.displayText = moment(momentDate).calendar(undefined, formats);\r\n }\r\n /*\r\n \r\n } else if (daysDiff <= 1) {\r\n // если разница один день - выводим в формате 'сегодня в HH:MM' или 'вчера в HH:MM'\r\n res.displayText = moment(momentDate).calendar(undefined, formats);\r\n } else {\r\n if (minDiff <= 30.0 && minDiff >= 0) {\r\n res.displayText = moment(momentDate).fromNow();\r\n } else {\r\n res.displayText = moment(momentDate).calendar(undefined, formats);\r\n }\r\n }\r\n */\r\n };\r\n return res;\r\n}\r\n/**\r\n * Форматирует вывод даты согласно разницы прошедшего времени от текущего\r\n */\r\nexport function ussTimeAgo(value: moment.MomentInput, format?: string): string {\r\n return ussTimeAgoEx(value, format).displayText;\r\n}\r\n\r\n/**\r\n * Returns formatted difference between two dates of \"null\" if dates are equal\r\n * format:\r\n * dhms -> 1 д 3 ч 2 мин 40 сек\r\n * dhm -> 1 д 3 ч 3 мин\r\n * dh -> 1 д 3 ч\r\n * d -> 1 д\r\n * D -> 1\r\n * hms -> 27 ч 2 мин 40 сек\r\n * h -> 27 ч\r\n * H -> 27\r\n * m -> 651 мин\r\n * M -> 651\r\n * @param endDate конечная дата\r\n * @param beginDate начальная дата\r\n * @param diff разница в виде строки (d.hh:mm:ss), числа (секунд), или значения Duration\r\n * @param format\r\n */\r\nexport function formatDiff(endDate: DateTime, beginDate: DateTime, format?: string): string;\r\nexport function formatDiff(diff: string, format?: string): string;\r\nexport function formatDiff(diff: number, format?: string): string;\r\nexport function formatDiff(diff: moment.Duration, format?: string): string;\r\nexport function formatDiff(endDate, beginDate?, format?: string): string {\r\n const secInHour = 3600;\r\n let diff = 0;\r\n if (isDuration(endDate)) {\r\n diff = (endDate).asSeconds();\r\n format = beginDate;\r\n } else if (typeof endDate === 'string') {\r\n diff = moment.duration(endDate).asSeconds();\r\n format = beginDate;\r\n } else if (typeof endDate === 'number') {\r\n diff = endDate;\r\n format = beginDate;\r\n } else if (endDate && beginDate) {\r\n diff = moment(endDate).diff(moment(beginDate), 'seconds');\r\n }\r\n\r\n diff = Math.round(diff);\r\n\r\n if (diff < 0) {\r\n diff = -diff;\r\n }\r\n\r\n let d = 0;\r\n let h = 0;\r\n let m = 0;\r\n let s = 0;\r\n\r\n let du = '';\r\n let hu = '';\r\n let mu = '';\r\n let su = '';\r\n format = format || 'dhms';\r\n // проверка формата\r\n switch (format) {\r\n case 'D': d = Math.round(diff / secInHour / 24); break;\r\n case 'H': h = Math.round(diff / secInHour); break;\r\n case 'M': m = Math.round(diff / 60); break;\r\n case 'S': d = Math.round(diff); break;\r\n default:\r\n du = translate.instant('@UNITS.DAY|д');\r\n hu = translate.instant('@UNITS.HOUR|ч');\r\n mu = translate.instant('@UNITS.MINUTE|мин');\r\n su = translate.instant('@UNITS.SECOND|сек');\r\n\r\n h = Math.floor(diff / secInHour);\r\n m = Math.floor(diff / 60 - h * 60);\r\n s = diff - m * 60 - h * 3600;\r\n\r\n if (format.Contains('d')) {\r\n while (h >= 24) {\r\n d++;\r\n h -= 24;\r\n }\r\n }\r\n\r\n // если секунды не выводим\r\n if (!format.Contains('s')) {\r\n s > 30 && m++;\r\n s = 0;\r\n }\r\n\r\n // если минуты не выводим\r\n if (!format.Contains('m')) {\r\n if (format === 's') {\r\n s += m * 60;\r\n } else {\r\n m > 30 && h++;\r\n }\r\n m = 0;\r\n }\r\n\r\n // если часы не выводим\r\n if (!format.Contains('h')) {\r\n if (format.Contains('d')) {\r\n h > 12 && h++;\r\n } else if (format.Contains('m')) {\r\n m += h*60;\r\n } else if (format.Contains('s')) {\r\n m += h*secInHour;\r\n }\r\n h = 0;\r\n }\r\n break;\r\n }\r\n\r\n const fmt = (unit: number, unitName: string): string => {\r\n return unit > 0 ? (`${unit} ${unitName}`.trim() + ' ') : '';\r\n };\r\n\r\n return diff > 0 ? `${fmt(d, du)}${fmt(h, hu)}${fmt(m, mu)}${fmt(s, su)}`.trim() : null;\r\n}\r\n\r\nexport function getPathValue(v: object, path: string): any {\r\n if (isEmpty(v) || !path || typeof v !== 'object') return v;\r\n// if (v.hasOwnProperty(path)) return v[path];\r\n if (path in v) return v[path];\r\n const arr = path.split('.');\r\n let key = '';\r\n for (let i = 0; i < arr.length; i++) {\r\n key = i === 0 ? arr[0] : (key + '.' + arr[i]);\r\n //if (v.hasOwnProperty(key)) {\r\n if (key in v) {\r\n path = path.substring(path.indexOf('.') + 1);\r\n return getPathValue(v[key], path);\r\n }\r\n }\r\n return undefined;\r\n}\r\nexport function setPathValue(v: object, path: string, value: any): void {\r\n if (isNotEmpty(v) && path && typeof v === 'object') {\r\n if (!path.includes('.')) {\r\n v[path] = value;\r\n } else {\r\n const arr = path.split('.');\r\n let key = '';\r\n for (let i = 0; i < arr.length; i++) {\r\n key = i === 0 ? arr[0] : (key + '.' + arr[i]);\r\n path = path.substring(path.indexOf('.') + 1);\r\n if (!(key.includes('.') || key in v)) {\r\n v[key] = {};\r\n }\r\n setPathValue(v[key], path, value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function humanFileSize(bytes: number, si: number = 1024): string {\r\n const thresh = si ? 1000 : 1024;\r\n const units = ['Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb'];\r\n let u = -1;\r\n do {\r\n bytes /= thresh;\r\n ++u;\r\n } while (Math.abs(bytes) >= thresh && u < units.length - 1);\r\n return bytes.toFixed(1) + ' ' + units[u];\r\n}\r\n\r\nexport function toLowerCamelCase(s: string): string {\r\n let res = s || '';\r\n if (res !== '') {\r\n res = res[0].toLowerCase() + res.substring(1);\r\n }\r\n return res;\r\n}\r\n\r\nexport function toUpperCamelCase(s: string): string {\r\n let res = s || '';\r\n if (res !== '') {\r\n res = res[0].toUpperCase() + res.substring(1);\r\n }\r\n return res;\r\n}\r\n\r\nexport function toUpperUnderscoreCase(s: string): string {\r\n return (s || '').split(/(?=[A-Z])/).join('_').toUpperCase();\r\n}\r\n\r\nexport function toLowerUnderscoreCase(s: string): string {\r\n return (s || '').split(/(?=[A-Z])/).join('_').toLowerCase();\r\n}\r\n\r\nexport function toUpperSnakeCase(s: string): string {\r\n return (s || '').split(/(?=[A-Z])/).join('_').toUpperCase();\r\n}\r\n\r\nexport function toLowerSnakeCase(s: string): string {\r\n return (s || '').split(/(?=[A-Z])/).join('_').toLowerCase();\r\n}\r\n\r\nlet permission: NotificationPermission;\r\n\r\nexport interface NotificationOptionsEx extends NotificationOptions {\r\n closeAfter?: number;\r\n closeOnClick?: boolean;\r\n onclick?: (notification: Notification, ev: Event) => any;\r\n onerror?: (notification: Notification, ev: Event) => any;\r\n}\r\n\r\nexport async function requestNotificationPermission(): Promise {\r\n permission = window['Notification'] ? await Notification.requestPermission() : 'denied';\r\n return permission;\r\n}\r\n\r\nexport async function showNotification(title: string, options?: NotificationOptionsEx, closeAfter?: number, rejectWhenRejected: boolean = false): Promise {\r\n if (isEmpty(permission)) {\r\n permission = await requestNotificationPermission();\r\n }\r\n var res;\r\n if (permission !== 'denied') {\r\n res = new Notification(title, options);\r\n options = options || {};\r\n closeAfter = closeAfter || options.closeAfter;\r\n res.onclick = ev => {\r\n if (typeof options.onclick === 'function') options.onclick(res, ev);\r\n if (options.closeOnClick) {\r\n clearDebounce(`@@showNotification_${options.tag}`);\r\n res.close();\r\n }\r\n };\r\n if (typeof options.onerror === 'function') res.onerror = ev => options.onerror(res, ev);\r\n if (closeAfter) {\r\n debounce(() => res.close(), closeAfter, `@@showNotification_${options.tag}`);\r\n }\r\n } else {\r\n if (rejectWhenRejected)\r\n res = Promise.reject(permission);\r\n else\r\n res = Promise.resolve(null);\r\n }\r\n return res;\r\n}\r\n\r\nexport function bool(value: string | boolean, defValue: boolean = false): boolean {\r\n if (typeof value === 'string')\r\n value = value.toLowerCase() !== 'false' && value.toLowerCase() !== 'False' && value !== '0';\r\n else\r\n value = !!ifEmpty(value, defValue);\r\n return value;\r\n}\r\n\r\nexport function createStyle(text: string): HTMLStyleElement {\r\n const hash = `hash-${md5(text)}`;\r\n let s = document.getElementById(hash);\r\n if (!s) {\r\n s = document.createElement('style');\r\n s.setAttribute('id', hash);\r\n s.appendChild(document.createTextNode(text));\r\n const h = document.getElementsByTagName('head')[0];\r\n if (h) {\r\n h.appendChild(s);\r\n };\r\n }\r\n return s;\r\n};\r\n\r\nexport function toCssSize(value: string|number): string {\r\n return value ? typeof value === 'string' && !DIGITS.contains(value[value.length - 1]) ? value : `${value}px` : undefined;\r\n}\r\n\r\nexport function loadStyle(url: string): HTMLLinkElement {\r\n const hash = `hash-@${md5(url)}`;\r\n let s = document.getElementById(hash);\r\n if (!s) {\r\n s = document.createElement('link');\r\n s.setAttribute('id', hash);\r\n s.rel = 'stylesheet';\r\n s.href = url;\r\n const h = document.getElementsByTagName('head')[0];\r\n if (h) {\r\n h.appendChild(s);\r\n };\r\n }\r\n return s;\r\n}\r\n/*\r\nexport function loadStyle(url: string): Promise {\r\n const http = Reflection.get(HttpClient);\r\n return http.get(url, { responseType: 'text' }).toPromise().then(css => createStyle(css));\r\n}\r\n*/\r\n\r\n\r\nexport function isScrolledIntoView(el: HTMLElement, checkIfPartiallyVisible?: boolean, scrollContainer?: HTMLElement | Window): boolean {\r\n if (!scrollContainer) {\r\n scrollContainer = el.parentElement || window;\r\n // по идее нужно выбрать первый элемент с установленным стилем overflow: auto|scroll или overflow-y: auto|scroll\r\n /*\r\n while (!!(scrollContainer = el.parentElement)) {\r\n if ($(scrollContainer).css('overflow-y'))\r\n }\r\n */\r\n }\r\n const rect = el.getBoundingClientRect();\r\n const elemTop = rect.top;\r\n const elemBottom = rect.bottom;\r\n\r\n let parentTop;\r\n let parentBottom;\r\n\r\n if (scrollContainer === window) {\r\n parentTop = 0;\r\n parentBottom = window.innerHeight;\r\n } else {\r\n const r = (scrollContainer).getBoundingClientRect();\r\n parentTop = r.top;\r\n parentBottom = r.bottom;\r\n }\r\n\r\n return checkIfPartiallyVisible\r\n ? elemTop < parentBottom && elemBottom >= parentTop\r\n : elemTop >= parentTop && elemBottom <= parentBottom;\r\n}\r\n\r\n/**\r\n * Подписывается на событие DOM-элемента.\r\n * Событие может вызываться с поглощающей задержкой (debounce) или без неё.\r\n * @param target источник события, если не указан - используется `document`.\r\n * @param eventName название события\r\n * @param fn обработчик события\r\n * @param debounceTime время задержки. если рaвно true - ипользуется значение по умоланию 50. Если равно false - не используется.\r\n */\r\nexport function observeEvent(target: EventTargetLike, eventName: string, fn: (e: Event) => void, debouncetime?: number | boolean) : Subscription {\r\n let obs = fromEvent(target || document, eventName);\r\n if (isNotEmpty(debouncetime) && debouncetime !== false) {\r\n if (debouncetime === true) {\r\n debouncetime = 50;\r\n }\r\n obs = obs.pipe(debounceTime(debouncetime));\r\n }\r\n return obs.subscribe((x: Event) => fn(x));\r\n}\r\n\r\n/**\r\n * Подписывается на событие документа.\r\n * Событие может вызываться с поглощающей задержкой (debounce) или без неё.\r\n * @param eventName название события\r\n * @param fn обработчик события\r\n * @param debounceTime время задержки. если рaвно true - ипользуется значение по умоланию 50. Если равно false - не используется.\r\n */\r\nexport function observeDocumentEvent(eventName: string, fn: (e: Event) => void, debounceTime?: number | boolean): Subscription {\r\n return observeEvent(document, eventName, fn, debounceTime);\r\n}\r\n\r\n/** Create a promise that rejects in milliseconds */\r\nexport function promiseTimeout(ms: number, promise: Promise): Promise {\r\n const timeout = new Promise((resolve, reject) => {\r\n const id = setTimeout(() => {\r\n clearTimeout(id);\r\n reject('Timed out in ' + ms + 'ms.');\r\n },\r\n ms);\r\n });\r\n\r\n // Returns a race between our timeout and the passed in promise\r\n return Promise.race([\r\n promise,\r\n timeout\r\n ]).then(r => r[0]);\r\n}\r\n\r\n// This will parse a delimited string into an array of\r\n// arrays. The default delimiter is the comma, but this\r\n// can be overriden in the second argument.\r\nexport function CSVToArray(strData: string, strDelimiter: string = ','): string[][] {\r\n // Check to see if the delimiter is defined. If not,\r\n // then default to comma.\r\n strDelimiter = (strDelimiter || ',');\r\n // Create a regular expression to parse the CSV values.\r\n const objPattern = new RegExp(\r\n (\r\n // Delimiters.\r\n '(\\\\' + strDelimiter + '|\\\\r?\\\\n|\\\\r|^)' +\r\n // Quoted fields.\r\n '(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|' +\r\n // Standard fields.\r\n '([^\"\\\\' + strDelimiter + '\\\\r\\\\n]*))'\r\n ),\r\n 'gi'\r\n );\r\n // Create an array to hold our data. Give the array\r\n // a default empty first row.\r\n const arrData = [[]];\r\n // Create an array to hold our individual pattern\r\n // matching groups.\r\n let arrMatches;\r\n // Keep looping over the regular expression matches\r\n // until we can no longer find a match.\r\n while ((arrMatches = objPattern.exec( strData ))){\r\n // Get the delimiter that was found.\r\n const strMatchedDelimiter = arrMatches[ 1 ];\r\n // Check to see if the given delimiter has a length\r\n // (is not the start of string) and if it matches\r\n // field delimiter. If id does not, then we know\r\n // that this delimiter is a row delimiter.\r\n if ( strMatchedDelimiter.length && (strMatchedDelimiter !== strDelimiter)) {\r\n // Since we have reached a new row of data,\r\n // add an empty row to our data array.\r\n arrData.push( [] );\r\n }\r\n // Now that we have our delimiter out of the way,\r\n // let's check to see which kind of value we\r\n // captured (quoted or unquoted).\r\n let strMatchedValue;\r\n if (arrMatches[ 2 ]){\r\n // We found a quoted value. When we capture\r\n // this value, unescape any double quotes.\r\n strMatchedValue = arrMatches[ 2 ].replace(\r\n new RegExp( '\"\"', 'g' ),\r\n '\"'\r\n );\r\n } else {\r\n // We found a non-quoted value.\r\n strMatchedValue = arrMatches[ 3 ];\r\n }\r\n // Now that we have our value string, let's add\r\n // it to the data array.\r\n arrData[ arrData.length - 1 ].push( strMatchedValue );\r\n }\r\n // Return the parsed data.\r\n return arrData;\r\n}\r\n\r\n/** Признак режима отладки */\r\nexport function isDebug(): boolean {\r\n return ifEmpty($appSettings?.isDebug, $appSettings?.releaseInfo?.isDebug !== false);\r\n}\r\n\r\n/** Расширенный признак режима разработки */\r\nexport function isDevMode(): boolean {\r\n const res = !!(ng.isDevMode() && isDebug());\r\n return res;\r\n}\r\n\r\n/** Возвращает пару (число, строка) из строки вида \"{число}{строка}\" */\r\nexport function sortStringDigits(s: string): [number, string] {\r\n let intVal = 0;\r\n let strVal = \"\";\r\n s = s?.trim();\r\n if (s)\r\n {\r\n var i = 0;\r\n while (i < s.length)\r\n {\r\n if (!DIGITS.contains(s[i])) break;\r\n i++;\r\n }\r\n intVal = +s.substring(0, i);\r\n strVal = s.substring(i);\r\n }\r\n return [intVal, strVal];\r\n}\r\n\r\ntype TRunIntervalActionResult = number | void | boolean;\r\ntype TRunIntervalAction = (firstStart: boolean) => TRunIntervalActionResult | Promise | Observable;\r\ntype TRunIntervalResult = { id: number, $unsubscribe: () => void };\r\n/**\r\n * Периодически вызывает указанный метод через указанный промежуток после окончания выполнения операции.\r\n * Если метод возвращает промис или обозреватель - следующий запуск будет запланирован после окончания выполнения промиса или обозревателя.\r\n * Если результатом метода является число - это значение будет использовано в качестве промежутка при следующих вызовах.\r\n * Если значение меньше или равно нулю - операция повтора отменяется.\r\n * Возвращает объект в котором содержится хандлер для ручной отмены операции.\r\n * @param action выполняемое действие\r\n * @param periodMs период выполнения\r\n * @param firstStartImmediately следует ли выполнить операцию первый раз сразу (или через указанное время) после вызова\r\n * @param stopWhenException остановить вызовы если произошла ошибка\r\n */\r\nexport function runInterval(action: TRunIntervalAction, periodMs: number, firstStartImmediately?: boolean | number, stopWhenException?: boolean, client?: IDestroyable): TRunIntervalResult {\r\n const res = { id: null, $unsubscribe: <() => void>null, _subscription: null };\r\n\r\n const timeoutAction = (fStartImmediately: boolean) => {\r\n let r = null;\r\n try {\r\n r = action(fStartImmediately);\r\n }\r\n catch (e) {\r\n if (stopWhenException) {\r\n throw e;\r\n } else {\r\n console.error(e);\r\n }\r\n }\r\n if (r instanceof Observable) {\r\n r = r.toPromise();\r\n }\r\n else if (!(r instanceof Promise)) {\r\n r = Promise.resolve(r);\r\n }\r\n (>r).then(actionResult => {\r\n if ((!client || !client.isDestroyed) && (isEmpty(actionResult) || actionResult))\r\n {\r\n if (typeof actionResult === 'number') {\r\n periodMs = actionResult;\r\n }\r\n if (periodMs > 0 && res.id) {\r\n res.id = setTimeout(() => timeoutAction(false), periodMs);\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n if (!stopWhenException) {\r\n console.error(err);\r\n if (periodMs > 0 && res.id) {\r\n res.id = setTimeout(() => timeoutAction(false), periodMs);\r\n }\r\n }\r\n });\r\n };\r\n if (firstStartImmediately) {\r\n if (typeof firstStartImmediately === 'boolean') {\r\n firstStartImmediately = 0;\r\n }\r\n res.id = setTimeout(() => timeoutAction(true), firstStartImmediately);\r\n } else {\r\n res.id = setTimeout(() => timeoutAction(false), periodMs);\r\n }\r\n res._subscription = client && client.destroyed$ && client.destroyed$.subscribe(() => { res.id && clearTimeout(res.id); res.id = null; });\r\n res.$unsubscribe = () => {\r\n res.id && clearTimeout(res.id);\r\n res.id = null; // признак того, что подписка была отменена\r\n res._subscription && res._subscription.unsubscribe();\r\n };\r\n return res;\r\n}\r\n\r\n/**\r\n * Оборачивает вызов метода, возвращающего промис, таким образом, чтобы повторный вызов обёртки метода не приводил к повторному вызову метода,\r\n * если только не указан параметр принудительной перезагрузки.\r\n */\r\nexport function loadOnce(fn: () => Promise): ((reload?: boolean) => Promise) {\r\n return (reload?: boolean) => {\r\n if (reload || !fn['_loadPromise']) {\r\n fn['_loadPromise'] = new Promise((resolve, reject) => {\r\n fn()\r\n .then(x => {\r\n resolve(x);\r\n })\r\n .catch(x => {\r\n reject(x);\r\n fn['_loadPromise'] = null;\r\n });\r\n });\r\n }\r\n return fn['_loadPromise'];\r\n }\r\n}\r\n\r\nexport function isGuid(s: string) {\r\n return typeof s === 'string' && s.length === 36 && /^[0-9A-Fa-f\\-]{36}$/i.test(s);\r\n}\r\n\r\n/**\r\n * Удаляет свойства объекта у которых значение равно `null` или `unassigned`.\r\n */\r\nexport function removeEmptyProperties(obj: T, recursive: boolean = true): T {\r\n if (obj && typeof obj === 'object') {\r\n for (let prop in obj) {\r\n if (isEmpty(obj[prop])) {\r\n delete obj[prop];\r\n }\r\n else if (recursive) {\r\n removeEmptyProperties(obj[prop], true);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Сканирует строку с указанного индекса до появления одного из указанных разделителей (или до конца, если разделитель не найден).\r\n * Возращает подстроку от индекса начала сканирования и до указанного сепаратора.\r\n */\r\nexport function strScan(s: string, index: number, separators: string|string[]): { res: string; separator: string; index: number }\r\n{\r\n let separator: string = null;\r\n const startIndex = index;\r\n while (index < s.length) {\r\n const sep = s[index++];\r\n if (separators.Contains(sep))\r\n {\r\n separator = sep;\r\n break;\r\n }\r\n }\r\n const res = index > s.length ? null : s.substring(startIndex, index - (separator ? 1 : 0));\r\n return { res, separator, index };\r\n}\r\n\r\nexport function markdownToHtml(markdown?: string): string {\r\n markdown = markdown?.trim() ?? '';\r\n // --- and more\r\n markdown = markdown.replace(/-{3,}\\r\\n/gim, '
').replace(/-{3,}\\n/gim, '
');\r\n markdown = markdown.replace(/-{3,}$/gim, '
').replace(/-{3,}\\n/gim, '
');\r\n markdown = markdown.replace(/\\r\\n/g, '
').replace(/\\n/g, '
');\r\n\r\n // Headers\r\n markdown = markdown.replace(/^### (.*$)/gim, '

$1

');\r\n markdown = markdown.replace(/^## (.*$)/gim, '

$1

');\r\n markdown = markdown.replace(/^# (.*$)/gim, '

$1

');\r\n\r\n // Bold\r\n markdown = markdown.replace(/\\*\\*([^\\*]*)\\*\\*/gim, '$1');\r\n\r\n // Italic\r\n markdown = markdown.replace(/\\*([^\\*]*)\\*/gim, '$1');\r\n\r\n // Strikethrough\r\n markdown = markdown.replace(/\\~\\~([^\\~]*)\\~\\~/gim, '$1');\r\n\r\n // Blockquote\r\n markdown = markdown.replace(/^\\> (.*$)/gim, '
$1
');\r\n\r\n // Ordered List\r\n markdown = markdown.replace(/^\\d+\\.\\s+(.*$)/gim, '
  1. $1
');\r\n\r\n // Unordered List\r\n markdown = markdown.replace(/^\\-\\s+(.*$)/gim, '
  • $1
');\r\n\r\n // Code Block\r\n markdown = markdown.replace(/```([^`]*)```/gim, '
$1
');\r\n\r\n // Inline Code\r\n markdown = markdown.replace(/`([^`]*)`/gim, '$1');\r\n\r\n // Links\r\n markdown = markdown.replace(/\\[(.*?)\\]\\((.*?)\\)/gim, '$1');\r\n\r\n // Images\r\n markdown = markdown.replace(/\\!\\[(.*?)\\]\\((.*?)\\)/gim, '\"$1\"');\r\n\r\n // Newlines to
\r\n markdown = markdown.replace(/\\r\\n/gim, '
').replace(/\\n/gim, '
');\r\n\r\n return markdown.trim(); // Remove leading/trailing whitespace\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/utils.ts","//export * from './linq.array';\r\nexport * from './auth.module';\r\nexport * from './cache.module';\r\nexport * from './components.module';\r\nexport * from './core.module';\r\nexport * from './dialogs.module';\r\nexport * from './messages.module';\r\nexport * from './metadata.module';\r\n//export * from './signal-r.module';\r\nexport * from './telematics.module';\r\nexport * from './translate.module';\r\nexport * from './web-worker.module';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/index.ts","import { Type } from '@angular/core';\r\nimport { appServices } from './decorators/app-service.decorator';\r\nimport { appComponents, appEntryComponents } from './decorators/app-component.decorator';\r\n\r\nexport function CoreService() {\r\n return target => {\r\n if (!coreServices.includes(target) && !appServices.includes(target))\r\n coreServices.push(target);\r\n }\r\n}\r\n\r\nexport function CoreComponent(entryComponent?: boolean) {\r\n return target => {\r\n if (!coreComponents.includes(target) && !appComponents.includes(target)) {\r\n coreComponents.push(target);\r\n }\r\n if (entryComponent && !coreEntryComponents.includes(target) && !appEntryComponents.includes(target)) {\r\n coreEntryComponents.push(target);\r\n }\r\n }\r\n}\r\n\r\nexport const coreServices: Type[] = [];\r\nexport const coreComponents: Type[] = [];\r\nexport const coreEntryComponents: Type[] = [];\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/internals.ts","import * as ng from '@angular/core';\r\nimport * as rx from 'rxjs';\r\nimport * as core from '@core.module';\r\nimport isEmpty = core.isEmpty;\r\nimport isArray = core.isArray;\r\nimport appEvents = core.appEvents;\r\nimport { EVENTS_SERVICE_TOKEN, Inject, TUssEventUnsubscriber } from '@core.module';\r\nimport { UssSignalRService } from '@signalr.module';\r\n\r\nexport interface IUssComponent {\r\n// onSignalRConnected?: (hubInfo: signalR.THubInfo) => any;\r\n}\r\n\r\nexport class AppSignalRClient extends core.AppBase implements IUssComponent, ng.OnInit, ng.OnDestroy {\r\n\r\n @Inject(EVENTS_SERVICE_TOKEN) public signalr: UssSignalRService;\r\n\r\n// onSignalRConnected;\r\n static SubscribedMethods: { [target: string]: { eventName: string; fn: (e: any) => void }[] } = {};\r\n\r\n ngOnInit(): void {\r\n \r\n /*\r\n if (typeof (this as IUssComponent).onSignalRConnected === 'function') {\r\n this.subscribe(this.signalr.onConnected(hubInfo => (this as IUssComponent).onSignalRConnected(hubInfo)));\r\n }\r\n */\r\n \r\n super.ngOnInit();\r\n Enumerable\r\n .from(UssComponent.SubscribedMethods)\r\n .where(kv => kv.key === this.constructor.name)\r\n .selectMany(kv => kv.value)\r\n .forEach((x: any) => {\r\n this.subscribe(x.eventName, e => x.fn.bind(this)(e));\r\n });\r\n }\r\n\r\n public subscribe(eventName: string, handler: core.TUssEventHandler): void;\r\n public subscribe(subscription: rx.Subscription | (() => rx.Subscription)): void;\r\n public subscribe(subject: rx.Observable, handler: core.TUssEventHandler): void;\r\n subscribe(p1, p2?) {\r\n if (typeof p1 === 'string') {\r\n const eventName = p1;\r\n const handler = p2;\r\n if (!this._subscriptions.any((s: core.TUssEventUnsubscriber) => s?.eventName?.toLowerCase() === eventName?.toLowerCase() && s?.handler?.toString() === handler?.toString())) {\r\n this._subscriptions.push(appEvents.subscribe(eventName, handler));\r\n }\r\n } else {\r\n super.subscribe(p1, p2);\r\n }\r\n }\r\n\r\n unsubscribe(eventName: string, handler?: core.TUssEventHandler): void {\r\n if (isArray(this._subscriptions)) {\r\n this._subscriptions.where((s: core.TUssEventUnsubscriber) => s?.eventName?.toLowerCase() === eventName?.toLowerCase() && (isEmpty(handler) || s?.handler === handler)).toArray().forEach(s1 => {\r\n this._subscriptions.Remove(s1);\r\n if (s1 && typeof s1.unsubscribe === 'function') {\r\n s1.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n emitEvent(eventName: string, ...args: any[]) {\r\n if (isArray(this._subscriptions)) {\r\n this._subscriptions.where((s: TUssEventUnsubscriber) => typeof s?.handler === 'function' && s?.eventName?.toLowerCase() === eventName?.toLowerCase()).forEach((s: TUssEventUnsubscriber) => {\r\n try {\r\n s.handler(...args);\r\n } catch (e) {\r\n\r\n } \r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class UssComponent extends AppSignalRClient implements ng.OnDestroy, ng.OnInit, ng.AfterViewInit, ng.AfterViewChecked {\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию.\r\n * Устанавливается в событии ngAfterViewInit.\r\n */\r\n public wasInit: boolean;\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию и стал видимым.\r\n * Устанавливается в событии onVisibilityInit.\r\n */\r\n public wasInitVisible: boolean;\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию.\r\n * Устанавливается в событии ngAfterViewInit в таймауте, т.е. фактически ПОСЛЕ инициализации.\r\n */\r\n public afterInit: boolean;\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию и стал видимым на странице.\r\n * Устанавливается в событии ngAfterViewChecked в таймауте, т.е. фактически ПОСЛЕ инициализации.\r\n */\r\n public afterInitVisible: boolean;\r\n\r\n /**\r\n * Если равно true, то в случае, если на момент выполнения ngAfterViewInit компонент невидим\r\n * будет запущен цикл в ngAfterViewChecked который будет ожидать момента, когда компонент станет видимым.\r\n */\r\n public checkIfVisibility = false;\r\n\r\n /**\r\n * Событие вызывается, когда компонент становится видимым.\r\n */\r\n public onVisibilityInitialized = new ng.EventEmitter ();\r\n\r\n ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n if (!this.wasInit) {\r\n this.wasInit = true;\r\n setTimeout(() => {\r\n this.afterInit = true;\r\n if (!this.checkIfVisibility && !this.wasInitVisible && this.isElementVisible) {\r\n this.onVisibilityInit();\r\n }\r\n });\r\n }\r\n this.notifyChildComponents(\"ngAfterViewInit\");\r\n }\r\n\r\n ngAfterContentChecked() {\r\n super.ngAfterContentChecked();\r\n if (this.checkIfVisibility && this.ngAfterViewInitCalled) {\r\n if (this.isElementVisible) {\r\n this.checkIfVisibility = false;\r\n this.onVisibilityInit();\r\n }\r\n }\r\n }\r\n\r\n protected afterVisibilityInit() {\r\n this.notifyChildComponents('afterVisibilityInit');\r\n }\r\n\r\n protected onVisibilityInit() {\r\n this.wasInitVisible = true;\r\n this.onVisibilityInitialized.emit(this);\r\n setTimeout(() => {\r\n this.afterInit = true;\r\n this.afterInitVisible = true;\r\n this.afterVisibilityInit();\r\n });\r\n this.notifyChildComponents('onVisibilityInit');\r\n }\r\n\r\n\r\n\r\n /**\r\n * Внутри метода action можно безопасно устанавливать значения забинженных свойств.\r\n */\r\n safeSet(action: () => void) {\r\n if (this.wasInit && !this.afterInit) {\r\n setTimeout(() => this.safeSet(action));\r\n } else {\r\n action();\r\n }\r\n }\r\n}\r\n\r\n\r\nexport class UssComponent2 extends AppSignalRClient implements ng.OnDestroy, ng.OnInit, ng.AfterContentChecked, ng.AfterViewInit, ng.AfterViewChecked {\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию.\r\n * Устанавливается в событии ngAfterViewInit в таймауте, т.е. фактически ПОСЛЕ инициализации.\r\n */\r\n public afterInit: boolean;\r\n\r\n /**\r\n * Если равно true, то в случае, если на момент выполнения ngAfterViewInit компонент невидим\r\n * будет запущен цикл в ngAfterViewChecked который будет ожидать момента, когда компонент станет видимым.\r\n */\r\n public checkIfVisibility = false;\r\n\r\n /**\r\n * Событие вызывается, когда компонент становится видимым.\r\n */\r\n public onVisibilityInitialized = new ng.EventEmitter();\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию.\r\n * Устанавливается в событии ngAfterViewInit.\r\n */\r\n public wasInit: boolean;\r\n\r\n /**\r\n * Признак того, что компонент прошёл инициализацию и стал видимым.\r\n * Устанавливается в событии onVisibilityInit.\r\n */\r\n public wasInitVisible: boolean;\r\n\r\n ngOnInit(): void {\r\n if (this.nativeElement) {\r\n this.nativeElement['__ussComponent'] = this;\r\n }\r\n super.ngOnInit();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n super.ngAfterContentChecked();\r\n if (this.checkIfVisibility) {\r\n if (this.isElementVisible) {\r\n this.checkIfVisibility = false;\r\n this.onVisibilityInit();\r\n }\r\n }\r\n }\r\n\r\n /*\r\n setVisibilityInit() {\r\n setTimeout(() => {\r\n if (this.isElementVisible) {\r\n this.onVisibilityInit();\r\n this.onVisibilityInitialized.emit(this);\r\n } else {\r\n this.setVisibilityInit();\r\n }\r\n });\r\n }\r\n */\r\n\r\n ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n this.wasInit = true;\r\n setTimeout(() => {\r\n this.afterInit = true;\r\n /*\r\n if (!this.checkIfVisibility && !this.wasInitVisible) {\r\n this.setVisibilityInit();\r\n }\r\n */\r\n if (!this.checkIfVisibility && !this.wasInitVisible && this.isElementVisible) {\r\n this.onVisibilityInit();\r\n this.onVisibilityInitialized.emit(this);\r\n }\r\n });\r\n this.notifyChildComponents('ngAfterViewInit');\r\n }\r\n\r\n protected onVisibilityInit() {\r\n this.wasInitVisible = true;\r\n this.notifyChildComponents('onVisibilityInit');\r\n }\r\n\r\n /**\r\n * Внутри метода action можно безопасно устанавливать значения забинженных свойств.\r\n */\r\n safeSet(action: () => void) {\r\n action();\r\n this.detectChanges();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/base.component.ts","import { LeafletDirective } from '@asymmetrik/ngx-leaflet';\r\nimport { GeoJSON, Polygon, TileLayerOptions, tileLayer, latLng, MapOptions, LatLng, marker, LatLngExpression, Marker, Point as LPoint, PointExpression, Layer, FeatureGroup, LatLngBounds, featureGroup, canvas, PointTuple, point, polygon, geoJSON, LatLngBoundsExpression } from 'leaflet';\r\nimport * as L from 'leaflet';\r\nimport * as wkt from 'wellknown';\r\nimport * as geojson from 'geojson';\r\nimport { UssMapIcon, toPoint } from '../map-icons/map-icon';\r\nimport { RotateMarkerOptions } from '../markers/RotateMarker';\r\nimport { CanvasMarker, CanvasMarkerOptions, canvasMarker } from '../markers/CanvasMarker';\r\nimport { IAppMapSettings } from '../interfaces/IAppMapSettings';\r\n\r\nimport { clone, isArray, isEmpty, isNotEmpty, TO_DEGREES, TO_RADIANS, translate, bool } from '@core.module';\r\nimport { MarkerFactory } from '../markers/MarkerFactory';\r\n\r\nconst ATTRIBUTION = 'USS';\r\nexport const LEAFLET_ASSETS = '/assets/map';\r\n\r\nexport interface MapDefaults {\r\n forcedUpdatePeriodSec?: number;\r\n center?: LatLngExpression | {\r\n /** Страна в которой будут искаться адреса (ua/ru/en) */\r\n $country?: string;\r\n /** прямоугольна область, внутри которой будут искаться адреса (LngTopLeft,LatTopLeft,LngBottomRight,LatBottomRight) */\r\n $viewBox?: string;\r\n /** WKT-геометрия области, внутри которой будут искаться адреса */\r\n $searchGeometry?: string;\r\n\r\n /** Название и/или идентификатор населённого пункта, в котором производится поиск адреса (если провайдер адресов это позволяет)\r\n * если указано - при поиске будут отображаться только адреса в этом населённом пункте (для ua/ru/en)\r\n * или идентификатор соответствует идентификатору населённого пункта для указанного провайдера (visicom/osm/google)\r\n * \r\n * Пример:\r\n * {\r\n * en: \"Kryvyi Rih\",\r\n * ru: \"Кривой Рог\",\r\n * ua: \"Кривий Ріг\",\r\n * visicom: \"STL1NLX38\"\r\n * }\r\n */\r\n $searchSettlement?: { [key: string]: string };\r\n } | any;\r\n defaultMap?: string;\r\n defaultAddressService?: TAddressServiceName;\r\n tile?: {\r\n disabled?: boolean;\r\n tile: string;\r\n name?: string;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n maxNativeZoom?: number;\r\n minNativeZoom?: number;\r\n subdomains?: string | string[];\r\n errorTileUrl?: string;\r\n zoomOffset?: number;\r\n tms?: boolean;\r\n zoomReverse?: boolean;\r\n detectRetina?: boolean;\r\n crossOrigin?: boolean;\r\n };\r\n apiKey?: {\r\n Osm?: string;\r\n Visicom?: string;\r\n Google?: string;\r\n };\r\n zoom?: {\r\n initial?: number; // Какой мастаб у карты при позиционировании\r\n detailTitle?: number; // При каком масштабе показывать название объекта на карте\r\n detailTrack?: number; // При каком мастабе детализировать трек (стрелки на треке)\r\n detailPoint?: number; // При каком масштабе показывать точки на треке\r\n }\r\n}\r\n\r\nexport declare type TAddressServiceName = 'Nominatim' | 'Visicom';\r\n\r\ninterface TileLayerOptionsEx extends TileLayerOptions {\r\n disabled?: boolean;\r\n $name?: string;\r\n $addressService?: TAddressServiceName;\r\n}\r\n\r\nexport interface AppLayer extends Layer {\r\n /** Идентификатор объекта по которому создан слой. Например зона или объект мониторинга. */\r\n $sourceId?: string;\r\n /** Тип объекта по которому создан слой. Например зона или объект мониторинга. */\r\n $sourceType?: string;\r\n /** Объект по которому создан слой. Например зона или объект мониторинга. */\r\n $source?: any;\r\n}\r\n\r\nexport class LeafletHelper {\r\n\r\n static updateTileUrl(url: string, apiKeyName?: string): string {\r\n const lang = translate.currentLang;\r\n // ReSharper disable once InconsistentNaming\r\n let visicom_lang: string;\r\n switch (lang) {\r\n case 'ru':\r\n case 'en':\r\n visicom_lang = lang;\r\n break;\r\n case 'ua':\r\n visicom_lang = 'uk';\r\n break;\r\n default:\r\n visicom_lang = 'en';\r\n }\r\n apiKeyName = apiKeyName?.toLowerCase();\r\n let apiKey = LeafletHelper.Defaults.apiKey[apiKeyName];\r\n if (isEmpty(apiKey) && apiKeyName) {\r\n apiKey = Enumerable.from(LeafletHelper.Defaults.apiKey).where(x => apiKeyName.Contains(x.key)).select(x => x.value).firstOrDefault();\r\n }\r\n const res = url\r\n .replace('{lang}', lang)\r\n .replace('{visicom_lang}', visicom_lang)\r\n .replace('{key}', apiKey ?? '')\r\n ;\r\n return res;\r\n }\r\n\r\n\r\n public static initUserMapDefaults(): Promise {\r\n this.Defaults.center = this.Defaults['_orig_center'] || this.Defaults.center;\r\n this.Defaults.viewBox = this.Defaults['_orig_viewbox'] || this.Defaults.viewBox;\r\n this.Defaults.searchGeometry = this.Defaults['_orig_searchGeometry'] || this.Defaults.searchGeometry;\r\n this.Defaults.searchSettlement = this.Defaults['_orig_searchSettlement'] || this.Defaults.searchSettlement;\r\n this.defaultOptions.center = this.Defaults.center;\r\n return Promise.resolve();\r\n }\r\n\r\n static setDefaults(defs: MapDefaults) {\r\n if (defs) {\r\n if (defs.center) {\r\n const c = toLatLng(defs.center);\r\n if (c && c.lat && c.lng) {\r\n this.Defaults.center = c;\r\n }\r\n this.Defaults.searchCountry = defs.center.$country;\r\n this.Defaults.viewBox = defs.center.$viewBox;\r\n this.Defaults.searchGeometry = defs.center.$searchGeometry;\r\n this.Defaults.searchSettlement = defs.center.$searchSettlement;\r\n }\r\n this.Defaults.defaultMap = defs.defaultMap || this.Defaults.defaultMap;\r\n\r\n this.Defaults.apiKey = Object.assign(this.Defaults.apiKey, defs.apiKey);\r\n this.Defaults.zoom = Object.assign(this.Defaults.zoom, defs.zoom);\r\n this.Defaults.defaultAddressService = defs.defaultAddressService || this.Defaults.defaultAddressService;\r\n this.Defaults.forcedUpdatePeriodSec = +defs.forcedUpdatePeriodSec || +this.Defaults.forcedUpdatePeriodSec;\r\n if (defs.tile) {\r\n this.Defaults.tile = {};\r\n for (let tileName in defs.tile) {\r\n if (Object.prototype.hasOwnProperty.call(defs.tile, tileName)) {\r\n const t = defs.tile[tileName];\r\n const tileUrl = t.tile;\r\n if (tileUrl && !bool(t.disabled)) {\r\n const options = t;\r\n options.$name = options.$name || tileName;\r\n delete t.tile;\r\n options.attribution = options.attribution || ATTRIBUTION;\r\n this.Defaults.tile[tileName] = () => tileLayer(LeafletHelper.updateTileUrl(tileUrl, tileName), options);\r\n }\r\n }\r\n }\r\n }\r\n this.defaultOptions.center = this.Defaults.center;\r\n this.defaultOptions.zoom = this.Defaults.zoom.initial;\r\n this.Defaults['_orig_center'] = this.Defaults.center;\r\n this.Defaults['_orig_viewbox'] = this.Defaults.viewBox;\r\n this.Defaults['_orig_searchGeometry'] = this.Defaults.searchGeometry;\r\n this.Defaults['_orig_searchSettlement'] = this.Defaults.searchSettlement;\r\n }\r\n }\r\n\r\n static readonly Defaults = {\r\n forcedUpdatePeriodSec: 60,\r\n apiKey: {\r\n osm: '',\r\n visicom: '15203883c7356ba1d5c3f99fa3866d1c', // Реальный ключ Robosoft\r\n google: ''\r\n },\r\n zoom: {\r\n initial: 11, // Какой масштаб у карты при позиционировании\r\n detailTitle: 14, // При каком масштабе показывать название объекта на карте\r\n detailTrack: 18-2, // При каком масштабе детализировать трек (стрелки на треке)\r\n detailPoints: 18-1, // При каком масштабе показывать точки на треке\r\n },\r\n // страна в которой производится поиск (ua/ru/en)\r\n searchCountry: 'ua',\r\n // WKT-геометрия, внутри которой следует производить поиск адресов. Для тех сервисов, которые поддерживают это (например, Visicom).\r\n searchGeometry: '',\r\n /** Название и/или идентификатор населённого пункта, в котором производится поиск адреса (если провайдер адресов это позволяет)\r\n * если указано - при поиске будут отображаться только адреса в этом населённом пункте (для ua/ru/en)\r\n * или идентификатор соответствует идентификатору населённого пункта для указанного провайдера (visicom/osm/google)\r\n */\r\n searchSettlement: {} as { [key: string]: string },\r\n // Preferred area to find search results. viewbox=left,top,right,bottom (для Nominatim, Visicom)\r\n viewBox: '34.7489459,48.5763901,35.2421952,48.3558547',\r\n center: latLng(48.4198963, 35.0348154), // Днепр\r\n //center: latLng(47.8451382, 35.1111057), // Запорожье\r\n\r\n //searchCountry: 'tj',\r\n //center: latLng(38.57296976099407, 68.78170967102052), // Душанбе\r\n defaultAddressService: 'Visicom', // Nominatim, Visicom\r\n defaultMap: 'Visicom',\r\n tile: {\r\n Visicom: () => tileLayer(LeafletHelper.updateTileUrl('//tms{s}.visicom.ua/2.0.0/planet3/base_{visicom_lang}/{z}/{x}/{y}.png?key={key}', 'visicom'),\r\n {\r\n $name: 'Visicom',\r\n $addressService: 'Visicom',\r\n maxZoom: 19,\r\n tms : true,\r\n subdomains: '123',\r\n attribution: ATTRIBUTION\r\n }),\r\n\r\n Osm: () => tileLayer(LeafletHelper.updateTileUrl('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 'osm'),\r\n {\r\n $name: 'Open Street Map',\r\n $addressService: 'Nominatim',\r\n maxZoom: 19,\r\n attribution: ATTRIBUTION\r\n }),\r\n/*\r\n TwoGis: () => tileLayer('//tile{s}.maps.2gis.com/tiles?x={x}&y={y}&z={z}&v=1&ts=online_sd',\r\n {\r\n $name: '2Gis',\r\n subdomains: '0123',\r\n maxZoom: 18,\r\n updateWhenIdle: false,\r\n attribution: ATTRIBUTION\r\n }),\r\n*/\r\n GoogleStreet: () => tileLayer('//{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',\r\n {\r\n $name: 'Google (street)',\r\n maxZoom: 20,\r\n subdomains:['mt0','mt1','mt2','mt3'],\r\n attribution: ATTRIBUTION\r\n }),\r\n\r\n GoogleHybrid: () => tileLayer('//{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}',\r\n {\r\n $name: 'Google (hybrid)',\r\n maxZoom: 20,\r\n subdomains:['mt0','mt1','mt2','mt3'],\r\n attribution: ATTRIBUTION\r\n }),\r\n/*\r\n GoogleSattelite: () => tileLayer('//{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',\r\n {\r\n $name: 'Google (sattelite)',\r\n maxZoom: 20,\r\n subdomains:['mt0','mt1','mt2','mt3'],\r\n attribution: ATTRIBUTION\r\n }),\r\n\r\n GoogleTerrain: () => tileLayer('//{s}.google.com/vt/lyrs=p&x={x}&y={y}&z={z}',\r\n {\r\n $name: 'Google (terrain)',\r\n maxZoom: 20,\r\n subdomains:['mt0','mt1','mt2','mt3'],\r\n attribution: ATTRIBUTION\r\n })\r\n*/\r\n },\r\n }\r\n\r\nstatic readonly Icons: {[name: string]: UssMapIcon} | any = {\r\n Default: UssMapIcon.create({\r\n iconSize: [25, 41],\r\n iconAnchor: [13, 41],\r\n iconUrl: `${LEAFLET_ASSETS}/icons/marker-icon.png`,\r\n shadowUrl: `${LEAFLET_ASSETS}/icons/marker-shadow.png`\r\n }),\r\n\r\n Flag: UssMapIcon.create({\r\n iconSize: [30, 44],\r\n iconAnchor: [1, 44],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/flag.svg`,\r\n shadowSize: [30, 44],\r\n shadowAnchor: [1, 44],\r\n shadowUrl: `${LEAFLET_ASSETS}/svg/flag-shadow.svg`\r\n }),\r\n /*\r\n Car0: UssMapIcon.create({\r\n iconSize: [21/2*2.4, 25/2*2.4],\r\n iconAnchor: [21/2/2*2.4, 25/1.75/2*2.4],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car.svg`,\r\n }),\r\n */\r\n Car: UssMapIcon.create({\r\n iconSize: [21/2*2.4, 25/2*2.4],\r\n iconAnchor: [21/2/2*2.4, 25/1.75/2*2.4],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car.svg`,\r\n // т.к. svg-спрайты в последних версиях Хрома (>= 110) не поддерживают svg-фильтры - нужно использовать для плашек другой SVG\r\n //iconUrlSvgSprite: `${LEAFLET_ASSETS}/svg/car-no-shadow.svg`,\r\n iconUrlSvgSprite: `${LEAFLET_ASSETS}/svg/car-moving.svg`,\r\n }),\r\n CarNotMoved: UssMapIcon.create({\r\n iconSize: [50/2, 50/2],\r\n iconAnchor: [25/2, 25/2],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car-notmoved.svg`,\r\n }),\r\n CarStopped: UssMapIcon.create({\r\n iconSize: [50/2, 50/2],\r\n iconAnchor: [25/2, 25/2],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car-stopped.svg`,\r\n }),\r\n CarStoppedLong: UssMapIcon.create({\r\n iconSize: [50/2, 50/2],\r\n iconAnchor: [25/2, 25/2],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car-stopped-long.svg`,\r\n }),\r\n CarNoCoords: UssMapIcon.create({\r\n iconSize: [50/2, 50/2],\r\n iconAnchor: [25/2, 25/2],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car-nocoords.svg`,\r\n }),\r\n CarNoCoordsLong: UssMapIcon.create({\r\n iconSize: [50/2, 50/2],\r\n iconAnchor: [25/2, 25/2],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/car-nocoords-long.svg`,\r\n }),\r\n AreaPoint: UssMapIcon.create({\r\n iconSize: [20, 20],\r\n iconAnchor: [10, 10],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/areaPoint.svg`,\r\n }),\r\n House: UssMapIcon.create({\r\n iconSize: [122.88/4.9, 106.35/4.9],\r\n iconAnchor: [122.88/4.9/2, 106.35/4.9],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/house.svg`,\r\n }),\r\n GroupHouse: UssMapIcon.create({\r\n iconSize: [122.88/4.9, 106.35/4.9],\r\n iconAnchor: [122.88/4.9/2, 106.35/4.9],\r\n iconUrl: `${LEAFLET_ASSETS}/svg/group-house.svg`,\r\n })\r\n };\r\n\r\n private static readonly defaultOptions: MapOptions = {\r\n zoom: LeafletHelper.Defaults.zoom.initial,\r\n center: LeafletHelper.Defaults.center\r\n }\r\n\r\n static appMapSettings: IAppMapSettings;\r\n\r\n static getOptions(center?: LatLngExpression, defaultLayerName?: string): MapOptions {\r\n const res = clone(this.defaultOptions);\r\n res.zoom = this.appMapSettings?.zoomInitial || res.zoom;\r\n res.center = this.appMapSettings?.mapCenter || res.center;\r\n res.renderer = canvas();\r\n let defaultLayer = null;\r\n res.layers = [];\r\n res['$layers'] = {};\r\n for (let key of Object.getOwnPropertyNames(LeafletHelper.Defaults.tile)) {\r\n const layer = LeafletHelper.Defaults.tile[key]()\r\n .on('tileerror', (x) => {\r\n const z = x.target._map.getZoom();\r\n if (z > 13) {\r\n x.target._map.setZoom(z - 1);\r\n }\r\n });\r\n layer.$id = key;\r\n defaultLayer = key === defaultLayerName ? layer : (defaultLayer || layer);\r\n res['$layers'][layer.options.$name || key] = layer;\r\n if (layer.$id === (defaultLayerName || this.Defaults.defaultMap)) {\r\n res.layers.push(layer);\r\n defaultLayer = layer;\r\n }\r\n }\r\n if (res.layers.length === 0) {\r\n res.layers.push(defaultLayer || LeafletHelper.Defaults.tile.Visicom());\r\n }\r\n res.layers = [defaultLayer];\r\n if (center) {\r\n res.center = center;\r\n }\r\n return res;\r\n }\r\n\r\n static adjustSize(leaflet: LeafletDirective) {\r\n if (leaflet.map) {\r\n leaflet.onResize();\r\n } else {\r\n const sub = leaflet.mapReady.subscribe(() => {\r\n leaflet.onResize();\r\n sub.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n static reverseCoordinates(x: any[]): any[] {\r\n let res = x;\r\n if (isArray(x) && x.length > 0 && isArray(x[0])) {\r\n let r = x.reverse();\r\n if (typeof r.toArray === 'function') {\r\n res = r.toArray();\r\n } else {\r\n res = r;\r\n }\r\n for (let e of Object.getOwnPropertyNames(x)) {\r\n x[e] = this.reverseCoordinates(x[e]);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n static toPoint(point: PointExpression): LPoint;\r\n static toPoint(x: number, y: number, round?: boolean): LPoint;\r\n static toPoint(x, y?, round?) {\r\n return toPoint(x, y, round);\r\n }\r\n\r\n// ReSharper disable InconsistentNaming\r\n /**\r\n * Преобразование геометрии в текстовый формат WKT\r\n * @param source геометрия\r\n * @param reverse Меняет порядок обхода точек геометрии. Visicom возвращает геометрию, обход точек которой по часовой стрелке. Для MSSQL georaphy требуется обход против часовой стрелки. \r\n */\r\n static toWKT(source: geojson.Geometry | LatLngExpression | string | any[] | geojson.Feature, reverse?: boolean): string {\r\n let res;\r\n if (this.isLatLngExpression(source, e => res = `POINT(${e.lng} ${e.lat})`)) { }\r\n else if (source && typeof source === 'object') {\r\n if (isArray(source)) {\r\n if ((source).length > 0 && isArray((source[0]))) {\r\n source = { type: 'MultiPoint', coordinates: source };\r\n //source = { type: 'LineString', coordinates: source };\r\n } else {\r\n source = { type: 'Point', coordinates: source };\r\n }\r\n }\r\n if (reverse) {\r\n source['coordinates'] = this.reverseCoordinates(source['coordinates']);\r\n }\r\n res = wkt.stringify(source);\r\n } else {\r\n res = source;\r\n }\r\n return res;\r\n }\r\n\r\n static fromWKT(source: string): geojson.Geometry {\r\n if (source && typeof source === 'string') {\r\n source = wkt.parse(source);\r\n }\r\n return source;\r\n }\r\n\r\n static createMarker(latlng: LatLngExpression, options?: RotateMarkerOptions): MarkerFactory {\r\n return MarkerFactory.from(marker(latlng, options || { icon: this.Icons['Default'] }));\r\n }\r\n static createCanvasMarker(latlng: LatLngExpression, options?: CanvasMarkerOptions): CanvasMarker {\r\n return canvasMarker(latlng, options || { icon: this.Icons['Default'] });\r\n }\r\n\r\n static setTitle(item: Marker, title: string) {\r\n if (item) {\r\n if (item['_icon']) {\r\n item['_icon'].title = title;\r\n } else {\r\n item.options.title = title;\r\n }\r\n }\r\n }\r\n\r\n static isFeature(v: geojson.Feature | any, action?: (f: geojson.Feature) => void): boolean {\r\n const res = v && v.type === 'Feature';\r\n res && action && action(v);\r\n return res;\r\n }\r\n\r\n static isPoint(v: geojson.Point | any, action?: (p: geojson.Point) => void): boolean {\r\n const res = v && v.type === 'Point' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n static isMultiPoint(v: geojson.MultiPoint | any, action?: (p: geojson.MultiPoint) => void): boolean {\r\n const res = v && v.type === 'MultiPoint' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n\r\n static isPolygon(v: geojson.Polygon | any, action?: (p: geojson.Polygon) => void): boolean {\r\n const res = v && v.type === 'Polygon' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n static drawPolygon(g: geojson.Polygon, weight: number = 1): Polygon {\r\n const latLngs = g.coordinates.selectMany(c => c)\r\n .select((c: number[]) => latLng(c[1], c[0]))\r\n .distinct(ll => ll.lat * 1000 + ll.lng).toArray();\r\n const res = polygon(latLngs, { weight });\r\n return res;\r\n }\r\n\r\n\r\n static isMultiPolygon(v: geojson.MultiPolygon | any, action?: (p: geojson.MultiPolygon) => void): boolean {\r\n const res = v && v.type === 'MultiPolygon' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n static drawMultiPolygon(g: geojson.MultiPolygon, weight: number = 1): FeatureGroup {\r\n const res = featureGroup();\r\n for (let pCoordinates of g.coordinates) {\r\n const latLngs = pCoordinates.selectMany(c => c)\r\n .select((c: number[]) => latLng(c[1], c[0]))\r\n .distinct(ll => ll.lat * 1000 + ll.lng).toArray();\r\n const p = polygon(latLngs, { weight });\r\n p && res.addLayer(p);\r\n }\r\n return res; \r\n }\r\n\r\n\r\n static isLineString(v: geojson.LineString | any, action?: (p: geojson.LineString) => void): boolean {\r\n const res = v && v.type === 'LineString' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n\r\n static isMultiLineString(v: geojson.MultiLineString | any, action?: (p: geojson.MultiLineString) => void): boolean {\r\n const res = v && v.type === 'MultiLineString' && isArray(v.coordinates);\r\n res && action && action(v);\r\n return res;\r\n }\r\n\r\n static isGeometryCollection(v: geojson.GeometryCollection | any, action?: (p: geojson.GeometryCollection) => void): boolean {\r\n const res = v && v.type === 'GeometryCollection' && isArray(v.geometries);\r\n res && action && action(v);\r\n return res;\r\n }\r\n /*\r\n static drawGeometryCollection(g: GeometryCollection, weight: number = 1): FeatureGroup {\r\n const res = featureGroup();\r\n for (let pGeometry of g.geometries) {\r\n const p = LeafletHelper.drawGeometry(pGeometry, weight);\r\n p && res.addLayer(p);\r\n }\r\n return res; \r\n }\r\n */\r\n\r\n static drawGeoJSON(g: geojson.Geometry, weight: number = 1, color?: string, fillColor?: string): GeoJSON {\r\n const res = geoJSON(g);\r\n if (res) {\r\n weight && res.setStyle({ weight });\r\n color && res.setStyle({ color });\r\n fillColor && res.setStyle({ fillColor });\r\n\r\n if (!res['getCenter'] && !res['getLatLng']) {\r\n res['getCenter'] = () => res.getBounds()?.getCenter();\r\n }\r\n\r\n // этот код необходим для того, чтобы у полученного объекта GeoJSON bindPopoup смог получить центр \r\n let layer = null;\r\n if (res instanceof FeatureGroup) {\r\n for (let id in res['_layers']) {\r\n layer = res['_layers'][id];\r\n break;\r\n }\r\n }\r\n if (layer && !layer['getCenter'] && !layer['getLatLng']) {\r\n layer['getCenter'] = () => res.getBounds()?.getCenter();\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /** Отличается от стандартного метода тем, что правильно обрабатывает массив от GeoJson [number, number] */\r\n static latLng(latlng: LatLngExpression): LatLng {\r\n let res = null;\r\n this.isLatLngExpression(latlng, x => res = x);\r\n return res;\r\n }\r\n static isLatLngExpression(v: LatLngExpression | any, action?: (e: LatLng) => void): boolean {\r\n let latlng = null;\r\n let res = v && typeof v === 'object' && (v instanceof LatLng || ('lat' in v && 'lng' in v) || (isArray(v) && (v).length === 2));\r\n if (res) {\r\n let ll;\r\n if (isArray(v) && v.length === 2 && typeof v[0] === 'number' && typeof v[1] === 'number') {\r\n ll = { lat: v[1] || null, lng: v[0] || null };\r\n } else {\r\n ll = { lat: v.lat || null, lng: v.lng || null };\r\n }\r\n latlng = isNotEmpty(ll.lat) && isNotEmpty(ll.lng) ? latLng(ll) : null;\r\n res = !!latlng;\r\n }\r\n if (res && action) {\r\n action(latlng);\r\n }\r\n return res;\r\n }\r\n\r\n\r\n /**\r\n * Позиционирует карту на указанном слое\r\n * @param x слой на который следует спозиционировать карту\r\n * @param map карта\r\n * @param fitZoom параметры зумирования при позиционировании:\r\n * `false`|null|undefined - оставить текущий зум карты,\r\n * `true` - использовать значение zoom.initial из параметров $appSettings\r\n * числовое значение в противном случае\r\n */\r\n static fitTo(x: Layer | Layer[] | FeatureGroup | LatLngBounds | LatLngExpression, map?: L.Map, fitZoom?: number | string | boolean) {\r\n\r\n let bounds: LatLngBoundsExpression = null;\r\n if (!LeafletHelper.isLatLngExpression(x, ll => {\r\n bounds = [[ll.lat, ll.lng], [ll.lat, ll.lng]];\r\n })) {\r\n if (x instanceof LatLngBounds) {\r\n bounds = x;\r\n } else {\r\n let fg: FeatureGroup = null;\r\n try {\r\n if (x instanceof FeatureGroup)\r\n fg = x;\r\n else if (x instanceof Layer)\r\n fg = featureGroup([x]);\r\n else if (Array.isArray(x) && x.length > 0)\r\n fg = featureGroup(x);\r\n if (fg) {\r\n bounds = fg.getBounds();\r\n }\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n }\r\n\r\n\r\n if (bounds) {\r\n\t\t if (typeof bounds['isValid'] !== 'function' || bounds['isValid']()) {\r\n map = map || x['_map'];\r\n if (map) {\r\n let zoom;\r\n if (fitZoom === false || isEmpty(fitZoom) || isNaN(+fitZoom)) {\r\n zoom = map.getZoom();\r\n }\r\n else if (fitZoom === true) {\r\n //zoom = LeafletHelper.Defaults.zoom.initial;\r\n zoom = this.appMapSettings?.zoomInitial || this.defaultOptions.zoom;\r\n } else {\r\n //zoom = +fitZoom || LeafletHelper.Defaults.zoom.initial;\r\n zoom = +fitZoom || this.appMapSettings?.zoomInitial || this.defaultOptions.zoom;\r\n }\r\n map.fitBounds(bounds, { maxZoom: +zoom });\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport function bindMeasureControl(l: TLayer): TLayer {\r\n l['options'] && l.on('polylinemeasure:toggle', e => {\r\n const disableInteractive = e['status'] || e['sttus']; // fix bug\r\n if (disableInteractive) {\r\n l['options']['$interactive'] = l['options'].interactive;\r\n l['options'].interactive = false;\r\n } else {\r\n l['options'].interactive = l['options']['$interactive'];\r\n }\r\n });\r\n return l;\r\n}\r\n\r\nexport function setInteractive(l: TLayer, value: boolean): TLayer {\r\n if (l['options']) {\r\n if (l['_map'] && l['_map']['$disableMapClick']) {\r\n l['options'].$interactive = value;\r\n } else {\r\n l['options'].interactive = value;\r\n }\r\n }\r\n return l;\r\n}\r\n\r\nexport function toPointTuple(p: PointExpression, def?: PointExpression, defAspectX?: number, defAspectY?: number): PointTuple {\r\n let res: PointTuple = null;\r\n if (p) {\r\n if ('x' in p && 'y' in p) {\r\n res = [p['x'], p['y']];\r\n } else if (p['length'] === 2) {\r\n res = p;\r\n }\r\n }\r\n if (!res) {\r\n res = [0, 0];\r\n if (def) {\r\n p = toPointTuple(def);\r\n defAspectX = defAspectX || 2;\r\n defAspectY = defAspectY || 2;\r\n res[0] = p[0] / defAspectX;\r\n res[1] = p[1] / defAspectY;\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function toLatLng(latLng: LatLngExpression): LatLng;\r\nexport function toLatLng(latLng: string);\r\nexport function toLatLng(lat: number, lng: number, alt: number);\r\nexport function toLatLng(a, b?, c?) {\r\n try {\r\n if (typeof a === 'string') {\r\n const arr = a.split(',').select(x => +x).where(x => x > 0).toArray();\r\n if (arr.length >= 2 && arr.length <= 3) {\r\n return latLng(<[number,number,number]>arr);\r\n } else {\r\n return null;\r\n }\r\n }\r\n if (a instanceof LatLng) {\r\n return a;\r\n }\r\n if (isArray(a) && typeof a[0] !== 'object') {\r\n if (a.length === 3) {\r\n return new LatLng(a[0], a[1], a[2]);\r\n }\r\n if (a.length === 2) {\r\n return new LatLng(a[0], a[1]);\r\n }\r\n return null;\r\n }\r\n if (a === undefined || a === null) {\r\n return a;\r\n }\r\n if (a && typeof a === 'object' && 'lat' in a) {\r\n return new LatLng((a).lat, 'lng' in a ? (a).lng : (a).lon, (a).alt);\r\n }\r\n if (b === undefined) {\r\n return null;\r\n }\r\n return new LatLng(a, b, c);\r\n \r\n } catch (e) {\r\n return null;\r\n } \r\n}\r\n\r\nexport function fromRadians(l: LPoint, isDegree?: boolean): LPoint;\r\nexport function fromRadians(l: LatLngExpression, isDegree?: boolean): LatLng;\r\nexport function fromRadians(l: number, isDegree?: boolean): number;\r\nexport function fromRadians(l, isDegree) {\r\n let res = l;\r\n if (typeof l === 'number') {\r\n res = isDegree !== false ? l * TO_DEGREES : l;\r\n } else if (l) {\r\n if (l.x && l.y) {\r\n res = point(l);\r\n if (isDegree !== false) {\r\n res.x = res.y * TO_DEGREES;\r\n res.y = res.y * TO_DEGREES;\r\n }\r\n } else {\r\n res = latLng(l);\r\n if (isDegree !== false) {\r\n res.lat = res.lat * TO_DEGREES;\r\n res.lng = res.lng * TO_DEGREES;\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function toRadians(l: LPoint, isDegree?: boolean): LPoint;\r\nexport function toRadians(l: LatLngExpression, isDegree?: boolean): LatLng;\r\nexport function toRadians(l: number, isDegree?: boolean): number;\r\nexport function toRadians(l, isDegree) {\r\n let res = l;\r\n if (typeof l === 'number') {\r\n res = isDegree !== false ? l * TO_RADIANS : l;\r\n } else if (l) {\r\n if (l.x && l.y) {\r\n res = point(l);\r\n if (isDegree !== false) {\r\n res.x = res.y * TO_RADIANS;\r\n res.y = res.y * TO_RADIANS;\r\n }\r\n } else {\r\n res = latLng(l);\r\n if (isDegree !== false) {\r\n res.lat = res.lat * TO_RADIANS;\r\n res.lng = res.lng * TO_RADIANS;\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\nexport function toDegrees(l: LPoint, isRadians?: boolean): LPoint;\r\nexport function toDegrees(l: LatLngExpression, isRadians?: boolean): LatLng;\r\nexport function toDegrees(l: number, isRadians?: boolean): number;\r\nexport function toDegrees(l, isRadians) {\r\n let res = l;\r\n if (typeof l === 'number') {\r\n res = isRadians !== false ? l * TO_DEGREES : l;\r\n } else if (l) {\r\n if (l.x && l.y) {\r\n res = point(l);\r\n if (isRadians !== false) {\r\n res.x = res.y * TO_DEGREES;\r\n res.y = res.y * TO_DEGREES;\r\n }\r\n } else {\r\n res = latLng(l);\r\n if (isRadians !== false) {\r\n res.lat = res.lat * TO_DEGREES;\r\n res.lng = res.lng * TO_DEGREES;\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function fromDegrees(l: LPoint, isRadians?: boolean): LPoint;\r\nexport function fromDegrees(l: LatLngExpression, isRadians?: boolean): LatLng;\r\nexport function fromDegrees(l: number, isRadians?: boolean): number;\r\nexport function fromDegrees(l, isRadians) {\r\n let res = l;\r\n if (typeof l === 'number') {\r\n res = isRadians !== false ? l * TO_RADIANS : l;\r\n } else if (l) {\r\n if (l.x && l.y) {\r\n res = point(l);\r\n if (isRadians !== false) {\r\n res.x = res.y * TO_RADIANS;\r\n res.y = res.y * TO_RADIANS;\r\n }\r\n } else {\r\n res = latLng(l);\r\n if (isRadians !== false) {\r\n res.lat = res.lat * TO_RADIANS;\r\n res.lng = res.lng * TO_RADIANS;\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\n// Create additional Control placeholders\r\nexport function addControlPlaceholders(map) {\r\n const corners = map._controlCorners;\r\n const l = 'leaflet-';\r\n const container = map._controlContainer;\r\n\r\n function createCorner(vSide, hSide) {\r\n var className = l + vSide + ' ' + l + hSide;\r\n\r\n corners[vSide + hSide] = L.DomUtil.create('div', className, container);\r\n }\r\n createCorner('center', 'left');\r\n createCorner('center', 'right');\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/utils/LeafletHelper.ts","import * as ng from '@angular/core';\r\nimport * as ngForms from '@angular/forms';\r\nimport * as rx from 'rxjs';\r\nimport { focusNextElement, debounce, getPathValue, setPathValue, isJsObject, isEmpty, ifEmpty, debug, translate, AppBase, bool, assign } from '@core.module';\r\nimport { IEntityMetadata, UssMetadataService } from '@metadata.module';\r\nimport { UssDialog } from '../dialogs/common/UssDialog';\r\n\r\nimport { CustomValidators } from './CustomValidators';\r\nimport { UssFormGroup } from './UssFormGroup';\r\nimport { UssComponent, UssComponent2 } from './base.component';\r\nimport { ObserverPlatform } from './ObserverPlatform';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\n\r\nconst Enumerable: linqjs.Enumerable = require('linq');\r\n\r\n/**\r\n * К компонента, реализующего этот интерфейс будет автоматически вызван метод onValidate для валидации.\r\n */\r\nexport interface IUssValidateComponent {\r\n onValidate(control: AbstractControl): { [key: string]: boolean }\r\n}\r\n\r\n\r\n/**\r\n * Для корректной работы директивы uss-data-source наследуйте все компоненты, работающие с ней,\r\n * от этого класса и корректно реализуйте методы интерфейса IUssValidateComponent.\r\n */\r\nexport class UssDataSourceComponent extends UssComponent implements ng.OnInit, ng.AfterViewInit, ng.OnChanges, ng.OnDestroy, IUssValidateComponent {\r\n\r\n public static Inputs = ['autoSelectOnFocus: autoSelect', 'value:model', 'required', 'control', 'placeholder', 'metadata', 'disabled', 'ussDataSource', '_fieldName: fieldName', 'class', 'label', 'title', 'defaultValue', 'l10n', 'pattern', 'maxlength', 'isStandalone: standalone', 'tabindex', 'autofocus', 'inputClass:input-class', 'fieldClass:field-class', 'readOnly:readonly'];\r\n public static Outputs = ['modelChange', 'valueChange', 'controlValueChange', 'focusin', 'focusout'];\r\n\r\n public isFocused: boolean = false;\r\n \r\n /** Текстовое значение */\r\n textValue: string;\r\n\r\n get parentDialog(): UssDialog {\r\n let res: any = this.parentComponent;\r\n while (res && !res.modal) res = res.parentComponent;\r\n return res && res.modal && res.modal.$ussDialog;\r\n }\r\n\r\n /** Если равно true - содержимое инпута будет автоматически выделено после попадания в него фокуса ввода */\r\n @ng.Input('autoSelect') autoSelectOnFocus: boolean = false;\r\n\r\n @ng.Output() focusin = new ng.EventEmitter();\r\n @ng.Output() focusout = new ng.EventEmitter();\r\n\r\n @ng.Input('readonly') _readonly: boolean;\r\n isReadOnly(): boolean {\r\n let res = this._readonly !== undefined ? this.bool(this._readonly) : undefined;\r\n let parent: any = this.parentComponent;\r\n while (res === undefined && parent) {\r\n if (parent['isReadOnly']) {\r\n if (typeof parent['isReadOnly'] === 'function') {\r\n res = parent['isReadOnly']();\r\n } else {\r\n res = parent['isReadOnly'];\r\n }\r\n }\r\n if (parent instanceof UssDataSourceComponent) {\r\n res = !!parent.isReadOnly();\r\n } else if (parent.modal && parent.modal.$ussDialog) {\r\n res = !!parent.modal.$ussDialog.isReadOnly;\r\n } else {\r\n parent = parent.parentComponent;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n// ReSharper disable InconsistentNaming\r\n @ng.Input('l10n') inputl10n: string;\r\n public get l10n(): string | boolean {\r\n return this.inputl10n === undefined ? false : this.inputl10n;\r\n }\r\n// ReSharper restore InconsistentNaming\r\n\r\n @ng.Input('tabindex') inputTabindex: number = undefined;\r\n public get tabindex(): number { return this.disabled || this.isReadOnly() ? -1 : this.inputTabindex }\r\n public set tabindex(value: number) { this.inputTabindex = value; }\r\n\r\n @ng.Input('label') label: string = '';\r\n @ng.Input('title') title: string = '';\r\n\r\n @ng.Input('class') class: string = '';\r\n @ng.Input('input-class') inputClass: string = '';\r\n @ng.Input('field-class') fieldClass: string = '';\r\n\r\n /** Контрол, который создаётся для компонента по умолчанию не будет добавлен к форме */\r\n @ng.Input('standalone') isStandalone: boolean;\r\n\r\n /** Вообще не создаётся контрол для компонента */\r\n @ng.Input('no-control') isNoControl: boolean;\r\n\r\n\r\n @ng.Input('autofocus') autofocus: boolean = false;\r\n\r\n @ng.Input('ussDataSource') ussDataSource: Object | ng.ElementRef | any;\r\n public get dataSource() {\r\n let res = this.ussDataSource;\r\n if (!res && this.ussFormGroup instanceof UssFormGroup) {\r\n res = this.ussFormGroup.datasource;\r\n }\r\n return res;\r\n }\r\n\r\n @ng.Input('maxlength') private _maxlength: number;\r\n get maxlength(): number {\r\n// if (this.afterInit) {\r\n if (this.afterParentInit) {\r\n let res = this._maxlength;\r\n if ((res === undefined || res === null) && this.propertyMetadata) {\r\n switch (this.propertyMetadata.TypeName) {\r\n case 'string':\r\n res = this.propertyMetadata.MaxLength;\r\n break;\r\n case 'integer':\r\n res = 11;\r\n break;\r\n case 'float':\r\n res = 40;\r\n break;\r\n case 'boolean':\r\n res = 1;\r\n break;\r\n }\r\n this._maxlength = res;\r\n }\r\n }\r\n return this._maxlength;\r\n }\r\n\r\n @ng.Input('fieldName') protected _fieldName: string;\r\n get fieldName(): string { return this._fieldName || (this.propertyMetadata ? this.propertyMetadata.Name : '') }\r\n\r\n @ng.Input('defaultValue') defaultValue : string;\r\n\r\n /**\r\n * Ссылка на метаинформацию свойства или класса, связанного с данным компонентом.\r\n */\r\n @ng.Input('metadata') metadata: App.PropertyMetadata | (() => App.PropertyMetadata) | IEntityMetadata | (() => IEntityMetadata) | string | (() => string);\r\n\r\n @ng.Output('controlValueChange') controlValueChange = new ng.EventEmitter();\r\n\r\n\r\n public clearValue() {\r\n this.value = null;\r\n this.dataSource && this.dataSource[this.fieldName] && (delete this.dataSource[this.fieldName]);\r\n this.setValue(null);\r\n this.emitChanges(null);\r\n this.inputElement.focus();\r\n }\r\n\r\n private _md: any;\r\n public get propertyMetadata(): App.PropertyMetadata {\r\n let fieldName = this._fieldName;\r\n let res = this._md;\r\n if (res === undefined || res === null) {\r\n if (typeof this.metadata === 'function') {\r\n res = (<() => App.PropertyMetadata>this.metadata)();\r\n if (typeof res === 'string') {\r\n res = UssMetadataService.getEntityInfo(res);\r\n }\r\n } else if (typeof this.metadata === 'string') {\r\n const arrMetadata = this.metadata.split('.');\r\n const metadata = arrMetadata[0];\r\n fieldName = arrMetadata[1] || fieldName;\r\n res = UssMetadataService.getEntityInfo(metadata);\r\n } else {\r\n res = this.metadata;\r\n }\r\n if (res && 'Properties' in res) {\r\n res = (res).Properties.firstOrDefault(pi => pi.Name === fieldName);\r\n }\r\n if (!res && this.ussFormGroup) {\r\n const m = this.ussFormGroup.metadata;\r\n if (m && m.Properties) {\r\n res = m.Properties.firstOrDefault(pi => pi.Name === fieldName);\r\n }\r\n }\r\n if (res?.ObjectRefMetadata?.KeyPropertyName && this._fieldName !== res?.ObjectRefMetadata.KeyPropertyName) {\r\n this._fieldName = res?.ObjectRefMetadata.KeyPropertyName;\r\n res = this.propertyMetadata;\r\n }\r\n this._md = res;\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Название реального поля, содержащего значение\r\n */\r\n public get dataFieldName(): string {\r\n let res = this.fieldName;\r\n if (this.propertyMetadata && this.propertyMetadata.ObjectRefMetadata) {\r\n res = this.propertyMetadata.ObjectRefMetadata.KeyPropertyName || res;\r\n }\r\n return res;\r\n }\r\n\r\n public getEntityMetadata(): IEntityMetadata {\r\n let res;\r\n if (typeof this.metadata === 'function') {\r\n res = (<() => IEntityMetadata>this.metadata)();\r\n if (typeof res === 'string') {\r\n res = UssMetadataService.getEntityInfo(res);\r\n }\r\n } else if (typeof this.metadata === 'string') {\r\n res = UssMetadataService.getEntityInfo(this.metadata);\r\n } else {\r\n res = this.metadata;\r\n }\r\n if (res && !('service' in res)) {\r\n res = undefined;\r\n }\r\n if (!res && this.ussFormGroup/* && !this.ussDataSource*/) { // непонятно зачем тут была эта проверка\r\n if (this.propertyMetadata && this.propertyMetadata.ObjectRefMetadata) {\r\n res = UssMetadataService.getEntityInfo(this.propertyMetadata.ObjectRefMetadata.Name); \r\n }\r\n if (!res) {\r\n res = this.ussFormGroup.metadata;\r\n if (res && this.fieldName && res.Properties) {\r\n let typeName = res.Properties.where(pi => pi.Name === this.fieldName)\r\n .select(pi => pi.TypeName)\r\n .firstOrDefault();\r\n if (typeName) {\r\n typeName = typeName.split('.').lastOrDefault();\r\n res = UssMetadataService.getEntityInfo(typeName);\r\n }\r\n } \r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Ссылка на FormControl, связанный с данным компонентом. Если явно не указан - создаётся автоматически с валидаторами по умолчанию.\r\n */\r\n @ng.Input('control') control: AbstractControl;\r\n\r\n public ussFormGroup: UssFormGroup;\r\n public formGroup: ngForms.FormGroup;\r\n\r\n protected get isInsideForm(): boolean {\r\n return this.formGroup !== null && this.formGroup !== undefined;\r\n };\r\n\r\n @ng.Input('isFluid') private _isFluid: boolean = undefined;\r\n protected get isFluid(): boolean {\r\n if (this._isFluid === undefined) {\r\n if (this.afterInitVisible) {\r\n this._isFluid = this.isInsideForm || ` ${this.class} `.Contains(' fluid ');\r\n } else {\r\n return true;\r\n }\r\n }\r\n return this.bool(this._isFluid);\r\n }\r\n\r\n get afterParentInit(): boolean {\r\n /*\r\n return this.parentComponent\r\n && (this.parentComponent instanceof UssComponent || this.parentComponent instanceof UssComponent2)\r\n && this.parentComponent.afterInit;\r\n*/\r\n return !(this.parentComponent instanceof UssComponent || this.parentComponent instanceof UssComponent2) || this.parentComponent.afterInit;\r\n }\r\n\r\n /**\r\n * Признак обязательного значения у контрола.\r\n */\r\n @ng.Input('required') required: boolean | string;\r\n public isRequired(): boolean {\r\n let res = false;\r\n if (this.afterParentInit) {\r\n res = this.bool(this.required);\r\n if (this.propertyMetadata && this.propertyMetadata.Required && this.propertyMetadata.TypeName !== 'boolean') {\r\n // если кто-то явно не отменил признак required\r\n res = this.required !== false && this.required !== 'false';\r\n this.control && (this.control['$skip_required'] = !res);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n @ng.Input('pattern') pattern: string | RegExp;\r\n public isPattern(): boolean {\r\n return !!this.pattern;\r\n }\r\n\r\n /*\r\n * Признак запрета редактирования компонента\r\n */\r\n @ng.Input('disabled') disabled: boolean;\r\n\r\n\r\n /**\r\n * Водяной знак компонента\r\n */ \r\n @ng.Input('placeholder') placeholder: string = '';\r\n\r\n public inputElement: TElement;\r\n\r\n public focusElement: HTMLInputElement;\r\n\r\n // ReSharper disable once InconsistentNaming\r\n protected _value: TValue;\r\n\r\n public getValue(): TValue {\r\n return this.toValue(this._value);\r\n }\r\n\r\n toControlValue(value) { return value; }\r\n\r\n public setValue(v: TValue) {\r\n const value = this.toValue(v);\r\n const prevVal = this._value;\r\n this._value = value;\r\n if (this.wasInit) {\r\n if (this.control) {\r\n let isControlPristine = this.control.pristine;\r\n const controlValueChanged = !this.isValuesEqual(this.control.value, value, false);\r\n if (controlValueChanged) {\r\n this.control.setValue(this.toControlValue(value));\r\n if (this.afterInitVisible) {\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n }\r\n }\r\n this.setDataSourceValue(value);\r\n this.updateInputElement(value);\r\n if (isControlPristine && !controlValueChanged) {\r\n this.control.markAsPristine();\r\n this.control.markAsUntouched();\r\n }\r\n }\r\n prevVal !== value && this.valueChange.emit(value);\r\n \r\n//!maybe not need debounce(() => this.detectChanges(), 0, this.changeDetector);\r\n }\r\n }\r\n\r\n @ng.Input('model')\r\n public get value(): TValue { return this.getValue() }\r\n public set value(value: TValue) {\r\n this.setValue(value);\r\n this.wasInit && this.afterInit && this.emitChanges(this.value);\r\n }\r\n @ng.Output('modelChange') public modelChange = new ng.EventEmitter();\r\n @ng.Output('valueChange') public valueChange = new ng.EventEmitter();\r\n\r\n protected getDataSourceValue(): TValue {\r\n const fieldName = this.dataFieldName;\r\n let val = this.value;\r\n if (this.dataSource && fieldName) {\r\n val = getPathValue(this.dataSource, fieldName);\r\n } else if (this.control) {\r\n val = this.control.value;\r\n }\r\n return this.toValue(val);\r\n }\r\n\r\n protected setDataSourceValue(v: TValue) {\r\n if (this.wasInit && !this.afterInit) return;\r\n const fieldName = this.dataFieldName;\r\n if (this.dataSource && fieldName) {\r\n setPathValue(this.dataSource, fieldName, this.toValue(v));\r\n }\r\n }\r\n\r\n public static searchForm(parent: any, setDataSource?: (ds) => void): ngForms.FormGroup {\r\n if (parent instanceof AppBase) {\r\n let setDataSourceAction = undefined;\r\n if (parent instanceof UssDataSourceComponent) {\r\n setDataSourceAction = ds => parent.ussDataSource = ds;\r\n }\r\n return UssDataSourceComponent.searchForm(parent.viewContainer.element.nativeElement, setDataSourceAction)\r\n || UssDataSourceComponent.searchForm(parent.viewContainer.parentInjector['_view'], setDataSourceAction);\r\n }\r\n else if (parent instanceof HTMLElement) {\r\n if (!parent) return null;\r\n if (parent instanceof HTMLFormElement) {\r\n if (parent['_ussDataSource']) {\r\n let res = null;\r\n if (parent['_ussDataSource'].form instanceof ngForms.FormGroup) {\r\n res = parent['_ussDataSource'].form;\r\n }\r\n if (res) {\r\n setDataSource && setDataSource(res.datasource);\r\n res.nativeElement = parent;\r\n return res;\r\n }\r\n }\r\n }\r\n return this.searchForm(parent.parentElement, setDataSource);\r\n } else {\r\n return Enumerable\r\n .from(parent)\r\n .select(kv => {\r\n if (kv.value != null && typeof kv.value === 'object') {\r\n if ((kv.value instanceof ngForms.NgForm || kv.value instanceof ngForms.FormGroupDirective))\r\n return kv.value;\r\n const context = kv.value;\r\n if (context && context !== this && kv.key.startsWith('_')) {\r\n return this.searchForm(context, setDataSource);\r\n }\r\n }\r\n return null;\r\n })\r\n .where(x => !!x)\r\n .select(x => x instanceof ngForms.FormGroup ? x : (x).form)\r\n .firstOrDefault();\r\n }\r\n }\r\n private _formGroup: ngForms.FormGroup;\r\n protected initForm() {\r\n let ussDataSource = this.ussDataSource;\r\n this._formGroup = this._formGroup || UssDataSourceComponent.searchForm(this);\r\n /*\r\n || UssDataSourceComponent.searchForm(this.viewContainer.element.nativeElement, ds => this.ussDataSource = ds)\r\n || UssDataSourceComponent.searchForm(this.viewContainer.parentInjector['_view'], ds => this.ussDataSource = ds);\r\n */\r\n ussDataSource = ussDataSource || this.ussDataSource;\r\n if (ussDataSource) {\r\n if (ussDataSource instanceof ngForms.NgForm) {\r\n this.formGroup = ussDataSource.form;\r\n if (this.formGroup instanceof UssFormGroup) {\r\n this.ussFormGroup = this.formGroup;\r\n this.ussDataSource = this.ussFormGroup.datasource;\r\n } else {\r\n this.formGroup['datasource'] = this.formGroup['datasource'] || {};\r\n this.ussDataSource = this.formGroup['datasource'];\r\n }\r\n }\r\n else if (ussDataSource instanceof UssFormGroup) {\r\n this.ussFormGroup = ussDataSource;\r\n this.formGroup = ussDataSource;\r\n this.ussDataSource = ussDataSource.datasource;\r\n } else if (this._formGroup instanceof UssFormGroup && this._formGroup.datasource === ussDataSource) {\r\n this.ussFormGroup = this._formGroup;\r\n this.formGroup = this._formGroup;\r\n this.ussDataSource = ussDataSource;\r\n } else {\r\n this.formGroup = this._formGroup;\r\n if (!this.ussFormGroup || this.ussFormGroup.datasource !== ussDataSource) {\r\n this.ussFormGroup = null;\r\n this.ussDataSource = ussDataSource;\r\n } else {\r\n this.ussDataSource = null;\r\n }\r\n }\r\n } else if (this.modelChange.observers.length === 0) {\r\n // obsolete\r\n // похоже сейчас этот кусок кода никогда не будет вызываться если this._formGroup == null\r\n // если ussDataSource не установлен нельзя его устанавливать по умолчанию если мы используем {(model)] для полученя выбранного значения\r\n this.formGroup = this._formGroup;\r\n if (this.formGroup) {\r\n if (this.formGroup instanceof UssFormGroup) {\r\n this.ussFormGroup = this.formGroup;\r\n }\r\n }\r\n }\r\n this.initControl();\r\n\r\n if (this.focusElement && bool(this.autofocus)) {\r\n debounce(() => {\r\n if (this.focusElement && document.activeElement && this.focusElement['form'] && document.activeElement['form'] !== this.focusElement['form']) {\r\n focusNextElement(this.focusElement['form'], 0);\r\n }\r\n }, 50, 'focusElement_form');\r\n }\r\n }\r\n\r\n /**\r\n * Вызывается при установке сво-ва value компонента или нажатии клавиши Escape\r\n */\r\n protected updateInputElement(value: TValue): void {\r\n this.setInputElementValue(value);\r\n }\r\n\r\n /**\r\n * Вызывается при потере фокуса или нажатии клавиши Enter в поле ввода.\r\n */\r\n protected updateValue(textValue: string): void {\r\n if (this.wasInit) {\r\n this.value = this.validateControlValue(textValue);\r\n }\r\n }\r\n\r\n /**\r\n * Вызывается в методе updateValue.\r\n * Служит для проверки и исправления значения на основании данных валидации валидаторами.\r\n * @param value проверяемое значение, которое должно быть установлено.\r\n * @returns {} исправленное корректное значение.\r\n */\r\n protected validateControlValue(value: any): TValue | any {\r\n let res = this.toValue(value);\r\n if (this.control) {\r\n const priorValue = this.control.value;\r\n if (this.afterInitVisible && !this.isValuesEqual(res/*this.control.value*/, priorValue)) {\r\n this.control.setValue(this.toControlValue(res));\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n }\r\n if (this.control.invalid) {\r\n const errors: any = this.control.errors;\r\n\r\n if (errors.minValue) {\r\n res = errors.minValue.validValue;\r\n } else if (errors.maxValue) {\r\n res = errors.maxValue.validValue;\r\n } else if (errors.required) {\r\n res = this.toValue('');\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public get markAsInvalid(): boolean {\r\n if (!this.afterInitVisible) return false;\r\n\r\n const invalid =\r\n !this.control // контрол ещё не установлен\r\n\r\n || (!this.control.valid\r\n && !this.control.disabled // не считаем невалидными запрещённые контролы - всё-равно пользователь ничего сделать не может\r\n && !this.isReadOnly() // не считаем невалидными ReadOnly контролы - всё-равно пользователь ничего сделать не может\r\n // && this.control.dirty // подсвечиваем только контролы которые \"трогали\"\r\n // подсвечиваем, если значение контрола равно значению компонента или текущий компонент находится в фокусе\r\n // && (this.isValuesEqual(this.control.value, this.value) || document.activeElement === this.inputElement)\r\n );\r\n return invalid;\r\n }\r\n\r\n protected createControl(): AbstractControl {\r\n return new ngForms.FormControl(this.value, CustomValidators.ussDataSourceComponentValidator(this));\r\n }\r\n\r\n protected initControl() {\r\n if (this.isNoControl === true) return;\r\n\r\n this.nativeElement['$ussControl'] = this;\r\n let fieldName = this.fieldName;\r\n\r\n if (!this.control && fieldName && this.formGroup) {\r\n this.control = this.formGroup.controls[fieldName];\r\n }\r\n\r\n if (this.ussFormGroup && fieldName) {\r\n if (this.propertyMetadata && this.propertyMetadata.ObjectRefMetadata) {\r\n fieldName = this.propertyMetadata.ObjectRefMetadata.KeyPropertyName;\r\n } \r\n const control = (this.ussFormGroup.controls[fieldName]);\r\n if (!control) {\r\n debug(`${this.constructor.name}: Form has not got the control with name '${fieldName}'.`);\r\n } else {\r\n this.control = control;\r\n }\r\n }\r\n\r\n this.control = this.control || this.createControl();\r\n this.formGroup = this.formGroup || this.control.parent;\r\n\r\n if (this.formGroup) {\r\n let controlName = fieldName;\r\n if (!controlName) {\r\n controlName = Enumerable.from(this.formGroup.controls).where(c => c.value === this.control).select(c => c.key).firstOrDefault();\r\n controlName = controlName || `#${this.nativeElement.id || this.$uid}`;\r\n this.control['_name'] = controlName;\r\n }\r\n if (!(controlName in this.formGroup.controls)) {\r\n //if (this.isStandalone === undefined) { // так зачем-то было написано, но условие никогда не будет истинным, т.к. this.isStandalone явно устанавливается перед вызовом текущего метода\r\n if (this.isStandalone !== true)\r\n { // так, по идее, более корректно\r\n //this.formGroup.removeControl(controlName); // по идее этот код лишний, т.к. условие выше проверяет, что такого контрола нет\r\n this.formGroup.addControl(controlName, this.control);\r\n }\r\n }\r\n }\r\n\r\n this.isRequired(); // ! чтобы установить признак $skip_required\r\n\r\n this.updateInputElement(this.value);\r\n\r\n const focussable = Array.prototype.filter.call(this.nativeElement.querySelectorAll('input:not(._private)'),\r\n element => ((element.tabIndex >= 0) && (element.offsetWidth > 0 || element.offsetHeight > 0)));\r\n this.focusElement = focussable.firstOrDefault() || this.inputElement;\r\n\r\n\r\n setTimeout(() => {\r\n if (this.control) {\r\n if (this.disabled)\r\n this.control.disable();\r\n else\r\n this.control.enable();\r\n }\r\n });\r\n \r\n this.control['_ussComponents'] = this.control['_ussComponents'] || [];\r\n if (!this.control['_ussComponents'].contains(this)) {\r\n this.control['_ussComponents'].push(this);\r\n\r\n if (!this.control[`${this.$uid}_subscribed`]) {\r\n this.control[`${this.$uid}_setValue`] = this.control.setValue;\r\n this.control.setValue = (value, options) => {\r\n this.control[`${this.$uid}_setValue`](value, options);\r\n if (options === true || (options)?.onlySelf === true) {\r\n this.value = value;\r\n }\r\n }\r\n this.subscribe(this.control[`${this.$uid}_subscribed`] = this.control.valueChanges.debounceTime(1).subscribe(x => this.onControlValueChange(x)));\r\n }\r\n }\r\n this.detectChanges();\r\n }\r\n\r\n protected assignInputElement(element?: HTMLInputElement) {\r\n this.inputElement = element \r\n || this.inputElement\r\n || this.viewContainer.element.nativeElement.querySelector('input:not(._private)')\r\n || this.viewContainer.element.nativeElement.querySelector('textarea')\r\n || this.viewContainer.element.nativeElement.querySelector('select')\r\n ;\r\n if (this.inputElement && 'value' in this.inputElement) {\r\n this.onInputElementChange && this.observeInputEvent('change', ($event: Event) => this.onInputElementChange($event));\r\n\r\n this.onInputElementKeyUp && this.observeInputEvent('keyup', ($event: KeyboardEvent) => this.onInputElementKeyUp($event), true);\r\n this.onInputElementKeyDown && this.observeInputEvent('keydown', ($event: KeyboardEvent) => this.onInputElementKeyDown($event), true);\r\n this.onInputElementKeyPress && this.observeInputEvent('keypress', ($event: KeyboardEvent) => this.onInputElementKeyPress($event), true);\r\n this.onInputElementInput && this.observeInputEvent('input', ($event: Event) => this.onInputElementInput($event));\r\n\r\n this.onInputElementFocus && this.observeInputEvent('focus', ($event: FocusEvent) => this.onInputElementFocus($event));\r\n this.onInputElementFocus && this.observeInputEvent('blur', ($event: FocusEvent) => this.onInputElementBlur($event));\r\n this.onInputElementFocus && this.observeInputEvent('focusin', ($event: FocusEvent) => this.onInputElementFocusIn($event));\r\n this.onInputElementFocus && this.observeInputEvent('focusout', ($event: FocusEvent) => this.onInputElementFocusOut($event));\r\n }\r\n }\r\n\r\n protected getInputElementValue() {\r\n return (this.inputElement && 'value' in this.inputElement) ? this.inputElement['value'] : null;\r\n }\r\n protected setInputElementValue(value: TValue) {\r\n const text = this.toText(value);\r\n this.setInputValueDirect(text);\r\n }\r\n protected setInputValueDirect(value: string) {\r\n if (this.inputElement && ('value' in this.inputElement) && (this.inputElement['type'] !== 'file')) {\r\n this.textValue = ifEmpty(value, '');\r\n this.inputElement['value'] = this.textValue;\r\n }\r\n \r\n }\r\n protected onInputElementChange($event: Event) {\r\n this.updateValue(this.getInputElementValue());\r\n }\r\n\r\n protected onInputElementKeyUp($event: KeyboardEvent) {\r\n }\r\n\r\n protected onInputElementInput($event: Event) {\r\n this.control?.markAsDirty();\r\n this.control?.markAsTouched();\r\n const val = this.toValue(this.getInputElementValue());\r\n this.control?.setValue(this.toControlValue(val));\r\n this.valueChange.emit(val);\r\n }\r\n\r\n protected onControlValueChange(value) {\r\n //this.value = value; // !!! нельзя тут устанавливать значение компонента. Отваливается быстрый поиск в object-select-component\r\n this.controlValueChange.emit(value);\r\n }\r\n protected onDefaultNavigationKeyDownHandler(e: KeyboardEvent): boolean | void {\r\n const inputElement = e.srcElement || this.focusElement || this.inputElement;\r\n const form = e.srcElement && e.srcElement['form']\r\n ? e.srcElement['form']\r\n : this.focusElement && this.focusElement['form']\r\n ? this.focusElement['form']\r\n : this.inputElement && this.inputElement['form']\r\n ? this.inputElement['form']\r\n : this.inputElement;\r\n ;\r\n switch (e.key) {\r\n case \"Enter\":\r\n let rootForm = (form).$component?.form;\r\n while (rootForm && !(rootForm instanceof UssFormGroup)) rootForm = rootForm.parent;\r\n rootForm = rootForm || this.ussFormGroup;\r\n\r\n if (e.ctrlKey) {\r\n if (typeof rootForm?.submit === 'function') {\r\n rootForm.submit();\r\n }\r\n } else {\r\n focusNextElement(inputElement, e.shiftKey, form);\r\n }\r\n default:\r\n return true;\r\n }\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n protected onInputElementKeyDown($event: KeyboardEvent) {\r\n const el: HTMLInputElement | HTMLTextAreaElement = this.inputElement;\r\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\r\n\r\n const softEqual = this.isValuesEqual(el.value, this.value, false);\r\n if (!this.isValuesEqual(el.value, this.value)) {\r\n switch ($event.key) {\r\n case \"Escape\": // \r\n this.updateInputElement(this.value);\r\n // тут НЕ нужен break !!!!\r\n case \"Enter\": // \r\n if (!(el instanceof HTMLTextAreaElement)) {\r\n this.updateValue(el.value);\r\n if (!softEqual) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n /*\r\n setTimeout(() => {\r\n if (!el.disabled)\r\n el.select();\r\n });\r\n */\r\n }\r\n }\r\n break;\r\n }\r\n// if (!softEqual) return;\r\n }\r\n }\r\n this.onDefaultNavigationKeyDownHandler($event);\r\n }\r\n\r\n protected onInputElementKeyPress($event: KeyboardEvent) {\r\n }\r\n\r\n protected onInputElementFocus($event: FocusEvent) {\r\n this.isFocused = true;\r\n }\r\n\r\n protected onInputElementBlur($event: FocusEvent) {\r\n this.isFocused = false;\r\n }\r\n\r\n\r\n protected onInputElementFocusIn($event: FocusEvent) {\r\n if (this.autoSelectOnFocus)\r\n ($event.srcElement).select();\r\n this.focusin.emit($event);\r\n }\r\n\r\n protected onInputElementFocusOut($event: FocusEvent) {\r\n this.focusout.emit($event);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.disabled = bool(this.disabled);\r\n this.autoSelectOnFocus = bool(this.autoSelectOnFocus);\r\n this.isStandalone = bool(this.isStandalone);\r\n this.isNoControl = bool(this.isNoControl);\r\n this.assignInputElement();\r\n this.initForm();\r\n }\r\n\r\n ngAfterViewInit() {\r\n !this.inputElement && this.assignInputElement();\r\n\r\n this.ngAfterViewInitCalled = true;\r\n if (this.isElementVisible) {\r\n this.onVisibilityInit();\r\n } else {\r\n this.checkIfVisibility = true;\r\n }\r\n }\r\n\r\n protected onVisibilityInit() {\r\n this.initForm();\r\n this.wasInit = true;\r\n super.ngAfterViewInit();\r\n this.value = this.getDataSourceValue();\r\n this.observeChanges();\r\n super.onVisibilityInit();\r\n\r\n if (this.focusElement && bool(this.autofocus)) {\r\n this.focusElement.focus();\r\n }\r\n }\r\n\r\n focus(debounceTime: number|boolean = 0) {\r\n if (this.focusElement) {\r\n if (isEmpty(debounceTime) || debounceTime === false)\r\n this.focusElement.focus();\r\n else {\r\n this.debounce(() => this.focusElement.focus(), debounceTime, 'setFocus');\r\n }\r\n }\r\n }\r\n\r\n afterVisibilityInit(): void {\r\n this.value = this.getDataSourceValue();\r\n if (this.control) {\r\n this.control.markAsPristine();\r\n setTimeout(() => {\r\n if (this.isRequired() && isEmpty(this.value)) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(ch) {\r\n if (!this.wasInit) return;\r\n if (this.control) {\r\n if (ch.disabled) {\r\n setTimeout(() => {\r\n if (this.disabled)\r\n this.control.disable();\r\n else\r\n this.control.enable();\r\n });\r\n }\r\n }\r\n if ((ch.dataSource || ch._fieldName || ch.metadata)) {\r\n this.initForm();\r\n }\r\n if (this.control && ch.required && isEmpty(this.value)) {\r\n this.control.reset();\r\n }\r\n }\r\n\r\n protected observeInputEvent(eventName: string, fn: (e: Event) => void, debounceTime?: number | boolean, inputElement?: Element): this {\r\n return this.observeEvent(inputElement || this.inputElement, eventName, fn, debounceTime);\r\n }\r\n\r\n private _observerHash = `${this.$uid}_dataSourceObserver`;\r\n protected observes: rx.Subscription[] = [];\r\n\r\n protected observeChanges() {\r\n ObserverPlatform.removeObserver(this._observerHash);\r\n if (isJsObject(this.dataSource) && this.dataFieldName) {\r\n ObserverPlatform.addPathObserver(this._observerHash, this.dataSource, this.dataFieldName,\r\n newValue => {\r\n this.value = newValue;\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n ObserverPlatform.removeObserver(this._observerHash);\r\n for (let o of this.observes) {\r\n o.unsubscribe();\r\n }\r\n\r\n this.observes = [];\r\n }\r\n\r\n public isValuesEqual(value1: TValue | any, value2: TValue | any, strict: boolean = true) {\r\n value1 = this.toValue(value1);\r\n value2 = this.toValue(value2);\r\n if (strict ? (value1 === undefined && value2 === undefined || value1 === null && value2 === null) : ifEmpty(value1, '') === ifEmpty(value2, '')) return true;\r\n if (value1 === undefined || value1 === null || value2 === undefined || value2 === null) return false;\r\n if (isJsObject(value1) || isJsObject(value2)) {\r\n return this.toText(value1) === this.toText(value2);\r\n }\r\n // ReSharper disable once CoercedEqualsUsing\r\n return strict ? value1 === value2 : value1 == value2;\r\n }\r\n\r\n\r\n /**\r\n * Преобразование значения компонента в текстовое представление.\r\n */\r\n public toText(v: TValue): string {\r\n v = this.toValue(v);\r\n let res = (v === undefined || v === null) ? '' : (/*typeof(v) === 'object' ? toJson(v) : */v.toString());\r\n if (this.propertyMetadata && res !== '') {\r\n if (this.propertyMetadata.TypeName === 'integer' || this.propertyMetadata.TypeName === 'float')\r\n res = isNaN(v) ? '' : res;\r\n else if (this.propertyMetadata.EnumerableMetadata)\r\n res = translate.instant(this.propertyMetadata.EnumerableMetadata.where(x => x.Value === v)\r\n .select(x => x.Description || x.Name)\r\n .firstOrDefault() || res);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Преобразование переданного значения (в том числе и текстового представления) в значение компонента корректного типа.\r\n */\r\n public toValue(v: any): TValue {\r\n let res = v;\r\n if (this.propertyMetadata && res !== undefined && res !== null) {\r\n if (this.propertyMetadata.TypeName === 'string') {\r\n res = (res && res.toString()) || '';\r\n }\r\n else if (this.propertyMetadata.TypeName === 'integer' || this.propertyMetadata.EnumerableMetadata) {\r\n res = parseInt(res);\r\n if (isNaN(res)) {\r\n res = null;\r\n }\r\n }\r\n else if (this.propertyMetadata.TypeName === 'float') {\r\n res = parseFloat(res);\r\n if (isNaN(res)) {\r\n res = null;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n\r\n /**\r\n * Инициирует отсылку сообщений об изменении значения в компоненте.\r\n * @param value значение, которое будет послано для уведомления. Если не указано - используется текущее значение.\r\n */\r\n private _emittedValue;\r\n public emitChanges(value?: TValue) {\r\n if (value === undefined) value = this.value;\r\n if (this._emittedValue !== value) {\r\n this._emittedValue = value;\r\n this.modelChange.emit(value);\r\n }\r\n }\r\n\r\n /**\r\n * Имплементация валидатора контрола компонента.\r\n * Будет автоматически вызвана, если контрол содержит CustomValidators.ussDataSourceComponentValidator или CustomValidators.ussFormValidator.\r\n * Необходимо вернуть null в случае, если валидация прошла успешно или объект с ошибкой валидации.\r\n * Пустой объект в качестве успеха валидации возвращать нельзя - форма считает себя невалидной.\r\n * @param control ссылка на FormControl, для которого проводится валидация.\r\n */\r\n onValidate(control: AbstractControl): { [key: string]: boolean } {\r\n let res = null;\r\n if (control) {\r\n res = assign(null, CustomValidators.ussPropertyMetadataValidator(this.propertyMetadata)(control));\r\n if (this.isRequired()) {\r\n res = assign(res, ngForms.Validators.required(control));\r\n }\r\n else if (res) {\r\n delete res.required;\r\n }\r\n if (this.isPattern()) {\r\n res = assign(res, ngForms.Validators.pattern(this.pattern)(control));\r\n }\r\n else if (res) {\r\n delete res.pattern;\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/UssDataSourceComponent.ts","export * from './dialogs.service';\r\nexport * from './dialogs.module';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/dialogs.module/index.ts","export * from './telematics-api.service';\r\nexport * from './Telematics.Utils';\r\nexport * from './telematics.module';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/telematics.module/index.ts","export * from './address';\r\nexport * from './interfaces';\r\nexport * from './components';\r\nexport * from './directives';\r\nexport * from './services';\r\nexport * from './markers/CanvasIconLayer';\r\nexport * from './markers/CanvasMarker';\r\nexport * from './interfaces/IAppMapSettings';\r\nexport * from './utils/Geo';\r\nexport * from './utils/LeafletHelper';\r\nexport * from './markers/MarkerFactory';\r\nexport * from './markers/RotateMarker';\r\nexport * from './map.module';\r\nexport * from './map-icons/map-icon';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/index.ts","import {Injector, NgZone, Type} from '@angular/core';\r\n//import 'reflect-metadata';\r\n\r\n/**\r\n * Выполнение функции внутри зоны Angular, если это возможно\r\n */\r\nexport function ngRun(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T {\r\n const zone = Reflection.get(NgZone) as NgZone;\r\n if (applyThis || applyArgs) fn = fn.bind(applyThis, applyArgs);\r\n if (zone) {\r\n return zone.run(fn);\r\n } else {\r\n setTimeout(fn);\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Выполнение функции вне зоны Angular, если это возможно\r\n */\r\nexport function ngRunOutside(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T {\r\n const zone = Reflection.get(NgZone) as NgZone;\r\n if (applyThis || applyArgs) fn = fn.bind(applyThis, applyArgs);\r\n return zone ? zone.runOutsideAngular(fn) : fn();\r\n}\r\n\r\nconst functionPrototype = Object.getPrototypeOf(Function);\r\n\r\nexport class Reflection {\r\n private static _injectors: Injector[] = [];\r\n\r\n public static setInjector(injector: Injector) {\r\n //this._injectors.Remove(injector);\r\n //this._injectors.push(injector);\r\n this._injectors = [injector];\r\n }\r\n\r\n // 9.1 Ordinary Object Internal Methods and Internal Slots\r\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\r\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\r\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\r\n public static ordinaryGetPrototypeOf(O) {\r\n var proto = Object.getPrototypeOf(O);\r\n if (typeof O !== \"function\" || O === functionPrototype)\r\n return proto;\r\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\r\n // Try to determine the superclass constructor. Compatible implementations\r\n // must either set __proto__ on a subclass constructor to the superclass constructor,\r\n // or ensure each class has a valid `constructor` property on its prototype that\r\n // points back to the constructor.\r\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\r\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\r\n if (proto !== functionPrototype)\r\n return proto;\r\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\r\n var prototype = O.prototype;\r\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\r\n if (prototypeProto == null || prototypeProto === Object.prototype)\r\n return proto;\r\n // If the constructor was not a function, then we cannot determine the heritage.\r\n var constructor = prototypeProto.constructor;\r\n if (typeof constructor !== 'function')\r\n return proto;\r\n // If we have some kind of self-reference, then we cannot determine the heritage.\r\n if (constructor === O)\r\n return proto;\r\n // we have a pretty good guess at the heritage.\r\n return constructor;\r\n }\r\n\r\n public static get(token: any, notFoundValue?: any): any {\r\n let res = undefined;\r\n for (let injector of this._injectors) {\r\n try {\r\n res = injector.get(token, false/*, InjectFlags.Host | InjectFlags.Optional*/);\r\n } catch (e) {} \r\n if (res) break;\r\n }\r\n /*\r\n if (Reflection.Injector)\r\n return Reflection.get(token, notFoundValue);\r\n else\r\n return undefined;\r\n */\r\n return res ? res : undefined;\r\n }\r\n\r\n public static makeDecorator(annotationInstance: any, target: Function) {\r\n const annotations = Reflect.getOwnMetadata('annotations', target) || [];\r\n annotations.push(annotationInstance);\r\n Reflect.defineMetadata('annotations', annotations, target);\r\n\r\n }\r\n\r\n public static makePropDecorator(decoratorInstance: any, target: Object, propertyKey: string, descriptor?: TypedPropertyDescriptor) {\r\n const meta = Reflect.getOwnMetadata('propMetadata', target.constructor) || {};\r\n meta[propertyKey] = meta[propertyKey] || [];\r\n meta[propertyKey].unshift(decoratorInstance);\r\n Reflect.defineMetadata('propMetadata', meta, target.constructor);\r\n }\r\n\r\n public static makeParamDecorator(decoratorInstance: any, target: Object, index: number) {\r\n const parameters = Reflect.getMetadata('parameters', target) || [];\r\n // there might be gaps if some in between parameters do not have annotations.\r\n // we pad with nulls.\r\n while (parameters.length <= index) {\r\n parameters.push(null);\r\n }\r\n parameters[index] = parameters[index] || [];\r\n const annotationsForParam = parameters[index];\r\n annotationsForParam.push(decoratorInstance);\r\n Reflect.defineMetadata('parameters', parameters, target);\r\n }\r\n\r\n public static getMetadata(name: string, target: any, own: boolean = false): any[] {\r\n let res = [];\r\n if (own) {\r\n res = Reflect.getOwnMetadata(name, target.constructor);\r\n } else {\r\n let currentTarget = target;\r\n while (currentTarget) {\r\n const r = Reflect.getOwnMetadata(name, currentTarget.constructor);\r\n if (r) res.push(...r);\r\n currentTarget = this.ordinaryGetPrototypeOf(currentTarget);\r\n }\r\n res = res.distinct().toArray();\r\n }\r\n return res;\r\n }\r\n public static annotations(target: any, own: boolean = false): any[] {\r\n return Reflection.getMetadata('annotations', target, own);\r\n }\r\n public static propAnnotations(target: any, own: boolean = false): any[] {\r\n return Reflection.getMetadata('propMetadata', target, own);\r\n }\r\n\r\n public static classMetadataAll(target: any, metadataType: Type): T[] {\r\n return (this.annotations(target) || []).where(x => x instanceof metadataType).toArray();\r\n }\r\n public static classMetadata(target: any, metadataType: Type): T {\r\n return (this.annotations(target) || []).firstOrDefault(x => x instanceof metadataType);\r\n }\r\n\r\n public static memberMetadataAll(target: any, memberName: string, metadataType: Type): T[] {\r\n return (((this.propAnnotations(target) || {})[memberName] || [])).where(x => x instanceof metadataType).toArray();\r\n }\r\n public static memberMetadata(target: any, memberName: string, metadataType: Type): T {\r\n return (((this.propAnnotations(target) || {})[memberName] || [])).firstOrDefault(x => x instanceof metadataType);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/Reflection.ts","import { InjectionToken } from '@angular/core';\r\n\r\nexport const AUTH_SERVICE_TOKEN = new InjectionToken('IUssAuthService');\r\nexport const DIALOGS_SERVICE_TOKEN = new InjectionToken('IUssDialogsService');\r\nexport const EVENTS_SERVICE_TOKEN = new InjectionToken('IUssEventsService');\r\nexport const MESSAGES_SERVICE_TOKEN = new InjectionToken('IUssMessagesService');\r\nexport const TRANSLATE_SERVICE_TOKEN = new InjectionToken('IUssTranslateService');\r\nexport const LOAD_RESOLVER_TOKEN = new InjectionToken('IUssLoadResolver');\r\nexport const NAVIGATION_SERVICE_TOKEN = new InjectionToken('IUssNavigationService');\r\nexport const API_SERVICE_QUESTION_HANDLER_TOKEN = new InjectionToken('IApiQuestionHandler');\r\n\r\n/** Токен, задающий путь к файлу-логотипа приложения, выводимого в верхнем левом углу */\r\nexport const APP_LOGO_TOKEN = new InjectionToken('AppLogo');\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-interface.tokens.ts","export * from './decorators/store-settings.decorator';\r\nexport * from './services/IndexedDbStorage';\r\nexport * from './services/settings.service';\r\nexport * from './settings.module';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/index.ts","export * from './cache.module';\r\nexport * from './services/cache-api.service';\r\nexport * from './services/cache.service';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/cache.module/index.ts","export * from './l10n.directive';\r\n//export * from './translate.service';\r\nexport * from './translate.module';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/translate.module/index.ts","import { EventEmitter, Injectable, Sanitizer, Optional } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { isArray, isEmpty } from '../utils/utils';\r\nimport { SetupSignleton } from './setup-singleton.decorator';\r\nimport { TRANSLATE_SERVICE_TOKEN } from './core-interface.tokens';\r\nimport { CoreService } from '../internals';\r\nimport { Resolve } from '@angular/router';\r\nimport { from } from 'rxjs/observable/from';\r\n\r\nexport interface LangChangeEvent {\r\n lang: string;\r\n translations: any;\r\n firstTime: boolean;\r\n}\r\n\r\nexport interface TranslationChangeEvent {\r\n lang: string;\r\n translations: any;\r\n}\r\n\r\nexport interface IUssTranslateService extends Resolve {\r\n currentCulture: string;\r\n currentLang: string;\r\n forcedLang: string;\r\n defaultLang: string;\r\n startupLang: string;\r\n markNotLocalized: boolean;\r\n showKeys: boolean;\r\n translations: { [lang: string]: { [key: string]: any } }\r\n addKey(key: string, value: string | {}, lang?: string, addCurrentDictionary?: boolean);\r\n getBrowserLang(): string;\r\n init(currentLang?: string, fallbackLang?: string): Promise;\r\n instant(key: string, interpolateParams?: object): string;\r\n instant(key: string[], interpolateParams?: object): string[];\r\n resolve(): Promise;\r\n use(lang: string, permanent?: boolean): Promise;\r\n onLangChange: EventEmitter;\r\n onTranslationChange: EventEmitter;\r\n}\r\n\r\n@Injectable()\r\n@CoreService()\r\nexport class UssTranslateSanitizer {\r\n\r\n constructor(@Optional() private sanitizer: Sanitizer) { }\r\n\r\n sanitize(text: string): string {\r\n/* Русские буквы превращаются в коды ((( \r\n if (this.sanitizer) {\r\n text = this.sanitizer.sanitize(SecurityContext.HTML, text);\r\n }\r\n*/\r\n return typeof text === 'string' ? text.TrimRight().replace(/(?:\\r\\n|\\r|\\n)/g, '
') : text;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class DefaultTranslateService implements IUssTranslateService {\r\n\r\n constructor(@Optional() private sanitizer: UssTranslateSanitizer = null) { }\r\n\r\n addKey(key: string, value: string | {}, lang?: string, addCurrentDictionary?: boolean) { }\r\n\r\n getBrowserLang(): string {\r\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n return undefined;\r\n }\r\n var browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\r\n browserLang = browserLang || window.navigator.language || window.navigator['browserLanguage'] || window.navigator['userLanguage'];\r\n if (browserLang.indexOf('-') !== -1) {\r\n browserLang = browserLang.split('-')[0];\r\n }\r\n if (browserLang.indexOf('_') !== -1) {\r\n browserLang = browserLang.split('_')[0];\r\n }\r\n return browserLang; }\r\n\r\n init(currentLang?: string, fallbackLang?: string): Promise { return Promise.resolve() }\r\n\r\n resolve(): Promise { return Promise.resolve() }\r\n\r\n use(lang: string, permanent?: boolean): Promise { return Promise.resolve() }\r\n\r\n get currentCulture(): string {\r\n switch (this.currentLang) {\r\n case 'en': return 'en_US';\r\n case 'fr': return 'fr_FR';\r\n case 'ru': return 'ru_RU';\r\n case 'ua': return 'uk_UA';\r\n default: return `${this.currentLang}_${this.currentLang.toUpperCase()}`;\r\n }\r\n };\r\n\r\n forcedLang: string = '';\r\n defaultLang: string = '';\r\n startupLang: string = '';\r\n markNotLocalized: boolean = false;\r\n showKeys: boolean = false;\r\n translations: { [index: string]: { [index: string]: any; }; } = {};\r\n\r\n onLangChange: EventEmitter = new EventEmitter();\r\n onTranslationChange: EventEmitter = new EventEmitter();\r\n\r\n get currentLang(): string { return this.getBrowserLang() };\r\n\r\n instant(key: string | string[], interpolateParams?: object): any {\r\n let res: any = key;\r\n if (typeof key === 'string') {\r\n const arr = key.split('|');\r\n res = arr[1] || arr[0];\r\n }\r\n else if (isArray(key)) {\r\n res = [];\r\n for (let s of key) {\r\n res.push(this.instant(s));\r\n }\r\n }\r\n res = isEmpty(this.sanitizer) ? res : this.sanitizer.sanitize(res);\r\n return res;\r\n }\r\n}\r\n\r\nexport class CoreTranslateService implements IUssTranslateService {\r\n currentCulture: string;\r\n currentLang: string;\r\n forcedLang: string;\r\n defaultLang: string;\r\n startupLang: string;\r\n markNotLocalized: boolean;\r\n showKeys: boolean;\r\n onLangChange: EventEmitter;\r\n onTranslationChange: EventEmitter;\r\n\r\n translations: { [index: string]: { [index: string]: any; }; };\r\n\r\n addKey(key: string, value: string | {}, lang?: string, addCurrentDictionary?: boolean) {}\r\n getBrowserLang(): string { throw new Error('Not implemented'); }\r\n init(currentLang?: string, fallbackLang?: string): Promise { throw new Error('Not implemented'); }\r\n resolve(): Promise { throw new Error('Not implemented'); }\r\n use(lang: string, permanent?: boolean): Promise { throw new Error('Not implemented'); }\r\n instant(key: string, interpolateParams?: object): string;\r\n instant(key: string[], interpolateParams?: object): string[];\r\n instant(key: string | string[], interpolateParams: object): any {\r\n throw new Error('Not implemented');\r\n }\r\n @SetupSignleton(TRANSLATE_SERVICE_TOKEN, DefaultTranslateService) static instance: DefaultTranslateService;\r\n}\r\n\r\nexport const translate: IUssTranslateService = new CoreTranslateService();\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-translate.service.ts","import { Observable } from 'rxjs';\r\nimport * as utils from './utils';\r\nimport { DateTime } from './DateTime';\r\nimport { map } from 'rxjs/operators';\r\nimport * as moment from 'moment';\r\nimport { clone as _clone, cloneDeep as _cloneDeep, assign as _assign, merge as _merge, extend as _extend, filter as _filter, defaults as _defaults } from 'lodash';\r\n\r\n// хак, для исправления конвертирования Duration в JSON\r\n// (по умочанию moment.Duration не конвертирует в строку, которую понимает NewtonJson)\r\nconst dur = moment.duration(\"00:01\");\r\ndur['__proto__'].toJSON = function() { return utils.durationToString(this as moment.Duration); }\r\n\r\nexport function clearPrivateProperties(obj: T, cloneObject: boolean = false, convertDurations: boolean = false): T {\r\n if (utils.isArray(obj)) {\r\n let objs = obj;\r\n if (cloneObject) {\r\n objs = clone(objs);\r\n }\r\n for (let i = 0; i < objs.length; i++) {\r\n objs[i] = this.clearPrivateProperties(objs[i], cloneObject);\r\n }\r\n return objs;\r\n } else {\r\n if (cloneObject) {\r\n obj = clone(obj);\r\n }\r\n for (let key of Object.getOwnPropertyNames(obj)) {\r\n if (key[0] === '$' || key[0] === '_' || utils.isEmpty(obj[key])) {\r\n // очищаем все приватные и внутренние поля и поля null\r\n delete obj[key];\r\n }\r\n if (convertDurations && moment.isDuration(obj[key])) {\r\n obj[key] = utils.durationToString(obj[key] as moment.Duration);\r\n }\r\n }\r\n return obj;\r\n }\r\n}\r\nexport var dateTimeConvertor: (s: string) => any = s => {\r\n return DateTime.ToDate(s);\r\n};\r\n\r\n// Copied from angular-scenario.js\r\n// ReSharper disable InconsistentNaming\r\nexport var APPLICATION_JSON = 'application/json';\r\nexport var CONTENT_TYPE_APPLICATION_JSON = { 'Content-Type': APPLICATION_JSON + ';charset=utf-8' };\r\nexport var JSON_START = /^\\[|^\\{(?!\\{)/;\r\nexport var JSON_ENDS = {\r\n '[': /]$/,\r\n '{': /}$/\r\n};\r\nexport var JSON_PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\r\n// ReSharper restore InconsistentNaming\r\n\r\n\r\n/**\r\n * Json.Net может возвращать объекты или массывы объектов с перекрёстными или повторяющимися ссылками в\r\n * сокращённом варианте при котором повторяющищиеся объекты и ссылки на них передаются в виде идентификаторов.\r\n * Данный метод восстанавливает полных граф этих объектов.\r\n */\r\nexport function resolveReferences(source: any): any {\r\n let res: Date | moment.Moment | Object;\r\n if (utils.isString(source)) {\r\n res = DateTime.ToDate(source);\r\n } else {\r\n const byid = {}, // all objects by id\r\n refs = []; // references to objects that could not be resolved\r\n\r\n res = (function recurse(obj, prop?: string | number, parent?: Object) {\r\n if (typeof obj !== 'object' || !obj || moment.isMoment(obj)) // a primitive value or Moment\r\n return utils.isString(obj) ? DateTime.ToDate(obj) : obj; \r\n\r\n if (obj && Object.prototype.toString.call(obj) === '[object Array]') {\r\n for (var i = 0; i < obj.length; i++)\r\n // check also if the array element is not a primitive value\r\n if (typeof obj[i] !== 'object' || !obj[i]) // a primitive value\r\n continue;\r\n else if ('$ref' in obj[i])\r\n obj[i] = recurse(obj[i], i, obj);\r\n else\r\n obj[i] = recurse(obj[i], prop, obj);\r\n return obj;\r\n }\r\n if (obj && '$ref' in obj) { // a reference\r\n const ref = obj.$ref;\r\n if (ref in byid)\r\n return byid[ref];\r\n // else we have to make it lazy:\r\n refs.push([parent, prop, ref]);\r\n return undefined;\r\n } else if (obj) {\r\n const id = obj.$id;\r\n if (id) {\r\n delete obj.$id;\r\n byid[id] = obj;\r\n }\r\n\r\n if ('$values' in obj) // an array\r\n obj = obj.$values.map(recurse);\r\n else { // a plain object\r\n for (let p of Object.getOwnPropertyNames(obj)) {\r\n obj[p] = recurse(obj[p], p, obj);\r\n }\r\n }\r\n }\r\n return obj;\r\n })(source); // run it!\r\n\r\n for (let i = 0; i < refs.length; i++) { // resolve previously unknown references\r\n const ref = refs[i];\r\n ref[0][ref[1]] = byid[refs[2]];\r\n // Notice that this throws if you put in a reference at top-level\r\n }\r\n }\r\n return res;\r\n}\r\n\r\n\r\n/**\r\n * Проверяет, является ли строка корректной Json-строкой\r\n */\r\nexport function isJsonLike(str: string): boolean {\r\n let res = false;\r\n if (typeof str === 'string') {\r\n const jsonStart = str.match(JSON_START);\r\n res = jsonStart && JSON_ENDS[jsonStart[0]].test(str);\r\n }\r\n return res;\r\n}\r\n\r\n/**\r\n * @ngdoc function\r\n * @name angular.fromJson\r\n * @module ng\r\n * @kind function\r\n *\r\n * @description\r\n * Deserializes a JSON string.\r\n *\r\n * @param {string} json JSON string to deserialize.\r\n * @returns {Object|Array|string|number} Deserialized JSON string.\r\n */\r\nexport function fromJson(json): any {\r\n return utils.isString(json)\r\n ? JSON.parse(json)\r\n : json;\r\n}\r\n\r\nexport function toJson(obj: any, format?: boolean, sort?: boolean, indent?: string): string {\r\n\r\n const getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (value && typeof value === 'object') {\r\n if (seen.has(value)) {\r\n return undefined;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n\r\n if (obj && typeof obj === 'object' && (sort || format)) {\r\n let res = '';\r\n let propSeparator = '';\r\n let propStart = '';\r\n let propEnd = '';\r\n if (format) {\r\n propSeparator = ' ';\r\n indent = indent || '';\r\n propEnd = `\\r\\n${indent}`;\r\n indent += ' ';\r\n propStart = `\\r\\n${indent}`;\r\n }\r\n const keys = Object.keys(obj);\r\n if (sort) keys.sort();\r\n for (let i = 0; i < keys.length; i++) {\r\n const propName = keys[i];\r\n let propValue = obj[propName];\r\n propValue = toJson(propValue, format, sort, indent);\r\n res += `${propStart}\"${propName}\":${propSeparator}${propValue}${i === keys.length - 1 ? '' : ','}`;\r\n }\r\n res = `{${res}${propEnd}}`;\r\n return res;\r\n } else {\r\n return JSON.stringify(obj, getCircularReplacer());\r\n }\r\n}\r\n\r\nexport function clone(obj: T, useSerialization?: boolean): T {\r\n if (!obj) return obj;\r\n if (useSerialization)\r\n return fromJson(toJson(obj));\r\n else\r\n return _clone(obj);\r\n}\r\n// ReSharper disable TypeGuardProducesNeverType\r\nexport function cloneDeep(obj: T): T {\r\n let res = obj;\r\n if (obj) {\r\n if (obj instanceof Observable) {\r\n res = obj.pipe(map(x => _cloneDeep(x)));\r\n }\r\n else if (obj instanceof Promise) {\r\n res = obj.then(x => _cloneDeep(x));\r\n } else {\r\n res = _cloneDeep(obj);\r\n }\r\n }\r\n return res;\r\n}\r\n// ReSharper restore TypeGuardProducesNeverType\r\n\r\nexport function assign(target: T, source: TSource): T & TSource {\r\n if (source === null || source === undefined || typeof source !== 'object') {\r\n return target;\r\n } else {\r\n return _assign(target, source); \r\n }\r\n}\r\n\r\nexport function merge(target: T, source: TSource): T & TSource {\r\n if (source === null || source === undefined || typeof source !== 'object') {\r\n return target;\r\n } else {\r\n return _merge(target, source); \r\n }\r\n}\r\n\r\nexport function defaults(target: T, source: TDefaults): T & TDefaults {\r\n if (source === null || source === undefined || typeof source !== 'object') {\r\n return target;\r\n } else {\r\n return _defaults(target, source); \r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/Json.ts","import { Type, InjectionToken } from '@angular/core';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { isEmpty, isNotEmpty } from '../utils/utils';\r\n\r\n/**\r\n * Этот декоратор используется для облегчённого создания синглтонов сервисов для слабосвязанных между собой программных модулей.\r\n * Идея в следующем: предположим у нас есть некоторый сервис, который используется в разных модулях, но реализация которого может\r\n * отличаться. Классическим вариантом использования являеся определение специального InjectionToken, описывающего интерфейс сервиса,\r\n * реализация этого интерфейса в одном из программных модулей с последующим импортом данного интерфейса в разделе `providers` настройки модуля:\r\n * @NgModule({\r\n providers: [\r\n { provide: TRANSLATE_SERVICE_TOKEN, useClass: AppTranslateService }\r\n ],\r\n })\r\n export class UssTranslateModule { ... }\r\n * после чего данный сервис инъектируется в остальные модули по его InjectionToken:\r\n * constructor(@Inject(TRANSLATE_SERVICE_TOKEN) translate: ITranslateService) { ... }\r\n *\r\n * Для того, чтобы упростить доступ к сервису, не используя инъекции, можно создать сервис-синглтон, который будет\r\n * имплементировать интерфейс сервиса и проксировать вызовы методов этого интерфейса на реальный сервис:\r\n *\r\n * class DefaultTranslateService implements IUssTranslateService {\r\n * currentLang: string = '';\r\n * use(lang: string, permanent?: boolean): Observable { }\r\n * instant(key: string | string[], interpolateParams: object): any { return key; }\r\n * }\r\n * export class CoreTranslateService implements IUssTranslateService {\r\n * currentLang: string;\r\n * use(lang: string, permanent?: boolean): Observable { throw new Error('Not implemented'); }\r\n * instant(key: string | string[], interpolateParams: object): any { throw new Error('Not implemented'); }\r\n *\r\n * @SetupSignleton(TRANSLATE_SERVICE_TOKEN, DefaultTranslateService) static instance: DefaultTranslateService;\r\n * }\r\n * export const translate: IUssTranslateService = new CoreTranslateService();\r\n *\r\n * Теперь доступ к сервису может осуществляться напрямую через синглтон `translate`, причём,\r\n * если реализации этого сервиса нет ни в одном из модулей - будет использоваться реализация `DefaultTranslateService`.\r\n * Единственное ОБЯЗАТЕЛЬНОЕ условие корректной настройки: все простые свойства интерфейса сервиса в `DefaultTranslateService`\r\n * должны иметь значения по умолчанию. В противном случае данное свойство проксироваться НЕ будет.\r\n *\r\n * @param token токен для инъекции сервиса\r\n * @param defaultImplementation тип реализации сервиса по умолчанию\r\n */\r\nexport const SetupSignleton = (token: InjectionToken, defaultImplementation?: Type) => (target: any, propertyKey: string) => {\r\n\r\n let defImplInstance = undefined;\r\n if (typeof defaultImplementation === 'function') {\r\n // ReSharper disable once InconsistentNaming\r\n defImplInstance = new defaultImplementation();\r\n target['__default'] = defImplInstance;\r\n }\r\n\r\n // Creating methods proxy\r\n const impl = defImplInstance || target.prototype || {};\r\n\r\n function setupProp(key: string): void {\r\n let descr = Object.getOwnPropertyDescriptor(impl, key);\r\n try {\r\n if (isEmpty(descr) && typeof defaultImplementation === 'function') {\r\n descr = Object.getOwnPropertyDescriptor(defaultImplementation.prototype, key);\r\n }\r\n if (isNotEmpty(descr)) {\r\n if (typeof descr.value === 'function') {\r\n // This is a function\r\n Object.defineProperty(target.prototype, key, { get: () => (...args) => target[propertyKey][key](...args) });\r\n }\r\n else if ('value' in descr) {\r\n // This is a simple propery\r\n //Object.defineProperty(target.prototype, key, { get: () => target[propertyKey][key] });\r\n //Object.defineProperty(target.prototype, key, { set: v => target[propertyKey][key] = v });\r\n Object.defineProperty(target.prototype, key,\r\n {\r\n get: () => target[propertyKey][key],\r\n set: v => target[propertyKey][key] = v\r\n });\r\n } else {\r\n if (typeof descr.get === 'function' && typeof descr.set === 'function') {\r\n // this is a property getter/setter\r\n Object.defineProperty(target.prototype, key,\r\n {\r\n get: () => target[propertyKey][key],\r\n set: v => target[propertyKey][key] = v\r\n });\r\n }\r\n else if (typeof descr.get === 'function') {\r\n // this is a property getter\r\n Object.defineProperty(target.prototype, key, { get: () => target[propertyKey][key] });\r\n }\r\n else if (typeof descr.set === 'function') {\r\n // this is a property setter\r\n Object.defineProperty(target.prototype, key, { set: v => target[propertyKey][key] = v });\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.warn(e);\r\n } \r\n }\r\n\r\n // так работает при targret = \"es5\", но при targret = \"es2015\" не перечисляются методы базового класса\r\n // ReSharper disable once MissingHasOwnPropertyInForeach\r\n for (let key in impl) {\r\n setupProp(key);\r\n }\r\n\r\n // Перечисление методов базового класса при targret = \"es2015\"\r\n // ReSharper disable once MissingHasOwnPropertyInForeach\r\n for (let key of Object.getOwnPropertyNames(impl.__proto__)) {\r\n setupProp(key);\r\n }\r\n\r\n\r\n // Creating getter and setter of the singleton instance property\r\n const descriptor = { configurable: true, enumerable: true };\r\n descriptor.get = () => {\r\n let res = target['__instance'];\r\n if (res === undefined) {\r\n try {\r\n res = Reflection.get(token);\r\n target['__instance'] = res;\r\n }\r\n catch (e) { }\r\n if (res === undefined) {\r\n res = target['__default'];\r\n }\r\n }\r\n return res;\r\n }\r\n descriptor.set = value => target['__instance'] = value;\r\n // Updating new property or updating descriptor\r\n Object.defineProperty(target, propertyKey, descriptor);\r\n};\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/setup-singleton.decorator.ts","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/interopRequireDefault.js\n// module id = 137\n// module chunks = 1","import { EventEmitter, ViewChild, Injectable, AfterViewInit, ViewContainerRef, Optional, OnDestroy } from '@angular/core';\r\nimport { UssComponent2 } from '../../common/base.component';\r\nimport { UssDeactivateRouteGuard, IModalDialog } from './UssDeactivateRouteGuard';\r\nimport { assign, IUssDialog, Reflection } from '@core.module';\r\n\r\n@Injectable()\r\nexport abstract class UssDialog extends UssComponent2 implements IModalDialog, AfterViewInit, OnDestroy, IUssDialog {\r\n\r\n /**\r\n * Это свойство будет заменено в UssDialogService при открытии диалога\r\n * на метод который корректно закрывает диалог.\r\n * По каким-то причинам событие диалога .onHidden вызывается не всегда.\r\n */\r\n public $close = () => this.modal.internalClose();\r\n\r\n public isReadOnly: boolean;\r\n\r\n @ViewChild('modal') public modal: any;\r\n\r\n /**\r\n * Вызывается при открытии диалога для установки значений параметров\r\n */\r\n assignParams(parameters) {\r\n assign(this, parameters);\r\n }\r\n\r\n /**\r\n * Если равно true - крестик закрытия диалога в заголовке будет спрятан.\r\n * Это актуально для диалогов, не предусматривающих действия CANCEL.\r\n * Например, для диалога вопроса с вариантами ответа Да/Нет\r\n */\r\n public hideCloseInTitle: boolean = false;\r\n\r\n public onClose = new EventEmitter();\r\n public onShow = new EventEmitter();\r\n public onResize = new EventEmitter<{ width: number, height: number }>();\r\n public onMove = new EventEmitter<{ left: number, top: number }>();\r\n\r\n public result: Promise;\r\n private disabler: UssDeactivateRouteGuard;\r\n\r\n constructor(vcr: ViewContainerRef, @Optional() skipCheckingNgEvents?: boolean) {\r\n super(vcr, skipCheckingNgEvents);\r\n this.disabler = Reflection.get(UssDeactivateRouteGuard);\r\n this.disabler && this.disabler.openDialogs.unshift(this);\r\n this.result = new Promise(resolve => this.onClose.subscribe(r => resolve(r)));\r\n }\r\n\r\n ngOnInit() {\r\n this.modal.$ussDialog = this;\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.disabler && this.disabler.openDialogs.Remove(this);\r\n super.ngOnDestroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n// this.modal.$ussDialog = this;\r\n super.ngAfterViewInit();\r\n }\r\n\r\n public get canApply() {\r\n return this.canSave;\r\n }\r\n\r\n public get canSave(): boolean {\r\n return true;\r\n }\r\n\r\n public async save(noClose?: boolean): Promise {\r\n if (!noClose) {\r\n await this.close();\r\n }\r\n return undefined;\r\n }\r\n\r\n public cancel() {\r\n this.close(false);\r\n }\r\n\r\n /**\r\n * Закрывает диалог\r\n */\r\n public close(closeResult?: TResult | boolean) {\r\n if (this.onClose) {\r\n this.onClose.emit(closeResult); \r\n this.onClose = null;\r\n }\r\n this.$close();\r\n }\r\n\r\n /**\r\n * Если на диалоге присутствует страница со скроллируемым контентом - следует вызывать этот метод с параметром `true` при\r\n * активации страницы и с параметром `false` при деактивации страницы.\r\n * @param activate\r\n */\r\n public avoidFullScreenModal(activate: boolean) {\r\n if (activate) {\r\n this.modal.addClass('avoid-fullscreen-height');\r\n } else {\r\n this.modal.removeClass('avoid-fullscreen-height');\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/common/UssDialog.ts","export * from './parser';\r\n//export * from './parser_old';\r\n\r\nexport * from './ComponentPropertiesObserver';\r\nexport * from './DateTime';\r\nexport * from './FormHelper';\r\nexport * from './js.net.extensions';\r\nexport * from './Json';\r\nexport * from './mask';\r\nexport * from './ObservableCollection';\r\nexport * from './OData';\r\nexport * from './ODataFilterCreator';\r\nexport * from './Reflection';\r\nexport * from './Storage';\r\nexport * from './StringBuilder';\r\nexport * from './TypedEventEmitter';\r\nexport * from './utils';\r\nexport * from './UssFramedList';\r\nexport * from './WindowUtils';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/index.ts","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/classCallCheck.js\n// module id = 164\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/createClass.js\n// module id = 165\n// module chunks = 1","export * from './signalr.module';\r\nexport * from './signalr.service';\r\nexport * from './UssHub';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/signalr.module/index.ts","import { Validators, AbstractControl } from '@angular/forms';\r\nimport { IUssValidateComponent } from '../common/UssDataSourceComponent';\r\nimport { isEmpty, isArray, isIntNumber, isFloatNumber, assign } from '../../../core.module';\r\nimport { ifEmpty } from '../../../core.module/utils/utils';\r\n\r\nexport class CustomValidators {\r\n\r\n public static valueIsEmpty(value) {\r\n return (!value && value !== 0) || !value.toString().trim();\r\n }\r\n\r\n public static ussDataSourceComponentValidator(component: IUssValidateComponent) {\r\n return (control: AbstractControl) => {\r\n let result = null;\r\n if (component && typeof component.onValidate === 'function') {\r\n result = component.onValidate(control);\r\n }\r\n if (result && Object.getOwnPropertyNames(result).length === 0) {\r\n result = null;\r\n }\r\n return result;\r\n }\r\n }\r\n\r\n public static ussPropertyMetadataValidator(propertyMetadata: App.PropertyMetadata) {\r\n return (control: AbstractControl) => {\r\n let result = null;\r\n if (propertyMetadata) {\r\n if (propertyMetadata.Required && control && !control['$skip_required'] && propertyMetadata.TypeName !== 'boolean') {\r\n result = Validators.required(control);\r\n }\r\n if (propertyMetadata.TypeName === 'string' && propertyMetadata.MaxLength) {\r\n result = assign(result, Validators.maxLength(propertyMetadata.MaxLength)(control));\r\n if (propertyMetadata.Pattern) {\r\n result = assign(result, Validators.pattern(propertyMetadata.Pattern)(control));\r\n }\r\n }\r\n if (propertyMetadata.EnumerableMetadata && propertyMetadata.TypeName !== 'string') {\r\n const minValue = ifEmpty(propertyMetadata.MinValue, propertyMetadata.EnumerableMetadata.min(x => +x.Value));\r\n const maxValue = ifEmpty(propertyMetadata.MaxValue, propertyMetadata.EnumerableMetadata.max(x => +x.Value));\r\n result = assign(result, CustomValidators.minValueValidator(minValue)(control));\r\n result = assign(result, CustomValidators.maxValueValidator(maxValue)(control));\r\n }\r\n else if (propertyMetadata.TypeName === 'integer' || propertyMetadata.TypeName === 'float') {\r\n if (isEmpty(propertyMetadata.MinValue)) {\r\n if (propertyMetadata.TypeName === 'integer')\r\n propertyMetadata.MinValue = -2147483647;\r\n //propertyMetadata.MinValue = 0;\r\n else\r\n propertyMetadata.MinValue = -Number.MAX_VALUE;\r\n //propertyMetadata.MinValue = 0;\r\n }\r\n if (isEmpty(propertyMetadata.MaxValue)) {\r\n if (propertyMetadata.TypeName === 'integer')\r\n propertyMetadata.MaxValue = 2147483647;\r\n else\r\n propertyMetadata.MaxValue = Number.MAX_VALUE;\r\n }\r\n result = assign(result, CustomValidators.minValueValidator(propertyMetadata.MinValue)(control));\r\n result = assign(result, CustomValidators.maxValueValidator(propertyMetadata.MaxValue)(control));\r\n }\r\n }\r\n if (result && Object.getOwnPropertyNames(result).length === 0) {\r\n result = null;\r\n }\r\n return result;\r\n }\r\n }\r\n\r\n public static ussFormValidator(propertyMetadata: App.PropertyMetadata) {\r\n return (control: AbstractControl) => {\r\n let result = CustomValidators.ussPropertyMetadataValidator(propertyMetadata)(control);\r\n // директива ussDataSource добавляет все компоненты, привязанные к этому FormControl'у в этот массив...\r\n if (isArray(control['_ussComponents'])) {\r\n for (let component of control['_ussComponents']) {\r\n result = assign(result, CustomValidators.ussDataSourceComponentValidator(component)(control));\r\n }\r\n }\r\n if (result && Object.getOwnPropertyNames(result).length === 0) {\r\n result = null;\r\n }\r\n return result;\r\n }\r\n }\r\n\r\n public static intNumberValidator(c: AbstractControl) {\r\n if (CustomValidators.valueIsEmpty(c.value)) return null;\r\n\r\n let isValid = isIntNumber(c.value);\r\n let result;\r\n if (isValid) {\r\n result = null;\r\n } else {\r\n result = {\r\n intNumber: {\r\n valid: false\r\n }\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static floatNumberValidator(c: AbstractControl) {\r\n if (CustomValidators.valueIsEmpty(c.value)) return null;\r\n\r\n let isValid = isFloatNumber(c.value);\r\n let result;\r\n if (isValid) {\r\n result = null;\r\n } else {\r\n result = {\r\n floatNumber: {\r\n valid: false\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static minValueValidator(min: number) {\r\n return (c: AbstractControl) => {\r\n if (min === undefined || CustomValidators.valueIsEmpty(c.value)) return null;\r\n\r\n let result = null;\r\n if (isNaN(c.value) || Number(c.value) < min) {\r\n result = {\r\n minValue: {\r\n valid: false,\r\n validValue: min\r\n }\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n public static maxValueValidator(max: number) {\r\n return (c: AbstractControl) => {\r\n if (max === undefined || CustomValidators.valueIsEmpty(c.value)) return null;\r\n\r\n let result = null;\r\n if (isNaN(c.value) || Number(c.value) > max) {\r\n result = {\r\n maxValue: {\r\n valid: false,\r\n validValue: max\r\n }\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/CustomValidators.ts","export * from './Address';\r\nexport * from './AddressSource';\r\nexport * from './AppAddressInfoSource';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/address/index.ts","import { Point, Position } from 'geojson';\r\nimport { LatLngTuple, LatLngExpression, latLng, LatLngLiteral, LatLng } from 'leaflet';\r\nimport { StringBuilder, ifEmpty } from '@core.module';\r\nimport { AddressSource } from './AddressSource';\r\nimport { AppAddressInfoSource } from './AppAddressInfoSource';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { LeafletHelper } from '../utils/LeafletHelper';\r\n\r\ndeclare type TAddressSource = Address | AddressSource | Point | LatLngExpression | App.AddressInfo | object;\r\nexport type TAddressHtmlTemplates = Record<'typeIcon' | 'country' | 'region' | 'area' | 'level3' | 'city' | 'district' | 'street' | 'poiName' | 'addressInfo' | 'number' | 'floor' | 'entrance' | 'entry' | 'road' | 'details', string>;\r\n\r\n\r\nexport class Address implements App.AddressInfo {\r\n static defaultCountryCode = 'ua';\r\n\r\n /**\r\n * Если значение установлено - будет использоваться оно для отрисовки адреса. Иначе используется DefaultHtmlTemplates.\r\n */\r\n static HtmlTemplates: TAddressHtmlTemplates;\r\n\r\n /**\r\n * Название иконки для отрисовки маркера адреса по умолчанию. Используется в качестве параметра typIcon.\r\n * Для FontAvesome вёрстки это может быть значение 'map-marker'\r\n * Для MatDesign вёрстки это может быть значение 'location_on'\r\n */\r\n static DefaultTypeIcon = '';\r\n\r\n /**\r\n * Html-шаблоны отображения адреса по умолчанию\r\n */\r\n static get DefaultHtmlTemplates(): TAddressHtmlTemplates {\r\n return Object.assign({\r\n typeIcon: '📍',\r\n country: '{{country}}',\r\n region: '{{region}}',\r\n area: '{{area}}',\r\n level3: '{{level3}}',\r\n city: '{{city}}',\r\n district: '{{district}}',\r\n street: '{{street}}',\r\n poiName: '{{poiName}}',\r\n addressInfo: '{{addressInfo}}',\r\n\r\n number: '{{number}}',\r\n floor: '{{floor}}',\r\n entrance: '{{entrance}}',\r\n entry: '{{entry}}',\r\n road: '{{road}}',\r\n details: '{{details}}'\r\n });\r\n }\r\n\r\n /**\r\n * Html-шаблоны отображения адреса для вёрстки Font-Awesome \r\n */\r\n static get FontAwesomeHtmlTemplates(): TAddressHtmlTemplates {\r\n return Object.assign(this.DefaultHtmlTemplates, {\r\n typeIcon: '',\r\n });\r\n }\r\n\r\n /**\r\n * Html-шаблоны отображения адреса для вёрстки Mat-Design\r\n */\r\n static get MaterialHtmlTemplates(): TAddressHtmlTemplates {\r\n return Object.assign(this.DefaultHtmlTemplates, {\r\n typeIcon: '{{typeIcon}}',\r\n });\r\n }\r\n\r\n constructor(source?: TAddressSource) {\r\n this.assign(source);\r\n }\r\n\r\n /** Исходный объект */\r\n Source: TAddressSource;\r\n\r\n /** Тип адресного сервиса, создавшего адрес */\r\n AddressServiceType?: App.AddressServiceType;\r\n\r\n /** Широта */\r\n Lat: number = null;\r\n /** Долгота */\r\n Lng: number = null;\r\n\r\n /** Широта */\r\n get lat(): number { return this.Lat }\r\n /** Долгота */\r\n get lng(): number { return this.Lng }\r\n\r\n /** Полный адрес */\r\n Address: string;\r\n\r\n /** Номер квартиры/офиса */\r\n Number: string;\r\n\r\n /** Дополнительная информация */\r\n Details: string;\r\n\r\n\r\n /** Подъезд */\r\n Entrance?: string;\r\n /** Код подъезда */\r\n EntranceCode?: string;\r\n /** Этаж */\r\n Floor?: string;\r\n /** Этажность */\r\n FloorNumber?: number;\r\n /** Вход */\r\n Entry?: string;\r\n\r\n /** Двухбуквенный код страны в формате ISO 3166-1 alpha-2 */\r\n CountryCode?: string;\r\n /** Наименование страны */\r\n Country?: string;\r\n\r\n /** Код административной единицы в государственной классификации */\r\n RegionCode?: string;\r\n /** Регион (область) */\r\n Region?: string;\r\n\r\n /** Код третьего уровня административно-территориального деления страны (громада) */\r\n Level3Code?: string;\r\n /** Третий уровень административно-территориального деления страны (громада) */\r\n Level3?: string;\r\n\r\n /** Код административной единицы в государственной классификации */\r\n AreaCode?: string;\r\n /** Областной район */\r\n Area?: string;\r\n\r\n /** Код административной единицы в государственной классификации */\r\n CityCode?: string;\r\n /** Тип города (населённого пункта) (город, пгт, село) */\r\n CityType?: App.CityType;\r\n /** Город (населённый пункт) */\r\n City?: string;\r\n\r\n /** Городской район */\r\n District?: string;\r\n /** Улица **/\r\n Street?: string;\r\n /** Номер дома */\r\n HouseNumber?: string;\r\n /** Наименование (индекс) дороги (например M10) */\r\n Road?: string;\r\n /** Километр дороги */\r\n RoadKilometer?: number;\r\n /** Почтовый код (индекс) */\r\n PostCode?: string;\r\n /** Наименование POI */\r\n PoiName?: string;\r\n /** Уточнение адреса */\r\n ExtraInfo?: string;\r\n\r\n /** Границы адреса (если адрес не является точкой) */\r\n BoundingBox?: string;\r\n\r\n /**\r\n * Название иконки для отрисовки маркера адреса. Используется в качестве параметра typIcon.\r\n * Для FontAvesome вёрстки это может быть значение 'map-marker'\r\n * Для MatDesign вёрстки это может быть значение 'location_on'\r\n */\r\n TypeIcon?: string;\r\n\r\n get latLngTuple(): LatLngTuple { return this.lat && this.lng ? [this.lat, this.lng] : null; }\r\n\r\n get position(): Position { return this.lat && this.lng ? [this.lng, this.lat] : null; }\r\n\r\n get latLngLiteral(): LatLngLiteral { return this.lat && this.lng ? { lat: this.lat, lng: this.lng } : null; }\r\n\r\n get latLng(): LatLng { return this.lat && this.lng ? latLng(this.lat, this.lng) : null; }\r\n\r\n protected getCenter(): LatLngExpression { return this.Lat && this.Lng ? { lat: this.Lat, lng: this.Lng } : null; }\r\n protected setCenter(p: LatLngExpression) {\r\n if (!LeafletHelper.isLatLngExpression(p, e => [this.Lat, this.Lng] = [e.lat, e.lng])) {\r\n [this.Lat, this.Lng] = [null, null];\r\n }\r\n if (this.Source instanceof AddressSource)\r\n this.Source.setCenter(this.center);\r\n }\r\n\r\n get center(): LatLngExpression { return this.getCenter(); }\r\n set center(p: LatLngExpression) { this.setCenter(p); }\r\n\r\n get isEmpty(): boolean {\r\n return Address.isAddressEmpty(this);\r\n }\r\n\r\n static isAddressEmpty(address: Address | App.AddressInfo): boolean {\r\n return !(address && (address.Address || address.lat || address.lng || address.Number || address.Details));\r\n }\r\n\r\n static AddressValidator(c: AbstractControl): ValidationErrors | null {\r\n return Address.isAddressEmpty(c.value) ? { required: true } : null;\r\n }\r\n\r\n clear() {\r\n this.assign({});\r\n }\r\n\r\n assign(source: TAddressSource) {\r\n source = source || new AppAddressInfoSource(this, this);\r\n\r\n if (source instanceof Address) {\r\n this.assign(new AppAddressInfoSource(this, source));\r\n if (source.Source)\r\n this.assign(source.Source);\r\n }\r\n else if (source instanceof AddressSource) {\r\n source.assignAddress(this);\r\n }\r\n else if (LeafletHelper.isPoint(source, p => this.center = <[number, number]>p.coordinates)) { }\r\n //else if (LeafletHelper.isLatLngExpression(source, x => this.center = [x.lng, x.lat])) { } // не требуется, т.к. это равносильно App.AddressInfo\r\n // Это может быть либо источник данных для соответствующего AddressSource\r\n else if (AddressSource.getSource(this, source, s => this.assign(s))) { }\r\n // либо App.AddressInfo\r\n else {\r\n this.assign(new AppAddressInfoSource(this, source));\r\n }\r\n }\r\n\r\n toAddressInfo(): App.AddressInfo {\r\n return {\r\n AddressServiceType: this.AddressServiceType || undefined,\r\n\r\n Address: this.Address || undefined,\r\n lat: this.lat,\r\n lng: this.lng,\r\n Number: this.Number || undefined,\r\n Details: this.Details || undefined,\r\n \r\n Entrance: this.Entrance || undefined,\r\n EntranceCode: this.EntranceCode || undefined,\r\n Entry: this.Entry || undefined,\r\n Floor: this.Floor || undefined,\r\n FloorNumber: this.FloorNumber || undefined,\r\n\r\n CountryCode: this.CountryCode || undefined,\r\n Country: this.Country || undefined,\r\n RegionCode: this.RegionCode || undefined,\r\n Region: this.Region || undefined,\r\n AreaCode: this.AreaCode || undefined,\r\n Area: this.Area || undefined,\r\n Level3Code: this.Level3Code || undefined,\r\n Level3: this.Level3 || undefined,\r\n CityType: this.CityType || undefined,\r\n CityCode: this.CityCode || undefined,\r\n City: this.City || undefined,\r\n District: this.District || undefined,\r\n Street: this.Street || undefined,\r\n HouseNumber: this.HouseNumber || undefined,\r\n Road: this.Road || undefined,\r\n RoadKilometer: this.RoadKilometer || undefined,\r\n PostCode: this.PostCode || undefined,\r\n PoiName: this.PoiName || undefined,\r\n ExtraInfo: this.ExtraInfo || undefined,\r\n BoundingBox: this.BoundingBox || undefined,\r\n }\r\n }\r\n\r\n clone(address?: string, source?: TAddressSource): Address {\r\n const res = new Address(this);\r\n address = address || res.Address;\r\n if (source) res.assign(source);\r\n if (address) res.Address = address;\r\n return res;\r\n }\r\n\r\n /** Шаблоны для формирования html-представления адреса */\r\n getHtmlTemplates(): TAddressHtmlTemplates {\r\n return Address.HtmlTemplates || (Address.HtmlTemplates = Address.DefaultHtmlTemplates);\r\n }\r\n\r\n displayAddInfo(html?: boolean, includeNumber?: boolean, includeDetails?: boolean): string {\r\n let res;\r\n\r\n let number = '';\r\n let floor = '';\r\n let entrance = '';\r\n let road = '';\r\n\r\n if (includeNumber && this.Number) {\r\n number = `кв. ${this.Number}`;\r\n }\r\n if (this.Floor) {\r\n floor = `этаж ${this.Floor}`;\r\n if (this.FloorNumber)\r\n floor += `/${this.FloorNumber}`;\r\n }\r\n if (this.Entrance) {\r\n entrance = `подъезд ${this.Entrance}`;\r\n if (this.EntranceCode)\r\n entrance += ` (код ${this.EntranceCode})`;\r\n }\r\n if (this.Road) {\r\n road = `${this.Road}`;\r\n if (this.RoadKilometer)\r\n road += ` (${this.RoadKilometer} км)`;\r\n }\r\n const entry = this.Entry;\r\n const details = includeDetails ? this.Details : '';\r\n\r\n if (html) {\r\n const tmpl = this.getHtmlTemplates();\r\n res = new StringBuilder()\r\n .append({ number }, tmpl.number)\r\n .append({ entrance }, tmpl.entrance)\r\n .append({ floor }, tmpl.floor)\r\n .append({ entry }, tmpl.entry)\r\n .append({ road }, tmpl.road)\r\n .append({ details }, tmpl.details)\r\n .toString();\r\n } else {\r\n res = number\r\n .AppendText(entrance, ', ')\r\n .AppendText(floor, ', ')\r\n .AppendText(entry, ', ')\r\n .AppendText(road, ', ')\r\n .AppendText(details, ', ');\r\n }\r\n\r\n return res;\r\n }\r\n\r\n displayAddress(html?: boolean, includeAddInfo?: boolean): string {\r\n let res = '';\r\n\r\n let typeIcon = this.TypeIcon || Address.DefaultTypeIcon;\r\n\r\n includeAddInfo = ifEmpty(includeAddInfo, html);\r\n const addInfo = includeAddInfo ? this.displayAddInfo(html, false, !!this.Details) : '';\r\n\r\n let country = this.CountryCode === Address.defaultCountryCode ? '' : this.Country;\r\n\r\n let region = this.Region;\r\n let area = this.Area;\r\n let level3 = this.Level3;\r\n let city = this.City;\r\n let district = this.District;\r\n let street = this.Street;\r\n let poiName = this.PoiName;\r\n let number = this.HouseNumber;\r\n if (this.Number && includeAddInfo) {\r\n number += `, ${this.Number}`;\r\n }\r\n\r\n let addressInfo = this.ExtraInfo;\r\n\r\n const tmplValues = { typeIcon, country, region, area, level3, city, district, street, poiName, number, addressInfo };\r\n\r\n // компоновка\r\n if (html) {\r\n const tmpl = this.getHtmlTemplates();\r\n res = new StringBuilder()\r\n .append(tmplValues, tmpl.typeIcon, ' ')\r\n .append(tmplValues, tmpl.poiName)\r\n .append(tmplValues, tmpl.street)\r\n .append(tmplValues, tmpl.number)\r\n .append(tmplValues, tmpl.addressInfo)\r\n .append(tmplValues, tmpl.district)\r\n .append(tmplValues, tmpl.city)\r\n .append(tmplValues, tmpl.level3)\r\n .append(tmplValues, tmpl.area)\r\n .append(tmplValues, tmpl.region)\r\n .append(tmplValues, tmpl.country)\r\n .append(addInfo, null, '', ', ')\r\n .toString();\r\n } else {\r\n res = (poiName || '')\r\n .AppendText(street, ', ')\r\n .AppendText(number, ', ')\r\n .AppendText(addressInfo, ' ')\r\n .AppendText(district, ', ')\r\n .AppendText(city, ', ')\r\n .AppendText(level3, ', ')\r\n .AppendText(area, ', ')\r\n .AppendText(region, ', ')\r\n .AppendText(country, ', ')\r\n .AppendText(addInfo, ', ');\r\n }\r\n return res;\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/address/Address.ts","import { EventEmitter } from '@angular/core';\r\nimport { Icon, BaseIconOptions, Point, PointExpression } from 'leaflet';\r\nimport { isArray, isEmpty, UssHttp, UssHttpHelper } from '@core.module';\r\nimport * as _ from 'lodash';\r\nimport { CanvasMarker } from '../markers/CanvasMarker';\r\nimport { LEAFLET_ASSETS } from '../utils/LeafletHelper';\r\n\r\n\r\nexport declare type TRotationOrigin = 'left top' | 'left center' | 'left bottom' |\r\n 'center top'| 'center center' | 'center bottom' |\r\n 'right top' | 'right center' | 'right bottom' | string;\r\nexport declare type TRotationUnits = 'deg' | 'rad' | 'grad' | 'turn';\r\n\r\nconst SVG_ICON_CACHE: [(path: string) => string | EventEmitter] = {};\r\nconst MAP_ICON_CACHE: [(hash: string) => UssMapIcon] = {};\r\n\r\nexport function toPoint(point: PointExpression): Point;\r\nexport function toPoint(x: number, y: number, round?: boolean): Point;\r\nexport function toPoint(x, y?, round?) {\r\n if (x instanceof Point) {\r\n return x;\r\n }\r\n if (isArray(x)) {\r\n return new Point(x[0], x[1]);\r\n }\r\n if (x === undefined || x === null) {\r\n return x;\r\n }\r\n if (x && typeof x === 'object' && 'x' in x && 'y' in x) {\r\n return new Point((x).x, (x).y);\r\n }\r\n return new Point(x, y, round);\r\n}\r\n\r\nexport interface UssMapIconOptions extends BaseIconOptions {\r\n /** Источник данных для иконки. Это может быть ссылка на файл, название svg-файла в папке стандартных иконок либо svg-текст */\r\n readonly src?: string;\r\n /** Название символа фонта, описывающего иконку, например `home`. Если указан src - это значение игнорируется. */\r\n readonly fontIcon?: string;\r\n /** Префикс к названию иконки фонта. По умолчанию `fa` (FontAwesome) */\r\n readonly fontIconPrefix?: string;\r\n /** Цвет иконки. Имеет значение для фонтовых иконок и для некоторых svg-файлов */\r\n readonly color?: string;\r\n\r\n /** Кастомная отрисовка маркера (только для CanvasMarker) */\r\n readonly onDrawing?: (ctx: CanvasRenderingContext2D, bounds: [number, number, number, number], img: CanvasImageSource, angle: number, marker: CanvasMarker) => void;\r\n}\r\n\r\nexport class UssMapIcon extends Icon {\r\n\r\n public static create(options: UssMapIconOptions, noCache?: boolean): UssMapIcon {\r\n let res;\r\n if (!noCache) {\r\n const hash = JSON.stringify(options || {}).ToMd5();\r\n res = MAP_ICON_CACHE[hash];\r\n if (isEmpty(res)) {\r\n res = new UssMapIcon(options);\r\n MAP_ICON_CACHE[hash] = res;\r\n }\r\n } else {\r\n res = new UssMapIcon(options);\r\n }\r\n return res;\r\n }\r\n\r\n private constructor(options: UssMapIconOptions) {\r\n super(options);\r\n this._color = options.color;\r\n }\r\n\r\n private _color: string;\r\n\r\n /** Имя файла для стандартной иконки */\r\n getStandardIconName(forSvgSprite?: boolean): string {\r\n // стандартный иконки находятся в каталоге `${LEAFLET_ASSETS}/svg/{iconFileName}.svg`\r\n let res = null;\r\n const iconUrl = (forSvgSprite && this.options ? this.options['iconUrlSvgSprite'] : null) || this.options?.iconUrl;\r\n if (iconUrl?.startsWith(`${LEAFLET_ASSETS}/svg/`) && iconUrl?.endsWith(`.svg`)) {\r\n res = iconUrl.substr(`${LEAFLET_ASSETS}/svg/`.length, iconUrl.length - `${LEAFLET_ASSETS}/svg/`.length - `.svg`.length);\r\n }\r\n return res;\r\n }\r\n\r\n /** Значение цвета, явно установленного через метод setColor */\r\n getColor(): string { return this._color; }\r\n\r\n /** Установить цвет иконки.\r\n * Один раз установленный цвет не меняется, если не задан параметр forced.\r\n */\r\n setColor(color: string, forced?: boolean): UssMapIcon {\r\n let res: UssMapIcon = this; \r\n if (this._color !== color && (!this._color || forced))\r\n {\r\n res = this.setOptions({ color });\r\n res._color = color;\r\n }\r\n return res;\r\n }\r\n\r\n\r\n setOptions(options?: UssMapIconOptions, noCache?: boolean): UssMapIcon {\r\n const opt = _.assign({}, this.options, options);\r\n return UssMapIcon.create(opt, noCache);\r\n }\r\n\r\n static makeSvg(parent: HTMLElement, content: string, color: string): HTMLElement {\r\n const svgDiv = document.createElement('div');\r\n svgDiv.innerHTML = content;\r\n const svg = svgDiv.children[0];\r\n // Remove any invalid XML tags as per http://validator.w3.org\r\n //svg = svg.removeAttr('xmlns:a');\r\n //UssMapIcon.applyRotation(svg, 45);\r\n if (color) {\r\n svg.style.fill = color;\r\n }\r\n if (parent) {\r\n parent.innerHTML = '';\r\n parent.appendChild(svg);\r\n }\r\n return svg;\r\n }\r\n\r\n static createSvgElement(src: string, color?: string, parent?: HTMLElement): HTMLElement | Promise {\r\n const svgContent = SVG_ICON_CACHE[src];\r\n if (!svgContent || svgContent instanceof EventEmitter) {\r\n return new Promise(resoler => {\r\n if (!svgContent) {\r\n const emitter = new EventEmitter();\r\n SVG_ICON_CACHE[src] = emitter;\r\n UssHttp.instance.get(src).subscribe(r => {\r\n const content = r.text();\r\n SVG_ICON_CACHE[src] = content;\r\n resoler(UssMapIcon.makeSvg(parent, content, color));\r\n emitter.emit(content);\r\n });\r\n } else if (svgContent instanceof EventEmitter) {\r\n SVG_ICON_CACHE[src].subscribe(content => {\r\n resoler(UssMapIcon.makeSvg(parent, content, color));\r\n });\r\n }\r\n });\r\n } else {\r\n return UssMapIcon.makeSvg(parent, svgContent, color);\r\n }\r\n }\r\n\r\n\r\n createIcon(oldIcon?: HTMLElement): HTMLElement {\r\n let res: HTMLElement | HTMLDivElement;\r\n if (this.options.src || this.options.iconUrl && this.options.iconUrl.EndsWith('.svg', true)) {\r\n this.options.iconSize = toPoint(this.options.iconSize || [22, 22]);\r\n const src = this.options.src || this.options.iconUrl;\r\n if (src.EndsWith('.svg', true)) {\r\n res = oldIcon && oldIcon.tagName === 'DIV' ? oldIcon : document.createElement('div');\r\n this['_setIconStyles'](res, 'icon');\r\n UssMapIcon.createSvgElement(src, this.options.color, res);\r\n } else {\r\n res = oldIcon && oldIcon.tagName === 'DIV' ? oldIcon : document.createElement('div');\r\n res.innerHTML = src;\r\n this['_setIconStyles'](res, 'icon');\r\n if (this.options.color) {\r\n res.style.color = this.options.color;\r\n }\r\n /*\r\n if (this.options.bgPos) {\r\n const bgPos = toPoint(options.bgPos);\r\n res.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\r\n }\r\n */\r\n }\r\n } else if (this.options.fontIcon) {\r\n this.options.iconSize = toPoint(this.options.iconSize || [16, 16]);\r\n let fontIcon = this.options.fontIcon;\r\n res = oldIcon && oldIcon.tagName === 'I' ? oldIcon : document.createElement('i');\r\n const prefix = this.options.fontIconPrefix || 'fa';\r\n if (fontIcon.indexOf('fa-') !== 0) fontIcon = `fa-${fontIcon}`;\r\n this['_setIconStyles'](res, 'icon');\r\n res.classList.add(prefix, fontIcon);\r\n res.style.fontSize = `${this.options.iconSize['y'] || this.options.iconSize['x']}px`;\r\n if (this.options.color) {\r\n res.style.color = this.options.color;\r\n }\r\n } else {\r\n this.options.iconSize = toPoint(this.options.iconSize || [22, 22]);\r\n res = super.createIcon(oldIcon);\r\n }\r\n res.classList.add('uss-map-icon');\r\n return res;\r\n }\r\n createShadow(oldIcon?: HTMLElement): HTMLElement {\r\n return super.createShadow(oldIcon);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/map-icons/map-icon.ts","import { AfterContentChecked, AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, NgZone, OnDestroy, OnInit, Optional, Renderer2, VERSION, ViewContainerRef } from '@angular/core';\r\nimport { Subscription, Observable, Subject } from 'rxjs';\r\nimport { fromEvent } from 'rxjs/observable/fromEvent';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { IUssTranslateService, translate } from './interfaces/core-translate.service';\r\nimport { IUssAuthService, auth } from './interfaces/core-auth.service';\r\nimport { isNotEmpty, isArray, bool, debounce, throttle, clearDebounce, isEmpty, clearThrottle, isDevMode, ifEmpty, IDestroyable, uid, runInterval, detectChanges, colorToRgb } from './utils/utils';\r\nimport { msg } from './interfaces/core-messages.service';\r\nimport { TUssEventHandler } from './interfaces/core-events.service';\r\nimport * as moment from 'moment';\r\nimport { isDesktopView, isLandscapeView, isMobileView, isPortraitView, isTabletView } from './utils/WindowUtils';\r\n\r\nfunction updateAppSettings(appSettings: App.TAppSettings): App.TAppSettings {\r\n appSettings = appSettings || { noBackend: true, $waitLoading: Promise.resolve() };\r\n appSettings.hasFeature = (featureName: string, defaultValue?: boolean) => {\r\n defaultValue = !!defaultValue;\r\n let res = null;\r\n try {\r\n if (featureName) {\r\n if (typeof appSettings.$$Features === 'string') {\r\n try {\r\n appSettings.$$Features = JSON.parse(appSettings.$$Features);\r\n if (!isArray(appSettings.$$Features)) {\r\n delete appSettings.$$Features;\r\n }\r\n } catch(e) {\r\n delete appSettings.$$Features;\r\n } \r\n }\r\n res = appSettings.$$Features?.Contains(featureName, true);\r\n if (!res) {\r\n res = appSettings.$$Features?.Contains(`-${featureName}`, true);\r\n if (res) {\r\n res = false;\r\n } else {\r\n res = null;\r\n }\r\n }\r\n }\r\n res = ifEmpty(res, defaultValue);\r\n } catch (e) {} \r\n return res;\r\n }\r\n return appSettings;\r\n}\r\n\r\nwindow['$appSettings'] = updateAppSettings(window['$appSettings']);\r\n\r\nexport class AppBase implements IDestroyable, OnInit, AfterViewInit, AfterViewChecked, AfterContentChecked, OnDestroy {\r\n\r\n $appSettings: App.TAppSettings;\r\n\r\n protected _subscriptions: any[] = [];\r\n\r\n\r\n public colorToRgb(color: string, opacity: number) {\r\n return isEmpty(color) ? null : colorToRgb(color, opacity);\r\n }\r\n\r\n\r\n /** Признак того, что компонент будет уведомлять свои вложенные компоненты */\r\n needNotifyChildComponents: boolean = false;\r\n\r\n protected zone: NgZone;\r\n public changeDetector: ChangeDetectorRef;\r\n public elementRef: ElementRef;\r\n public nativeElement: THTMLElement;\r\n public renderer: Renderer2;\r\n public parentComponent: Component | AppBase;\r\n public childComponents: AppBase[] = [];\r\n public get isProduction(): boolean { return !isDevMode(); }\r\n public get isDevelopment(): boolean { return isDevMode(); }\r\n public document: Document = document;\r\n public window: Window = window;\r\n\r\n public get isMobile() { return isMobileView(); }\r\n public get isTablet() { return isTabletView(); }\r\n public get isDesktop() { return isDesktopView(); }\r\n public get isPortrait() { return isPortraitView(); }\r\n public get isLandscape() { return isLandscapeView(); }\r\n\r\n /** Ссылка на сервис локализации. */\r\n public translate: IUssTranslateService = translate;\r\n\r\n /** Ссылка на сервис авторизации. */\r\n public auth: IUssAuthService = auth;\r\n\r\n /** Ссылка на консоль. */\r\n public console: Console = window.console;\r\n\r\n /** Ссылка на alert менеджер. */\r\n public alert: (msg?: any) => void = window.alert;\r\n\r\n /** Ссылка на moment-js. */\r\n public moment = moment;\r\n\r\n /** Значение хостового атрибута, используемого для инкапсуляции стилей компонента. Если инкапсуляция отключена - пустое значение. */\r\n protected stylesEncapsulationAttribute : string = '';\r\n\r\n /** Значение атрибутов контента, используемых для инкапсуляции стилей компонента. Если инкапсуляция отключена - пустой список. */\r\n protected stylesContentEncapsulationAttributes : string[] = [];\r\n\r\n /** Уникальный идентификатор экземпляра объекта */\r\n public $uid = `${this.constructor.name}-${uid()}`;\r\n\r\n /**\r\n * Используйте для автоматической отписки подписок при уничтожении объекта.\r\n * someObservable.pipe(takeUntil(this.destroyed$)).subscribe(...)\r\n */\r\n readonly destroyed$ = new Subject();\r\n\r\n /** Признак того, что объект уничтожен. Устанавливается в деструкторе. */\r\n public isDestroyed = false;\r\n\r\n protected ngOnInitCalled: boolean;\r\n protected ngAfterViewInitCalled: boolean;\r\n protected ngAfterViewCheckedCalled: boolean;\r\n protected ngAfterContentCheckedCalled: boolean;\r\n /** Вызывается в таймауте, установленном в ngAfterViewInit() */\r\n protected isRenderCompleted: boolean;\r\n\r\n private _checkerPromise: any;\r\n\r\n constructor(@Optional() public viewContainer?: ViewContainerRef, @Optional() private skipChecking?: boolean) {\r\n this.$appSettings = updateAppSettings($appSettings);\r\n if (viewContainer) {\r\n this.zone = viewContainer.injector.get(NgZone);\r\n this.changeDetector = viewContainer.injector.get(ChangeDetectorRef);\r\n this.elementRef = viewContainer.element;\r\n this.nativeElement = this.elementRef.nativeElement;\r\n this.renderer = viewContainer.injector.get(Renderer2);\r\n viewContainer['$component'] = this;\r\n this.nativeElement['$component'] = this;\r\n if (+VERSION.major < 8) {\r\n // не работает в Angular8+ \r\n this.parentComponent = (this.viewContainer.injector).view.component;\r\n } else {\r\n let parent;\r\n if (+VERSION.major < 10) {\r\n // работает в Angular 8 и 9\r\n parent = this.viewContainer['_hostView'] && this.viewContainer['_hostView'][0];\r\n } else {\r\n // работает в Angular 10+\r\n parent = this.viewContainer['_hostLView'] && this.viewContainer['_hostLView'][0];\r\n }\r\n while (parent && !this.parentComponent) {\r\n this.parentComponent = parent['$component'];\r\n parent = parent.parentElement;\r\n }\r\n }\r\n\r\n if (this.parentComponent instanceof AppBase) {\r\n this.parentComponent.childComponents.push(this);\r\n }\r\n\r\n if (this.needCheckingNgEvents()) {\r\n this._checkerPromise = setTimeout(() => {\r\n this._check('ngOnInit');\r\n this._check('ngAfterViewInit');\r\n this._check('ngAfterViewChecked');\r\n this._check('ngAfterContentChecked');\r\n }, 1000);\r\n }\r\n }\r\n }\r\n\r\n protected needCheckingNgEvents() {\r\n let res = !this.skipChecking && this.isDevelopment;\r\n if (res) {\r\n res = isEmpty(this.parentComponent)\r\n || typeof this.parentComponent['needCheckingNgEvents'] !== 'function'\r\n || this.parentComponent['needCheckingNgEvents']();\r\n }\r\n return res;\r\n }\r\n\r\n public skipCheckingNgEvents() {\r\n if (this._checkerPromise) {\r\n clearTimeout(this._checkerPromise);\r\n this._checkerPromise = undefined;\r\n }\r\n }\r\n\r\n private _check(method: string) {\r\n if (!this[`${method}Called`] && this.needCheckingNgEvents()) {\r\n msg.warning(`${this.constructor.name}: You should call 'super.${method}()'.`);\r\n }\r\n }\r\n\r\n /**\r\n * Посылает всем дочерним компонентам уведомление о событии.\r\n * Дочерние компоненты в свою очередь отправляют это уведомление своим дочерним компонентам.\r\n * @param eventName наименование события\r\n */\r\n public notifyChildComponents(eventName: string, sender?: AppBase): void {\r\n if ((sender || this).needNotifyChildComponents) {\r\n if (sender) {\r\n for (let component of this.childComponents) {\r\n component.notifyChildComponents(eventName, sender);\r\n }\r\n if (sender !== this) {\r\n if (typeof this[`parent_${eventName}`] === 'function') {\r\n this[`parent_${eventName}`](sender);\r\n }\r\n }\r\n } else {\r\n this.debounce(() => this.notifyChildComponents(eventName, this), 1, `notifyChildComponents:${eventName}`);\r\n }\r\n }\r\n }\r\n\r\n public get isElementVisible(): boolean {\r\n /*\r\n return isNotEmpty(this.elementRef)\r\n && !!(this.elementRef.nativeElement.offsetWidth\r\n || this.elementRef.nativeElement.offsetHeight\r\n || this.elementRef.nativeElement.getClientRects().length);\r\n */\r\n return isNotEmpty(this.nativeElement) && !!this.nativeElement.offsetParent;\r\n }\r\n\r\n\r\n public subscribe(subscription: Subscription | (() => Subscription)): void;\r\n public subscribe(subject: Observable, handler: TUssEventHandler): void;\r\n subscribe(p1, p2?) {\r\n if (p1 instanceof Observable) {\r\n this._subscriptions.push(p1.subscribe(p2));\r\n } else {\r\n let subscription: Subscription | (() => Subscription) = p1;\r\n if (typeof subscription === 'function') {\r\n subscription = subscription();\r\n }\r\n if (isNotEmpty(subscription)) {\r\n this._subscriptions.push(subscription);\r\n }\r\n }\r\n }\r\n\r\n public unSubscribeAll() {\r\n if (isArray(this._subscriptions)) {\r\n this._subscriptions.forEach(s => {\r\n if (s && typeof s.unsubscribe === 'function') {\r\n s.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.isDestroyed = true;\r\n this.skipChecking = true;\r\n this.skipCheckingNgEvents();\r\n this.unSubscribeAll();\r\n this.clearDebounce();\r\n this.clearThrottle();\r\n this.destroyed$.next(true);\r\n this.notifyChildComponents('ngOnDestroy');\r\n }\r\n\r\n public bool(s: string | boolean, defValue: boolean = false): boolean {\r\n return bool(s, defValue);\r\n }\r\n\r\n ngOnInit() {\r\n this.ngOnInitCalled = true;\r\n this.updateRootComponent();\r\n this.notifyChildComponents(\"ngOnInit\");\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.ngAfterViewInitCalled = true;\r\n setTimeout(() => {\r\n this.isRenderCompleted = true;\r\n this.onRenderCompleted();\r\n }, 0);\r\n this.notifyChildComponents(\"ngAfterViewInit\");\r\n }\r\n\r\n /** Вызывается в таймауте, установленном в ngAfterViewInit() */\r\n onRenderCompleted(): void {\r\n this.notifyChildComponents(\"onRenderCompleted\");\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.ngAfterContentCheckedCalled = true;\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.ngAfterViewCheckedCalled = true;\r\n }\r\n\r\n /** Устанавливает корневому элементу компонента атрибут инкапсуляции, так, что к нему можно применять стили компонента. */\r\n updateRootComponent() {\r\n if (this.nativeElement) {\r\n const attrHostName = Enumerable.from(this.nativeElement.attributes).select(a => a.name).firstOrDefault(s => s.startsWith('_nghost-'));\r\n if (attrHostName) {\r\n this.stylesEncapsulationAttribute = attrHostName.replace('_nghost-', '_ngcontent-');\r\n this.renderer.setAttribute(this.nativeElement, this.stylesEncapsulationAttribute, '');\r\n }\r\n this.stylesContentEncapsulationAttributes = Enumerable.from(this.nativeElement.attributes).select(a => a.name).where(s => s.startsWith('_ngcontent-')).toArray();\r\n }\r\n }\r\n\r\n debounce(fn: Function, debounceTime?: number, context?: any) {\r\n debounce(fn, debounceTime, `${this.$uid}__${context || ''}`);\r\n }\r\n\r\n throttle(fn: Function, debounceTime?: number, context?: any) {\r\n throttle(fn, debounceTime, `${this.$uid}__${context || ''}`);\r\n }\r\n\r\n clearDebounce(context?: any) {\r\n clearDebounce(`${this.$uid}__${context || ''}`, isEmpty(context));\r\n }\r\n\r\n clearThrottle(context?: any) {\r\n clearThrottle(`${this.$uid}__${context || ''}`, isEmpty(context));\r\n }\r\n\r\n detectChanges() {\r\n try {\r\n detectChanges(this.changeDetector);\r\n this.notifyChildComponents(\"detectChanges\");\r\n } catch (e) {} \r\n }\r\n\r\n markForCheck() {\r\n try {\r\n this.changeDetector && !(this.changeDetector).destroyed && this.changeDetector.markForCheck();\r\n this.notifyChildComponents(\"markForCheck\");\r\n } catch (e) {} \r\n }\r\n\r\n protected observeEvent(eventName: string, fn: (e: Event) => void, debounceTime?: number | boolean): this;\r\n protected observeEvent(inputElement: Element, eventName: string, fn: (e: Event) => void, debounceTime?: number | boolean): this;\r\n protected observeEvent(p1, p2, p3?, p4?) {\r\n let inputElement;\r\n let eventName;\r\n let fn;\r\n let debouncetime;\r\n if (p1 instanceof Element) {\r\n inputElement = p1;\r\n eventName = p2;\r\n fn = p3;\r\n debouncetime = p4;\r\n } else {\r\n inputElement = this.nativeElement;\r\n eventName = p1;\r\n fn = p2;\r\n debouncetime = p3;\r\n }\r\n if (inputElement) {\r\n let obs = fromEvent(inputElement, eventName);\r\n if (isNotEmpty(debouncetime) && debouncetime !== false) {\r\n if (debouncetime === true) {\r\n debouncetime = 50;\r\n }\r\n obs = obs.pipe(debounceTime(debouncetime));\r\n }\r\n this.subscribe(obs, (x: Event) => {\r\n //console.log(x, eventName);\r\n fn(x);\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Периодически вызывает указанный метод через указанный промежуток после окончания выполнения операции.\r\n * Если метод возвращает промис или обозреватель - следующий запуск будет запланирован после окончания выполнения промиса или обозревателя.\r\n * Автоматически останавливает цикл при уничтожении компонента.\r\n * Возвращает объект в котором содержится хандлер для ручной отмены операции.\r\n * @param action выполняемое действие\r\n * @param periodMs период выполнения\r\n * @param firstStartImmediately следует ли выполнить операцию первый раз сразу после вызова\r\n * @param stopWhenException остановить вызовы если произошла ошибка\r\n */\r\n runInterval(action: (firstStartImmediately: boolean) => void | Promise | Observable, periodMs: number, firstStartImmediately?: boolean, stopWhenException?: boolean): { id: number, $unsubscribe: () => void } {\r\n return runInterval(action, periodMs, firstStartImmediately, stopWhenException, this);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/app.base.ts","import { SetupSignleton } from './setup-singleton.decorator';\r\nimport { MESSAGES_SERVICE_TOKEN } from './core-interface.tokens';\r\nimport { htmlEscape, colorLighten } from '../utils/utils';\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nexport enum MessageType {\r\n Info = 'info',\r\n Error = 'danger',\r\n Success = 'success',\r\n Warning = 'warning',\r\n Log = 'log',\r\n RuntimeError = 'RuntimeError',\r\n}\r\n\r\nexport interface IUssMessagesService {\r\n /**\r\n * Displays informational message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n info(message: string, closeAfter?: number | boolean): void;\r\n\r\n /**\r\n * Displays informational message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n success(message: string, closeAfter ?: number | boolean): void;\r\n\r\n /**\r\n * Displays warning message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n warning(message: string, closeAfter ?: number | boolean): void;\r\n\r\n /**\r\n * Displays error message to console and to informational messages panel, if it is avaliable.\r\n * @param message Error text or object from which the text will be extracted as obj.responseText or obj.status + ' ' + obj.statusText\r\n * @param closeAfter Время, после которого окно с ошибкой будет закрыто\r\n */\r\n error(message: string | Object, closeAfter ?: number | boolean): void;\r\n\r\n /**\r\n * Displays runtime error message to console and to informational messages panel, if it is avaliable.\r\n * Use this type exactly for runtime errors, not for application errors.\r\n * These error displays only in debug mode.\r\n * @param message Error text or object from which the text will be extracted as obj.responseText or obj.status + ' ' + obj.statusText\r\n * @param closeAfter Время, после которого окно с ошибкой будет закрыто\r\n */\r\n runtimeError(message: string | Object, closeAfter ?: number | boolean): void;\r\n\r\n /**\r\n * Displays string in console.\r\n * @param message Text to display in console.\r\n */\r\n log(message: string): void;\r\n\r\n // ReSharper disable once InconsistentNaming\r\n /**\r\n * Displays string in console only in debug mode (if App.IsDebug == true).\r\n * @param message Text to display in console.\r\n */\r\n debug(message: string);\r\n\r\n /**\r\n * Removes all messages of particular type.\r\n * If no types not set - all messages will be removed.\r\n */\r\n clear(types ?: MessageType): void;\r\n} \r\n\r\n@Injectable()\r\nexport class DefaultMessagesService implements IUssMessagesService {\r\n\r\n private static errorHtml(logMessage: string, errorType?: string): string {\r\n errorType = errorType || 'negative';\r\n const message = `
`\r\n + `${htmlEscape(logMessage).replace(/\\[hr\\/\\]/g, '
').replace(/\\[br\\/\\]/g, '
')}`\r\n + `
`;\r\n return message;\r\n }\r\n\r\n public static showError(type: MessageType, messageContent: HTMLElement, logMessage: string, closeAfter?: number | boolean): boolean {\r\n const messageContentContainer = messageContent;\r\n const msgClose = messageContentContainer.querySelector('.close');\r\n messageContent = messageContent.querySelector('.content') || messageContent;\r\n let errorType = '';\r\n switch (type) {\r\n case MessageType.Error: case MessageType.RuntimeError: errorType = 'negative'; break;\r\n case MessageType.Info: errorType = 'info'; break;\r\n case MessageType.Warning: errorType = 'warning'; break;\r\n case MessageType.Success: errorType = 'success'; break;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.innerHTML = this.errorHtml(logMessage, errorType);\r\n const contentElement = div.children[0];\r\n const lastMsgElement = messageContent.children[messageContent.children.length - 1];\r\n if (lastMsgElement && lastMsgElement.classList.contains(`${errorType}`)) {\r\n const lastMsg = lastMsgElement.innerHTML;\r\n contentElement.innerHTML = `${lastMsg}
${contentElement.innerHTML}`;\r\n messageContent.removeChild(lastMsgElement);\r\n }\r\n messageContent.appendChild(contentElement);\r\n if (msgClose && !msgClose.onclick) {\r\n msgClose.onclick = () => messageContentContainer.remove();\r\n }\r\n if (typeof closeAfter === 'boolean' && closeAfter) {\r\n closeAfter = 1000;\r\n }\r\n if (closeAfter > 0) {\r\n setTimeout(() => messageContentContainer.remove(), closeAfter);\r\n }\r\n return true;\r\n }\r\n\r\n public static rawOutput(type: MessageType, logMessage: string | any, closeAfter?: number | boolean) {\r\n let rawMessagesContainer = document.querySelector(`div.raw-messages-container`);\r\n if (!rawMessagesContainer) {\r\n rawMessagesContainer = document.createElement('div');\r\n rawMessagesContainer.style.position = 'absolute';\r\n rawMessagesContainer.style.left = '2em';\r\n rawMessagesContainer.style.right = '2em';\r\n rawMessagesContainer.style.top = '1em';\r\n rawMessagesContainer.style.zIndex = '999999';\r\n rawMessagesContainer.className = `raw-messages-container`;\r\n rawMessagesContainer.style.color = 'black';\r\n document.body.appendChild(rawMessagesContainer);\r\n }\r\n\r\n let rawErrorContainer = rawMessagesContainer.querySelector(`div.raw-${type}-container`);\r\n if (!rawErrorContainer) {\r\n let color = 'black';\r\n switch (type) {\r\n case MessageType.Error: case MessageType.RuntimeError: color = 'red'; break;\r\n case MessageType.Info: color = 'blue'; break;\r\n case MessageType.Warning: color = 'orange'; break;\r\n case MessageType.Success: color = 'green'; break;\r\n }\r\n rawErrorContainer = document.createElement('div');\r\n rawErrorContainer.style.padding = '1em';\r\n rawErrorContainer.className = `raw-${type}-container`;\r\n rawErrorContainer.style.marginBottom = '0.5em';\r\n rawErrorContainer.style.border = `1px ${color} solid`;\r\n rawErrorContainer.style.background = colorLighten(color, 90);\r\n rawErrorContainer.style.position = 'relative';\r\n rawMessagesContainer.appendChild(rawErrorContainer);\r\n const rawErrorCloseButton = document.createElement('div');\r\n rawErrorCloseButton.className = 'close';\r\n rawErrorCloseButton.style.position = 'absolute';\r\n rawErrorCloseButton.style.top = '0';\r\n rawErrorCloseButton.style.right = '0';\r\n rawErrorCloseButton.style.color = 'red';\r\n rawErrorCloseButton.style.fontWeight = 'bold';\r\n rawErrorCloseButton.style.cursor = 'pointer';\r\n rawErrorCloseButton.style.padding = '0.1em 0.25em';\r\n rawErrorCloseButton.style.fontSize = '150%';\r\n rawErrorCloseButton.innerHTML = '˟';\r\n rawErrorContainer.appendChild(rawErrorCloseButton);\r\n } else {\r\n logMessage = `[hr/]${logMessage}`;\r\n }\r\n this.showError(type, rawErrorContainer, logMessage, closeAfter);\r\n }\r\n\r\n\r\n info(message: string, closeAfter?: number | boolean): void { console.info(message); DefaultMessagesService.rawOutput(MessageType.Info, message, closeAfter); }\r\n\r\n success(message: string, closeAfter?: number | boolean): void { console.info(message); DefaultMessagesService.rawOutput(MessageType.Success, message, closeAfter); }\r\n\r\n warning(message: string, closeAfter?: number | boolean): void { console.warn(message); DefaultMessagesService.rawOutput(MessageType.Warning, message, closeAfter); }\r\n\r\n error(message: string | Object, closeAfter?: number | boolean): void { console.error(message); DefaultMessagesService.rawOutput(MessageType.Error, message, closeAfter); }\r\n\r\n runtimeError(message: string | Object, closeAfter?: number | boolean): void { console.error(message); DefaultMessagesService.rawOutput(MessageType.RuntimeError, message); }\r\n\r\n log(message: string): void { console.log(message); }\r\n\r\n debug(message: string) { console.debug(message); }\r\n\r\n clear(types?: MessageType): void { }\r\n}\r\n\r\nexport class CoreMessagesService implements IUssMessagesService {\r\n info(message: string, closeAfter?: number | boolean): void { throw new Error('Not implemented'); }\r\n\r\n success(message: string, closeAfter?: number | boolean): void { throw new Error('Not implemented'); }\r\n\r\n warning(message: string, closeAfter?: number | boolean): void { throw new Error('Not implemented'); }\r\n\r\n error(message: string | Object, closeAfter?: number | boolean): void { throw new Error('Not implemented'); }\r\n\r\n runtimeError(message: string | Object, closeAfter?: number | boolean): void { throw new Error('Not implemented'); }\r\n\r\n log(message: string): void { throw new Error('Not implemented'); }\r\n\r\n debug(message: string) {}\r\n\r\n clear(types?: MessageType): void { throw new Error('Not implemented'); }\r\n\r\n @SetupSignleton(MESSAGES_SERVICE_TOKEN, DefaultMessagesService) static instance: IUssMessagesService;\r\n}\r\n\r\nexport const msg: IUssMessagesService = new CoreMessagesService();\r\n\r\nexport function clear() { msg.clear(); }\r\nexport function error(message: string, closeAfter?: number) { msg.error(message, closeAfter); }\r\nexport function info(message: string, closeAfter?: number) { msg.info(message, closeAfter); }\r\nexport function warning(message: string, closeAfter?: number) { msg.warning(message, closeAfter); }\r\nexport function runtimeError(message: string, closeAfter?: number) { msg.runtimeError(message, closeAfter); }\r\nexport function success(message: string, closeAfter?: number) { msg.success(message, closeAfter); }\r\nexport function log(message: string) { msg.log(message); }\r\nexport function debug(message: string) { msg.debug(message); }\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-messages.service.ts","export * from './core-auth.service';\r\nexport * from './core-dialogs.service';\r\nexport * from './core-events.service';\r\nexport * from './core-interface.tokens';\r\nexport * from './core-messages.service';\r\nexport * from './core-resolver.service';\r\nexport * from './core-router.service';\r\nexport * from './core-translate.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/index.ts","import * as ng from '@angular/core';\r\nimport { Injectable, ErrorHandler } from '@angular/core';\r\nimport { Response } from '@angular/http';\r\nimport { msg } from '../interfaces/core-messages.service';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { ifEmpty, debounce, isDevMode } from '../utils/utils';\r\nimport { fromJson, isJsonLike } from '../utils/Json';\r\nimport { translate, UssTranslateSanitizer } from '../interfaces/core-translate.service';\r\nimport { UssHttpHelper } from './http.helper';\r\nimport { auth, ussRouter } from '../interfaces';\r\n\r\nexport namespace Api {\r\n\r\n export enum ResponseType {\r\n Error = 'error',\r\n Ask = 'ask'\r\n }\r\n\r\n export enum AnswerType {\r\n Button = 'button',\r\n RadioButton = 'radio',\r\n CheckBox = 'checkbox',\r\n Action = 'action',\r\n }\r\n\r\n export interface ApiMessage {\r\n message?: string;\r\n translateKey?: string;\r\n args?: object;\r\n }\r\n\r\n export interface ApiResponse extends ApiMessage {\r\n // ReSharper disable once InconsistentNaming\r\n _responseType_?: ResponseType;\r\n isValid?: boolean;\r\n }\r\n\r\n export interface ApiAnswer extends ApiMessage {\r\n type?: AnswerType;\r\n result?: any;\r\n kind?: string;\r\n }\r\n\r\n export interface ApiQuestion extends ApiResponse {\r\n caption?: ApiMessage;\r\n cancelButton?: boolean;\r\n answers?: ApiAnswer[];\r\n }\r\n\r\n\r\n export interface ApiError extends ApiResponse {\r\n statusCode?: number;\r\n details?: string;\r\n }\r\n}\r\n\r\nexport class ApiMessage implements Api.ApiMessage {\r\n readonly message: string;\r\n readonly translateKey: string;\r\n readonly args: object;\r\n readonly text: string;\r\n\r\n constructor(source?: Api.ApiMessage | string) {\r\n if (typeof source === 'string') {\r\n this.message = source;\r\n }\r\n else if (source) {\r\n this.message = source.message || source['Message'];\r\n this.translateKey = source.translateKey || source['TranslateKey'];\r\n this.args = source.args || source['Args'];\r\n }\r\n this.text = this.translateKey ? `${this.translateKey}|${this.message}` : this.message;\r\n }\r\n\r\n toString(): string {\r\n let error = this.message || '';\r\n if (this.translateKey) {\r\n error = `${this.translateKey}|${error}`;\r\n }\r\n return translate.instant(error, this.args);\r\n }\r\n}\r\n\r\nexport class ApiAnswer extends ApiMessage implements Api.ApiAnswer {\r\n readonly type: Api.AnswerType;\r\n readonly result: any;\r\n readonly kind: string;\r\n constructor(source?: Api.ApiAnswer) {\r\n super(source);\r\n if (source) {\r\n this.type = source.type || source['type'] || Api.AnswerType.Button;\r\n this.kind = source.kind || source['Kind'] || this.type;\r\n this.result = 'result' in source ? source.result : source['Result'];\r\n }\r\n }\r\n}\r\n\r\nexport class ApiResponse extends ApiMessage implements Api.ApiResponse {\r\n readonly type: Api.ResponseType;\r\n readonly isValid: boolean;\r\n\r\n constructor(source?: Api.ApiResponse) {\r\n super(source);\r\n if (source) {\r\n this.type = source._responseType_;\r\n this.isValid = this.type === Api.ResponseType.Error || this.type === Api.ResponseType.Ask;\r\n }\r\n }\r\n\r\n static create(source: Api.ApiResponse | any): ApiResponse {\r\n let res = null;\r\n if (source instanceof Response) {\r\n try {\r\n source = source.json();\r\n } catch (e) {\r\n source = {\r\n _responseType_: Api.ResponseType.Error,\r\n statusCode: source.status,\r\n message: UssErrorHandler.ExtractError(source)\r\n };\r\n } \r\n }\r\n if (source) {\r\n switch (source._responseType_) {\r\n case Api.ResponseType.Ask:\r\n res = new ApiQuestion(source);\r\n break;\r\n case Api.ResponseType.Error:\r\n res = new ApiError(source);\r\n break;\r\n }\r\n }\r\n return res || new ApiResponse();\r\n }\r\n}\r\n\r\nexport class ApiQuestion extends ApiResponse implements Api.ApiQuestion {\r\n readonly isValid: boolean;\r\n readonly caption: ApiMessage;\r\n readonly cancelButton: boolean;\r\n readonly answers: ApiAnswer[];\r\n\r\n constructor(source?: Api.ApiQuestion) {\r\n super(source);\r\n if (source) {\r\n this.isValid = this.type === Api.ResponseType.Ask;\r\n if (this.isValid) {\r\n if (source.caption)\r\n this.caption = new ApiMessage(source.caption || source['Caption']);\r\n this.cancelButton = ifEmpty(source.cancelButton, source['CancelButton']);\r\n this.answers = ((source.answers || source['Answers'] || [])).select(x => new ApiAnswer(x)).toArray();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ApiError extends ApiResponse implements Api.ApiError {\r\n readonly isValid: boolean;\r\n readonly statusCode: number;\r\n readonly details: string;\r\n\r\n constructor(source?: Api.ApiError) {\r\n super(source);\r\n if (source) {\r\n this.isValid = this.type === Api.ResponseType.Error;\r\n if (this.isValid) {\r\n this.statusCode = ifEmpty(source.statusCode, source['StatusCode']);\r\n this.details = source.details || source['Details'];\r\n }\r\n }\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class UssErrorHandler extends ErrorHandler {\r\n\r\n constructor(@ng.Optional() deprecatedParameter?: boolean) { super(deprecatedParameter) }\r\n\r\n public static apiErrorHandler: ((err: any, apiError: any) => void) = error => UssErrorHandler.error(error, true);\r\n\r\n public static get sanitizer(): UssTranslateSanitizer { return Reflection.get(UssTranslateSanitizer); }\r\n\r\n private static apiError: any;\r\n\r\n\r\n /**\r\n * Extracts error from server response.\r\n */\r\n public static ExtractError(err: any): string | Promise {\r\n if (err instanceof Promise) {\r\n return err;\r\n }\r\n else if (err instanceof Response/* || err instanceof HttpErrorResponse*/) {\r\n try {\r\n // если ошибка доступа - пробуем получить информацию про текущего пользователя.\r\n // если вызов неудачный - значит токен отозван и нужно перелогиниться\r\n if (err.status === 401 && ussRouter.getCurrentLocation(false).toLowerCase() !== '/login') {\r\n return auth.updateUserInfo().then(u => u ? err.toString() : '');\r\n }\r\n const e = this.ExtractError(err instanceof Response ? err.json() : err['error'] || err);\r\n if (typeof e === 'string') {\r\n return e;\r\n }\r\n err = e || err;\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n if (err instanceof Promise) {\r\n return err;\r\n }\r\n } catch (e) {\r\n return err.toString();\r\n }\r\n }\r\n else if (err instanceof Blob) {\r\n let resolver;\r\n const res = new Promise(r => resolver = r);\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const errorText = reader.result;\r\n err = this.ExtractError(errorText);\r\n resolver(err);\r\n }\r\n reader.readAsText(err);\r\n return res;\r\n }\r\n else if (typeof err === 'string' && isJsonLike(err)) {\r\n err = fromJson(err);\r\n }\r\n\r\n let error = (err || 'Fatal error').toString();\r\n if (err) {\r\n //console.error(err);\r\n const args = err.Args || err.args || {};\r\n const translateKey = err.TranslateKey || err.translateKey;\r\n const message = err.Message || err.message || err.status;\r\n const details = err.Details || err.details;\r\n if (translateKey) {\r\n error = translateKey + '|' + (message || '');\r\n } else if (message) {\r\n error = message;\r\n }\r\n else if (typeof err.__zone_symbol__message === 'string')\r\n error = err.__zone_symbol__message;\r\n\r\n if (err instanceof ProgressEvent && UssHttpHelper.isLocalAddress(err.target['__zone_symbol__xhrURL'])) {\r\n error = '@DIALOG.CONNECTION_TO_API_LOST|Connection to API is lost.';\r\n UssHttpHelper.isOffline = true;\r\n }\r\n\r\n error = translate.instant(error, args);\r\n\r\n if (isDevMode() && err.Details) {\r\n if (details.Contains(error)) {\r\n error = details;\r\n }\r\n else if (!error.Contains(details)) {\r\n error = error + '\\r\\n' + details;\r\n }\r\n }\r\n\r\n error = this.sanitizer ? this.sanitizer.sanitize(error) : error;\r\n\r\n }\r\n // the messages starting with # is special ones and shouldn't be displayed\r\n return error && error !== '#' ? error : undefined;\r\n }\r\n\r\n private _lastError;\r\n\r\n clearLastError() {\r\n this._lastError = null;\r\n }\r\n\r\n handleError(error: any): void {\r\n if (error.rejection)\r\n this.handleError(error.rejection);\r\n else {\r\n if (UssErrorHandler.apiError && UssErrorHandler.ExtractError(UssErrorHandler.apiError) === error) {\r\n // тут выводим ошибку\r\n if (typeof UssErrorHandler.apiErrorHandler === 'function') {\r\n UssErrorHandler.apiErrorHandler(error, UssErrorHandler.apiError);\r\n }\r\n }\r\n else if (isDevMode()) {\r\n let err = UssErrorHandler.ExtractError(error);\r\n if (this._lastError === err) return;\r\n this._lastError = err;\r\n UssErrorHandler.error(error);\r\n }\r\n super.handleError(error);\r\n }\r\n }\r\n\r\n /**\r\n * Устанавливаем оригинальную ошибку, возникающую в вызовах API.\r\n * Если ошибка будет обработана - то ничего делать не придётся и сохранённая ошибка будет очищена через 10 мс.\r\n * Если же ошибка не будет обработана - обработчик выведет её пользователю как ошибку API.\r\n * @param err\r\n */\r\n public static setApiError(err: any) {\r\n this.apiError = err;\r\n debounce(() => this.apiError = null, 10, 'error-handler.clearApiError');\r\n }\r\n\r\n public static error(err: any, forcedMessage?: boolean): void {\r\n if (isDevMode() || forcedMessage) {\r\n const zone: ng.NgZone = Reflection.get(ng.NgZone);\r\n if (zone) {\r\n zone.run(() => {\r\n msg.runtimeError(err);\r\n });\r\n } else {\r\n msg.runtimeError(err);\r\n }\r\n } else {\r\n console.error(err);\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/error-handler.ts","import { Injectable, EventEmitter, Optional } from '@angular/core';\r\nimport { Resolve } from '@angular/router';\r\nimport { Http } from '@angular/http';\r\nimport { Observable } from 'rxjs';\r\nimport { TranslateService, LangChangeEvent, TranslateLoader, MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { TranslationChangeEvent, AppPageResolver, UssTranslateSanitizer, TRANSLATE_SERVICE_TOKEN, isEmpty, isNotEmpty, getPathValue, IUssTranslateService, LangChangeEvent as CoreLangChangeEvent, TranslationChangeEvent as CoreTranslationChangeEvent, isDevMode, toJson, uid, debounce } from '@core.module';\r\n\r\n@Injectable()\r\n@AppPageResolver(TRANSLATE_SERVICE_TOKEN)\r\nexport class AppTranslateService implements IUssTranslateService, Resolve {\r\n\r\n public static isTranslateKey(s: string): boolean {\r\n let res = false;\r\n if (s) {\r\n for (let i = 0; i < s.length; i++) {\r\n const c = s.charAt(i);\r\n res = c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c === '_' || c === '@' || c === '.' || c === '|';\r\n if (!res || c === '|') break;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n\r\n // ReSharper disable InconsistentNaming\r\n private _translate_use: (lang: string) => Observable;\r\n private _translate_getTranslation: (lang: string) => Observable;\r\n private _translate_getParsedResult: (translations, key, interpolateParams) => any;\r\n\r\n /** Уникальный идентификатор экземпляра объекта */\r\n public $uid = `${this.constructor.name}-${uid()}`;\r\n\r\n constructor(public translate: TranslateService, @Optional() public sanitizer: UssTranslateSanitizer) {\r\n translate['appTranslateService'] = this;\r\n\r\n this._translate_use = translate.use;\r\n this._translate_getTranslation = translate.getTranslation;\r\n this._translate_getParsedResult = translate.getParsedResult;\r\n translate.use = lang => this.fn_translate_use(lang);\r\n translate.getTranslation = lang => this.fn_translate_getTranslation(lang);\r\n translate.getParsedResult = (translations, key, interpolateParams) => this.fn_translate_getParsedResult(translations, key, interpolateParams);\r\n }\r\n\r\n /**\r\n * Установка этого свойства позволит всегда использовать указанный язык.\r\n * Установка языка методом translate.use() - игнорируется.\r\n */\r\n get forcedLang(): string {\r\n return localStorage.getItem('@lang.forced');\r\n }\r\n set forcedLang(value: string) {\r\n localStorage.setItem('@lang.forced', value);\r\n this.translate.onTranslationChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n }\r\n\r\n /**\r\n * Используется для отладкию. Нелокализованные (отсутствующие в словаре элементы) обрамляет\r\n * одинарными (если есть значение по умолчанию) или двойными квадратными скобками.\r\n * (работает только в DEV режиме).\r\n */\r\n get markNotLocalized(): boolean {\r\n return localStorage.getItem('@lang.markNotLocalized') === '1';\r\n }\r\n set markNotLocalized(value: boolean) {\r\n localStorage.setItem('@lang.markNotLocalized', value ? '1' : '0');\r\n this.translate.onTranslationChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n }\r\n\r\n /**\r\n * Используется для отладкию. Показывает ключи словаря вместо перевода.\r\n */\r\n get showKeys(): boolean {\r\n return localStorage.getItem('@lang.showKeys') === '1';\r\n }\r\n set showKeys(value: boolean) {\r\n localStorage.setItem('@lang.showKeys', value ? '1' : '0');\r\n this.translate.onTranslationChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n }\r\n\r\n /**\r\n * Принудительно задаёт значение языка по умолчанию,\r\n * т.е. на какой язык будет переключён словарь при отсутствии словаря текущего языка.\r\n */\r\n get defaultLang(): string {\r\n return localStorage.getItem('@lang.default');\r\n }\r\n set defaultLang(value: string) {\r\n localStorage.setItem('@lang.default', value);\r\n this.translate.onTranslationChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n }\r\n\r\n /**\r\n * Принудительно задаёт значение языка при старте системы, сохраняется в localStorage.\r\n */\r\n get startupLang(): string {\r\n return localStorage.getItem('@lang');\r\n }\r\n set startupLang(value: string) {\r\n localStorage.setItem('@lang', value);\r\n }\r\n\r\n fn_translate_use(lang: string): Observable {\r\n lang = this.forcedLang || lang;\r\n return this._translate_use.bind(this.translate)(lang);\r\n }\r\n\r\n fn_translate_getTranslation(lang: string): Observable {\r\n if (this.showKeys) {\r\n return Observable.from([]);\r\n } else {\r\n return this._translate_getTranslation.bind(this.translate)(lang);\r\n }\r\n }\r\n\r\n fn_translate_getParsedResult(translations, key, interpolateParams) {\r\n let res = this._translate_getParsedResult.bind(this.translate)(translations, key, interpolateParams);\r\n if (typeof res === 'string') {\r\n res = res.TrimEnd('\\0');\r\n }\r\n return res;\r\n }\r\n\r\n translations: { [lang: string]: { [key: string]: any }} = {};\r\n\r\n private resolver: Promise;\r\n resolve(): Promise {\r\n return this.init();\r\n }\r\n\r\n init(currentLang?: string, fallbackLang?: string): Promise {\r\n return this.resolver || (this.resolver = this.internalInit(currentLang, fallbackLang));\r\n }\r\n\r\n private async internalInit(currentLang?: string, fallbackLang?: string): Promise {\r\n currentLang = this.startupLang || currentLang || this.getBrowserLang();\r\n fallbackLang = this.defaultLang || fallbackLang || currentLang;\r\n\r\n if (fallbackLang !== currentLang) {\r\n await this.translate.use(fallbackLang).toPromise();\r\n }\r\n // the lang to use, if the lang isn't available, it will use the current loader to get them\r\n await this.translate.use(currentLang).toPromise();\r\n // this language will be used as a fallback when a translation isn't found in the current language\r\n this.translate.setDefaultLang(fallbackLang);\r\n this.translate.onLangChange.subscribe(e => this.langChanged(e));\r\n this.translate.onLangChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n this.translate.onTranslationChange.subscribe(e => this.translationChanged(e));\r\n this.translate.onTranslationChange.emit({ lang: this.translate.currentLang, translations: this.translations });\r\n }\r\n\r\n use(lang: string, permanent?: boolean): Promise {\r\n if (permanent) {\r\n this.startupLang = lang;\r\n }\r\n return this.init(lang).then(() => this.translate.use(lang).toPromise());\r\n //return this.translate.use(lang);\r\n }\r\n\r\n getBrowserLang(): string {\r\n return this.translate.getBrowserLang();\r\n }\r\n\r\n get currentLang(): string {\r\n return this.translate.currentLang;\r\n }\r\n\r\n get currentCulture() {\r\n switch (this.currentLang) {\r\n case 'en': return 'en_US';\r\n case 'fr': return 'fr_FR';\r\n case 'ru': return 'ru_RU';\r\n case 'ua': return 'uk_UA';\r\n default: return `${this.currentLang}_${this.currentLang.toUpperCase()}`;\r\n }\r\n }\r\n\r\n private firstTimeLangChanges = [];\r\n\r\n private momentLocales = { 'ua' : 'uk' };\r\n \r\n onLangChange: EventEmitter = new EventEmitter();\r\n langChanged(e: LangChangeEvent) {\r\n moment.locale(this.momentLocales[e.lang] || e.lang);\r\n const ce = e;\r\n ce.firstTime = !this.firstTimeLangChanges.includes(e.lang);\r\n if (ce.firstTime) {\r\n this.firstTimeLangChanges.push(e.lang);\r\n this.addKey(null, null, e.lang, true);\r\n }\r\n this.onLangChange.emit(ce);\r\n }\r\n\r\n onTranslationChange: EventEmitter = new EventEmitter();\r\n translationChanged(e: TranslationChangeEvent) {\r\n this.onTranslationChange.emit(e);\r\n }\r\n\r\n instant(key: string, interpolateParams?: object): string;\r\n instant(key: string[], interpolateParams?: object): string[];\r\n instant(key, interpolateParams) {\r\n let res = key;\r\n if (key !== '' && isNotEmpty(key) && isNotEmpty(this.translate) && AppTranslateService.isTranslateKey(key)) {\r\n res = this.translate.instant(key, interpolateParams || '');\r\n res = isEmpty(this.sanitizer) ? res : this.sanitizer.sanitize(res);\r\n }\r\n return res;\r\n }\r\n\r\n private saveTranslations(lang: string) {\r\n debounce(() => localStorage.setItem(`_${lang}_translations`, toJson(this.translations[lang], true, true)), 500, `${this.$uid}-saveTranslations`)\r\n }\r\n addKey(key: string, value: string | {}, lang?: string, addCurrentDictionary?: boolean) {\r\n lang = lang || this.translate.currentLang;\r\n if (addCurrentDictionary || !getPathValue(this.translations[lang], key)) {\r\n if (isEmpty(key) || !this.translations[lang]) {\r\n try {\r\n this.translations[lang] = localStorage.getItem(`_${lang}_translations`).FromJson() || {};\r\n } catch (e) {\r\n this.translations[lang] = {};\r\n }\r\n const loadedDictionary = (this.translate['translations'] || {})[lang];\r\n if (loadedDictionary) {\r\n for (let k of Object.getOwnPropertyNames(loadedDictionary)) {\r\n if (k !== '$id') {\r\n this.addKey(k, loadedDictionary[k], lang, true);\r\n }\r\n }\r\n this.saveTranslations(lang);\r\n }\r\n }\r\n if (isNotEmpty(key)) {\r\n let current = this.translations[lang];\r\n const keys = key.split('.');\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n let curr = current[keys[i]] || {};\r\n if (typeof curr !== 'object') curr = {};\r\n current[keys[i]] = curr;\r\n current = current[keys[i]];\r\n }\r\n if (current[keys[keys.length - 1]] === undefined || typeof value === 'string') {\r\n current[keys[keys.length - 1]] = value;\r\n } else if (value != null && typeof value === 'object') {\r\n if (typeof current[keys[keys.length - 1]] !== 'object')\r\n current[keys[keys.length - 1]] = { '': current[keys[keys.length - 1]] };\r\n _merge(current[keys[keys.length - 1]], value);\r\n }\r\n\r\n if (!addCurrentDictionary) {\r\n this.saveTranslations(lang);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class AppTranslateLoader extends TranslateLoader {\r\n\r\n constructor(private http: Http, private prefix?: string, private suffix?: string) {\r\n super();\r\n if (!prefix)\r\n this.prefix = '';\r\n else if (!prefix.EndsWith('/'))\r\n this.prefix = prefix + '/';\r\n } \r\n\r\n getTranslation(lang: string): Observable {\r\n let translation = {};\r\n try {\r\n translation = require(`${this.prefix}${lang}${this.suffix}`);\r\n } catch (e) {\r\n } \r\n return Observable.fromPromise(Promise.resolve(translation)); \r\n }\r\n}\r\n\r\nexport class AppTranslateStaticLoader extends TranslateHttpLoader {\r\n\r\n constructor(http: Http, prefix?: string, suffix?: string) {\r\n super(http, prefix, suffix);\r\n }\r\n\r\n public getTranslation(lang: string): any {\r\n return super.getTranslation(lang)\r\n .map(x => {\r\n if (typeof x.json === 'function')\r\n x = x.json();\r\n return x;\r\n })\r\n .catch(() => [{}]);\r\n }\r\n}\r\n\r\nexport class AppMissingTranslationHandler extends MissingTranslationHandler {\r\n\r\n constructor(private http: Http) { super(); } \r\n\r\n private _testMode: boolean;\r\n\r\n handle(params: MissingTranslationHandlerParams) {\r\n if (this._testMode) return '';\r\n const pair = params.key.split('|');\r\n const key = (pair[0] || '').trim();\r\n let value = key;\r\n let res = value;\r\n if (AppTranslateService.isTranslateKey(key)) {\r\n const appTranslateService: AppTranslateService = params.translateService['appTranslateService'];\r\n const defaultValue =\r\n getPathValue(appTranslateService.translate['translations'][appTranslateService.translate.currentLang],\r\n key) ||\r\n pair[1] ||\r\n pair[0];\r\n if (!res || !res.EndsWith('\\0')) {\r\n if (pair.length > 1) {\r\n this._testMode = true;\r\n value = appTranslateService.instant(key, params.interpolateParams);\r\n if (!value) {\r\n value = defaultValue;\r\n // non-localized with key absent in dictionary\r\n res = params.translateService.parser.interpolate(value, params.interpolateParams);\r\n if (isDevMode() && appTranslateService.markNotLocalized) {\r\n res = `[${res}]`;\r\n }\r\n } else {\r\n res = value;\r\n }\r\n this._testMode = false;\r\n } else {\r\n // non-localized w/o key \r\n res = params.translateService.parser.interpolate(value, params.interpolateParams);\r\n if (isDevMode() && appTranslateService.markNotLocalized) {\r\n res = `[[${res}]]`;\r\n }\r\n }\r\n appTranslateService.addKey(key, defaultValue);\r\n res += '\\0'; // prevent double localization\r\n }\r\n if (appTranslateService.showKeys) {\r\n res = `[${key}]`;\r\n }\r\n res = isEmpty(appTranslateService.sanitizer) ? res : appTranslateService.sanitizer.sanitize(res);\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/translate.module/translate.service.ts","export * from './account.service';\r\nexport * from './auth.service';\r\nexport * from './auth.module';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/auth.module/index.ts","import { ViewContainerRef } from '@angular/core';\r\nimport { AppBase } from './app.base';\r\n\r\nexport class AppDirective extends AppBase {\r\n\r\n constructor(viewContainer: ViewContainerRef) {\r\n super(viewContainer, false);\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/app.directive.ts","import { EventEmitter, Injectable, Type } from '@angular/core';\r\nimport { UssErrorHandler, bool, isArray, parser, OData, ApiModuleService, UssApiService, CACHE_CONSTANT, ApiMethod, Reflection, clone, EVENTS_SERVICE_TOKEN, IUssEventsService } from '@core.module';\r\nimport { UssCrudMetadataApiService, UssDefaultService } from './crud-metadata-api.service';\r\nimport { UssCrudApiService, IEntityObjectId } from './crud-api.service';\r\nimport { debug } from 'util';\r\n\r\nexport interface IEntityMetadata extends App.EntityMetadata {\r\n /**\r\n * Ссылка на CRUDService класса.\r\n */\r\n service: () => UssCrudApiService;\r\n\r\n /**\r\n * Создаёт объект OData, который поддерживает проверки типов и полей, основанные на данных метаинформации\r\n */\r\n createOData(): OData;\r\n\r\n /**\r\n * Ссылка на UssObjectListPanel\r\n */\r\n listPanel?: any /*IUssObjectListPanel*/;\r\n}\r\n\r\nexport declare type TServiceCacheMode = boolean | string | string[] /* | TCacheOptions*/;\r\nexport declare type TMetaDataLoad = [App.EntityMetadata[], App.ReportMetadata[], App.AlertMetainfo[], App.SystemTaskMetadata[]];\r\n\r\n@Injectable()\r\n@ApiModuleService('api/$metadata')\r\nexport class UssMetadataService extends UssApiService {\r\n\r\n /**\r\n * Режим кеширование запросов UssCrudMetadataApiService-ов по умолчанию.\r\n * Если не установлено или равно false - кеширование работает только для UssCrudMetadataApiCachedService-ов.\r\n */\r\n public static DEFAULT_CACHE_MODE: TServiceCacheMode = bool($appSettings.cacheGetRequests) === true;\r\n\r\n private static metadata: IEntityMetadata[];\r\n private static reportsMetadata: App.ReportMetadata[] = [];\r\n private static alertsMetadata: App.AlertMetainfo[] = [];\r\n private static systemTasksMetadata: App.SystemTaskMetadata[] = [];\r\n\r\n private static entityMetadataCache: { [entityName: string]: IEntityMetadata } = {};\r\n private static enumMetadataCache: { [enumName: string]: App.EnumerableItemMetadata[] } = {};\r\n\r\n public readonly metadataChanged = new EventEmitter();\r\n\r\n static resolveCache(cache: TServiceCacheMode, defaultName: string | string[]): string | string[] {\r\n let res: string | string[] = undefined;\r\n if (typeof cache === 'object' && !isArray(cache)) {\r\n // TCacheOptions\r\n throw new Error('Capability not supported.'); // ToDo: support TCacheOptions\r\n }\r\n if (typeof cache === 'boolean' && cache) {\r\n res = defaultName;\r\n }\r\n else if (typeof cache === 'string' && cache !== defaultName && cache !== CACHE_CONSTANT) {\r\n if (typeof defaultName === 'string') {\r\n res = [defaultName, cache];\r\n } else if (isArray(defaultName)) {\r\n res = [cache].AddRange(defaultName);\r\n }\r\n }\r\n else if (isArray(cache) && !(cache).contains(CACHE_CONSTANT)) {\r\n if (typeof defaultName === 'string' && !(cache).contains(defaultName)) {\r\n (cache).push(defaultName);\r\n }\r\n else if (isArray(defaultName)) {\r\n (cache).AddRange((defaultName).except(cache).toArray());\r\n }\r\n res = (cache);\r\n }\r\n return res;\r\n }\r\n\r\n _subscribed = false;\r\n /**\r\n * Подписа на изменение метаинформации на бекенде. При наступлении события - перезагружает данные.\r\n * Изменение метаинформации может произойти, например, если при старте программы не был доступен сервис TotalApi и,\r\n * как следствие, данные лицензии, а от лицензии зависит видимость отдельных справочников и т.д.\r\n * Следует вызывать после бутстрапа модуля AppModule.\r\n */\r\n public subscribeOnChanged() {\r\n if (!this._subscribed) {\r\n const eventService = Reflection.get(EVENTS_SERVICE_TOKEN);\r\n if (eventService) {\r\n this._subscribed = true;\r\n eventService.subscribe(App.UssEvents.OnMetadataChanged, () => this.reloadMetadataAsync());\r\n }\r\n }\r\n }\r\n\r\n /** Загружает всю метаинформацию с бекенда */\r\n public async reloadMetadataAsync(): Promise {\r\n const res = await Promise.all([\r\n this.load(),\r\n this.loadReports(),\r\n this.loadAlerts(),\r\n this.loadSystemTasks()\r\n ]);\r\n this.metadataChanged.emit(res);\r\n return res;\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '?details={details}' })\r\n public async load(details?: boolean): Promise {\r\n try {\r\n details = details || true;\r\n const res = await this.request({ details });\r\n UssMetadataService.metadata = res;\r\n res.where(x => !!x.Menu).forEach(x => {\r\n if (x.Menu.IsVisible === undefined)\r\n x.Menu.IsVisible = true;\r\n });\r\n return res;\r\n } catch (e) {\r\n setTimeout(() => UssErrorHandler.error(e));\r\n return Promise.resolve([]);\r\n } \r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '$Reports' })\r\n public async loadReports(): Promise {\r\n try {\r\n const res = await this.request();\r\n UssMetadataService.reportsMetadata = res;\r\n res.where(x => !!x.Menu).forEach(x => {\r\n if (x.Menu.IsVisible === undefined)\r\n x.Menu.IsVisible = true;\r\n });\r\n return res;\r\n } catch (e) {\r\n setTimeout(() => UssErrorHandler.error(e));\r\n return Promise.resolve([]);\r\n } \r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '$Alerts' })\r\n public async loadAlerts(): Promise {\r\n try {\r\n const res = await this.request();\r\n UssMetadataService.alertsMetadata = res;\r\n return res;\r\n } catch (e) {\r\n setTimeout(() => UssErrorHandler.error(e));\r\n return Promise.resolve([]);\r\n } \r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '$SystemTasks' })\r\n public async loadSystemTasks(): Promise {\r\n try {\r\n const res = await this.request();\r\n UssMetadataService.systemTasksMetadata = res;\r\n return res;\r\n } catch (e) {\r\n setTimeout(() => UssErrorHandler.error(e));\r\n return Promise.resolve([]);\r\n } \r\n }\r\n\r\n public static getEntityNames(): string[] {\r\n return this.metadata?.select(em => em.Name).toArray() || [];\r\n }\r\n\r\n\r\n public static getEntityInfo(entityName: string): IEntityMetadata {\r\n let res = null;\r\n if (entityName) {\r\n res = this.entityMetadataCache[entityName];\r\n if (!res && this.metadata) {\r\n const meta = this.metadata.where(em => em.Name === entityName).firstOrDefault();\r\n if (meta) {\r\n const serviceToken = UssCrudMetadataApiService.crudServices.where(x => x.entityName === entityName).select(x => x.serviceToken).firstOrDefault();\r\n if (serviceToken) {\r\n meta.service = () => Reflection.get(serviceToken);\r\n } else {\r\n meta.service = () => {\r\n if (meta['_service'] == undefined) {\r\n meta['_service'] = new UssDefaultService(entityName);\r\n }\r\n return meta['_service'];\r\n };\r\n }\r\n meta.createOData = () => OData.create;\r\n\r\n res = clone(meta);\r\n res.service = meta.service;\r\n }\r\n res && (this.entityMetadataCache[entityName] = res);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static getEnumMetadata(enumName: string): App.EnumerableItemMetadata[] {\r\n let res = null;\r\n if (enumName) {\r\n res = this.enumMetadataCache[enumName];\r\n if (!res && this.metadata) {\r\n res = this.metadata.selectMany(x => x.Properties)\r\n .where((pi: App.PropertyMetadata) => pi.TypeName.EndsWith(enumName))\r\n .select((pi: App.PropertyMetadata) => pi.EnumerableMetadata).firstOrDefault();\r\n res && (this.enumMetadataCache[enumName] = res);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n\r\n\r\n public static getService(service: UssCrudApiService | string | Type, cache?: TServiceCacheMode): UssCrudApiService {\r\n let res = null;\r\n if (service) {\r\n if (typeof service === 'string') {\r\n const metadata = UssMetadataService.getEntityInfo(service);\r\n if (metadata && typeof metadata.service === 'function') {\r\n res = metadata.service();\r\n }\r\n else if (!metadata) {\r\n debug(`USS: Can't find metadata for entity type ${service}.`);\r\n }\r\n } else if (!(service instanceof UssCrudApiService)) {\r\n res = Reflection.get(service);\r\n }\r\n if (res && cache !== undefined) {\r\n const serviceCache = this.resolveCache(res.cache, res.entityName) || res.entityName;\r\n cache = this.resolveCache(cache, serviceCache);\r\n res.cache = cache ? cache : false;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static getReports(): App.ReportMetadata[] { return this.reportsMetadata; }\r\n\r\n public static getReportInfo(reportName: string): App.ReportMetadata {\r\n let res = null;\r\n if (reportName) {\r\n res = this.reportsMetadata.firstOrDefault(x => x.Name == reportName);\r\n }\r\n return res;\r\n }\r\n\r\n\r\n public static getAlerts(): App.AlertMetainfo[] { return this.alertsMetadata; }\r\n\r\n public static getAlertInfo(alertEventType: number): App.AlertMetainfo {\r\n let res = null;\r\n if (alertEventType) {\r\n res = this.alertsMetadata.firstOrDefault(x => x.Id == alertEventType);\r\n }\r\n return res;\r\n }\r\n\r\n public static getSystemTasks(): App.SystemTaskMetadata[] { return this.systemTasksMetadata; }\r\n\r\n public static getSystemTaskInfo(systemTaskId: string): App.SystemTaskMetadata {\r\n let res = null;\r\n if (systemTaskId) {\r\n res = this.systemTasksMetadata.firstOrDefault(x => x.Id == systemTaskId);\r\n }\r\n return res;\r\n }\r\n\r\n\r\n public static getExpression(entityName: string | App.EntityMetadata): string {\r\n let res;\r\n const em = typeof entityName === 'string' ? this.getEntityInfo(entityName) : entityName;\r\n if (em) {\r\n res = em.RepresentExpression || (em.KeyAttrs ? em.KeyAttrs.firstOrDefault() : '');\r\n }\r\n res = res || '';\r\n return res;\r\n }\r\n\r\n public static getDisplayText(entityName: string | App.EntityMetadata, obj: IEntityObjectId): string {\r\n return parser.evaluate(this.getExpression(entityName), obj);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/metadata.service.ts","import { FormGroup, FormControl } from '@angular/forms';\r\nimport { CustomValidators } from './CustomValidators';\r\nimport EntityMetadata = App.EntityMetadata;\r\n\r\nexport class UssFormGroup extends FormGroup {\r\n public metadata?: EntityMetadata;\r\n public datasource?: any;\r\n\r\n constructor(metadata?: EntityMetadata, datasource?: any) {\r\n if (metadata) {\r\n super(UssFormGroup.createFormControls(metadata));\r\n this.metadata = metadata;\r\n if (datasource)\r\n this.setDatasource(datasource);\r\n }\r\n }\r\n\r\n private static createFormControls(metadata: EntityMetadata) {\r\n const formControls = {};\r\n if (metadata) {\r\n for (let prop of metadata.Properties) {\r\n let control: FormGroup | FormControl;\r\n if (prop.TypeName === 'form') {\r\n control = new FormGroup({ });\r\n } else {\r\n control = new FormControl(undefined, CustomValidators.ussFormValidator(prop));\r\n }\r\n control['_name'] = prop.Name;\r\n formControls[prop.Name] = control;\r\n }\r\n }\r\n return formControls;\r\n }\r\n\r\n public static create(metadata: EntityMetadata, datasource?: any): UssFormGroup {\r\n return new UssFormGroup(metadata, datasource);\r\n }\r\n\r\n public getPropertyMetadata(name: string) {\r\n return this.metadata ? this.metadata.Properties.firstOrDefault(x => x.Name === name) : null;\r\n }\r\n\r\n public setDatasource(datasource: any): UssFormGroup {\r\n this.datasource = datasource;\r\n if (this.controls && this.datasource) {\r\n for (let prop in this.datasource) {\r\n if (this.datasource.hasOwnProperty(prop)) {\r\n const ctrl = this.controls[prop];\r\n if (ctrl instanceof FormControl) {\r\n ctrl.setValue(this.datasource[prop]);\r\n }\r\n else if (ctrl instanceof FormGroup) {\r\n // todo:\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n public updateFormControls() {\r\n this.setDatasource(this.datasource);\r\n }\r\n\r\n\r\n public submit() {\r\n // метод будет перекрыт в EdiorModal для вызова сохранения данных диалога\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/UssFormGroup.ts","import * as ng from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport * as core from '../../core.module';\r\nimport { UssComponent2 } from '../components/common/base.component';\r\n\r\n//declare const Platform: any;\r\n/**\r\n * Замена неработающему angular-декоратору.\r\n * После того как будет исправлено, можно будет убрать.\r\n */\r\nexport var HostBinding = (propertyName?: string) => (target, propertyKey) => {\r\n propertyName = propertyName || propertyKey;\r\n Object.defineProperty(target, propertyKey,\r\n {\r\n get: function () {\r\n return this['hostComponent'] ? this['hostComponent'][propertyName] : undefined;\r\n },\r\n set: function (v) {\r\n if (this['hostComponent'])\r\n this['hostComponent'][propertyName] = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n};\r\n\r\nexport abstract class UssDirectiveBase extends UssComponent2 implements ng.OnInit, ng.OnDestroy {\r\n\r\n protected compiler: ng.Compiler = core.Reflection.get(ng.Compiler); \r\n\r\n constructor(public hostComponent: T, viewContainer: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(viewContainer);\r\n this.changeDetector = changeDetector; \r\n this.hostNativeElement = this.nativeElement;\r\n this.hostViewContainer = viewContainer;\r\n }\r\n\r\n\r\n protected hostNativeElement: HTMLElement;\r\n protected hostViewContainer: ng.ViewContainerRef;\r\n\r\n public get isHostElementVisible() {\r\n return !!(this.hostNativeElement.offsetWidth\r\n || this.hostNativeElement.offsetHeight\r\n || this.hostNativeElement.getClientRects().length);\r\n }\r\n\r\n\r\n protected createComponentRef(template: string): ng.ComponentRef {\r\n const DynaClass = class DynamicComponent { };\r\n ng.ViewChild('template')(new DynaClass(), 'template');\r\n ng.Component({ template })(DynaClass);\r\n const dynaModule = class DynamicModule { };\r\n ng.NgModule({\r\n declarations: [DynaClass],\r\n imports: [BrowserModule],\r\n schemas: [ng.CUSTOM_ELEMENTS_SCHEMA]\r\n })(dynaModule);\r\n const factories = this.compiler.compileModuleAndAllComponentsSync(dynaModule);\r\n const factory = factories.componentFactories[0];\r\n const component = this.viewContainer.createComponent(factory);\r\n component.instance.self = this;\r\n return component;\r\n }\r\n private templateCache: { [htmlTemplateElement: string]: ng.TemplateRef } = {};\r\n protected createTemplate(template: string, params?: { [key: string]: string; }): ng.TemplateRef {\r\n let prms = '';\r\n if (params) {\r\n prms = linq.from(params).select(kv => `let-${kv.key}=\"${kv.value}\"`).toArray().join(' ');\r\n }\r\n template = `${template}`;\r\n let res = this.templateCache[template];\r\n if (!res) {\r\n const component = this.createComponentRef(template);\r\n res = component.instance.template;\r\n this.templateCache[template] = res;\r\n }\r\n return res;\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/directives/directive.base.ts","import { OnInit, Type } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\nimport { Inject, appComponents, appEntryComponents } from '@core.module';\r\nimport { UssMetadataService } from '@metadata.module';\r\nimport { AppPageBase } from '../components/common/base.page';\r\nimport { UssSystemTaskComponent, IAppSystemTaskPage } from './system-task.component/system-task.component';\r\n\r\n\r\n/**\r\n * Список помеченных данным декоратором компонентов добавляется в словарь ussSystemTasks.\r\n * Эти компоненты автоматически войдут в состав диалогов которые будут открываться при редактировании системных задач.\r\n * Также данные компоненты автоматически попадают в список appComponents, так что их не нужно дополнительно регистрировать\r\n * при помощи декоратора @AppComponent() или в модуле приложения.\r\n */\r\nexport const UssSystemTask = (systemTaskId: string) => target => {\r\n ussSystemTasks[systemTaskId] = target;\r\n if (!appComponents.contains(target))\r\n appComponents.push(target);\r\n if (!appEntryComponents.contains(target))\r\n appEntryComponents.push(target);\r\n}\r\n\r\n\r\n/**\r\n * Список всех системных задач\r\n */\r\nexport const ussSystemTasks: { [systemTaskId: string]: Type } = { };\r\n\r\n\r\nexport class UssSystemTaskPageBase extends AppPageBase implements IAppSystemTaskPage, OnInit {\r\n\r\n systemTaskId: string;\r\n\r\n public title: string;\r\n public form: FormGroup;\r\n\r\n public model: TSystemTaskParams = {};\r\n\r\n public isReadOnly: boolean | (() => boolean);\r\n\r\n public minWidth: number;\r\n public minHeight: number;\r\n public maxWidth: number;\r\n public maxHeight: number;\r\n public width: number;\r\n public height: number;\r\n public resizable: boolean;\r\n public draggable: boolean;\r\n\r\n\r\n /**\r\n * Устанавливается, если форма используется в качестве компонента внутри другого компонента (плана задания построения отчёта)\r\n */\r\n public isEmbedded: boolean = false;\r\n\r\n @Inject(FormBuilder) private fb: FormBuilder;\r\n\r\n /**\r\n * Устанавливается UssSystemTaskComponent компонентом при его создании\r\n */\r\n systemTaskComponent: UssSystemTaskComponent;\r\n\r\n setModel(params: TSystemTaskParams, isEmbedded: boolean) {\r\n this.isEmbedded = !!isEmbedded;\r\n if (isEmbedded) {\r\n this.model = params || {};\r\n }\r\n this.doApplyParams(params);\r\n this.markForCheck();\r\n this.systemTaskComponent && this.systemTaskComponent.markForCheck();\r\n }\r\n\r\n makeSystemTaskParams(): TSystemTaskParams {\r\n return this.form.value;\r\n }\r\n\r\n createControls(systemTaskId: string, extraFields?: any) {\r\n return (this.systemTaskComponent && this.systemTaskComponent.createControls(systemTaskId, extraFields)) || {};\r\n }\r\n\r\n createForm() {\r\n const form = this.fb.group(this.createControls(this.systemTaskId));\r\n this.systemTaskComponent && (this.systemTaskComponent.form = form);\r\n return form;\r\n }\r\n\r\n formChanged(newValue: any) {\r\n Object.assign(this.model, this.makeSystemTaskParams());\r\n if (!this.isEmbedded) {\r\n this.updateRoute();\r\n }\r\n }\r\n\r\n controlChanged(controlName: string, newValue: any, control: FormControl) {\r\n \r\n }\r\n\r\n ngOnInit() {\r\n if (!this.systemTaskId) {\r\n for (let systemTaskId of Object.getOwnPropertyNames(ussSystemTasks)) {\r\n if (ussSystemTasks[systemTaskId] === this.constructor) {\r\n this.systemTaskId = systemTaskId;\r\n this.title = systemTaskId;\r\n const ri = UssMetadataService.getSystemTaskInfo(systemTaskId);\r\n ri && (this.title = ri.Name);\r\n break;\r\n }\r\n }\r\n }\r\n this.form = this.createForm();\r\n Object.assign(this.model, this.makeSystemTaskParams());\r\n super.ngOnInit();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.systemTaskComponent) {\r\n this.systemTaskComponent.init(this);\r\n }\r\n this.form.valueChanges.subscribe(newValue => {\r\n this.debounce(() => {\r\n this.formChanged(newValue);\r\n this.markForCheck();\r\n }, 0, 'formChanged');\r\n });\r\n\r\n const controls = this.form.controls;\r\n for (let controlName in controls) {\r\n if (controls.hasOwnProperty(controlName)) {\r\n const ctl = controls[controlName] as FormControl;\r\n ctl.valueChanges.subscribe(newValue => {\r\n this.debounce(() => this.controlChanged(controlName, newValue, ctl), 0, 'controlChanged:' + controlName);\r\n });\r\n }\r\n }\r\n }\r\n\r\n applyParams(p: { [index: string]: any }): void {\r\n this.systemTaskComponent && this.systemTaskComponent.applyQueryParams(p, true);\r\n Object.assign(this.model, this.makeSystemTaskParams());\r\n }\r\n\r\n updateRoute() {\r\n this.systemTaskComponent && this.systemTaskComponent.updateRoute(this);\r\n }\r\n\r\n toArray(value, nullIfEmpty?: boolean) {\r\n if (typeof value === 'string') {\r\n value = value.split(',');\r\n } else {\r\n value = value || [];\r\n }\r\n if (value.length === 1 && value[0] === '') value = [];\r\n if (nullIfEmpty && value.length === 0) value = null;\r\n return value;\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/system-task.page.ts","import { Component, Input, Output, AfterViewInit, OnChanges, OnInit, EventEmitter } from '@angular/core';\r\nimport { translate, isArray, CSVToArray, isEmpty, assign } from '@core.module';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@Component({\r\n selector: `uss-select`,\r\n template: require('./select.component.html'),\r\n styles:[require('./select.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs,\r\n})\r\n@SystemComponent()\r\nexport class UssSelectComponent extends UssDataSourceComponent implements AfterViewInit, OnChanges, OnInit {\r\n @Input() options: any = {};\r\n @Input('selectionMode') selectionMode: 'single' | 'multiple' = 'single';\r\n @Input('searchable') searchable: boolean;\r\n @Input('allowAdditions') allowAdditions: boolean;\r\n @Input('hideDropdown') hideDropdown: boolean;\r\n @Input('l10n-placeholder') l10nPlaceholder: string;\r\n @Input('data') dataList: string[] = [];\r\n @Input() icon: string;\r\n @Output('clickIcon') clickIcon = new EventEmitter();\r\n\r\n /** устаналивается когда select заменяется jquery-компонентом. Чтобы не прыгала разметка */\r\n _isControlSetUp = false;\r\n\r\n private valueChangeTask = {};\r\n\r\n public clear() {\r\n this.setValue(null);\r\n }\r\n\r\n public get hasIcon(): boolean {\r\n return !!((this.icon || this.showClear));\r\n }\r\n\r\n public get showClear(): boolean {\r\n return !!(this.afterInitVisible && !this.icon && !this.isRequired() && !this.disabled && this.control && (this.control.value || this.control.value === 0));\r\n }\r\n\r\n public toText(v: any): string {\r\n return (!isEmpty(v)) ? v.toString() : null;\r\n }\r\n\r\n toInputValueText(v: any): string | string[] {\r\n let res: string | string[] = this.toText(v);\r\n if (this.selectionMode === 'multiple') {\r\n if (isArray(v)) {\r\n res = v.select(x => x.toString()).toArray();\r\n } else if (res) {\r\n res = [res];\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public toValue(v: any): any {\r\n if (v === '-') {\r\n v = null;\r\n }\r\n return super.toValue(v);\r\n }\r\n\r\n protected getInputElementValue() {\r\n return this.dropdown.dropdown('get value');\r\n }\r\n\r\n\r\n public setInputElementValue(value: any) {\r\n if (!this.wasInit || !this.dropdown) return;\r\n const textValue = this.toInputValueText(value);\r\n this.setInputValueDirect(textValue);\r\n }\r\n\r\n\r\n _skipOnInputElementChange;\r\n onInputElementChange(e: Event) {\r\n if (!this._skipOnInputElementChange) {\r\n super.onInputElementChange(e);\r\n }\r\n }\r\n\r\n onPaste(e: ClipboardEvent) {\r\n if (this.selectionMode === 'multiple' && this.bool(this.allowAdditions)) {\r\n let content = e.clipboardData.getData('text/plain');\r\n // варианты того, что может быть в буфере:\r\n // item1,item2,item3 \r\n // \"item1\",\"item2\",\"item3\" \r\n // разделителем может являться либо запятая, либо перевод строки\r\n if (content) {\r\n const res = CSVToArray(content);\r\n if (res) {\r\n const v: string[] = res.selectMany(s => s).select((s: string) => s.Trim()).where(s => !!s).toArray();\r\n v.unshift(...this.value);\r\n this.value = v;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n public setInputValueDirect(value: any) {\r\n if (value && value !== '-') {\r\n this._skipOnInputElementChange = true;\r\n this.dropdown.dropdown('set selected', value);\r\n this._skipOnInputElementChange = false;\r\n this.updatePlaceholder(null);\r\n }\r\n else {\r\n this.dropdown.dropdown('clear');\r\n this.updatePlaceholder();\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Т.к. стандартный select расширяется при помощи $, который не знает о том,\r\n * что placeholder может поменяться - обновим его значение руками\r\n */\r\n public updatePlaceholder(placeholderText?: string) {\r\n const placeholderElement =\r\n this.viewContainer.element.nativeElement.querySelector('.field div.dropdown div.text');\r\n if (placeholderElement) {\r\n if (placeholderText === null) {\r\n placeholderElement.classList.remove('default');\r\n } else {\r\n placeholderElement.innerHTML = isEmpty(placeholderText)\r\n ? translate.instant(this.l10nPlaceholder) || this.placeholder || ''\r\n : placeholderText;\r\n placeholderElement.classList.add('default');\r\n }\r\n }\r\n\r\n const selectionDivElem = this.viewContainer.element.nativeElement.querySelector('div.ui.dropdown.selection');\r\n if (selectionDivElem) {\r\n selectionDivElem.tabIndex = this.tabindex;\r\n }\r\n\r\n const dropDownButton = this.viewContainer.element.nativeElement.querySelector('i.dropdown.icon');\r\n const dropDownText = this.viewContainer.element.nativeElement.querySelector('div.text');\r\n if (dropDownButton) {\r\n if (this.bool(this.hideDropdown)) {\r\n dropDownButton.style.display = 'none';\r\n selectionDivElem && (selectionDivElem.style.paddingRight = '0.357143em');\r\n dropDownText && (dropDownText.style.width = '');\r\n } else {\r\n dropDownButton.style.display = 'block';\r\n selectionDivElem && (selectionDivElem.style.paddingRight = '');\r\n if (this.selectionMode === 'multiple' && dropDownText ) {\r\n dropDownText.style.width = 'calc(100% - 3em)';\r\n }\r\n }\r\n }\r\n\r\n\r\n const selectElem = this.viewContainer.element.nativeElement.querySelector('div.ui.search.dropdown');\r\n if (selectElem) {\r\n selectElem.tabIndex = this.tabindex;\r\n if (this.disabled) {\r\n selectElem.classList.add('disabled');\r\n } else {\r\n selectElem.classList.remove('disabled');\r\n }\r\n }\r\n\r\n const inputElem = this.viewContainer.element.nativeElement.querySelector('input.search');\r\n if (inputElem) {\r\n //inputElem.style.width = '100%'; // абсолютно непонятно зачем это было написано, но с такой настройкой пустая строка поиска перемещается на вторую строку и расширяет элемент\r\n inputElem.tabIndex = this.tabindex;\r\n if (selectionDivElem) selectionDivElem.tabIndex = -1;\r\n }\r\n if (!this['_observed']) {\r\n this['_observed'] = inputElem || selectionDivElem;\r\n if (inputElem) {\r\n this.observeInputEvent('keydown', ($event: KeyboardEvent) => this.onInputElementKeyDown($event), true, inputElem)\r\n .observeInputEvent('focus', ($event: FocusEvent) => this.onInputElementFocus($event), true, inputElem)\r\n .observeInputEvent('blur', ($event: FocusEvent) => this.onInputElementBlur($event), true, inputElem)\r\n .observeInputEvent('focusin', ($event: FocusEvent) => this.onInputElementFocusIn($event), true, inputElem)\r\n .observeInputEvent('focusout', ($event: FocusEvent) => this.onInputElementFocusOut($event), true, inputElem);\r\n } else {\r\n if (selectionDivElem) {\r\n this.observeInputEvent('keydown', ($event: KeyboardEvent) => this.onInputElementKeyDown($event), true, selectionDivElem);\r\n }\r\n }\r\n }\r\n\r\n // Т.к. строки для выбора зачений могут не помещаться в контейнер и будут обрезаны - выводим полный текст в хинте.\r\n const selectElements = this.viewContainer.element.nativeElement.querySelectorAll('div.ui.search.dropdown div.item');\r\n if (selectElements && selectElements.length > 0) {\r\n for (let el of selectElements) {\r\n el.title = (el.innerText || '').trim();\r\n }\r\n }\r\n }\r\n\r\n public isRequired(): boolean {\r\n return this.selectionMode === 'multiple' || super.isRequired();\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this.l10nPlaceholder && !this.l10nPlaceholder.Contains('|')) {\r\n this.l10nPlaceholder += `|${this.placeholder}`;\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n super.ngOnChanges(changes);\r\n if (changes.placeholder && this.wasInit) {\r\n this.setInputElementValue(this.value);\r\n }\r\n if (changes.tabIndex && this.wasInit) {\r\n this.updatePlaceholder();\r\n }\r\n }\r\n\r\n public dropdown: any;\r\n private isShown: boolean;\r\n\r\n ngAfterViewInit() {\r\n this.updatePlaceholder(this.value);\r\n\r\n super.ngAfterViewInit();\r\n\r\n this.subscribe(translate.onLangChange, () => this.updatePlaceholder());\r\n }\r\n\r\n afterVisibilityInit(): void {\r\n super.afterVisibilityInit();\r\n this.setupDropDown();\r\n }\r\n\r\n setupDropDown() {\r\n if (this._isControlSetUp) return;\r\n const el = $(this.viewContainer.element.nativeElement).find('select.ui');\r\n\r\n if (this.isFluid) {\r\n el.addClass('fluid');\r\n } else {\r\n el.removeClass('fluid');\r\n }\r\n\r\n if (this.selectionMode === 'multiple') {\r\n el.attr('multiple', 'true');\r\n } else {\r\n el.attr('multiple', null);\r\n }\r\n if ((this.bool(this.searchable) || this.bool(this.allowAdditions)) && !this.isReadOnly()) {\r\n el.addClass('search');\r\n } else {\r\n el.removeClass('search');\r\n }\r\n\r\n this.zone.runOutsideAngular(() => {\r\n const options: any = assign({\r\n onChange: (value: any) => {\r\n /* странно, без этого кода вроде всё работает\r\n if (this._isControlSetUp && this.isValuesEqual(this.value, value)) {\r\n this.value = value;\r\n this.control.markAsDirty();\r\n }\r\n */\r\n },\r\n onRemove: (value: any) => {\r\n if (this._isControlSetUp && isArray(this.value) && this.value.contains(value)) {\r\n const v = [...this.value];\r\n v.Remove(value);\r\n this.zone.run(() => {\r\n this.value = v;\r\n this.control.markAsDirty();\r\n });\r\n }\r\n },\r\n onShow: () => {\r\n return !this.isReadOnly();\r\n },\r\n onHide: () => {\r\n this.isShown = false;\r\n this.control.markAsTouched();\r\n\r\n },\r\n showOnFocus: false,\r\n allowAdditions: this.bool(this.allowAdditions) && !this.isReadOnly()\r\n },\r\n this.options);\r\n\r\n this.dropdown = $(this.inputElement);\r\n const dropdownElement = this.dropdown.dropdown(options);\r\n const inputElem = dropdownElement.find('input.search').click(e => this.onInputElementClick(e));\r\n if (inputElem.length === 1) {\r\n // если есть input-элемент - нужно добавить событие и для плейсхолдера\r\n // в противном случае не нужно. т.к. это обычный комбобокс\r\n dropdownElement.find('div.text').click(e => this.onInputElementClick(e));\r\n // подключить обработку вставки из буфера\r\n this.renderer.listen(inputElem[0], 'paste', event => this.onPaste(event));\r\n }\r\n });\r\n\r\n !this.inputElement && this.assignInputElement();\r\n \r\n this.updatePlaceholder();\r\n\r\n if (this.defaultValue !== undefined && this.isRequired() && (this.value === null || this.value === undefined)) {\r\n const defaultValue = (this.defaultValue === '' ? (this.propertyMetadata ? this.propertyMetadata.EnumerableMetadata[0].Value : null) : this.defaultValue) || 0;\r\n this.value = defaultValue;\r\n }\r\n\r\n this.updateInputElement(this.value);\r\n this._isControlSetUp = true;\r\n }\r\n\r\n protected onInputElementClick(e: Event) {\r\n if (this.isShown) {\r\n this.isShown = false;\r\n this.dropdown.dropdown && this.dropdown.dropdown('hide');\r\n } else {\r\n this.isShown = true;\r\n this.dropdown.dropdown && this.dropdown.dropdown('show');\r\n }\r\n }\r\n\r\n protected onInputElementKeyDown(e: KeyboardEvent) {\r\n if (e.key === \" \") {\r\n this.onInputElementClick(e);\r\n }\r\n super.onInputElementKeyDown(e);\r\n\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/select/select.component.ts","import { Directive, ElementRef, Input, Renderer2, Sanitizer, ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { TranslateService, TranslationChangeEvent, LangChangeEvent } from '@ngx-translate/core';\r\n\r\n/**\r\n * Using ngTranslate service with attribute.\r\n *\r\n * Usage:\r\n * The following declarations are equals:\r\n *
{{'MY_KEY'|translate}}
\r\n *
MY_KEY
\r\n *
\r\n *\r\n * With params:\r\n *
{{'MY_KEY'|translate:params}}
\r\n *
MY_KEY
\r\n *
\r\n *\r\n * If you use Uss translate service extensions you can also write next:\r\n *
{{'MY_KEY|Alternative text'|translate}}
\r\n *
MY_KEY|Alternative text
\r\n *
Alternative text
\r\n *\r\n * You can use the next for translate value of the ANY attribute:\r\n * \r\n * \r\n * \r\n *\r\n * The next layout switches translation off\r\n *
This text won't be translated
\r\n */\r\n@Directive({\r\n selector: '[l10n]'\r\n})\r\n// ReSharper disable InconsistentNaming\r\nexport class l10nDirective implements AfterViewInit, OnDestroy {\r\n\r\n @Input('l10n') key: string | boolean;\r\n\r\n /**\r\n * Параметры. Передаются также во все переводимые атрибуты.\r\n */\r\n @Input('l10n-params') params: any;\r\n\r\n private translateElements: HTMLElement[];\r\n private onTranslationChange;\r\n private onLangChange;\r\n private currentLang: string;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2, private translateService: TranslateService, private sanitizer: Sanitizer, private cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n // if there is a subscription to onLangChange, clean it\r\n this.dispose();\r\n this.translateElements = [];\r\n let _translateElements = this.el.nativeElement.querySelectorAll('[l10n]');\r\n if (!_translateElements || _translateElements.length === 0) {\r\n _translateElements = [this.el.nativeElement];\r\n }\r\n\r\n for (let i = 0; i < _translateElements.length; i++) {\r\n const el = _translateElements[i];\r\n const subElements = _filter(el.querySelectorAll('[l10n-content], .l10n-content'), (x: HTMLElement) => x.innerHTML.trim().toUpperCase() === x.innerText.trim().toUpperCase());\r\n if (subElements && subElements.length > 0) {\r\n this.translateElements.push(...subElements);\r\n } else {\r\n if (el.children.length === 0) {\r\n this.translateElements.push(el); \r\n }\r\n }\r\n }\r\n\r\n if (this.translate()) {\r\n // subscribe to onTranslationChange event, in case the translations change\r\n if (!this.onTranslationChange) {\r\n this.onTranslationChange = this.translateService.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\r\n if (event.lang === this.translateService.currentLang) {\r\n setTimeout(() => this.translate());\r\n }\r\n });\r\n }\r\n\r\n // subscribe to onLangChange event, in case the language changes\r\n if (!this.onLangChange) {\r\n this.onLangChange = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {\r\n if (event.lang !== this.currentLang) {\r\n setTimeout(() => this.translate());\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n\r\n private dispose(): void {\r\n if (this.onTranslationChange) {\r\n this.onTranslationChange.unsubscribe();\r\n this.onTranslationChange = undefined;\r\n }\r\n if (this.onLangChange) {\r\n this.onLangChange.unsubscribe();\r\n this.onLangChange = undefined;\r\n }\r\n }\r\n\r\n private translate() {\r\n let res = false;\r\n if (this.key !== false) {\r\n this.currentLang = this.translateService.currentLang;\r\n for (let i = 0; i < this.translateElements.length; i++) {\r\n res = this.translateElement(this.translateElements[i]) || res;\r\n }\r\n for (let attr of this.el.nativeElement.attributes) {\r\n if (attr.name.startsWith('l10n-')) {\r\n const l10nAttrName = (attr.name as string).substring('l10n-'.length);\r\n res = this.translateElement(this.el.nativeElement, l10nAttrName, this.el.nativeElement.getAttribute(attr.name)) || res;\r\n }\r\n \r\n }\r\n }\r\n return res;\r\n }\r\n\r\n private translateElement(el: HTMLElement, attrName?: string, attrKey?: string) {\r\n attrName = attrName || '';\r\n let key = el['__l10n__key__' + attrName];\r\n if (!key) {\r\n key = attrName ? attrKey : this.key;\r\n const value = ((attrName ? el.getAttribute(attrName) : el.innerHTML) || '').Trim();\r\n if (key) {\r\n if (!key.includes('|'))\r\n key = `${key}|${value}`;\r\n } else {\r\n key = value;\r\n }\r\n el['__l10n__key__' + attrName] = key;\r\n }\r\n if (key) {\r\n const res = this.translateService.missingTranslationHandler // для ускорения перевода\r\n ? this.translateService.missingTranslationHandler.handle({key: key, translateService: this.translateService, interpolateParams: this.params})\r\n : this.translateService.instant(key, this.params);\r\n if (res) {\r\n //const value = attrName ? res : this.sanitizer.sanitize(SecurityContext.HTML, res);\r\n\r\n const sres = typeof res === 'string' ? res.Trim() : (res[key] || res);\r\n const value = sres.Trim();\r\n if (attrName) {\r\n el.setAttribute(attrName, value);\r\n } else {\r\n el.innerHTML = value;\r\n }\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n return !!key;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/translate.module/l10n.directive.ts","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AppComponent, ifEmpty, translate } from '@core.module';\r\nimport { EditorModal } from '@components.module';\r\nimport { StoreSettings } from '@settings.module';\r\nimport { STOP_DURATION_MIN, DEFAULT_SPEED_LIMIT, DEFAULT_TRACK_WIDTH/*, LONG_STOP_DURATION_MIN*/, IDLING_LIMIT, TRACK_COLOR, getTrackColor, CHECK_INACTIVE_PERIOD_MIN } from '@app/common/GlobalSettings';\r\nimport { LONG_STOP_PERIOD_MIN } from '@telematics.module';\r\nimport { LeafletHelper, IAppMapSettings, toLatLng, TInfoRow } from '@map.module';\r\nimport { LatLngExpression } from 'leaflet';\r\n\r\n\r\n\r\nclass PrivateMapSettings implements IAppMapSettings {\r\n @StoreSettings(DEFAULT_TRACK_WIDTH) trackWidth: number;\r\n @StoreSettings(false) overrideTrackWidth: boolean;\r\n\r\n @StoreSettings(DEFAULT_SPEED_LIMIT) speedLimit: number;\r\n @StoreSettings(false) overrideSpeedLimit: boolean;\r\n\r\n @StoreSettings(STOP_DURATION_MIN) stopDuration: number;\r\n @StoreSettings(false) overrideStopDuration: boolean;\r\n\r\n //@StoreSettings(LONG_STOP_DURATION_MIN) longStopDuration: number;\r\n @StoreSettings(LONG_STOP_PERIOD_MIN) longStopDuration: number;\r\n @StoreSettings(false) overrideLongStopDuration: boolean;\r\n\r\n @StoreSettings(IDLING_LIMIT) idlingLimit: number;\r\n @StoreSettings(false) overrideIdlingLimit: boolean;\r\n\r\n @StoreSettings(TRACK_COLOR) trackColor: string;\r\n @StoreSettings(true) overrideTrackColor: boolean;\r\n\r\n @StoreSettings(false) showIdlingTime: boolean;\r\n\r\n @StoreSettings() zoomInitial: number;\r\n @StoreSettings() zoomDetailTitle: number;\r\n @StoreSettings() zoomDetailTrack: number;\r\n @StoreSettings() zoomDetailPoints: number;\r\n\r\n @StoreSettings() mapCenter: LatLngExpression;\r\n\r\n @StoreSettings('Name') infoRow1: TInfoRow;\r\n @StoreSettings('RegNumber') infoRow2: TInfoRow;\r\n\r\n @StoreSettings(true) showFlagGPS: boolean;\r\n @StoreSettings(true) showSensorInfo: boolean;\r\n @StoreSettings(true) showMovementState: boolean;\r\n @StoreSettings(false) showSatCount: boolean;\r\n @StoreSettings(false) showTurnoverEngine: boolean;\r\n\r\n @StoreSettings(false) showCoordinateTime: boolean;\r\n\r\n @StoreSettings() inactivePeriodDuration: number;\r\n\r\n\r\n constructor() {\r\n LeafletHelper.appMapSettings = this;\r\n }\r\n}\r\n\r\nexport class AppMapSettings {\r\n static instance: IAppMapSettings = new PrivateMapSettings();\r\n\r\n /** Ширина трека по умолчанию. (Если она не указана в карточке объекта мониторинга). */\r\n static trackWidth(transportValue?: number) { return this.instance.overrideTrackWidth || !transportValue ? this.instance.trackWidth : transportValue; }\r\n\r\n /**\r\n * Максимально допустимая скорость, км/ч. (Если она не указана в карточке объекта мониторинга).\r\n * Значение скорости выше этого предела, для данного объекта мониторинга будут считаться превышением скорости.\r\n */\r\n static speedLimit(transportValue?: number) { return this.instance.overrideSpeedLimit || !transportValue ? this.instance.speedLimit : transportValue; }\r\n\r\n /** Длительность остановки по умолчанию, мин. (Если она не указана в карточке объекта мониторинга). */\r\n static stopDuration(transportValue?: number) { return this.instance.overrideStopDuration || !transportValue ? this.instance.stopDuration : transportValue; }\r\n\r\n /** Длительность стоянки по умолчанию, мин. (Если она не указана в карточке объекта мониторинга). */\r\n static longStopDuration(transportValue?: number) { return this.instance.overrideLongStopDuration || !transportValue ? this.instance.longStopDuration : transportValue; }\r\n\r\n\r\n /** Цвет трека. (Если она не указана в карточке объекта мониторинга). */\r\n static trackColor(transportValue?: string) { return this.instance.overrideTrackColor || !transportValue ? this.instance.trackColor || getTrackColor() : transportValue; }\r\n\r\n /** Показывать время работы двигателя на холостом ходу при стоянке в хинте остановки и подробном отчёте */\r\n static get showIdlingTime() { return this.instance.showIdlingTime; }\r\n\r\n /** Лимит оборотов холостого хода */\r\n static idlingLimit(transportValue?: number) { return this.instance.overrideIdlingLimit || !transportValue ? this.instance.idlingLimit : transportValue; }\r\n\r\n /** Какой масштаб у карты при позиционировании */\r\n static get zoomInitial() { return this.instance.zoomInitial || LeafletHelper.Defaults.zoom.initial; }\r\n /** При каком масштабе показывать название объекта на карте */\r\n static get zoomDetailTitle() { return this.instance.zoomDetailTitle || LeafletHelper.Defaults.zoom.detailTitle; }\r\n /** При каком масштабе детализировать трек (стрелки на треке) */\r\n static get zoomDetailTrack() { return this.instance.zoomDetailTrack || LeafletHelper.Defaults.zoom.detailTrack; }\r\n /** При каком масштабе показывать точки на треке */\r\n static get zoomDetailPoints() { return this.instance.zoomDetailPoints || LeafletHelper.Defaults.zoom.detailPoints; }\r\n\r\n /** При каком масштабе показывать названия зон */\r\n static get zoomDetailZones() { return this.zoomDetailTrack; }\r\n\r\n /** Центр карты при позиционировании */\r\n static get mapCenter() { return this.instance.mapCenter || LeafletHelper.Defaults.center; }\r\n\r\n /** Какое свойство объекта мониторинга отображать на первой строке плашки */\r\n static get infoRow1() { return this.instance.infoRow1 || 'Name'; }\r\n\r\n /** Какое свойство объекта мониторинга отображать на второй строке плашки */\r\n static get infoRow2() { return this.instance.infoRow2 || 'RegNumber'; }\r\n\r\n /** Показывать значение флага GPS */\r\n static get showFlagGPS() { return ifEmpty(this.instance.showFlagGPS, true); }\r\n /** Показывать уровни сигнала GSM и заряда батареи */\r\n static get showSensorInfo() { return ifEmpty(this.instance.showSensorInfo, true); }\r\n /** Показывать состояние движения объекта мониторинга */\r\n static get showMovementState() { return ifEmpty(this.instance.showMovementState, true); }\r\n /** Показывать кол-во спутников */\r\n static get showSatCount() { return !!this.instance.showSatCount; }\r\n /** Показывать частоту оборотов двигателя */\r\n static get showTurnoverEngine() { return !!this.instance.showTurnoverEngine; }\r\n /** Показывать время координаты вместо времени получения координаты */\r\n static get showCoordinateTime() { return !!this.instance.showCoordinateTime; }\r\n\r\n /**\r\n * Длительность периода определения неактивности объекта мониторинга, мин.\r\n * (Если координаты не приходят указанное время, а последняя скорость не 0).\r\n */\r\n static get inactivePeriodDuration() { return ifEmpty(this.instance.inactivePeriodDuration, CHECK_INACTIVE_PERIOD_MIN); }\r\n}\r\n\r\n\r\n@Component({\r\n template: require('./map-settings.dialog.html'),\r\n styles: [require('./map-settings.dialog.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n@AppComponent()\r\nexport class AppMapSettingsDialog extends EditorModal {\r\n\r\n static latLngToText(latLng: LatLngExpression) {\r\n const ll = toLatLng(latLng);\r\n return ll ? `${ll.lat},${ll.lng}` : null;\r\n }\r\n\r\n // @ts-ignore\r\n public header = translate.instant('MAP.SETTINGS.TITLE|Настройка параметров по умолчанию');\r\n\r\n public defaultTrackInfo = {\r\n trackWidth: DEFAULT_TRACK_WIDTH,\r\n speedLimit: DEFAULT_SPEED_LIMIT,\r\n stopDuration: STOP_DURATION_MIN,\r\n //longStopDuration: LONG_STOP_DURATION_MIN,\r\n longStopDuration: LONG_STOP_PERIOD_MIN,\r\n idlingLimit: IDLING_LIMIT,\r\n inactivePeriod: CHECK_INACTIVE_PERIOD_MIN\r\n };\r\n\r\n public defaultZoom = LeafletHelper.Defaults.zoom;\r\n public defaultMapCenter = AppMapSettingsDialog.latLngToText(LeafletHelper.Defaults.center);\r\n\r\n public trackingObjectsInfos = [\r\n { Id: 'Name', Name: 'TRACKING_OBJECT.@COLUMNS.NAME|Наименование'},\r\n { Id: 'RegNumber', Name: 'TRACKING_OBJECT.@COLUMNS.REG_NUMBER|Рег. номер'},\r\n { Id: 'Type', Name: 'TRACKING_OBJECT.@COLUMNS.TYPE|Тип'}\r\n ];\r\n\r\n\r\n private setup(val, defVal) { return val === defVal ? null : val || null }\r\n\r\n setModel(val: IAppMapSettings) {\r\n val = val || AppMapSettings.instance;\r\n this.oldModel = val;\r\n\r\n \r\n //const mc = toLatLng(val.mapCenter);\r\n //const mapCenter = mc ? `${mc.lat},${mc.lng}` : null;\r\n this._model = Object.assign({}, {\r\n trackWidth: this.setup(val.trackWidth, DEFAULT_TRACK_WIDTH),\r\n overrideTrackWidth: val.overrideTrackWidth,\r\n speedLimit: this.setup(val.speedLimit, DEFAULT_SPEED_LIMIT),\r\n overrideSpeedLimit: val.overrideSpeedLimit,\r\n stopDuration: this.setup(val.stopDuration, STOP_DURATION_MIN),\r\n overrideStopDuration: val.overrideStopDuration,\r\n //longStopDuration: this.setup(val.longStopDuration, LONG_STOP_DURATION_MIN),\r\n longStopDuration: this.setup(val.longStopDuration, LONG_STOP_PERIOD_MIN),\r\n overrideLongStopDuration: val.overrideLongStopDuration,\r\n showIdlingTime: val.showIdlingTime,\r\n idlingLimit: this.setup(val.idlingLimit, IDLING_LIMIT),\r\n overrideIdlingLimit: val.overrideIdlingLimit,\r\n trackColor: this.setup(val.trackColor, TRACK_COLOR),\r\n overrideTrackColor: val.overrideTrackColor,\r\n\r\n zoomInitial: this.setup(val.zoomInitial, LeafletHelper.Defaults.zoom.initial),\r\n zoomDetailTitle: this.setup(val.zoomDetailTitle, LeafletHelper.Defaults.zoom.detailTitle),\r\n zoomDetailTrack: this.setup(val.zoomDetailTrack, LeafletHelper.Defaults.zoom.detailTrack),\r\n zoomDetailPoints: this.setup(val.zoomDetailPoints, LeafletHelper.Defaults.zoom.detailPoints),\r\n\r\n mapCenter: AppMapSettingsDialog.latLngToText(this.setup(val.mapCenter, LeafletHelper.Defaults.center)),\r\n\r\n infoRow1: this.setup(val.infoRow1, 'Name'),\r\n infoRow2: this.setup(val.infoRow2, 'RegNumber'),\r\n\r\n showFlagGPS: val.showFlagGPS,\r\n showSensorInfo: val.showSensorInfo,\r\n showMovementState: val.showMovementState,\r\n showSatCount: val.showSatCount,\r\n showTurnoverEngine: val.showTurnoverEngine,\r\n showCoordinateTime: val.showCoordinateTime,\r\n\r\n inactivePeriodDuration: val.inactivePeriodDuration === CHECK_INACTIVE_PERIOD_MIN ? null : +val.inactivePeriodDuration,\r\n });\r\n this.prepareEdit(this.model);\r\n }\r\n\r\n async afterSave(model: IAppMapSettings): Promise {\r\n this.oldModel.trackWidth = +model.trackWidth || DEFAULT_TRACK_WIDTH;\r\n this.oldModel.overrideTrackWidth = !!model.overrideTrackWidth;\r\n this.oldModel.speedLimit = +model.speedLimit || DEFAULT_SPEED_LIMIT;\r\n this.oldModel.overrideSpeedLimit = !!model.overrideSpeedLimit;\r\n this.oldModel.stopDuration = +model.stopDuration || STOP_DURATION_MIN;\r\n this.oldModel.overrideStopDuration = !!model.overrideStopDuration;\r\n //this.oldModel.longStopDuration = +model.longStopDuration || LONG_STOP_DURATION_MIN;\r\n this.oldModel.longStopDuration = +model.longStopDuration || LONG_STOP_PERIOD_MIN;\r\n this.oldModel.overrideLongStopDuration = !!model.overrideLongStopDuration;\r\n this.oldModel.showIdlingTime = !!model.showIdlingTime;\r\n this.oldModel.idlingLimit = +model.idlingLimit || IDLING_LIMIT;\r\n this.oldModel.overrideIdlingLimit = !!model.overrideIdlingLimit;\r\n this.oldModel.trackColor = model.trackColor || TRACK_COLOR,\r\n this.oldModel.overrideTrackColor = !!model.overrideTrackColor,\r\n\r\n this.oldModel.zoomInitial = +model.zoomInitial || LeafletHelper.Defaults.zoom.initial;\r\n this.oldModel.zoomDetailTitle = +model.zoomDetailTitle || LeafletHelper.Defaults.zoom.detailTitle;\r\n this.oldModel.zoomDetailTrack = +model.zoomDetailTrack || LeafletHelper.Defaults.zoom.detailTrack;\r\n this.oldModel.zoomDetailPoints = +model.zoomDetailPoints || LeafletHelper.Defaults.zoom.detailPoints;\r\n\r\n this.oldModel.mapCenter = toLatLng(model.mapCenter);\r\n\r\n this.oldModel.infoRow1 = model.infoRow1 || 'Name';\r\n this.oldModel.infoRow2 = model.infoRow2 || 'RegNumber';\r\n\r\n this.oldModel.showFlagGPS = !!model.showFlagGPS;\r\n this.oldModel.showSensorInfo = !!model.showSensorInfo;\r\n this.oldModel.showMovementState = !!model.showMovementState;\r\n this.oldModel.showSatCount = !!model.showSatCount;\r\n this.oldModel.showTurnoverEngine = !!model.showTurnoverEngine;\r\n this.oldModel.showCoordinateTime = !!model.showCoordinateTime;\r\n\r\n this.oldModel.inactivePeriodDuration = ifEmpty(model.inactivePeriodDuration, CHECK_INACTIVE_PERIOD_MIN);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/app/pages/map/components/map-settings/map-settings.dialog.ts","import { Type } from '@angular/core';\r\nimport { Address } from './Address';\r\nimport { ifEmpty, StringBuilder } from '@core.module';\r\nimport { LatLngLiteral } from 'leaflet';\r\n\r\nexport function KnownAddressSource() { return target => AddressSource.knownAddresses[target.name] = target }\r\n\r\nexport class AddressSource {\r\n\r\n static knownAddresses: { [className: string]: Type } = {};\r\n\r\n static getSource(address: Address, v: Object | App.AddressServiceType, action?: (s: AddressSource) => void): AddressSource {\r\n let res = null;\r\n for (let addressSourceTypeName of Object.getOwnPropertyNames(AddressSource.knownAddresses)) {\r\n const addressSourceType = AddressSource.knownAddresses[addressSourceTypeName];\r\n if (typeof addressSourceType['getSource'] === 'function') {\r\n res = addressSourceType['getSource'](address, v, action);\r\n if (res) break;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n private static _lockStackoverflow: boolean;\r\n\r\n /** Заполняет незаполненные поля адреса */\r\n assignParentPropertiesAsync(): Promise {\r\n const addressSource = !AddressSource._lockStackoverflow && this.owner && AddressSource.getSource(this.owner, this.owner.AddressServiceType);\r\n AddressSource._lockStackoverflow = true;\r\n try {\r\n return addressSource && addressSource !== this ? addressSource.assignParentPropertiesAsync() : Promise.resolve();\r\n } finally {\r\n AddressSource._lockStackoverflow = false;\r\n }\r\n }\r\n\r\n\r\n /** Адрес, к которому относится */\r\n owner: Address;\r\n\r\n /** Исходный объект */\r\n source: TSource;\r\n\r\n /** Идентификатор исходного объекта */\r\n getSourceId(): string | number { return this.source && this.source['id']; }\r\n\r\n setCenter(p: LatLngLiteral) { } // nothing... need to be overridden in children\r\n\r\n constructor(address: Address, source: TSource) {\r\n this.owner = address;\r\n this.source = source;\r\n this.assignAddress();\r\n }\r\n\r\n assignAddress(address?: Address): void {\r\n this.owner = address || this.owner;\r\n if (this.owner) {\r\n this.owner.Source = this;\r\n this.owner.Address = this.displayAddress();\r\n }\r\n }\r\n\r\n displayAddInfo(html?: boolean, includeNumber?: boolean, includeDetails?: boolean): string {\r\n let res;\r\n\r\n const numberSpan = '{{number}}';\r\n const detailsSpan = '{{details}}';\r\n /*\r\n const floorSpan = '{{floor}}';\r\n const entranceSpan = '{{entrance}}';\r\n const entrySpan = '{{entry}}';\r\n */\r\n\r\n let number = '';\r\n /*\r\n let floor = '';\r\n let entrance = '';\r\n */\r\n\r\n if (includeNumber && this.owner.Number) {\r\n number = `кв. ${this.owner.Number}`;\r\n }\r\n /*\r\n if (this.owner.floor) {\r\n floor = `этаж ${this.owner.floor}`;\r\n if (this.owner.floorNumber)\r\n floor += `/${this.owner.floorNumber}`;\r\n }\r\n if (this.owner.entrance) {\r\n entrance = `подъезд ${this.owner.entrance}`;\r\n if (this.owner.entranceCode)\r\n entrance += ` (код ${this.owner.entranceCode})`;\r\n }\r\n const entry = this.owner.entry;\r\n */\r\n const details = includeDetails ? this.owner.Details : '';\r\n\r\n if (html) {\r\n res = new StringBuilder()\r\n .append({ number }, numberSpan)\r\n /*\r\n .append({ entrance }, entranceSpan)\r\n .append({ floor }, floorSpan)\r\n .append({ entry }, entrySpan)\r\n */\r\n .append({ details }, detailsSpan)\r\n .toString();\r\n } else {\r\n res = number\r\n /*\r\n .AppendText(entrance, ', ')\r\n .AppendText(floor, ', ')\r\n .AppendText(entry, ', ')\r\n */\r\n .AppendText(details, ', ');\r\n }\r\n\r\n return res;\r\n }\r\n\r\n displayAddress(html?: boolean, includeAddInfo?: boolean): string {\r\n includeAddInfo = ifEmpty(includeAddInfo, html);\r\n let res: string;\r\n\r\n const typeSpan = '';\r\n const poiNameSpan = '{{poiName}}';\r\n\r\n let typeIcon = 'map-marker';\r\n let typ = 'marker';\r\n\r\n const addInfo = includeAddInfo ? this.displayAddInfo(html, true, !!this.owner.Address) : '';\r\n\r\n if (html) {\r\n res = new StringBuilder()\r\n .append({ typ, typeIcon }, typeSpan, ' ')\r\n .append({ poiName: this.owner.Address || this.owner.Details || ' ' }, poiNameSpan)\r\n .append(addInfo, null)\r\n .toString();\r\n } else {\r\n res = (this.owner.Address || '')\r\n .AppendText(addInfo, ', ');\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/address/AddressSource.ts","export * from './address.service';\r\nexport * from './IGeoAddressService';\r\nexport * from './IAppAddressService';\r\nexport * from './osm';\r\nexport * from './visicom';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/index.ts","import { translate } from '@core.module';\r\nimport { LeafletHelper } from '../../../utils/LeafletHelper';\r\n\r\n// ReSharper disable InconsistentNaming\r\ndeclare namespace VisicomApi {\r\n export type ResultFormat = 'json' | 'csv' | 'html';\r\n export type QueryLanguage = 'ru' | 'uk' | 'en';\r\n} \r\n\r\nexport class VisicomApiParams> {\r\n\r\n /** Формат данных (json, csv, html) */\r\n format: VisicomApi.ResultFormat = 'json';\r\n\r\n /** Язык запроса и ответа. Один из (ru,uk,en) */\r\n lang: VisicomApi.QueryLanguage;\r\n\r\n /** Ключ авторизации. Для примера используйте testKey (количество запросов ограничено). */\r\n key?: string;\r\n\r\n /** Имя функции для JSONP запроса к серверу. */\r\n callback?: string;\r\n\r\n constructor() {\r\n LeafletHelper.Defaults.apiKey.visicom && (this.key = LeafletHelper.Defaults.apiKey.visicom);\r\n switch (translate.currentLang) {\r\n case 'ru':\r\n case 'en':\r\n this.lang = translate.currentLang;\r\n break;\r\n case 'ua':\r\n this.lang = 'uk';\r\n break;\r\n default:\r\n this.lang = 'en';\r\n break;\r\n }\r\n }\r\n\r\n\r\n with(setup: (p: TParams) => void): TParams { setup(this); return this; }\r\n withFormat(format: VisicomApi.ResultFormat): TParams { this.format = format; return this; }\r\n withLang(lang: VisicomApi.QueryLanguage): TParams { this.lang = lang; return this; }\r\n withApiKey(key: string): TParams { this.key = key; return this; }\r\n withCallback(callback: string): TParams { this.callback = callback; return this; }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/VisicomApiParams.ts","import { Http } from '@angular/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ApiMethod, ApiModuleService, UssApiService, assign } from '@core.module';\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class BearerLoginResponse {\r\n userName: string;\r\n access_token: string;\r\n expires_in: number;\r\n token_type: string;\r\n refresh_token: string;\r\n scope: string;\r\n '.expires': string;\r\n '.issued': string;\r\n}\r\n// ReSharper restore InconsistentNaming\r\n\r\n@Injectable()\r\n@ApiModuleService('api/Account')\r\nexport class UssAccountService extends UssApiService {\r\n\r\n constructor(http: Http) { super(http); }\r\n\r\n @ApiMethod({ method: 'POST', route: 'Login' })\r\n public Login(login: string, password: string, rememberMe?: boolean): Promise {\r\n return this.request({ login, password, rememberMe });\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: '/token' })\r\n public BearerLogin(login: string, password: string, addInfo?: {[name: string]: any}): Promise {\r\n const payload = { username: login, password };\r\n if (addInfo) {\r\n assign(payload, addInfo);\r\n }\r\n return this.request(payload);\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: 'Me' })\r\n public LoadCurrentUserInfo(): Promise {\r\n return this.request();\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'Logout' })\r\n public Logout(): Promise {\r\n return this.request();\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'Register' })\r\n public Register(login: string, password: string): Promise {\r\n return this.request({ login, password });\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'ChangePassword' })\r\n public ChangePassword(currentPassword: string, newPassword: string): Promise {\r\n return this.request({ currentPassword, newPassword });\r\n }\r\n\r\n/*\r\n @ApiMethod({ method: 'GET', route: '{login}' })\r\n public Load(login: string): Promise {\r\n return this.request({ login });\r\n }\r\n*/\r\n\r\n/*\r\n @ApiMethod({ method: 'POST', route: 'ForgotPassword' })\r\n public RestorePassword(email: string): Promise {\r\n return this.request({ Email: email });\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'ResetPassword' })\r\n public ResetPassword(email: string, password: string, code: string): Promise {\r\n return this.request({ Email: email, Password: password, Code: code });\r\n }\r\n*/\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/auth.module/account.service.ts","import { Type } from '@angular/core';\r\n\r\n/**\r\n * Adds a service to `appServices` array.\r\n * Then this service could be added to bootstrap inside `providers` section.\r\n * The sample of using in app.module.ts:\r\n * @NgModule({\r\n * providers: [\r\n * appServices,\r\n * ...\r\n * ],\r\n * ...\r\n * })\r\n * export class AppModule { }\r\n */\r\nexport function AppService() {\r\n return target => {\r\n if (!appServices.includes(target)) {\r\n appServices.push(target);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * List of all components marked by @AppService decorator.\r\n */\r\nexport const appServices: Type[] = [];\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/app-service.decorator.ts","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { SetupSignleton } from './setup-singleton.decorator';\r\nimport { AUTH_SERVICE_TOKEN } from './core-interface.tokens';\r\n\r\nexport enum UssAuthAction {\r\n LoggedIn = 'loggedIn',\r\n LoggedOut = 'loggedOut'\r\n};\r\n\r\nexport interface UssAuthServiceEvent {\r\n action: UssAuthAction;\r\n user: App.User;\r\n url?: string;\r\n}\r\n\r\nexport interface IUssAuthService extends CanActivate {\r\n /**\r\n * Признак, что пользователь залогинен\r\n */\r\n isLoggedIn: boolean;\r\n /**\r\n * Информация о текущем залогиненом пользователе\r\n */\r\n loggedUser: App.User;\r\n\r\n /**\r\n * Признак, что пользователь админ\r\n */\r\n isAdmin: boolean;\r\n\r\n /**\r\n * Признак, что пользователь супер-пользователь\r\n */\r\n isSuperUser: boolean;\r\n\r\n /**\r\n * Информация о логине текущего пользователя\r\n */\r\n loggedUserName: string;\r\n\r\n /**\r\n * Информация о текущем токене залогиненого пользователя\r\n */\r\n accessToken: string;\r\n\r\n /**\r\n * Время до которого текущий токен валиден\r\n */\r\n accessTokenExpires: moment.Moment;\r\n\r\n onAuthEvent: EventEmitter;\r\n\r\n /** Регистрирует обработчик, который вызывается после логина или логаута. В отличие от события, ожидает окончание выполнения промиса. */\r\n registerAuthHandler(handler: (ev: UssAuthServiceEvent) => Promise);\r\n\r\n login(login: string, password: string, addInfo?: {[name: string]: any}): Promise;\r\n logout(noReload?: boolean): Promise;\r\n /**\r\n * Обновляет информацию о текущем пользователе.\r\n */\r\n updateUserInfo(user?: App.User): Promise;\r\n register?(login: string, password: string): Promise;\r\n registerUser?(user: App.User): Promise;\r\n deleteUserInfo?(currentPassword: string);\r\n\r\n\r\n waitLoading: Promise;\r\n/*\r\n restorePassword?(email: string): Promise;\r\n resetPassword?(email: string, password: string, code: string): Promise;\r\n confirmEmail?(userId: string, code: string): Promise;\r\n*/\r\n\r\n\r\n /**\r\n * Проверяет принадлежность текущего пользователя к одной из ролей.\r\n * Возвращает `true` если пользователь принадлежит хотя бы к одной из перечисленных ролей.\r\n * Суперпользователь всегда принадлежит любой роли.\r\n */\r\n isInRoles(...roles: (App.Role | string)[] | (App.Role | string)[]): boolean;\r\n isInRoles(roles: (App.Role | string)[] | (App.Role | string)[]): boolean;\r\n\r\n /**\r\n * Проверяет наличие прав доступа у текущего пользователя.\r\n * Возвращает `true` если пользователь имеет хотя бы одно из перечисленных прав.\r\n * Суперпользователь всегда имеет полный доступ.\r\n */\r\n hasAccessRights(...accessRights: (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(accessRights: (App.AccessRight | string)[]): boolean;\r\n\r\n /**\r\n * Проверяет возможность доступа к биснес-объекту.\r\n * Суперпользователь всегда имеет полный доступ.\r\n * @param entityName имя бизнес объекта\r\n * @param accessType вид доступа\r\n */\r\n canAccessEntity(entityName: string, accessType?: App.AccessType | string): boolean;\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class DefaultAuthService implements IUssAuthService {\r\n readonly isLoggedIn = false;\r\n readonly loggedUser: App.User = {};\r\n readonly isAdmin = false;\r\n readonly isSuperUser = false;\r\n readonly loggedUserName = '';\r\n readonly accessToken = '';\r\n readonly accessTokenExpires: moment.Moment = undefined;\r\n readonly onAuthEvent = new EventEmitter();\r\n readonly waitLoading = Promise.resolve(false);\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean { return true; }\r\n login(login: string, password: string, addInfo?: {[name: string]: any}): Promise { return Promise.resolve({}); }\r\n logout(noReload?: boolean): Promise { return Promise.resolve(); }\r\n updateUserInfo(user?: App.User): Promise { return Promise.resolve({}); }\r\n register(login: string, password: string): Promise { throw new Error('Not implemented'); }\r\n registerUser(user: App.User): Promise { throw new Error('Not implemented'); }\r\n deleteUserInfo(currentPassword: string) { throw new Error('Not implemented'); }\r\n restorePassword(email: string): Promise { throw new Error('Not implemented'); }\r\n resetPassword(email: string, password: string, code: string): Promise { throw new Error('Not implemented'); }\r\n confirmEmail(userId: string, code: string): Promise { throw new Error('Not implemented'); }\r\n registerAuthHandler(handler: (ev: UssAuthServiceEvent) => Promise) { throw new Error('Not implemented'); }\r\n\r\n isInRoles(...roles: (App.Role | string)[]): boolean;\r\n isInRoles(roles: (App.Role | string)[]): boolean;\r\n isInRoles(p): boolean { throw new Error(\"Not implemented\"); }\r\n hasAccessRights(...accessRights: (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(accessRights: (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(p): boolean { throw new Error(\"Not implemented\"); }\r\n canAccessEntity(entityName: string, accessType?: App.AccessType | string): boolean { throw new Error(\"Not implemented\"); }\r\n}\r\n\r\nexport class CoreAuthService implements IUssAuthService {\r\n isLoggedIn: boolean;\r\n loggedUser: App.User;\r\n isAdmin: boolean;\r\n isSuperUser: boolean;\r\n loggedUserName: string;\r\n accessToken: string;\r\n accessTokenExpires: moment.Moment;\r\n onAuthEvent: EventEmitter;\r\n waitLoading: Promise;\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean { throw new Error('Not implemented'); }\r\n login(login: string, password: string, addInfo?: {[name: string]: any}): Promise { throw new Error('Not implemented'); }\r\n logout(noReload?: boolean): Promise { throw new Error('Not implemented'); }\r\n updateUserInfo(user?: App.User): Promise { throw new Error('Not implemented'); }\r\n register(login: string, password: string): Promise { throw new Error('Not implemented'); }\r\n registerUser(user: App.User): Promise { throw new Error('Not implemented'); }\r\n deleteUserInfo(currentPassword: string) { throw new Error('Not implemented'); }\r\n restorePassword(email: string): Promise { throw new Error('Not implemented'); }\r\n resetPassword(email: string, password: string, code: string): Promise { throw new Error('Not implemented'); }\r\n confirmEmail(userId: string, code: string): Promise { throw new Error('Not implemented'); }\r\n registerAuthHandler(handler: (ev: UssAuthServiceEvent) => Promise) { throw new Error('Not implemented'); }\r\n\r\n isInRoles(...roles: (App.Role | string)[]): boolean;\r\n isInRoles(roles: (App.Role | string)[]): boolean;\r\n isInRoles(p): boolean { throw new Error(\"Not implemented\"); }\r\n hasAccessRights(...accessRights: (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(accessRights: (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(p): boolean { throw new Error(\"Not implemented\"); }\r\n canAccessEntity(entityName: string, accessType?: App.AccessType | string): boolean { throw new Error(\"Not implemented\"); }\r\n\r\n @SetupSignleton(AUTH_SERVICE_TOKEN, DefaultAuthService) static instance: IUssAuthService;\r\n}\r\n\r\nexport const auth: IUssAuthService = new CoreAuthService();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-auth.service.ts","import { EventEmitter } from '@angular/core';\r\nimport {debounce} from './utils';\r\n\r\nexport function isMobileView(): boolean {\r\n return window.innerWidth <= 600;\r\n}\r\n\r\nexport function isTabletView(): boolean {\r\n return window.innerWidth > 600 && window.innerWidth <= 800;\r\n}\r\n\r\nexport function isDesktopView(): boolean {\r\n return window.innerWidth > 800;\r\n}\r\n\r\nexport function isNotMobileView(): boolean {\r\n return !isMobileView();\r\n}\r\n\r\nexport function isPortraitView(): boolean {\r\n return window.innerWidth < window.innerHeight;\r\n}\r\n\r\nexport function isLandscapeView(): boolean {\r\n return !isPortraitView();\r\n}\r\n\r\nexport const onWindowResize = new EventEmitter();\r\nexport const onKeyStateChanged = new EventEmitter();\r\n\r\nwindow.onresize = (event) => {\r\n debounce(() => onWindowResize.emit(event), 1, '@WindowUtils.onWindowResize');\r\n};\r\n\r\ndocument.addEventListener('fullscreenchange', () => document.body.classList.toggle(\"uss-fullscreen\", Boolean(document.fullscreenElement)));\r\n\r\nexport interface ICurrentStateEvent {\r\n time: number;\r\n type: string;\r\n keyCode: number;\r\n key: string;\r\n code: string;\r\n ctrlKey: boolean;\r\n altKey: boolean;\r\n shiftKey: boolean;\r\n}\r\n\r\nexport const currentKeyState = { event: null };\r\ntry {\r\n const sevent = localStorage.getItem('__currentKeyState');\r\n if (sevent) {\r\n const event = JSON.parse(sevent);\r\n if (event.type === 'keydown' && Date.now() - event?.time < 2000) {\r\n currentKeyState.event = event;\r\n }\r\n }\r\n} catch (e) {}\r\n\r\nexport function isCtrlPressed() {\r\n return !!currentKeyState.event?.ctrlKey;\r\n}\r\nexport function isShiftPressed() {\r\n return !!currentKeyState.event?.shiftKey;\r\n}\r\nexport function isAltPressed() {\r\n return !!currentKeyState.event?.altKey;\r\n}\r\n\r\n\r\nwindow.addEventListener(\"keydown\", event => {\r\n currentKeyState.event = { time: Date.now(), type: event.type, keyCode: event.keyCode, key: event.key, code: event.code, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey };\r\n localStorage.setItem('__currentKeyState', JSON.stringify(currentKeyState.event));\r\n onKeyStateChanged.emit(currentKeyState.event);\r\n}, true);\r\nwindow.addEventListener(\"keyup\", event => {\r\n currentKeyState.event = { time: Date.now(), type: event.type, keyCode: event.keyCode, key: event.key, code: event.code, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey };\r\n localStorage.setItem('__currentKeyState', JSON.stringify(currentKeyState.event));\r\n onKeyStateChanged.emit(currentKeyState.event);\r\n}, true);\r\n\r\nexport function configureNonActive(onFreeze: () => void, onUnFreeze: () => void) {\r\n let hidden = 'hidden';\r\n\r\n // ReSharper disable Html.EventNotResolved\r\n // Standards:\r\n if (hidden in document)\r\n document.addEventListener('visibilitychange', onchange);\r\n else if ((hidden = 'mozHidden') in document)\r\n document.addEventListener('mozvisibilitychange', onchange);\r\n else if ((hidden = 'webkitHidden') in document)\r\n document.addEventListener('webkitvisibilitychange', onchange);\r\n else if ((hidden = 'msHidden') in document)\r\n document.addEventListener('msvisibilitychange', onchange);\r\n // IE 9 and lower:\r\n else if ('onfocusin' in document)\r\n (document).onfocusin = (document).onfocusout = onchange;\r\n // All others:\r\n else\r\n (window).onpageshow = (window).onpagehide = (window).onfocus = (window).onblur = onchange;\r\n // ReSharper restore Html.EventNotResolved\r\n\r\n function onchange(evt) {\r\n const v = 'visible';\r\n const h = 'hidden',\r\n evtMap = {\r\n focus: v, focusin: v, pageshow: v, blur: h, focusout: h, pagehide: h\r\n };\r\n\r\n evt = evt || (window).event;\r\n if (evt.type in evtMap)\r\n (document).body.className = evtMap[evt.type];\r\n else\r\n (document).body.className = this[hidden] ? 'hidden' : 'visible';\r\n\r\n switch ((document).body.className) {\r\n case 'visible':\r\n onUnFreeze();\r\n break;\r\n case 'hidden':\r\n onFreeze();\r\n break;\r\n }\r\n }\r\n\r\n // set the initial state (but only if browser supports the Page Visibility API)\r\n if (document[hidden] !== undefined)\r\n onchange({ type: document[hidden] ? 'blur' : 'focus' });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/WindowUtils.ts","import { ViewContainerRef } from '@angular/core';\r\nimport { AppBase } from './app.base';\r\n\r\nexport class AppComponentBase extends AppBase {\r\n\r\n constructor(viewContainer: ViewContainerRef) {\r\n super(viewContainer, false);\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/app.component.ts","import { Subject } from 'rxjs';\r\nimport { debounce, throttle, uid } from './utils';\r\n\r\nexport declare interface ISimpleChange {\r\n previousValue?: T;\r\n currentValue: T;\r\n}\r\n\r\nexport class TypedEventEmitter extends Subject {\r\n\r\n private readonly _id = `TypedEventEmitter: ${uid()}`;\r\n\r\n constructor(async?: boolean);\r\n constructor(throttleOrDebounce: number);\r\n constructor(private throttleOrDebounceTime?: number | boolean) {\r\n super();\r\n }\r\n\r\n setThrottleTime(throttleTime: number): this {\r\n this.throttleOrDebounceTime = throttleTime;\r\n return this;\r\n }\r\n\r\n setDebounceTime(debounceTime: number): this {\r\n this.throttleOrDebounceTime = -debounceTime;\r\n return this;\r\n }\r\n\r\n\r\n public emit(value?: T): TypedEventEmitter {\r\n const v = value || ({} as T);\r\n if (this.throttleOrDebounceTime === true) {\r\n setTimeout(() => this.next(v));\r\n } else if (typeof this.throttleOrDebounceTime === 'number') {\r\n if (this.throttleOrDebounceTime < 0) {\r\n debounce(() => this.next(v), -this.throttleOrDebounceTime, this._id);\r\n } else {\r\n throttle(() => this.next(v), this.throttleOrDebounceTime, this._id);\r\n }\r\n } else {\r\n this.next(v);\r\n }\r\n return this;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/TypedEventEmitter.ts","import {ODataFilterCreator, IODataFunctions, IODataFilterCreator, IODataLogical} from './ODataFilterCreator';\r\nimport * as utils from './utils';\r\n \r\nexport interface IODataMetadata {\r\n value: T[];\r\n 'odata.count': number;\r\n 'odata.skipped'?: number;\r\n 'odata.keyRecordNumber'?: number;\r\n}\r\n\r\nexport interface IODataParams {\r\n $expand?: string;\r\n $filter?: string;\r\n $orderBy?: string;\r\n $top?: number;\r\n $skip?: number;\r\n $extra?: string;\r\n $key?: string;\r\n $empty?: boolean;\r\n}\r\n\r\nexport declare type ODataLike = OData | IODataParams | string;\r\n\r\nexport function odata(): OData;\r\nexport function odata(source: ODataLike, action?: ((self: OData) => void)): OData;\r\nexport function odata(action: ((self: OData) => void)): OData;\r\nexport function odata(p1?, p2?): OData {\r\n return OData.make(p1, p2);\r\n}\r\n\r\nexport class OData {\r\n private _expands: string[] = [];\r\n private _filter: string = \"\";\r\n private _orderBy: string[] = [];\r\n private _top: number;\r\n private _skip: number;\r\n private _key: string;\r\n private _extra: string[] = [];\r\n\r\n private _filterCreator: ODataFilterCreator;\r\n\r\n getExpands() { return this._expands; }\r\n getFilter() { return this._filter; }\r\n getOrderBy() { return this._orderBy; }\r\n getTop() { return this._top; }\r\n getSkip() { return this._skip; }\r\n getKey() { return this._key; }\r\n getExtra() { return this._extra; }\r\n\r\n /**\r\n * То же самое, что и конструктор - создаёт объект OData\r\n */\r\n static get create(): OData {\r\n return new OData();\r\n }\r\n\r\n /**\r\n * То же самое, что и конструктор - создаёт объект OData\r\n */\r\n static make(): OData;\r\n static make(source: ODataLike, action?: ((self: OData) => void)): OData;\r\n static make(action: ((self: OData) => void)): OData;\r\n static make(p1?, p2?): OData {\r\n let source = p1;\r\n let action = p2;\r\n if (typeof p1 === 'function') {\r\n action = p1;\r\n source = p2;\r\n }\r\n const res = new OData(source);\r\n if (action)\r\n action(res);\r\n return res;\r\n }\r\n\r\n /**\r\n * Возвращает объект OData, на основании переданных параметров.\r\n * Это может быть OData, IODataParams или string.\r\n * В последнем случае эта строка трактуется как фильтр.\r\n */\r\n static createFrom(source: ODataLike): OData {\r\n if (source instanceof OData)\r\n return source;\r\n else\r\n return new OData(source);\r\n/*\r\n const res = source != null && typeof source === 'object' ? new OData(source) : new OData();\r\n if (typeof source === 'string') {\r\n res.$filter(source);\r\n }\r\n return res;\r\n*/\r\n }\r\n\r\n public static getQueryText(filter: ODataLike): string {\r\n let res = '';\r\n if (filter) {\r\n if (filter instanceof OData) {\r\n res = filter.query;\r\n }\r\n else if (typeof filter === 'string') {\r\n res = `?$filter=${filter}`;\r\n } else {\r\n res = new OData(filter).query;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static getFilterText(filter: ODataLike): string {\r\n let res = '';\r\n if (filter) {\r\n if (filter instanceof OData) {\r\n res = filter.filterText;\r\n }\r\n else if (typeof filter === 'string') {\r\n res = filter;\r\n } else {\r\n res = new OData(filter).filterText;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static isEqual(p1: ODataLike, p2: ODataLike) {\r\n return this.getQueryText(p1) === this.getQueryText(p2);\r\n }\r\n\r\n\r\n /**\r\n * Создаёт объект OData\r\n */\r\n constructor(source?: ODataLike) {\r\n this.assignFrom(source);\r\n }\r\n\r\n public isEqualTo(odata: ODataLike) {\r\n return this.query === OData.getQueryText(odata);\r\n }\r\n\r\n union(odata: OData) {\r\n if (!odata) return;\r\n odata.prop(undefined);\r\n if (odata._expands && odata._expands.length > 0)\r\n this.$expand(...odata._expands);\r\n if (odata._filter)\r\n this.$filter(odata._filter);\r\n if (odata._extra)\r\n odata._extra.forEach(e => odata.$addExtra(e));\r\n if (odata._orderBy && odata._orderBy.length > 0)\r\n this.$orderBy(...odata._orderBy);\r\n if (!this._top && !this._skip) {\r\n this._top = odata._top;\r\n this._skip = odata._skip;\r\n }\r\n this.$empty = odata.$empty;\r\n }\r\n\r\n toString() {\r\n return this.query;\r\n }\r\n\r\n /**\r\n * Очищает все заданные параметры\r\n */\r\n clear(leaveFilters?: boolean): OData {\r\n if (!leaveFilters) {\r\n this.prop(undefined);\r\n this._filter = '';\r\n }\r\n this._expands = [];\r\n this._orderBy = [];\r\n this._top = undefined;\r\n this._skip = undefined;\r\n this._key = undefined;\r\n this._extra = [];\r\n this.$empty = false;\r\n return this;\r\n }\r\n\r\n /**\r\n * Очищает фильтры\r\n */\r\n clearFilters(): OData {\r\n this.prop(undefined);\r\n this._filter = '';\r\n this.$empty = false;\r\n return this;\r\n }\r\n\r\n /**\r\n * Возвращает строковое значение запроса.\r\n */\r\n get query(): string {\r\n // update filter from current filter creator\r\n this.prop(undefined);\r\n if (this.$empty) return '$top=0&$filter=1 eq 0';\r\n const resArray = [];\r\n if (utils.isArray(this._expands) && this._expands.length > 0)\r\n resArray.push(`$expand=${this._expands.distinct().select(x => x.trim().replace(/\\./g, '/')).toJoinedString(',')}`);\r\n if (this._filter) resArray.push(`$filter=${this._filter}`);\r\n if (utils.isArray(this._orderBy) && this._orderBy.length > 0)\r\n resArray.push(`$orderby=${this._orderBy.distinct().toJoinedString(',')}`);\r\n if (this._top || this._top === 0)\r\n resArray.push(`$top=${this._top}`);\r\n if (this._skip)\r\n resArray.push(`$skip=${this._skip}`);\r\n if (this._key)\r\n resArray.push(`$key=${this._key}`);\r\n if (utils.isArray(this._extra) && this._extra.length > 0)\r\n resArray.push(this._extra.distinct().toJoinedString('&'));\r\n const res = resArray.distinct().toJoinedString('&');\r\n return (res || '').replace(/\\ /g, '+');\r\n }\r\n\r\n get filterText(): string {\r\n // update filter from current filter creator\r\n this.prop(undefined);\r\n return this._filter;\r\n }\r\n\r\n /**\r\n * Добавляет к запросу параметр для получения общего количества записей в запросе (без учёта $top и $skip).\r\n * Результатом запроса будет не массив сущностей, а один элемент IODataMetadata.\r\n */\r\n $inlinecount(): OData {\r\n this._extra.push('$inlinecount=allpages');\r\n this._extra.push('$format=json');\r\n return this;\r\n }\r\n\r\n $distinct(field: string): OData {\r\n this._extra.push(`$distinct=${field}`);\r\n return this;\r\n }\r\n\r\n $select(...fields: string[]): OData {\r\n this._extra.push(`$select=${fields.join(',')}`);\r\n return this;\r\n }\r\n\r\n /**\r\n * Добавляет к запросу перечень названий ссылочных полей, значения которых нужно вернуть с сервера.\r\n */\r\n $expand(addExpand: boolean, ...value: string[]): OData;\r\n $expand(...value: string[]): OData;\r\n $expand(p1: string[]);\r\n $expand(p1: any, ...value: string[]): OData {\r\n let addExpand = true;\r\n if (p1 === undefined || typeof p1 === 'boolean') {\r\n addExpand = !!p1;\r\n } else {\r\n if (p1)\r\n value.unshift(p1.toString());\r\n }\r\n if (!addExpand)\r\n this._expands = [];\r\n for (let item of value) {\r\n item = (item || '').trim();\r\n if (item) {\r\n for (let s of item.split(',')) {\r\n s = (s || '').trim().replace(/\\./g, '/');\r\n while (s.includes('/')) {\r\n s = s.replace('/', '($expand=') + ')';\r\n }\r\n if (s && !this._expands.includes(s))\r\n this._expands.push(s);\r\n }\r\n }\r\n }\r\n return this;\r\n }\r\n /**\r\n * Признак того, что установлены значения $expand\r\n * @returns {} \r\n */\r\n public get hasExpand() { return this._expands && this._expands.length > 0; }\r\n\r\n /**\r\n * Добавляет или устанавливает у запроса перечень названий полей, по которым неободимо отсортировать запрос.\r\n * Сортировка производится в порядке добавления полей. \r\n * Для обратной сортировки следует к имени поля дописать desc.\r\n * \r\n * Пример:\r\n * $orderBy('field1', 'field2 desc', 'Category/Name desc');\r\n */\r\n $orderBy(addOrderFields: boolean, ...value: string[]): OData;\r\n $orderBy(...value: string[]): OData;\r\n $orderBy(p1, ...value: string[]): OData {\r\n let addOrderFields = false;\r\n if (p1 === undefined || typeof p1 === 'boolean') {\r\n addOrderFields = !!p1;\r\n } else {\r\n if (p1)\r\n value.unshift(p1.toString());\r\n }\r\n if (!addOrderFields)\r\n this._orderBy = [];\r\n if (value && value[0] !== undefined && value[0] !== null) {\r\n for (let item of value) {\r\n item = (item || '').trim();\r\n if (item) {\r\n for (let s of item.split(',')) {\r\n s = (s || '').trim().replace(/\\./g, '/');\r\n let ss = s.split(' ')[0];\r\n if (s && !this._orderBy.includes(ss) && !this._orderBy.includes(ss + ' desc'))\r\n this._orderBy.push(s);\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Признак того, что установлены значения $orderBy\r\n * @returns {} \r\n */\r\n public get hasOrderBy() { return this._orderBy && this._orderBy.length > 0; }\r\n\r\n /**\r\n * Указывает количество записей, возвращаемых с сервера.\r\n */\r\n $top(value: number): OData {\r\n this._top = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Указывает количество пропускаемых записей, возвращаемых с сервера.\r\n */\r\n $skip(value: number): OData {\r\n this._skip = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Указывает ключ объекта, который используется для включения соотв. объекта в выборку данных возвращаемых с сервера.\r\n */\r\n $key(value: string): OData {\r\n this._key = value;\r\n return this;\r\n }\r\n\r\n $addExtra(value: string): OData {\r\n this._extra.push(value);\r\n return this;\r\n }\r\n\r\n $extra(key: string, value: string): OData {\r\n this._extra.forEach(x => x.startsWith(key) && (x = `${key}=${value}`));\r\n return this;\r\n }\r\n\r\n /**\r\n * Признак того, что установлены значения $addExtra\r\n * @returns {} \r\n */\r\n public get hasExtra() { return this._extra && this._extra.length > 0; }\r\n\r\n public hasExtraKey(key: string): boolean { return this._extra && this._extra.any(x => x.startsWith(key)); }\r\n\r\n /**\r\n * Добавляет условие отбора по ключевому полю Id.\r\n * @param value Значение ключевого поля\r\n */\r\n $id(value: string): OData {\r\n if (value !== undefined)\r\n this.prop(\"Id\").eq(value);\r\n return this;\r\n }\r\n\r\n public static toEnumValue(value) {\r\n //return value.toString();\r\n return +value;\r\n }\r\n\r\n /**\r\n * Добавляет условие отбора 'равно' по указанному полю.\r\n * Если значение value равно null или undefined - условие игнорируется.\r\n * Используйте для сравнения с null метод isNull()\r\n */\r\n eq(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null) {\r\n this.prop(propName).eq(isEnum ? OData.toEnumValue(value) : value);\r\n }\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'равно null'\r\n */\r\n isNull(propName: string): OData {\r\n this.prop(propName).eq(null);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'не равно null'\r\n */\r\n isNotNull(propName: string): OData {\r\n this.prop(propName).ne(null);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'не равно' по указанному полю.\r\n */\r\n ne(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null)\r\n this.prop(propName).ne(isEnum ? OData.toEnumValue(value) : value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'больше' по указанному полю.\r\n */\r\n gt(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null)\r\n this.prop(propName).gt(isEnum ? OData.toEnumValue(value) : value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'больше или равно' по указанному полю.\r\n */\r\n ge(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null)\r\n this.prop(propName).ge(isEnum ? OData.toEnumValue(value) : value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'меньше' по указанному полю.\r\n */\r\n lt(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null)\r\n this.prop(propName).lt(isEnum ? OData.toEnumValue(value) : value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'меньше или равно' по указанному полю.\r\n */\r\n le(propName: string, value: T, isEnum?: boolean): OData {\r\n if (value !== undefined && value !== null)\r\n this.prop(propName).le(isEnum ? OData.toEnumValue(value) : value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'contains' по указанному полю.\r\n */\r\n contains(propName: string, value: string): OData {\r\n if (value !== undefined && value !== null && value !== '')\r\n this.prop(propName).contains(value);\r\n return this;\r\n }\r\n /**\r\n * Добавляет условие отбора 'startswith' по указанному полю.\r\n */\r\n startswith(propName: string, value: string): OData {\r\n if (value !== undefined && value !== null && value !== '')\r\n this.prop(propName).startswith(value);\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * Добавление условия отбора задаваемых в терминах ODATA-спецификации (http://www.odata.org/documentation/odata-version-2-0/uri-conventions/)\r\n * При простом вызове (без параметра op) каждая запись добавляется как будто op = 'and'\r\n * Для самой первой записи op игнорируется.\r\n * @param op может принимать значение 'and', 'or', 'not'.\r\n * @param filter условие отбора\r\n */\r\n $filter(op: string, filter: string | IODataFunctions): OData;\r\n $filter(filter: string | IODataFunctions): OData;\r\n $filter(p1, p2?): OData {\r\n var op = p1;\r\n var filter = p2;\r\n if (filter === undefined) {\r\n op = 'and';\r\n filter = p1;\r\n }\r\n if (filter) {\r\n if (!this._filter)\r\n this._filter = filter;\r\n else if (op === 'and')\r\n this._filter = `(${this._filter}) ${op} (${filter})`;\r\n else\r\n this._filter = `(${this._filter}) ${op} (${filter})`;\r\n } else\r\n this._filter = undefined;\r\n\r\n return this;\r\n }\r\n\r\n\r\n prop(propName: string): IODataFilterCreator {\r\n if (this._filterCreator) {\r\n const query = this._filterCreator.query;\r\n if (query)\r\n this.$filter('and', query);\r\n }\r\n \r\n if (propName) {\r\n this._filterCreator = new ODataFilterCreator(this, propName);\r\n } else {\r\n this._filterCreator = undefined;\r\n }\r\n return this._filterCreator;\r\n }\r\n\r\n /**\r\n * Usage:\r\n *\r\n * odata = OData.create;\r\n * odata.prop('a').eq(1);\r\n * odata.and(odata.prop('b').eq(2).or('c').eq(3));\r\n *\r\n * or\r\n *\r\n * OData.make(odata => odata.eq('a', 1).and(odata.prop('b').eq(2).or('c').eq(3)));\r\n *\r\n * This code will generate $filter=a eq 1 and (b eq 2 or c eq 3)\r\n * \r\n */\r\n and(odataOperation: IODataLogical): OData {\r\n if (odataOperation) {\r\n const query = odataOperation.query;\r\n if (query)\r\n this.$filter('and', `(${query})`);\r\n }\r\n this._filterCreator = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark query parameters that query returns empty result set.\r\n * Result of the query will be always empty and http request won't be sent.\r\n */\r\n $empty: boolean;\r\n\r\n\r\n /**\r\n * Если это свойство установлено - метод будет вызван CRUDService'ом после получения результата.\r\n * @param res результат запроса.\r\n */\r\n $translateResult: (res: any[]) => any[];\r\n\r\n /**\r\n * Формирует ODATA-фильтр на основании переданного списка полей и значений.\r\n * @param fieldNames список полей, разделённый запятыми. Имя отдельного поля может иметь следующие форматы:\r\n * [*][*][!] - звёздочка означает, что спереди или сзади могут быть любые значения. Восклицательный знак в конце означает отрицание НЕ.\r\n * :{i|f|d|b} - значение после двоеточия указывает тип\r\n * Примеры: *Name* - поиск по любому вхождению текстового поля Name\r\n * Email* - поиск по началу текстового поля Email\r\n * *Email - поиск по окончанию текстового поля Email\r\n * Id - поиск по точному соответствию текстового поля Id\r\n * Age:i - поиск по точному соответствию целочисленного поля Age\r\n * IsValid:b - поиск по точному соответствию логического поля IsValid\r\n * Date:d - поиск по точному соответствию поля типа дата Date (не реализовано)\r\n * Любой другой тип считается строковым. Если указаны перечисленные типы - поиск всегда производится по точному соответствию.\r\n * @param value проверяемое значение. Если значение содержит одинарные кавычки впереди или сзади - это влияет на тип поиска:\r\n * Примеры: '1 - поиск по началу искомого поля\r\n * 1' - поиск по окончанию искомого поля\r\n * '1' - поиск по точному соответствию искомого поля\r\n * @param splitQueryStringBySpaces false (по умолчанию) - значения полей fieldNames проверяются на соответствие значению value по условию AND\r\n * true - текстовое значение value разбивается по пробелам и проверяется соответствие по значению AND (OR) с каждым элементом полученного массива\r\n */\r\n public appendQuery(fieldNames: string, value: any, splitQueryStringBySpaces: boolean = false) {\r\n if (!fieldNames) return;\r\n const values = (splitQueryStringBySpaces && (typeof value === 'string')) ? value.split(' ').select(x => x.trim()).where(x => !!x).toArray() : [value];\r\n const fields = fieldNames.split(',');\r\n let ofc: IODataFilterCreator;\r\n let op;\r\n for (var n = 0; n < values.length; n++) {\r\n ofc = undefined; // чтобы splitQueryStringBySpaces работал по AND\r\n op = undefined; // чтобы splitQueryStringBySpaces работал по AND\r\n let val = values[n];\r\n if (val === undefined || val === null) continue;\r\n for (let i = 0; i < fields.length; i++) {\r\n const fieldArr = fields[i].split(':');\r\n let field = fieldArr[0];\r\n let notFlag = field.EndsWith('!');\r\n if (notFlag) field = field.substring(0, field.length - 1);\r\n\r\n if (!notFlag && typeof val === 'string') {\r\n notFlag = val?.endsWith('!');\r\n if (notFlag) val = val.substring(0, val.length - 1);\r\n }\r\n\r\n // strict match\r\n let searchType = notFlag ? 'ne' : 'eq';\r\n if (field.StartsWith('*') && field.EndsWith('*')) {\r\n // contains\r\n searchType = 'contains';\r\n field = field.substring(1, field.length - 1);\r\n }\r\n else if (field.StartsWith('*')) {\r\n // from end\r\n searchType = 'endswith';\r\n field = field.substring(1, field.length);\r\n }\r\n else if (field.EndsWith('*')) {\r\n // from beginning\r\n searchType = 'startswith';\r\n field = field.substring(0, field.length - 1);\r\n }\r\n var typ = (fieldArr[1] || '').toLowerCase();\r\n\r\n if (typeof val === 'string' && val !== \"'\") {\r\n if (val?.startsWith(\"'\") && val?.endsWith(\"'\")) {\r\n searchType = notFlag ? 'ne' : 'eq';\r\n val = val.substring(1, val.length - 1);\r\n }\r\n else if (val?.startsWith(\"'\")) {\r\n searchType = 'startswith';\r\n val = val.substring(1);\r\n }\r\n else if (val?.endsWith(\"'\")) {\r\n searchType = 'endswith';\r\n val = val.substring(0, val.length - 1);\r\n }\r\n }\r\n\r\n if (typ === 'i' || typ === 'f') {\r\n // number value\r\n // strict search only\r\n val = typ === 'i' ? parseInt(val) : parseFloat(val);\r\n if (!isNaN(val)) {\r\n //ofc = op ? op.or(field) : (ofc || this.prop(field)); // чтобы splitQueryStringBySpaces работал по AND\r\n ofc = op ? op.or(field) : (ofc || OData.create.prop(field));\r\n op = notFlag ? ofc.ne(parseInt(val)) : ofc.eq(parseInt(val));\r\n }\r\n }\r\n else if (typ === 'd') {\r\n // date value\r\n // not implemented\r\n }\r\n else if (typ === 'e') {\r\n // enum value\r\n // not implemented\r\n }\r\n else if (typ === 'b') {\r\n // boolean value\r\n //ofc = op ? op.or(field) : (ofc || this.prop(field)); // чтобы splitQueryStringBySpaces работал по AND\r\n ofc = op ? op.or(field) : (ofc || OData.create.prop(field));\r\n val = (val === '+' || val === '1') ? true : val;\r\n val = (val === '-' || val === '0') ? false : val;\r\n op = ofc.eq(val ? !notFlag : notFlag);\r\n } else {\r\n // string value\r\n //ofc = op ? op.or(field) : (ofc || this.prop(field)); // чтобы splitQueryStringBySpaces работал по AND\r\n ofc = op ? op.or(field) : (ofc || OData.create.prop(field));\r\n op = ofc[searchType](val);\r\n if (notFlag && searchType !== 'ne') {\r\n op = op.not();\r\n }\r\n }\r\n }\r\n if (op) this.and(op); // чтобы splitQueryStringBySpaces работал по AND\r\n }\r\n/*\r\n if (op) this.and(op); // чтобы splitQueryStringBySpaces работал по AND\r\n*/\r\n }\r\n\r\n public assignFrom(source: ODataLike): OData {\r\n this.clear();\r\n return this.appendFrom(source);\r\n }\r\n\r\n public appendFrom(source: ODataLike): OData {\r\n if (source instanceof OData) {\r\n source.prop(undefined);\r\n if (source.$empty) this.$empty = true;\r\n this._top = source._top || this._top;\r\n this._skip = source._skip || this._skip;\r\n this._key = source._key || this._key;\r\n\r\n this.$expand(true, ...source._expands);\r\n this.$orderBy(true, ...source._orderBy);\r\n if (source._extra) this._extra = (this._extra || []).AddRange(source._extra);\r\n if (source._filter) this._filter = (this._filter ? this._filter + '&' : '') + (source._filter || '').trim();\r\n }\r\n else if (typeof source === 'string') {\r\n this.$filter(source);\r\n }\r\n else if (source != null) {\r\n const params = source;\r\n if (params.$expand) {\r\n const expand = params.$expand.split(',').select(s => (s || '').trim()).where(s => s !== '').toArray();\r\n this.$expand(...expand);\r\n }\r\n this._filter = (params.$filter || '').trim();\r\n if (params.$orderBy) {\r\n const orderBy = params.$orderBy.split(',').select(s => (s || '').trim()).where(s => s !== '').toArray();\r\n this.$orderBy(...orderBy);\r\n }\r\n this._top = params.$top;\r\n this._skip = params.$skip;\r\n this._key = params.$key;\r\n this.$empty = params.$empty;\r\n if (params.$extra) this._extra = params.$extra.split('&').select(s => (s || '').trim()).where(s => s !== '').toArray();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Вызывается при формировании условия фильтрации.\r\n */\r\n onMakeFilterExpression: (expr: ODataFilterCreator) => string | void;\r\n}\r\n\r\n/*\r\n var x = new Services.OData();\r\n// var expr = x.prop(\"Field1\").add(4).not().ge(5).and(\"Field2\").eq(moment()).or(\"TTT\").eq(\"O'Brian\");\r\n var expr0 = new ODataFilterCreator(\"Field1\").ge(5).or().eq(1).and(\"Field2\").year().eq(1900).toString();\r\n\r\n var expr00 = new ODataFilterCreator(\"Field1\").ge(5)\r\n .or(ODataFilterCreator.create(\"Field1\").eq(1).and(\"Field2\").year().eq(1900))\r\n .and(\"Field3\").eq(3)\r\n .toString();\r\n\r\n\r\n var expr1 = new ODataFilterCreator(\"Field1\").add(4).not().ge(5).toString();\r\n var expr3 = new ODataFilterCreator(\"Field1\").ge(moment()).toString();\r\n var expr4 = new ODataFilterCreator(\"Field1\").not().ge(new Date()).toString();\r\n var expr2 = new ODataFilterCreator(\"Field1\").concat('4').not().ge(\"O'Brian\").toString();\r\n\r\n var expr41 = 1;\r\n*/\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/OData.ts","export * from './api-method.decorator';\r\nexport * from './api-service.decorator';\r\nexport * from './app-component.decorator';\r\nexport * from './app-service.decorator';\r\nexport * from './custom-component.decorator';\r\nexport * from './extend.decorator';\r\nexport * from './inject.decorator';\r\nexport * from './notify-changes.decorator';\r\nexport * from './log-method.decorator';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/index.ts","import { Injectable } from '@angular/core';\r\nimport { Http, ResponseContentType, Headers, Request, RequestOptionsArgs, Response} from '@angular/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { isString, isArray, debounce, isEmpty, isNotEmpty, uid, guid } from '../utils/utils';\r\nimport { APPLICATION_JSON, fromJson, isJsonLike, JSON_PROTECTION_PREFIX, resolveReferences } from '../utils/Json';\r\nimport { auth } from '../interfaces/core-auth.service';\r\nimport { translate } from '../interfaces/core-translate.service';\r\nimport { UssErrorHandler } from './error-handler';\r\nimport { UssHttpHelper } from './http.helper';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { ErrorObservable } from 'rxjs/observable/ErrorObservable';\r\nimport { msg } from '../interfaces/core-messages.service';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable()\r\nexport class UssHttp extends Http {\r\n\r\n //constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) { super(backend, defaultOptions); }\r\n\r\n public static get instance(): Http { return Reflection.get(Http); }\r\n\r\n\r\n /**\r\n * Уникальный идентификатор клиентского приложения.\r\n * Передаётся на бекенд при каждом запросе, чтобы разделять клиентов, на одном IP-адресе.\r\n */\r\n public static clientId = guid();\r\n\r\n\r\n private createAuthorizationHeader(url: string | Request, options?: RequestOptionsArgs): RequestOptionsArgs {\r\n let uri: string;\r\n if (url instanceof Request) {\r\n uri = url.url;\r\n options = url;\r\n }\r\n else\r\n uri = url;\r\n if (UssHttpHelper.isLocalAddress(uri)) {\r\n UssHttpHelper.isOffline = false;\r\n options = options || {};\r\n options.headers = options.headers || new Headers();\r\n if (auth.isLoggedIn) {\r\n options.headers.append('Authorization', `Bearer ${auth.accessToken}`);\r\n }\r\n if (translate.currentLang) {\r\n options.headers.append('X-Language', translate.currentLang);\r\n }\r\n options.headers.append('X-ID', UssHttp.clientId);\r\n if (UssHttpHelper.recaptcha) {\r\n options.headers.append('X-Recaptcha', UssHttpHelper.recaptcha);\r\n debounce(() => UssHttpHelper.recaptcha = null, 10, '@HttpService.ClearRecaptcha');\r\n }\r\n }\r\n return options;\r\n }\r\n\r\n public static updateUrl(uri: string | Request): string | Request | any {\r\n let url: string = uri;\r\n if (uri instanceof Request) {\r\n url = uri.url;\r\n }\r\n url = UssHttpHelper.updateUrl(url);\r\n if (uri instanceof Request) {\r\n uri.url = url;\r\n } else {\r\n uri = url;\r\n }\r\n return uri;\r\n }\r\n\r\n\r\n /**\r\n * Processes error as service response.\r\n */\r\n public static ProcessError(err: any): string | Promise {\r\n UssErrorHandler.setApiError(err);\r\n const error = UssErrorHandler.ExtractError(err);\r\n if (error) {\r\n if (error instanceof Promise) {\r\n error.then(e => {\r\n this.ProcessError(e);\r\n });\r\n } else {\r\n return error;\r\n } \r\n }\r\n return err;\r\n }\r\n\r\n /**\r\n * Handles the error.\r\n */\r\n public static HandleError(error: any): ErrorObservable {\r\n const e = this.ProcessError(error);\r\n msg.runtimeError(e);\r\n return Observable.throw(e);\r\n }\r\n\r\n public static TransformServiceResponse(data: any, headers?: Headers, array: boolean = false): any {\r\n // Copied from Angular default transform method\r\n if (isString(data)) {\r\n // Strip json vulnerability protection prefix and trim whitespace\r\n const tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();\r\n\r\n if (tempData) {\r\n const contentType = headers && headers.get('Content-Type');\r\n if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) {\r\n data = resolveReferences(fromJson(tempData));\r\n if (array && !isArray(data))\r\n data = [data];\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n\r\n public static HandleResponse(response: Observable, options?: RequestOptionsArgs) {\r\n return response\r\n .pipe(map((value: Response | any) => {\r\n if (value instanceof Response) {\r\n let resp;\r\n if (options) {\r\n switch (options.responseType) {\r\n case ResponseContentType.Blob:\r\n resp = value.blob();\r\n break;\r\n case ResponseContentType.Json:\r\n resp = value.json();\r\n break;\r\n case ResponseContentType.Text:\r\n resp = value.text();\r\n break;\r\n case ResponseContentType.ArrayBuffer:\r\n resp = value.arrayBuffer();\r\n break;\r\n default:\r\n resp = value.text();\r\n }\r\n } else {\r\n resp = value.text();\r\n }\r\n if (value.headers) {\r\n\r\n const serverTimeEmulated = value.headers.get('x-uss-server-timeemulated');\r\n if (isNotEmpty(serverTimeEmulated)) UssHttpHelper.serverTimeEmulated = serverTimeEmulated === 'true';\r\n let serverTime: moment.Moment = value.headers.get('x-uss-server-time') as any;\r\n if (isNotEmpty(serverTime)) {\r\n serverTime = moment(serverTime);\r\n if (serverTime.isValid()) {\r\n UssHttpHelper.serverTime = serverTime;\r\n }\r\n }\r\n\r\n const apiVersion = value.headers.get('x-uss-api-version') || null;\r\n let apiDate: moment.Moment = value.headers.get('x-uss-api-date') as any;\r\n apiDate = moment(apiDate);\r\n if (!apiDate.isValid()) {\r\n apiDate = null;\r\n }\r\n if (apiVersion && apiDate) {\r\n if (isEmpty(UssHttpHelper.apiDate) && isEmpty(UssHttpHelper.apiVersion)) {\r\n UssHttpHelper.apiDate = apiDate;\r\n UssHttpHelper.apiVersion = apiVersion;\r\n } else if (!UssHttpHelper.apiDate.isSame(apiDate) || UssHttpHelper.apiVersion !== apiVersion) {\r\n UssHttpHelper.isApiUpdated = true;\r\n }\r\n }\r\n }\r\n return this.TransformServiceResponse(resp, value.headers);\r\n } else {\r\n return value;\r\n }\r\n }));\r\n }\r\n\r\n /**\r\n * Performs any type of http request. First argument is required, and can either be a url or\r\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\r\n * object can be provided as the 2nd argument. The options object will be merged with the values\r\n * of {@link BaseRequestOptions} before performing the request.\r\n */\r\n public request(url: string | Request, options?: RequestOptionsArgs): Observable {\r\n return super.request(UssHttp.updateUrl(url), this.createAuthorizationHeader(url, options)).pipe(\r\n catchError(e => UssHttp.HandleError(e)));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/http.service.ts","import { EventEmitter } from '@angular/core';\r\nimport { isNotEmpty, isEmpty, uid } from '../utils/utils';\r\nimport * as moment from 'moment';\r\nexport class UssHttpHelper {\r\n\r\n public static id: string = uid();\r\n\r\n public static baseAddress: string = BACKEND_ADDRESS;\r\n public static baseAddressProtokol: 'http' | 'https' | string;\r\n public static recaptcha: string;\r\n\r\n private static _isOffline: boolean = false;\r\n /** Признак того, что backend в оффлайне */ \r\n public static get isOffline(): boolean { return this._isOffline }\r\n public static set isOffline(value: boolean) { if (value !== this._isOffline) { this._isOffline = value; this.onNeedRefresh.emit();} }\r\n\r\n private static _isApiUpdated: boolean = false;\r\n /** Признак того, что версия backend-а изменилась (устанавливается при изменении параметров apiVersion и/или apiDate) */\r\n public static get isApiUpdated(): boolean { return this._isApiUpdated }\r\n public static set isApiUpdated(value: boolean) { if (value !== this._isApiUpdated) { this._isApiUpdated = value; this.onNeedRefresh.emit(); } }\r\n\r\n /** Текущая версия API (в виде x.y.a.b) */\r\n public static apiVersion: string = null;\r\n /** Текущая дата компиляции API */\r\n public static apiDate: moment.Moment = null;\r\n /** Текущая время на сервере */\r\n public static serverTime: moment.Moment = null;\r\n /** Текущая время на сервере эмулируется */\r\n public static serverTimeEmulated: boolean = null;\r\n\r\n /** Вызывается когда необходимо выполнить перезагрузку страницы в браузере.\r\n * Причиной может быть оффлайн режим или изменение версии backend-а.\r\n */\r\n public static onNeedRefresh = new EventEmitter();\r\n\r\n public static isLocalAddress(url: string): boolean {\r\n this.baseAddress = this.updateUrl(this.baseAddress, '');\r\n return isNotEmpty(url) && (url.indexOf('://') === -1 || (this.baseAddress && url.StartsWith(this.baseAddress + '/', true)));\r\n }\r\n\r\n public static updateUrl(url: string, baseAddress?: string): string {\r\n if (isEmpty(baseAddress)) {\r\n if (!this.baseAddressProtokol) {\r\n this.baseAddress = this.updateUrl(this.baseAddress, '/');\r\n if (this.baseAddress.StartsWith('http', true)) this.baseAddressProtokol = 'http';\r\n else if (this.baseAddress.StartsWith('https', true)) this.baseAddressProtokol = 'https';\r\n else this.baseAddressProtokol = location.protocol?.substr(0, location.protocol.length - 1) || 'http';\r\n }\r\n baseAddress = this.baseAddress;\r\n }\r\n if (url) {\r\n if (url.startsWith('//')) {\r\n url = `${this.baseAddressProtokol}:${url}`;\r\n }\r\n else if (url.startsWith('://')) {\r\n url = `${this.baseAddressProtokol}${url}`;\r\n }\r\n else if (url.indexOf('://') === -1 && !url.startsWith('/')) {\r\n url = `${baseAddress}/${url}`;\r\n }\r\n }\r\n return url;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/http.helper.ts","import { PipeTransform, OnDestroy, ChangeDetectorRef, Injectable } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { translate } from '../interfaces/core-translate.service';\r\nimport * as moment from 'moment';\r\n\r\n\r\n@Injectable()\r\nexport class LangDependentPipe implements PipeTransform, OnDestroy {\r\n\r\n private markForTransform = true;\r\n private result: string;\r\n protected value: any = new Object();\r\n\r\n private changes$$: Subscription;\r\n\r\n constructor(protected changeDetector: ChangeDetectorRef) {\r\n // NOTE: ngOnInit doesnt get triggered for pipes, thats why its in the ctor\r\n this.changes$$ = translate.onLangChange.subscribe(() => this.markForCheck());\r\n }\r\n\r\n markForCheck() {\r\n this.markForTransform = true;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n transform(value, ...params): string {\r\n if (this.value === value && !this.markForTransform) {\r\n return this.result;\r\n }\r\n if (this.value === value) {\r\n if (moment.isMoment(this.value)) {\r\n this.value.locale(moment.locale());\r\n }\r\n } else {\r\n this.value = value;\r\n }\r\n this.result = this.internalTransform(value, ...params);\r\n this.markForTransform = false;\r\n return this.result;\r\n }\r\n\r\n internalTransform(value, ...params): string {\r\n return (value || '').toString();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changes$$) {\r\n this.changes$$.unsubscribe();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/lang-dependent.pipe.ts","export * from './api.service';\r\nexport * from './error-handler';\r\nexport * from './http.helper';\r\nexport * from './http.service';\r\nexport * from './systemInfo.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/index.ts","import { Injectable, Optional, isDevMode } from '@angular/core';\r\nimport * as signalR from '@aspnet/signalr';\r\nimport { DefaultEventsService, TUssEventHandler, TUssEventUnsubscriber, isEmpty, resolveReferences } from '@core.module';\r\nimport { UssHub, appHubs, UssSignalrHubOptions } from './UssHub';\r\n\r\n@Injectable()\r\nexport class UssSignalRServiceOptions {\r\n defaultHubName: string = 'AppHub';\r\n logLevel: signalR.LogLevel = isDevMode ? signalR.LogLevel.Information : signalR.LogLevel.Error;\r\n\r\n getHubOptions(hubName: string): UssSignalrHubOptions {\r\n return { route: `signalR/${hubName}`, needAuth: true };\r\n }\r\n\r\n configure(builder: signalR.HubConnectionBuilder): signalR.HubConnectionBuilder {\r\n return builder;\r\n }\r\n}\r\n\r\nexport const UssSignalRServiceDefaultOptions = new UssSignalRServiceOptions();\r\n\r\nexport declare type THubInfo = {\r\n hubName: string;\r\n isConnected: boolean;\r\n connectionId: string;\r\n connection: signalR.HubConnection;\r\n subscriptions: { [eventName: string]: any };\r\n}\r\n\r\ndeclare type TEventName = {\r\n fullEventName?: string;\r\n hubName: string;\r\n eventName?: string;\r\n}\r\n\r\n@Injectable()\r\nexport class UssSignalRService extends DefaultEventsService {\r\n constructor(@Optional() private opt: UssSignalRServiceOptions) {\r\n super();\r\n this.opt = opt || UssSignalRServiceDefaultOptions;\r\n }\r\n\r\n splitEventName(eventName: string): TEventName {\r\n const res: TEventName = { hubName: '' };\r\n const arr = eventName.split('@', 2);\r\n if (arr.length === 2) {\r\n res.hubName = arr[0] || this.opt.defaultHubName || '';\r\n res.eventName = arr[1];\r\n } else {\r\n res.eventName = arr[0];\r\n }\r\n res.hubName = res.hubName.toLowerCase();\r\n if (res.hubName)\r\n res.fullEventName = `${res.hubName}@${res.eventName}`;\r\n else\r\n res.fullEventName = res.eventName;\r\n return res;\r\n }\r\n\r\n subscribe(eventName: string, handler: TUssEventHandler): TUssEventUnsubscriber {\r\n const event = this.splitEventName(eventName);\r\n if (event.hubName) {\r\n this.subscribeHub(event, handler);\r\n }\r\n return super.subscribe(event.fullEventName, handler);\r\n }\r\n\r\n unsubscribe(eventName: string, handler: TUssEventHandler) {\r\n super.unsubscribe(eventName, handler);\r\n const event = this.splitEventName(eventName);\r\n if (event.hubName) {\r\n this.unsubscribeHub(event, handler);\r\n }\r\n }\r\n\r\n hub(hubName?: string): UssHub {\r\n hubName = (hubName || this.opt.defaultHubName).toLowerCase();\r\n hubName = hubName.split('@')[0];\r\n let res = appHubs.firstOrDefault(x => x.options.name === hubName);\r\n if (isEmpty(res)) {\r\n res = new UssHub({ name: hubName });\r\n appHubs.push(res);\r\n }\r\n const extraOptions = this.opt.getHubOptions(hubName);\r\n if (!res.isInitialized) {\r\n res.on$.subscribe(x => {\r\n this.emit(`${x.hubName}@${x.eventName}`, resolveReferences(x.payload));\r\n });\r\n res.init(b => {\r\n b.configureLogging(this.opt.logLevel);\r\n this.opt.configure && this.opt.configure(b);\r\n return b;\r\n }, extraOptions);\r\n }\r\n return res;\r\n }\r\n\r\n private subscribeHub(event: TEventName, handler: TUssEventHandler) {\r\n const hub = this.hub(event.hubName);\r\n hub['subscribe'](event.eventName, handler);\r\n }\r\n\r\n\r\n private unsubscribeHub(event: TEventName, handler: TUssEventHandler) {\r\n const hub = this.hub(event.hubName);\r\n hub['unsubscribe'](event.eventName, handler);\r\n }\r\n\r\n getConnectionId(hubName?: string): string {\r\n const hub = this.hub(hubName);\r\n return hub.connectionId;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/signalr.module/signalr.service.ts","import * as ng from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { isNotEmpty, isEmpty, bool, focusElement } from '@core.module';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport {SystemComponent} from '../../internals';\r\n\r\nexport type TCheckInputValue = { value: string; priorValue: string; sender: UssInputComponent };\r\n\r\n/**\r\n * Implementation of Input element\r\n *\r\n * @link http://semantic-ui.com/elements/input.html\r\n *\r\n * @example\r\n * \r\n */\r\n@Component({\r\n selector: 'uss-input',\r\n template: `\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n 0}\" (mousedown)=\"doClickIcon($event)\" (mouseup)=\"$event.stopPropagation();false\" (click)=\"$event.stopPropagation()\">\r\n \r\n \r\n
\r\n
\r\n
\r\n`,\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssInputComponent extends UssDataSourceComponent {\r\n @ng.Input('type') type: string;\r\n @ng.Input('l10n-placeholder') l10nPlaceholder: string;\r\n @ng.Input('icon') icon: string;\r\n @ng.Output('clickIcon') clickIcon = new ng.EventEmitter();\r\n\r\n /** Автоматически устанавливает первый символ в верхний регистр */\r\n @ng.Input('autoUpper') autoUpperFirst: boolean;\r\n\r\n /** Автоматически устанавливает все символы в верхний регистр */\r\n @ng.Input('autoUpperAll') autoUpperAll: boolean;\r\n\r\n /** Автоматически устанавливает все символы в нижний регистр */\r\n @ng.Input('autoLowerAll') autoLowerAll: boolean;\r\n\r\n @ng.Input('autocomplete') autoComplete: string;\r\n\r\n @ng.Input('showClear') showClearMode: boolean;\r\n\r\n /** Событие, вызываемое перед изменением значения контрола при ручном вводе. Можно поменять значение, которое будет в конечном итоге установлено. */\r\n @ng.Output('checkInputValue') checkInputValue = new ng.EventEmitter();\r\n\r\n public doClickIcon($event?: Event) {\r\n if (isNotEmpty($event)) {\r\n $event.stopPropagation();\r\n }\r\n this.clickIcon.emit($event);\r\n return false;\r\n }\r\n\r\n public clear($event?: Event) {\r\n this.value = '';\r\n setTimeout(() => this.inputElement.focus());\r\n if (isNotEmpty($event)) {\r\n $event.stopPropagation();\r\n }\r\n this.onInputElementInput($event);\r\n return false;\r\n }\r\n\r\n public get hasIcon(): boolean {\r\n return isNotEmpty(this.icon) || this.showClear;\r\n }\r\n\r\n public get showClear(): boolean {\r\n return this.showClearMode !== false && !!(!this.isReadOnly() && !this.isRequired() /*&& (isEmpty(this.icon) || this.showClearMode === true)*/ && !this.disabled && isNotEmpty(this.control) && this.control.value/* && this.isFocused*/);\r\n }\r\n\r\n private _priorInputValue: string;\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.showClearMode = bool(this.showClearMode, true);\r\n this.autoLowerAll = bool(this.autoLowerAll);\r\n this.autoUpperAll = bool(this.autoUpperAll);\r\n this.autoUpperFirst = bool(this.autoUpperFirst);\r\n this.valueChange.subscribe(v => this._priorInputValue = v);\r\n }\r\n\r\n protected onInputElementInput($event: Event) {\r\n this.control?.markAsDirty();\r\n this.control?.markAsTouched();\r\n let val = this.toValue(this.getInputElementValue());\r\n if (val) {\r\n if (this.autoLowerAll) {\r\n val = val.toLocaleLowerCase();\r\n }\r\n else if (this.autoUpperAll || this.autoUpperFirst && val.length === 1) {\r\n val = val.toLocaleUpperCase();\r\n }\r\n else if (this.autoUpperFirst && val.length > 1) {\r\n val = val.substr(0, 1).toLocaleUpperCase() + val.substr(1);\r\n }\r\n const event = { value: val, priorValue: this._priorInputValue, sender: this };\r\n this.checkInputValue.emit(event);\r\n val = event.value;\r\n this.inputElement.value = val;\r\n }\r\n this.control?.setValue(val);\r\n this.valueChange.emit(val);\r\n }\r\n\r\n insertText(text: string, setFocus: boolean = true) {\r\n (this.inputElement).setRangeText(text, this.inputElement.selectionStart, this.inputElement.selectionEnd, 'end');\r\n this.value = (this.inputElement).value;\r\n if (setFocus) focusElement(this.inputElement);\r\n }\r\n}\r\n\r\n/**\r\n * Implementation of Textarea element\r\n *\r\n * @link http://semantic-ui.com/collections/form.html#text-area\r\n */\r\n@Component({\r\n selector: 'uss-textarea',\r\n template: `\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
`,\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssTextAreaComponent extends UssDataSourceComponent {\r\n\r\n @ng.Input() rows: string;\r\n @ng.Input('l10n-placeholder') l10nPlaceholder: string;\r\n\r\n protected onDefaultNavigationKeyDownHandler(e: KeyboardEvent) {\r\n // nothing for default action\r\n }\r\n\r\n insertText(text: string, setFocus: boolean = true) {\r\n (this.inputElement).setRangeText(text, this.inputElement.selectionStart, this.inputElement.selectionEnd, 'end');\r\n this.value = (this.inputElement).value;\r\n if (setFocus) focusElement(this.inputElement);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Implementation of Checkbox element\r\n *\r\n * @link http://semantic-ui.com/modules/checkbox.html\r\n */\r\n@Component({\r\n selector: 'uss-checkbox',\r\n template: `\r\n
\r\n
\r\n \r\n \r\n
\r\n
`,\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssCheckBoxComponent extends UssDataSourceComponent implements ng.OnChanges, ng.AfterViewInit {\r\n\r\n @ng.Input('name') name: string;\r\n @ng.Input('value') attrValue: string|number;\r\n @ng.Input('mask') mask: string | number;\r\n @ng.Input('indeterminate') indeterminate: boolean | string;\r\n @ng.Input('inverse') inverse: boolean;\r\n\r\n maskValue: number = Number.MAX_SAFE_INTEGER;\r\n\r\n @ng.ViewChild('checkbox') checkbox: ng.ElementRef;\r\n\r\n @ng.Input('type')\r\n set type(data: 'checkbox' | 'radio' | 'toggle') {\r\n if (data && data !== 'checkbox') {\r\n this.classType = data;\r\n if (data === 'radio') {\r\n this.inputType = data;\r\n }\r\n }\r\n }\r\n\r\n private inputType: 'checkbox' | 'radio' | 'toggle' = 'checkbox';\r\n private classType: 'checkbox' | 'radio' | 'toggle' = 'checkbox';\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.attrValue) {\r\n this.checkbox.nativeElement.checked = bool(this.inverse) ? !this.attrValue : !!this.attrValue;\r\n }\r\n if (changes.indeterminate) {\r\n this.indeterminate = bool(this.indeterminate);\r\n if (this.inputElement && this.inputElement.type === 'checkbox') {\r\n this.inputElement.checked = bool(this.inverse) ? !this.value : !!this.value;\r\n this.inputElement.indeterminate = this.indeterminate && isEmpty(this.value);\r\n }\r\n }\r\n if (changes.mask) {\r\n if (isNotEmpty(this.mask)) {\r\n //this.type = 'radio';\r\n }\r\n if (typeof this.mask === 'string') {\r\n this.maskValue = parseInt(this.mask);\r\n }\r\n if (isEmpty(this.maskValue) || isNaN(this.maskValue)) {\r\n this.maskValue = Number.MAX_SAFE_INTEGER;\r\n }\r\n }\r\n }\r\n\r\n protected getDataSourceValue(): number {\r\n let res = super.getDataSourceValue();\r\n if (isEmpty(res) && !this.indeterminate) {\r\n res = 0;\r\n }\r\n return res;\r\n }\r\n\r\n protected getInputElementValue() {\r\n let res = super.getInputElementValue();\r\n if (this.indeterminate && this.inputElement.indeterminate) {\r\n res = null;\r\n } else {\r\n switch (this.inputElement.type) {\r\n case 'checkbox':\r\n if (isNaN(res))\r\n res = this.inputElement.checked;\r\n else {\r\n if (this.inputElement.checked)\r\n res = this.value | parseInt(res);\r\n else\r\n res = this.value & ~parseInt(res);\r\n }\r\n break;\r\n case 'radio':\r\n if (this.inputElement.checked)\r\n res = parseInt(res) | (this.value & ~this.maskValue);\r\n break;\r\n }\r\n }\r\n return bool(this.inverse) ? !res : res;\r\n }\r\n\r\n protected setInputElementValue(value) {\r\n switch (this.inputElement.type) {\r\n case 'checkbox':\r\n if (isNaN(this.inputElement.value)) {\r\n // If not set - checkbox will switch true/false\r\n this.inputElement.checked = bool(this.inverse) ? !value : !!value;\r\n this.inputElement.indeterminate = this.indeterminate && isEmpty(value);\r\n } else {\r\n // If set - checkbox sets bits\r\n const v = (parseInt(this.inputElement.value) & value) !== 0;\r\n this.inputElement.checked = bool(this.inverse) ? !v : v;\r\n }\r\n break;\r\n case 'radio':\r\n const v = parseInt(this.inputElement.value) === (value & this.maskValue);\r\n this.inputElement.checked = bool(this.inverse) ? !v : v;\r\n break;\r\n default:\r\n value = value === undefined ? '' : value;\r\n if (this.inputElement.value !== value) {\r\n this.inputElement.value = value;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n public getValue() {\r\n const v = this.control ? this.control.value : this._value;\r\n return this.toValue(v);\r\n }\r\n\r\n setValue(v: number): void {\r\n super.setValue(v);\r\n if (this.afterInitVisible) {\r\n this.control?.markAsDirty();\r\n }\r\n }\r\n\r\n protected onControlValueChange(value) {\r\n super.onControlValueChange(value);\r\n this.setInputElementValue(value);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/input/inputs.component.ts","import * as ng from '@angular/core';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { isFnEmpty, IApiMethodMetadata, translate, durationToString, msg, OData, TCacheOptions, ifEmpty, IODataParams, IODataMetadata, isString, clone, cloneDeep, assign, dialog, IUssEventsService, Reflection, EVENTS_SERVICE_TOKEN, PromiseEx, UssApiService } from '@core.module';\r\nimport { UssCacheApiService } from '@cache.module';\r\nimport { entityEditDialogs } from './entity-edit-dialog.decorator';\r\n\r\nexport interface IEntityObjectId {\r\n Id?: string | any;\r\n $userData?: { [name: string]: any };\r\n /** Когда объект создаётся по копии - тут будет ссылка на объект-источник */\r\n $sourceId?: any;\r\n}\r\n\r\n/**\r\n * Сервис CRUD-контроллера ресурсов\r\n */\r\nexport class UssCrudApiService extends UssCacheApiService {\r\n\r\n /** Наименование типа бизнес-объекта */\r\n public entityName: string;\r\n\r\n /** User-friendly описание типа бизнес-объекта */\r\n public entityDescription: string;\r\n\r\n /** Тег кеша по умолчанию (если такой не задан в объекте cache) */\r\n // @ts-ignore\r\n get defaultCacheTag() { return this.entityName; }\r\n\r\n /**\r\n * Описание объекта\r\n * @param entity Объект\r\n */\r\n public getDescription(entity: T): string {\r\n return entity['Description'] || entity['Name'];\r\n }\r\n\r\n protected checkUpdateCache(entityName: string) {\r\n if (entityName === this.entityName) {\r\n this.clearCache();\r\n }\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПЕРЕД отправкой запроса query на сервер.\r\n * Перекрыв его в классе наследнике можно глобально влиять на запросы к бекенду данного класса.\r\n * @param odata параметры запроса\r\n */\r\n protected prepareQuery(odata: OData, isSmartLoad?: boolean): void {\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПЕРЕД отправкой запроса get на сервер.\r\n * Перекрыв его в классе наследнике можно глобально влиять на запросы к бекенду данного класса.\r\n * @param odata параметры запроса (поддерживается только $expand параметр)\r\n */\r\n protected prepareGet(odata: OData): void {\r\n this.prepareQuery(odata);\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПЕРЕД отправкой запроса get на сервер.\r\n * Перекрыв его в классе наследнике можно глобально влиять на пришедший ответ.\r\n * Например, изменить поведение по умолчанию, когда в случае ошибки - она НЕ выводится на экран.\r\n * @param query промис запроса\r\n */\r\n protected afterGet$(query: Observable): Observable {\r\n return query;\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПОСЛЕ получения объекта или объектов с сервера.\r\n * Перекрыв его в классе наследнике можно глобально влиять на получение результатов.\r\n * Например, заполнить вычислимые поля или поля, которые как-то зависят от текущего состояния объекта.\r\n * По умолчанию этот метод вызывается при получении результатов методами Load ($query, $get) и Save (результат сохранения).\r\n * Если вы пишете свои дополнительные методы, которые получают объекты класса напрямую через apiServive - \r\n * вызывайте этот метод при получении результата.\r\n * @param res объект - результат запроса.\r\n */\r\n protected prepareResult(res: T): void {\r\n }\r\n\r\n /**\r\n .* Получение объекта по его Id с сервера.\r\n * @param id идентификатор объекта\r\n * @param expandFields перечень $expand-полей. Массив строк или строка с разделителем ','.\r\n */\r\n protected $get(id: string, expandFields: string | string[], cache?: boolean | string | TCacheOptions): Observable {\r\n cache = ifEmpty(cache, this.cache);\r\n expandFields = expandFields || '';\r\n if (Array.isArray(expandFields))\r\n expandFields = (expandFields).join(',');\r\n const odata = new OData({ $expand: expandFields });\r\n this.prepareGet(odata);\r\n if (odata.hasExtraKey('$clearCache')) {\r\n this.clearCache();\r\n }\r\n let res;\r\n odata.$filter(undefined).$skip(undefined).$top(undefined).$orderBy(undefined);\r\n\r\n //res = this.request({ id: id, \"$query\": odata.$id(id).$top(1).query }, { method: \"GET\", route: \"/{id}\" });\r\n if (odata.query) {\r\n res = this.convertFromODataFormat(this.request$(odata.$id(id).$top(1), { method: 'GET', route: '', cache: cache }), odata)\r\n .map(r => r.firstOrDefault());\r\n } else {\r\n res = this.request$({ id }, { method: 'GET', route: '{id}', cache: cache });\r\n }\r\n // Добавляем проверку - не возвращать результат, если он равен null (или undefined)\r\n\r\n return this.afterGet$(res)\r\n .map((r: any) => {\r\n if (r) {\r\n if (!isFnEmpty(this.prepareResult))\r\n this.prepareResult(r);\r\n }\r\n return r;\r\n });\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПОСЛЕ сохранения объекта.\r\n * Перекрыв его в классе наследнике можно глобально влиять на действия после сохранения объектов.\r\n * После успешного сохранения объекта, переданного в фунцию Save от сервера приходит объект,\r\n * соответствующий текущему состоянию на сервере после сохранения (например, с запоненными полями Id, Number и т.д.)\r\n * По умолчанию эти значения копируются в исходный объект (переданный в метод Save) как раз при помощи этого метода.\r\n * Данный метод также влияет на то, какой объект будет возвращён в качестве результата промиса Save.\r\n * По умолчанию - это объект, пришедший с сервера (не исходный).\r\n */\r\n protected afterSave(res: T, source: T, wasNew: boolean): T {\r\n // Копируем все поля\r\n for (let key in res) {\r\n if (res.hasOwnProperty(key)) {\r\n if (key[0] === '$' || key[0] === '_') continue;\r\n const priorValue = source[key];\r\n const value = res[key];\r\n // кроме ссылочных, если они равны null\r\n if (typeof priorValue !== 'object' || value)\r\n source[key] = value;\r\n // или если их Id составляющая равна null\r\n else if (priorValue) {\r\n if (!res[key + 'Id'])\r\n source[key] = value;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПЕРЕД отправкой запроса query на сервер.\r\n * Перекрыв его в классе наследнике можно глобально влиять на пришедший ответ.\r\n * Например, изменить поведение по умолчанию, когда в случае ошибки - она выводится на экран.\r\n * @param query промис запроса\r\n */\r\n protected afterQuery$(query: Observable): Observable {\r\n return query;\r\n }\r\n\r\n private convertFromODataFormat(odataResult: Observable, odata?: OData): Observable {\r\n return odataResult.map((res: T[]) => {\r\n var result: IODataMetadata = res;\r\n/*\r\n if (res) {\r\n if (isArray(res)) {\r\n result = (res[0]) || [];\r\n if (!isArray(result.value)) {\r\n result.value = res;\r\n }\r\n\r\n if (odata && odata.$translateResult) {\r\n result.value = odata.$translateResult(result.value);\r\n if (result['odata.count'] === undefined) {\r\n isArray(result.value) && (result['odata.count'] = result.value.length);\r\n }\r\n }\r\n }\r\n\r\n if (result && isArray(result.value)) {\r\n res = result.value;\r\n }\r\n }\r\n*/\r\n if (result && Array.isArray(result.value)) {\r\n res = result.value;\r\n }\r\n\r\n if (res) {\r\n if (!isFnEmpty(this.prepareResult) && Array.isArray(res)) {\r\n res.forEach((x: any) => this.prepareResult(x));\r\n }\r\n\r\n /* added */\r\n if (odata && typeof odata.$translateResult === 'function') {\r\n res = odata.$translateResult(res);\r\n if (result['odata.count'] === undefined) {\r\n Array.isArray(res) && (result['odata.count'] = res.length);\r\n }\r\n }\r\n\r\n if (result) {\r\n res['odata.count'] = result['odata.count'];\r\n res['odata.skipped'] = result['odata.skipped'];;\r\n res['odata.keyRecordNumber'] = result['odata.keyRecordNumber'];\r\n }\r\n }\r\n return res;\r\n });\r\n }\r\n\r\n /**\r\n .* Получение списка объектов с сервера.\r\n * @param query параметры запроса\r\n */\r\n protected $query(query?: OData | IODataParams, isSmartLoad?: boolean, route?: string, cache?: boolean | string | TCacheOptions): Observable {\r\n cache = ifEmpty(cache, this.cache);\r\n const odata = query instanceof OData ? query : new OData(query);\r\n this.prepareQuery(odata, isSmartLoad);\r\n if (odata.hasExtraKey('$clearCache')) {\r\n this.defaultCaches.memory.removeAll();\r\n }\r\n route = route || '';\r\n let queryResult: Observable;\r\n if (odata.$empty) {\r\n queryResult = Observable.fromPromise(Promise.resolve([]));\r\n } else {\r\n queryResult = this.request$(odata, { method: 'GET', route, cache: cache });\r\n queryResult = this.convertFromODataFormat(queryResult, odata);\r\n queryResult = this.afterQuery$(queryResult);\r\n }\r\n return queryResult;\r\n }\r\n\r\n /**\r\n .* Получение объекта по его Id с сервера.\r\n * @param id идентификатор объекта\r\n * @param expandFields перечень $expand-полей. Массив строк или строка с разделителем ','.\r\n */\r\n public load(id: string, expandFields?: string | string[], cache?: boolean | string | TCacheOptions): PromiseEx;\r\n /**\r\n .* Получение списка объектов с сервера.\r\n * @param query параметры запроса\r\n */\r\n public load(query?: OData | IODataParams, cache?: boolean | string | TCacheOptions): PromiseEx;\r\n load(p, p1?, p2?): PromiseEx {\r\n return UssApiService.toPromise(this.load$(p, p1, p2));\r\n }\r\n\r\n /**\r\n .* Получение количества записей с сервера.\r\n * @param query параметры запроса\r\n */\r\n public count(query?: OData | IODataParams, cache?: boolean | string | TCacheOptions): PromiseEx {\r\n return UssApiService.toPromise(this.count$(query, cache));\r\n }\r\n\r\n /**\r\n .* Получение объекта по его Id с сервера.\r\n * @param id идентификатор объекта\r\n * @param expandFields перечень $expand-полей. Массив строк или строка с разделителем ','.\r\n */\r\n public load$(id: string, expandFields?: string | string[], cache?: boolean | string | TCacheOptions): Observable;\r\n /**\r\n .* Получение списка объектов с сервера.\r\n * @param query параметры запроса\r\n */\r\n public load$(query?: OData | IODataParams, cache?: boolean | string | TCacheOptions): Observable;\r\n load$(p, p1?, p2?): any {\r\n if (isString(p)) {\r\n // Получение объекта по его Id с сервера.\r\n return this.$get(p, p1, p2);\r\n } else {\r\n // Получение списка объектов с сервера.\r\n return this.$query(p, p1);\r\n }\r\n }\r\n\r\n /**\r\n * Requesting an export data from server\r\n * @param params\r\n * @param query\r\n */\r\n public export$(params: App.ExportParams, query?: OData | IODataParams): Observable {\r\n if (this.odataUrl) {\r\n const odata = query instanceof OData ? query : new OData(query);\r\n this.prepareQuery(odata, false);\r\n return odata.$empty\r\n ? Observable.of({})\r\n : this.request$(params,\r\n {\r\n method: 'POST',\r\n route: `?${odata.query}`,\r\n useBody: true,\r\n apiUrl: this.odataUrl\r\n }/*, { responseType: ResponseContentType.Blob }*/);\r\n } else {\r\n return this.request$(params,\r\n {\r\n method: 'POST',\r\n route: 'export',\r\n useBody: true\r\n }/*, { responseType: ResponseContentType.Blob }*/);\r\n }\r\n }\r\n\r\n /**\r\n * Loading an import data to server\r\n */\r\n public import$(file: File): Observable {\r\n if (!file) return Observable.of({});\r\n\r\n const formData = new FormData();\r\n formData.append('files', file);\r\n\r\n return this.request$(formData, { method: 'POST', route: `import`, useBody: true });\r\n }\r\n\r\n /**\r\n * Запускает асинхронную задачу импорта данных.\r\n * Возвращает текстовый идентификатор запущенной асинхронной задачи.\r\n */\r\n public importTask$(file: File): Observable {\r\n if (!file) return Observable.of({});\r\n\r\n const formData = new FormData();\r\n formData.append('files', file);\r\n\r\n return this.request$(formData, { method: 'POST', route: `importTask`, useBody: true });\r\n }\r\n\r\n /**\r\n .* Получение количества записей с сервера.\r\n * @param query параметры запроса\r\n */\r\n public count$(query?: OData | IODataParams, cache?: boolean | string | TCacheOptions): Observable {\r\n cache = ifEmpty(cache, this.cache);\r\n const odata = query instanceof OData ? query : new OData(query);\r\n this.prepareQuery(odata);\r\n // Удалим ненужные запросы и добавим нужные\r\n odata.clear(true).$inlinecount().$top(0);\r\n return this.request$>(odata, { method: 'GET', route: '', cache: cache })\r\n .map(x => x['odata.count']);\r\n }\r\n\r\n /**\r\n * Подготовка объекта к сохранению.\r\n */\r\n protected prepareSave(entity: T): void {\r\n if (!entity.Id) {\r\n delete entity['CreatedBy'];\r\n delete entity['CreatedDate'];\r\n }\r\n delete entity['ModifiedBy'];\r\n delete entity['ModifiedDate'];\r\n this.clearNavigationProperties(entity, false);\r\n }\r\n\r\n\r\n /**\r\n * Очистка навигационных полей и замена полей даты на корректное текстовое значение.\r\n * ---\r\n * Moment.js содержит странную ошибку, которая заключается в том, что если дата меньше или равна 01.01.1991 у неё неправильно расчитывается смещение часового пояса\r\n * Это приводит к тому, что сохраняя дату вида `10.11.1990`, она сохраняется в БД как `09.11.1990 23:00`\r\n * т.к. конвертируется в UTC-формат в виде `09.11.1990T21:00:00Z` вместо положенного `09.11.1990T22:00:00Z`\r\n * Чтобы избежать этого - превратим локальную дату без времени в строку без времени `10.11.1990 0:00:00` -> `10.11.1990`, такая строка корректно сохранится на бекенде\r\n * Это НЕ РЕШАЕТ проблему сохранения даты перед 01.01.1991 со временем, но таких случев у нас практически не будет.\r\n * @param entity сохраняемый объект\r\n * @param cloneEntities следует ли клонировать исходный объект для сохранения его целостности после очисток и преобразований\r\n * @param convertDurations преобразовывать значения объекта moment.Duration в текстовое представление вида hh:mm:ss\r\n * @param convertDate преобразовывать значения объекта moment.Moment в текстовое представление\r\n */\r\n protected clearNavigationProperties(entity: IEntityObjectId | IEntityObjectId[], cloneEntities: boolean = true, convertDurations: boolean = true, convertDate: boolean = true): IEntityObjectId | IEntityObjectId[] {\r\n if (Array.isArray(entity)) {\r\n let entities = entity;\r\n if (cloneEntities) {\r\n entities = clone(entities);\r\n }\r\n for (let i = 0; i < entities.length; i++) {\r\n entities[i] = this.clearNavigationProperties(entities[i], cloneEntities);\r\n }\r\n return entities;\r\n } else {\r\n if (cloneEntities) {\r\n entity = clone(entity);\r\n }\r\n for (let key in entity) {\r\n if (entity.hasOwnProperty(key)) {\r\n if (key[0] === '$' || key[0] === '_') {\r\n // очищаем все приватные и внутренние поля\r\n delete entity[key];\r\n }\r\n else if (convertDurations && moment.isDuration(entity[key])) {\r\n entity[key] = durationToString(entity[key]);\r\n }\r\n else if (convertDate && moment.isMoment(entity[key])) {\r\n const m = moment((entity[key] as moment.Moment));\r\n m.local();\r\n if (m.hours() + m.minutes() + m.seconds() + m.milliseconds() === 0) {\r\n let s = m.format('YYYY-MM-DD');\r\n entity[key] = s;\r\n }\r\n }\r\n // очищаем все ссылочные поля, кроме полей Moment и Date\r\n else if (entity[key] !== null && typeof entity[key] === 'object' && !moment.isMoment(entity[key]) && !(entity[key] instanceof Date)) {\r\n delete entity[key];\r\n }\r\n }\r\n }\r\n return entity;\r\n }\r\n }\r\n\r\n /**\r\n * Сохранение объекта.\r\n * После успешного сохранения объекта, переданного в фунцию Save от сервера приходит объект,\r\n * соответствующий текущему состоянию на сервере после сохранения (например, с запоненными полями Id, Number и т.д.)\r\n * По умолчанию эти значения копируются в исходный объект (переданный в метод Save).\r\n * В параметры можно передать метод, который будет дополнительно вызван после стандартной обработки ответа.\r\n * @param entity сохраняемый объект\r\n * @param afterSave действие выполняемое после сохранения\r\n */\r\n public save(entity: T, afterSave?: (res: T, source?: T, wasNew?: boolean) => T | void): PromiseEx {\r\n const isNew = !entity.Id;\r\n const savePromise = this.update(entity, isNew);\r\n const res = savePromise.then((res: any) => {\r\n var result = this.refresh(entity, res);\r\n if (afterSave)\r\n result = afterSave(res, entity, isNew) || result;\r\n return result;\r\n }) as PromiseEx;\r\n res.cancel = savePromise.cancel;\r\n return res;\r\n }\r\n\r\n /**\r\n * Перед любым сохранением бизнес-объекта будем делать его копию и очищать навигационные поля.\r\n */\r\n public update$(object: U, isNew?: boolean): Observable {\r\n const savedObject = clone(object);\r\n this.prepareSave(savedObject);\r\n return super.update$(savedObject, isNew);\r\n }\r\n\r\n\r\n /**\r\n * Производит обновление текущих данных объекта данными нового объекта.\r\n * Обновление происходит по глобальным правилам, заданным в сервисе.\r\n * @param destination целевой объект, данные которого нужно обновить\r\n * @param source объект, данными которого обновляют целевой объект.\r\n */\r\n public refresh(destination: T, source: T): T;\r\n /**\r\n * Производит обновление текущих данных объекта данными с сервиса.\r\n * Обновление происходит по глобальным правилам, заданным в сервисе.\r\n * Целевой объект получит обновлённые данные по Id.\r\n * @param destination целевой объект, данные которого нужно обновить\r\n */\r\n public refresh(destination: T): PromiseEx | T;\r\n refresh(p1, p2?: T) {\r\n let res: PromiseEx | T = undefined;\r\n let destination = p1;\r\n const source = p2;\r\n if (destination) {\r\n const isNew = !destination.Id;\r\n if (!isNew && !source) {\r\n const loadPromise = this.load(destination.Id);\r\n res = loadPromise.then(r => this.refresh(destination, r)) as PromiseEx;\r\n res.cancel = loadPromise.cancel;\r\n } else if (source) {\r\n destination.Id = source.Id;\r\n this.prepareResult(destination);\r\n res = this.afterSave(source, destination, isNew) || destination;\r\n }\r\n }\r\n return res;\r\n\r\n/*\r\n if (!destination) return undefined;\r\n var isNew = !destination.Id;\r\n if (!isNew && !source) {\r\n return this.load(destination.Id).then(r => this.refresh(destination, r));\r\n } else if (source) {\r\n destination.Id = source.Id;\r\n this.prepareResult(destination);\r\n return this.afterSave(source, destination, isNew) || destination;\r\n }\r\n return destination;\r\n*/\r\n }\r\n\r\n\r\n /**\r\n * Удаляет объект из базы данных по его Id.\r\n * @param id Идентификатор объекта.\r\n */\r\n public delete(id: string): PromiseEx {\r\n return this.request({ id }, { method: 'DELETE', route: '{id}' });\r\n }\r\n\r\n /**\r\n * Загрузка данных для отображения их в data-table.\r\n * К запросу добавляется параметр для получения количества записей в запросе без учета параметров $top и $skip.\r\n */\r\n public smartLoad$(odata?: OData, dataSource?: T[]): Observable {\r\n if (!odata) {\r\n if (this['metadata'] && typeof this['metadata']['createOData'] === \"function\")\r\n odata = this['metadata']['createOData']();\r\n else\r\n odata = OData.create;\r\n }\r\n odata = odata.$inlinecount();\r\n const queryResult = this.$query(odata, true);\r\n return queryResult.map(result => {\r\n if (dataSource && Array.isArray(dataSource)) {\r\n dataSource.Clear();\r\n if (result)\r\n dataSource.AddRange(result);\r\n }\r\n var res = dataSource || result;\r\n /*if (res && result) {\r\n res['odata.count'] = result['odata.count'];\r\n res['odata.skipped'] = result['odata.skipped'];;\r\n res['odata.keyRecordNumber'] = result['odata.keyRecordNumber'];;\r\n }*/\r\n return res;\r\n });\r\n }\r\n\r\n /**\r\n * Загрузка данных для отображения их в data-table.\r\n * К запросу добавляется параметр для получения количества записей в запросе без учета параметров $top и $skip.\r\n */\r\n public smartLoad(odata?: OData, dataSource?: T[]): PromiseEx {\r\n return UssApiService.toPromise(this.smartLoad$(odata, dataSource));\r\n }\r\n\r\n /**\r\n * Вызывает всплывающий диалог для редактирования объекта.\r\n * Диалог должен быть зарегистрирован при помощи декоратора @EntityEditDialog(className)\r\n * В случае закрытия диалога по кнопке OK сохраняет изменения.\r\n * Объект передаётся в диалог в поле model.\r\n * Метаинформация - в поле metadata\r\n * Возвращает промис окончания сохранения объекта.\r\n * @param entity редактируемый объект\r\n */\r\n public smartEdit(entity: T, editComponent?: ng.Type, prepareEdit?: (entity: T) => Promise | void, beforeStartEditing?: (entity: T) => void): Promise {\r\n let res = null;\r\n\r\n editComponent = editComponent || entityEditDialogs[this.entityName] || entityEditDialogs['DefaultEditor'];\r\n //const entityForEdit = Json.clone(entity, true);\r\n const entityForEdit = cloneDeep(entity);\r\n if (prepareEdit) {\r\n res = prepareEdit(entityForEdit);\r\n }\r\n if (res instanceof Promise) {\r\n res = res.then(e => {\r\n assign(entity, e);\r\n return entity;\r\n });\r\n } else {\r\n res = new Promise((resolve, reject) => {\r\n\r\n if (editComponent) {\r\n\r\n setTimeout(() => {\r\n const form = dialog.show(editComponent, { model: entityForEdit, entityName: this.entityName });\r\n form.onShow && form.onShow.subscribe(() => beforeStartEditing && beforeStartEditing(entity), rj => reject(rj));\r\n form.onClose && form.onClose.subscribe(r => {\r\n if (r) {\r\n if (r != null && typeof r === 'object') {\r\n assign(entity, r);\r\n } else {\r\n assign(entity, entityForEdit);\r\n }\r\n resolve(entity);\r\n } else {\r\n resolve(null); // если ничего не сохранили - это признак того, что таблицу обновлять не нужно\r\n }\r\n return entity;\r\n }, rj => reject(rj));\r\n });\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Вызывает всплывающий диалог для удаления объекта или объектов.\r\n * В случае закрытия диалога по кнопке YES - удаляет объект/объекты из базы.\r\n * @param entity удаляемый объект или список объектов\r\n */\r\n public smartDelete(entity: T | T[], noConfirmation?: boolean): Promise {\r\n return new Promise((resolve, rej) => {\r\n const reject = x => {\r\n msg.error(x);\r\n return rej(x);\r\n };\r\n if (Array.isArray(entity)) {\r\n if ((entity as T[]).length === 0)\r\n entity = null;\r\n else if ((entity as T[]).length === 1)\r\n entity = (entity as T[])[0];\r\n }\r\n if (!entity)\r\n resolve(false);\r\n else if (noConfirmation) {\r\n if (Array.isArray(entity)) {\r\n Promise\r\n .all((entity as T[]).select(x => this.smartDelete(x, true)).toArray())\r\n .then(x => resolve(x.any(e => e)), r => reject(r));\r\n } else {\r\n this.delete((entity as T).Id).then(res => resolve(res), r => reject(r));\r\n }\r\n } else {\r\n let confirmationMessage: string;\r\n if (Array.isArray(entity)) {\r\n //confirmationMessage = `${this.entityDescription}: Удалить выбранные объекты?`;\r\n confirmationMessage = translate.instant(`@DIALOG.@CONFIRMATIONS.DELETE_ITEMS|Удалить выбранные объекты?`);\r\n } else {\r\n confirmationMessage =\r\n //`${this.entityDescription}: Удалить ${this.getDescription(entity)}?`;\r\n translate.instant(`@DIALOG.@CONFIRMATIONS.DELETE_ITEM|Удалить {{item}}?`, {item: this.getDescription(entity)});\r\n }\r\n dialog.ask(confirmationMessage, false)\r\n .then(\r\n res => res ? this.smartDelete(entity, true).then(r => resolve(r), rj => reject(rj)) : resolve(false),\r\n r => reject(r));\r\n }\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/crud-api.service.ts","import * as ng from '@angular/core';\r\nimport { Http } from '@angular/http';\r\nimport * as core from '../core.module';\r\nimport { CrudServiceMetadata } from './crud-service.decorator';\r\nimport { UssMetadataService } from './metadata.service';\r\nimport { UssCrudApiService, IEntityObjectId } from './crud-api.service';\r\nimport { ifEmpty } from '../core.module';\r\n\r\n/**\r\n * Сервис с поддержкой метаданных CRUD-контроллера ресурсов\r\n */\r\nexport abstract class UssCrudMetadataApiService extends UssCrudApiService {\r\n\r\n public static crudServices : { entityName: string, serviceToken: Function }[] = [];\r\n \r\n public metadata: App.EntityMetadata;\r\n\r\n constructor( @ng.Optional() http?: Http) {\r\n super(http);\r\n this.initMetadata();\r\n if (UssMetadataService.DEFAULT_CACHE_MODE) {\r\n this.cache = UssMetadataService.resolveCache(UssMetadataService.DEFAULT_CACHE_MODE, true);\r\n }\r\n }\r\n\r\n public getExpression(): string {\r\n return UssMetadataService.getExpression(this.metadata);\r\n }\r\n\r\n public getDisplayText(obj: T): string {\r\n return UssMetadataService.getDisplayText(this.metadata, obj);\r\n }\r\n\r\n /**\r\n * Описание объекта\r\n * @param entity Объект\r\n */\r\n public getDescription(entity: T): string {\r\n let res: string;\r\n if (this.metadata.RepresentExpression) {\r\n res = core.parser.evaluate(this.metadata.RepresentExpression, entity);\r\n } else if (this.metadata.KeyAttrs && this.metadata.KeyAttrs.length > 0) {\r\n res = entity[this.metadata.KeyAttrs[0]];\r\n } else {\r\n res = entity['Description'] || entity['Name'] || '';\r\n }\r\n return res;\r\n }\r\n\r\n protected initMetadata(entityClassName?: string | Function) {\r\n if (!entityClassName) {\r\n const meta = core.Reflection.classMetadata(this, CrudServiceMetadata);\r\n if (meta)\r\n this.entityName = meta.EntityName;\r\n }\r\n else if (typeof entityClassName === 'function') {\r\n this.entityName = (entityClassName).name;\r\n } else if(typeof entityClassName === 'string') {\r\n this.entityName = entityClassName;\r\n }\r\n \r\n this.metadata = UssMetadataService.getEntityInfo(this.entityName) || {};\r\n this.entityDescription = core.translate.instant(this.metadata.Description || this.metadata.Name);\r\n this.url = this.metadata.Url;\r\n this.odataUrl = this.metadata.ODataUrl;\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПЕРЕД отправкой запроса query на сервер.\r\n * Перекрыв его в классе наследнике можно глобально влиять на запросы к бекенду данного класса.\r\n * @param odata параметры запроса\r\n */\r\n protected prepareQuery(odata: core.OData, isSmartLoad?: boolean): void {\r\n if ((odata.getOrderBy()?.length || 0) === 0) {\r\n if (this.metadata.Properties.any(x => x.Name === 'Name'))\r\n odata.$orderBy(true, 'Name');\r\n else if (this.metadata.Properties.any(x => x.Name === 'Description'))\r\n odata.$orderBy(true, 'Description');\r\n else if (this.metadata.Properties.any(x => x.Name === 'CreatedDate'))\r\n odata.$orderBy(true, 'CreatedDate');\r\n }\r\n // последнее поле сортировки всегда Id\r\n odata.$orderBy(true, 'Id');\r\n }\r\n\r\n /**\r\n * Этот метод вызывается ПОСЛЕ сохранения объекта.\r\n * Перекрыв его в классе наследнике можно глобально влиять на действия после сохранения объектов.\r\n * После успешного сохранения объекта, переданного в фунцию Save от сервера приходит объект,\r\n * соответствующий текущему состоянию на сервере после сохранения (например, с запоненными полями Id, Number и т.д.)\r\n * По умолчанию эти значения копируются в исходный объект (переданный в метод Save) как раз при помощи этого метода.\r\n * Данный метод также влияет на то, какой объект будет возвращён в качестве результата промиса Save.\r\n * По умолчанию - это объект, пришедший с сервера (не исходный).\r\n */\r\n protected afterSave(res: T, source: T, wasNew: boolean): T {\r\n // ToDo: use metainfo\r\n return super.afterSave(res, source, wasNew);\r\n }\r\n\r\n /**\r\n * Подготовка объекта к сохранению.\r\n */\r\n protected prepareSave(entity: T): void {\r\n // ToDo: use metainfo to clear navigation fields\r\n super.prepareSave(entity);\r\n }\r\n\r\n}\r\n\r\nexport class UssDefaultService extends UssCrudMetadataApiService {\r\n\r\n constructor(entityName: string) {\r\n super(undefined);\r\n this.initMetadata(entityName);\r\n if (UssMetadataService.DEFAULT_CACHE_MODE && this.entityName) {\r\n this.cache = UssMetadataService.resolveCache(UssMetadataService.DEFAULT_CACHE_MODE, this.entityName);\r\n }\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Сервис с поддержкой метаданных CRUD-контроллера ресурсов\r\n */\r\nexport abstract class UssCrudMetadataApiCachedService extends UssCrudMetadataApiService {\r\n\r\n constructor( @ng.Optional() http?: Http) {\r\n super(http);\r\n this.cache = ifEmpty(this.cache, true);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/crud-metadata-api.service.ts","import { ViewContainerRef, Compiler, ModuleWithComponentFactories, Injectable, ComponentRef, Type } from '@angular/core';\r\nimport { Reflection, IUssDialogsService, IDialog, IDialogParams, assign } from '@core.module';\r\n\r\n@Injectable()\r\nexport class UssDialogsService implements IUssDialogsService {\r\n\r\n public static get instance(): UssDialogsService { return Reflection.get(UssDialogsService); }\r\n\r\n private static cache: {[moduleName: string]: ModuleWithComponentFactories} = {};\r\n\r\n /**\r\n * Ссылка на представление компонента-приложения.\r\n */\r\n public static appView: ViewContainerRef;\r\n\r\n /**\r\n * Ссылка на модуль приложения.\r\n */\r\n public static appModule: any;\r\n// public static systemModule: any;\r\n public static modalType: Type;\r\n\r\n public static simpleDialog: Type;\r\n public static tableSelectDialog: Type;\r\n public static exportOptionsDialog: Type;\r\n \r\n public static createComponentRef(component: Type, container?: ViewContainerRef, parameters?: any, module?: any): ComponentRef {\r\n module = module || this.appModule;\r\n container = container || this.appView;\r\n const factories = this.cache[module.name] || Reflection.get(Compiler).compileModuleAndAllComponentsSync(module);\r\n this.cache[module.name] = factories;\r\n const componentFactory = factories.componentFactories.firstOrDefault(item => item.componentType === component);\r\n let componentRef = componentFactory ? container.createComponent(componentFactory) : (null as any);\r\n\r\n if (componentRef && componentRef.instance && parameters) {\r\n if (typeof componentRef.instance.assignParams === 'function') {\r\n componentRef.instance.assignParams(parameters);\r\n } else {\r\n assign(componentRef.instance, parameters);\r\n }\r\n }\r\n \r\n return componentRef;\r\n }\r\n public static createComponent(component: Type, container?: ViewContainerRef, parameters?: any, module?: any): T {\r\n const componentRef = this.createComponentRef(component, container, parameters, module);\r\n return componentRef ? componentRef.instance : null;\r\n }\r\n\r\n private internalCreate(container: ViewContainerRef, module: any, component: Type, parameters?: TParams, isModal?: boolean): TDialog {\r\n const componentRef = UssDialogsService.createComponentRef(component, container, parameters, module);\r\n // установка параметров произошла в UssDialogService.createComponentRef поэтому не передаём их дальше в this.create\r\n // чтобы установка не произошла повторно\r\n return this.create(componentRef, undefined, isModal);\r\n }\r\n\r\n private modals = [];\r\n\r\n /**\r\n * Создание всплывающего диалога от semantic.ui на основании уже созданного компонента.\r\n * @param componentRef ссылка на компонент, который будет отображён во всплывающем диалоге.\r\n * @param parameters параметры, передаваемые в компонент, как если бы компонент имплементировал интерфейс TParams.\r\n * Дополнительно можно передать параметры открытия всплывающего диалога в специальном поле $dialog.\r\n * @param isModal если равно true - диалог можно будет закрыть только по кнопкам закрытия диалога.\r\n */\r\n public create(componentRef: ComponentRef, parameters?: TParams, isModal?: boolean): TDialog {\r\n if (!componentRef) return null;\r\n let modal: any = null;\r\n for (let propName in componentRef.instance) {\r\n if (componentRef.instance.hasOwnProperty(propName)) {\r\n const v = componentRef.instance[propName];\r\n if (v instanceof UssDialogsService.modalType) {\r\n modal = v;\r\n break;\r\n }\r\n }\r\n }\r\n if (modal) {\r\n componentRef.instance['hideCloseInTitle'] = !!isModal;\r\n componentRef.instance['$close'] = () => {\r\n this.modals.Remove(modal);\r\n if (this.modals.length > 0) {\r\n const m = this.modals[this.modals.length - 1];\r\n m.bindMouseListeners();\r\n m.changeDetector.reattach();\r\n m.$ussDialog && m.$ussDialog.changeDetector.reattach();\r\n }\r\n \r\n modal.internalClose(componentRef);\r\n //modal = undefined;\r\n };\r\n\r\n this.modals.forEach(x => {\r\n x.$ussDialog && x.$ussDialog.changeDetector.detach();\r\n x.changeDetector.detach();\r\n x.unbindMouseListeners();\r\n });\r\n modal.show();\r\n modal.detectChanges();\r\n this.modals.push(modal);\r\n }\r\n // не помню из каких соображений это было написано, сейчас вроде ngOnInit вызывается самим Ангуляром, так что эта строчка приводит к двойному вызову\r\n //componentRef.instance['ngOnInit'] && componentRef.instance['ngOnInit']();\r\n return componentRef.instance;\r\n }\r\n \r\n /**\r\n * Необходимо вызвать в конструкторе компонента-приложения, для корректной работы.\r\n * Пример:\r\n * export class AppComponent {\r\n * constructor(appView: ViewContainerRef, dialogService: UssDialogService) {\r\n * dialogService.init(AppModule, appView);\r\n * }\r\n * }\r\n *\r\n */\r\n public init(appModule: any, appView: ViewContainerRef, modalType: Type) {\r\n UssDialogsService.appModule = appModule;\r\n UssDialogsService.appView = appView;\r\n UssDialogsService.modalType = modalType;\r\n }\r\n\r\n public registerSimpleDialog(simpleDialog: Type) {\r\n UssDialogsService.simpleDialog = simpleDialog;\r\n }\r\n\r\n public registerTableSelectDialog(tableSelectDialog: Type) {\r\n UssDialogsService.tableSelectDialog = tableSelectDialog;\r\n }\r\n\r\n public registerExportOptionsDialog(exportOptionsDialog: Type) {\r\n UssDialogsService.exportOptionsDialog = exportOptionsDialog;\r\n }\r\n\r\n /**\r\n * Создание всплывающего диалога от semantic.ui на основании типа компонента.\r\n * @param component тип компонента, который будет отображён во всплывающем диалоге.\r\n * @param parameters параметры, передаваемые в компонент, как если бы компонент имплементировал интерфейс TParams.\r\n * Дополнительно можно передать параметры открытия всплывающего диалога в специальном поле $dialog.\r\n */\r\n public show(component: Type, parameters?: TParams): TDialog {\r\n return this.internalCreate(UssDialogsService.appView, UssDialogsService.appModule, component, parameters, false);\r\n }\r\n /**\r\n * Создание модального всплывающего диалога от semantic.ui на основании типа компонента.\r\n * @param component тип компонента, который будет отображён во всплывающем диалоге.\r\n * @param parameters параметры, передаваемые в компонент, как если бы компонент имплементировал интерфейс TParams.\r\n * Дополнительно можно передать параметры открытия всплывающего диалога в специальном поле $dialog.\r\n */\r\n public showModal(component: Type, parameters?: TParams): TDialog {\r\n return this.internalCreate(UssDialogsService.appView, UssDialogsService.appModule, component, parameters, true);\r\n }\r\n\r\n /**\r\n * Вывод информационного сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Information) \r\n */\r\n public info(text: string, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.INFORMATION|Информация';\r\n return this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'info' })).result;\r\n }\r\n\r\n /**\r\n * Вывод тревожного сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Alert) \r\n */\r\n public alert(text: string, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.ALERT|Предупреждение';\r\n return this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'alert' })).result;\r\n }\r\n\r\n /**\r\n * Вывод предупреждающего сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Warning) \r\n */\r\n public warning(text: string, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.WARNING|Внимание';\r\n return this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'warning' })).result;\r\n }\r\n\r\n /**\r\n * Вывод сообщения об ошибке во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Error) \r\n */\r\n public error(text: string, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.ERROR|Ошибка';\r\n return this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'error' })).result;\r\n }\r\n\r\n /**\r\n * Вывод подтверждающего вопроса вида Да/Нет и вызывает промис только если ответили Да\r\n * @param text текст вопроса (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Confirmation)\r\n */\r\n public confirm(text: string, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.CONFIRMATION|Подтверждение';\r\n\r\n return new Promise(resolve => this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'confirmation', $dialog: { closable: false } }))\r\n .onClose.subscribe(res => res && resolve(true)));\r\n }\r\n\r\n /**\r\n * Вывод вопроса вида Да/Нет[/Отмена] и вызывает промис только если ответили Да или Нет\r\n * @param text текст вопроса (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Confirmation)\r\n */\r\n public ask(text: string, showCancelButton: boolean = false, header?: string, params?: IDialogParams): Promise {\r\n header = header || '@DIALOG.CONFIRMATION|Подтверждение';\r\n return new Promise(resolve => this.show(UssDialogsService.simpleDialog, Object.assign(params || {}, { text, header, type: 'confirmation', showCancelButton, $dialog: { closable: showCancelButton } }))\r\n .onClose.subscribe(res => (res !== undefined) && resolve(res)));\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/dialogs.module/dialogs.service.ts","import * as ng from '@angular/core';\r\nimport * as ojs from 'observe-js';\r\nimport { Reflection, isArray, debounce, ifEmpty } from '../../../core.module';\r\n\r\ndeclare var Platform: any;\r\nexport class ObserverPlatform {\r\n\r\n private static lock: boolean;\r\n private static _valueObserverZoneSubscription;\r\n private static _valueObservers: { hash: string, observer: any }[] = [];\r\n\r\n public static addObserver(observer: T): T;\r\n public static addObserver(hash: any, observer: T): T;\r\n public static addObserver(p1, p2?): any {\r\n let hash = p1;\r\n let observer = p2;\r\n if (p2 === undefined) {\r\n if (hash != null && typeof hash === 'object') observer = hash;\r\n }\r\n this._valueObservers.push({ hash, observer });\r\n if (this._valueObservers.length === 1) {\r\n this._valueObserverZoneSubscription = Reflection.get(ng.NgZone).onUnstable.subscribe(() => {\r\n if (ObserverPlatform.lock) return;\r\n ObserverPlatform.lock = true;\r\n debounce(() => {\r\n Platform.performMicrotaskCheckpoint();\r\n ObserverPlatform.lock = false;\r\n }, 10, '@Platform.performMicrotaskCheckpoint');\r\n });\r\n }\r\n return observer;\r\n }\r\n\r\n public static removeObserver(hashOrObserver: any | any[]): void {\r\n if (isArray(hashOrObserver)) {\r\n for (let obs of hashOrObserver) {\r\n this.removeObserver(obs);\r\n }\r\n } else {\r\n this._valueObservers.Remove(el => el.hash === hashOrObserver || el.observer === hashOrObserver);\r\n if (this._valueObservers.length === 0 && this._valueObserverZoneSubscription) {\r\n this._valueObserverZoneSubscription.unsubscribe();\r\n this._valueObserverZoneSubscription = undefined;\r\n }\r\n }\r\n }\r\n\r\n public static addPathObserver(hash: any, obj: any, path: string, handler: (value: any) => void): object {\r\n const observer = new ojs.PathObserver(obj, path);\r\n observer.open(value => {\r\n handler(value);\r\n });\r\n return this.addObserver(ifEmpty(hash, observer), observer);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/ObserverPlatform.ts","import * as ng from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { Router, Params } from '@angular/router';\r\nimport { UssComponent2 } from './base.component';\r\nimport { ifEmpty, isEmpty, Inject, ussRouter, isArray, durationToString, assign, clone } from '@core.module';\r\nimport { Duration } from 'moment';\r\n\r\nexport class AppPageBase extends UssComponent2 implements ng.OnInit {\r\n\r\n @Inject(Location) public location: Location;\r\n @Inject(Router) public router: Router;\r\n @Inject(ActivatedRoute) public activatedRoute: ActivatedRoute;\r\n\r\n private _queryParams: { [name: string]: any } = {};\r\n public get queryParams(): { [name: string]: any } { return this._queryParams; }\r\n public set queryParams(value: { [name: string]: any }) { this.setQueryParams(value) }\r\n\r\n\r\n private _params = {};\r\n applyQueryParams(p: { [index: string]: any }): void {\r\n }\r\n\r\n applyParams(p: { [index: string]: any }): void {\r\n }\r\n\r\n applyRouteParams(p: { [name: string]: string }): void {\r\n }\r\n\r\n getQueryParam(name: string, defaultValue?: T): T {\r\n return ifEmpty(this._queryParams[name], defaultValue);\r\n }\r\n\r\n setQueryParam(p?: object): void;\r\n setQueryParam(name: string, value: any, defaultValue?: any, queryParams?: any): void;\r\n setQueryParam(name: any, value?: any, defaultValue?: any, queryParams?: any): void {\r\n if (typeof(name) === 'string') {\r\n\r\n queryParams = queryParams || this._queryParams;\r\n\r\n if (typeof value === 'boolean') {\r\n defaultValue = !!ifEmpty(defaultValue, false);\r\n }\r\n else if (typeof value === 'number') {\r\n defaultValue = parseInt(ifEmpty(defaultValue, 0).toString());\r\n }\r\n else if (typeof value === 'string') {\r\n defaultValue = ifEmpty(defaultValue, '');\r\n }\r\n else if (typeof value === 'object') {\r\n defaultValue = ifEmpty(defaultValue, null);\r\n if (value instanceof Date || moment.isMoment(value)) {\r\n value = moment(value).toISOString();\r\n defaultValue = moment(defaultValue).toISOString();\r\n }\r\n else if (moment.isDuration(value)) {\r\n value = durationToString(value);\r\n defaultValue = durationToString(defaultValue);\r\n }\r\n else if (isArray(value) && value['length'] === 0) {\r\n value = null;\r\n }\r\n }\r\n\r\n if (isEmpty(value) || value === defaultValue) {\r\n delete queryParams[name];\r\n } else {\r\n queryParams[name] = value;\r\n }\r\n }\r\n else if (name !== null && typeof(name) === 'object') {\r\n\r\n // сохраним параметры начинающиеся на __\r\n for (let propName in this._queryParams) {\r\n if (propName !== '__nc_values' && Object.prototype.hasOwnProperty.call(this._queryParams, propName) && (propName.startsWith('__') || propName.startsWith('$$'))) {\r\n this.setQueryParam(propName, this._queryParams[propName], undefined, name);\r\n }\r\n }\r\n\r\n for (let propName in name) {\r\n if (propName !== '__nc_values' && Object.prototype.hasOwnProperty.call(name, propName)) {\r\n this.setQueryParam(propName, name[propName], undefined, name);\r\n }\r\n }\r\n this._queryParams = name;\r\n }\r\n if (queryParams === this._queryParams || typeof(name) === 'object') {\r\n this.debounce(() => this.setQueryParams(this._queryParams), 0, 'setQueryParams');\r\n }\r\n }\r\n\r\n public getCurrentLocation(withParams: { [name: string]: any } | boolean, asBase64?: boolean): string {\r\n const p = withParams === true ? this._queryParams : withParams !== false ? withParams: {};\r\n return ussRouter.getCurrentLocation(p, asBase64);\r\n }\r\n\r\n setQueryParams(p: { [name: string]: any }, asBase64?: boolean): void {\r\n p = p || {};\r\n this._queryParams = clone(p);\r\n delete this._queryParams.__nc_values;\r\n const url = this.getCurrentLocation(this._queryParams, asBase64);\r\n this.location.replaceState(url);\r\n }\r\n\r\n appendQueryParams(p?: { [name: string]: any }, asBase64?: boolean): void {\r\n p = assign(this.queryParams, p || {});\r\n this.setQueryParams(p, asBase64);\r\n }\r\n\r\n doApplyParams(p?: { [name: string]: any }) {\r\n this.debounce(() => {\r\n p = p || this._params;\r\n //console.log('AllParams: ', p);\r\n this.applyParams(p);\r\n this._params = {};\r\n }, 0, 'setParams');\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.activatedRoute) {\r\n this.activatedRoute.queryParams.takeUntil(this.destroyed$).subscribe(p => {\r\n //console.log('QueryParams: ', p);\r\n try {\r\n const names = Object.getOwnPropertyNames(p);\r\n if (names.length === 1 && names[0] === '_') {\r\n p = JSON.parse(atob(p._));\r\n }\r\n this._queryParams = clone(p);\r\n this.applyQueryParams(this._queryParams);\r\n this._params = Object.assign(this._params, p);\r\n } catch (e) {\r\n\r\n }\r\n this.doApplyParams();\r\n });\r\n this.activatedRoute.params.takeUntil(this.destroyed$).subscribe(p => {\r\n //console.log('RouteParams: ', p);\r\n try {\r\n this.applyRouteParams(p);\r\n this._params = Object.assign(this._params, p);\r\n } catch (e) {\r\n\r\n }\r\n this.doApplyParams();\r\n });\r\n }\r\n super.ngOnInit();\r\n }\r\n\r\n public goBack(returnUrl?: string) : boolean | Promise {\r\n return ussRouter.goBack(returnUrl);\r\n }\r\n\r\n public go(url: string, returnUrl: Params | boolean | string = false, addToUri: boolean | 'base64' = true) : boolean | Promise {\r\n return ussRouter.go(url, returnUrl, addToUri);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/base.page.ts","import * as ng from '@angular/core';\r\nimport * as rx from 'rxjs';\r\nimport { isArray, OData, IODataParams } from '@core.module';\r\nimport { UssCrudApiService, IEntityMetadata as EntityMetadata, IEntityMetadata, IEntityObjectId, UssMetadataService } from '@metadata.module';\r\nimport { UssDataSourceComponent } from './UssDataSourceComponent';\r\n\r\ntype TDataSource = EntityMetadata | Object[] | UssCrudApiService | rx.Observable | Promise;\r\n\r\nexport class UssDataBindedComponent extends UssDataSourceComponent {\r\n\r\n private _valueObject: any;\r\n private _valueForValueObject: any;\r\n\r\n public getValueObject(): any {\r\n let res;\r\n if (this._valueObject && this._valueForValueObject === this.value) {\r\n res = this._valueObject;\r\n } else {\r\n this._valueForValueObject = this.value;\r\n this._valueObject = this.sourceList && this.value && this.sourceList.firstOrDefault(x => x.Id === this.value);\r\n res = this._valueObject;\r\n }\r\n return res;\r\n }\r\n\r\n public set data(value: any[] | rx.Observable | Promise) {\r\n this.setData(value);\r\n }\r\n\r\n public setData(value: any[] | rx.Observable | Promise) {\r\n let res;\r\n if (value instanceof rx.Observable) {\r\n res = value;\r\n }\r\n else if (value instanceof Promise) {\r\n res = rx.Observable.from(value);\r\n } else if (isArray(value)) {\r\n res = rx.Observable.of(value);\r\n } else {\r\n res = null;\r\n }\r\n this.objectList = res;\r\n\r\n if (this.objectList) {\r\n this.objectList.subscribe(x => {\r\n this.sourceList = x;\r\n const getObjectResolver = this._getObjectResolver;\r\n this._getObjectResolver = null;\r\n if (getObjectResolver) {\r\n getObjectResolver(x);\r\n }\r\n this.resetLoading();\r\n //this.onDataLoaded && setTimeout(() => this.onDataLoaded.emit(x), 1000);\r\n //setTimeout(() => this.value = this.value);\r\n });\r\n }\r\n }\r\n\r\n private sourceList: any[];\r\n public objectList: rx.Observable; \r\n public displayExpression: string;\r\n public valueFieldName: string = 'Id';\r\n\r\n onDataLoaded: ng.EventEmitter;\r\n\r\n loading: boolean;\r\n\r\n public getQuery(): OData {\r\n // comes from binded component\r\n return null;\r\n }\r\n\r\n public resetLoading() {\r\n this.loading = true;\r\n setTimeout(() => {\r\n // ReSharper disable once RedundantComparisonWithBoolean\r\n //console.log('3. initObjectList: => ', this.loading);\r\n if (this.loading === true) {\r\n //console.log('4. initObjectList: false');\r\n this.loading = false;\r\n this.value = this.value;\r\n this.onDataLoaded && this.onDataLoaded.emit(this.sourceList);\r\n }\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n public load$(em: IEntityMetadata, query: OData | IODataParams): Promise {\r\n return em.service().load(query);\r\n }\r\n \r\n public initObjectList(em?: IEntityMetadata) {\r\n if (this.loading === 1) return;\r\n //console.log('0. initObjectList: 1');\r\n this.loading = 1;\r\n em = em || this.getEntityMetadata();\r\n if (em) {\r\n let query: OData | IODataParams = null;\r\n if (this.getQuery) {\r\n query = this.getQuery();\r\n }\r\n if (query && query.$empty) {\r\n //console.log('1. initObjectList: false');\r\n this.loading = false;\r\n this.data = [];\r\n } else {\r\n this.objectList = null;\r\n this.load$(em, query).then(res => {\r\n this.data = res;\r\n //console.log('2. initObjectList: true');\r\n this.resetLoading();\r\n });\r\n }\r\n } else {\r\n //console.log('5. initObjectList: false');\r\n this.loading = false;\r\n this.data = [];\r\n }\r\n }\r\n\r\n public getExpression(): string {\r\n if (this.displayExpression === undefined) {\r\n const em = this.getEntityMetadata();\r\n if (em) {\r\n //this.displayExpression = em.RepresentExpression || (em.KeyAttrs ? em.KeyAttrs.firstOrDefault() : '');\r\n this.displayExpression = UssMetadataService.getExpression(em);\r\n }\r\n this.displayExpression = this.displayExpression || '';\r\n }\r\n return this.displayExpression;\r\n }\r\n\r\n public getRelatedObjects(key?: string | string[]): rx.Observable {\r\n let res = undefined;\r\n if (this.dataSource != null && !isArray(this.dataSource[this.fieldName]) && typeof this.dataSource[this.fieldName] === 'object') {\r\n if (this.objectList && key) {\r\n res = this.objectList.map(x => Enumerable.from(x).firstOrDefault(z => z[this.valueFieldName] === key));\r\n } \r\n \r\n !res && (res = rx.Observable.from([this.dataSource[this.fieldName]]));\r\n } else if (this.objectList) {\r\n res = this.objectList;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n private _getObjectResolver: (value: any) => void;\r\n\r\n public getObjects$(): rx.Observable {\r\n if (!this.objectList) {\r\n this.objectList = rx.Observable.fromPromise(new Promise(res => {\r\n this._getObjectResolver = res;\r\n }));\r\n }\r\n return this.objectList;\r\n }\r\n public getObjects(): any[] {\r\n return isArray(this.sourceList) ? this.sourceList : undefined;\r\n }\r\n\r\n public onChanges(ch): void {\r\n if (!this.wasInit) return;\r\n if (ch.entityName || ch.metadata) {\r\n this.initObjectList();\r\n }\r\n }\r\n\r\n public afterViewInit(): void {\r\n if (!this.objectList) {\r\n this.initObjectList();\r\n } else {\r\n this.objectList.subscribe(x => this.sourceList = x);\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/UssDataBindedComponent.ts","import * as ng from '@angular/core';\r\nimport * as ngForms from '@angular/forms';\r\nimport { isJsObject, Inject } from '../../../core.module';\r\nimport { UssDirectiveBase } from '../../directives/directive.base';\r\nimport { UssFormGroup } from '../common/UssFormGroup';\r\nimport { ObserverPlatform } from '../common/ObserverPlatform';\r\n\r\nexport class UssSimpleValueComponent {\r\n\r\n @Inject(ng.NgZone) zone: ng.NgZone;\r\n private constructor() { }\r\n\r\n /**\r\n * Создание простой имплементации интерфейса IUssValueComponent\r\n * @param getValueFn метод получения значения\r\n * @param setValueFn метод установки значения\r\n * @param toTextFn метод преобразования значения в текст\r\n * @param toValueFn метод преобразования текста в значение\r\n */\r\n public static create(\r\n getValueFn: () => any,\r\n setValueFn: (v: any) => void,\r\n toTextFn?: (v: any) => string,\r\n toValueFn?: (v: any) => any\r\n ): UssSimpleValueComponent {\r\n const res = new UssSimpleValueComponent();\r\n res.getValueFn = getValueFn;\r\n res.setValueFn = setValueFn;\r\n res.toTextFn = toTextFn;\r\n res.toValueFn = toValueFn;\r\n return res;\r\n }\r\n\r\n private getValueFn: () => any;\r\n private setValueFn: (v: any) => void;\r\n private toTextFn: (v: any) => string;\r\n private toValueFn: (v: any) => any;\r\n\r\n public control: ngForms.FormControl;\r\n\r\n public metadata: App.PropertyMetadata | (() => App.PropertyMetadata);\r\n public get propertyMetadata(): App.PropertyMetadata {\r\n if (typeof this.metadata === 'function')\r\n return this.metadata();\r\n else\r\n return this.metadata;\r\n }\r\n\r\n public get value(): any { return this.getValueFn() }\r\n public set value(v: any) { this.setValueFn(v) }\r\n\r\n /**\r\n * Преобразование значения компонента в текстовое представление.\r\n */\r\n public toText(v: any): string {\r\n return this.toTextFn\r\n ? this.toTextFn(v)\r\n : (v === undefined || v === null || isNaN(v)) ? '' : v.toString();\r\n }\r\n\r\n /**\r\n * Преобразование переданного значения (в том числе и текстового представления) в значение компонента корректного типа.\r\n */\r\n public toValue(v: any): any {\r\n let res = v;\r\n if (this.toValueFn) {\r\n res = this.toValueFn(v);\r\n }\r\n else if (this.propertyMetadata && v !== undefined && v !== null) {\r\n if (this.propertyMetadata.TypeName === 'integer')\r\n res = parseInt(res);\r\n else if (this.propertyMetadata.TypeName === 'float')\r\n res = parseFloat(res);\r\n }\r\n return res;\r\n }\r\n public isValuesEqual(value1: any, value2: any) {\r\n value1 = this.toValue(value1);\r\n value2 = this.toValue(value2);\r\n if (value1 === undefined && value2 === undefined || value1 === null && value2 === null) return true;\r\n if (value1 === undefined || value1 === null || value2 === undefined || value2 === null) return false;\r\n if (isJsObject(value1) || isJsObject(value2))\r\n return this.toText(value1) === this.toText(value2);\r\n else\r\n return value1 === value2;\r\n }\r\n\r\n}\r\n\r\nexport abstract class UssDataSourceBaseDirective extends UssDirectiveBase implements ng.OnInit, ng.OnChanges {\r\n\r\n public static Inputs = ['dataSource: ussDataSource', 'fieldName', 'autoSelectOnFocus: autoSelect', 'metadata'];\r\n public static Outputs = ['valueChange'];\r\n public static Host = {\r\n '(change)': 'onChanged($event)',\r\n '(modelChange)': 'onChanged($event)',\r\n '(keydown)': 'onKeyDown($event)',\r\n '(keyup)': 'onKeyUp($event)',\r\n '(focusin)': 'onFocused($event)'\r\n }\r\n\r\n constructor(viewContainerRef: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(viewContainerRef.element.nativeElement, viewContainerRef, changeDetector);\r\n }\r\n\r\n /**\r\n * Источник данных (объект) с полем которого связывается компонент\r\n */\r\n @ng.Input('ussDataSource') dataSource: Object;\r\n\r\n /** Название поля источника данных с которым связывается компонент */\r\n @ng.Input('fieldName') fieldName: string;\r\n\r\n /** Если равно true - содержимое инпута будет автоматически выделено после попадания в него фокуса ввода */\r\n @ng.Input('autoSelect') autoSelectOnFocus: boolean = false;\r\n\r\n @ng.Input('metadata') metadata: App.EntityMetadata | App.PropertyMetadata | any;\r\n\r\n /**\r\n * Ссылка на форму, внутри которой лежит компонент\r\n */\r\n protected form: UssFormGroup;\r\n\r\n /**\r\n * Это интерфейс для работы с компонентом (установка/получение форматированного значения).\r\n * Если его реализует компонент, к которому привязана директива - используется он, иначе\r\n * создаём простейшую реализацию этого интерфейса для унификации работы\r\n */\r\n protected ussHostComponent: UssSimpleValueComponent;\r\n\r\n protected get propertyMetadata(): App.PropertyMetadata {\r\n let res = null;\r\n if (this.metadata) {\r\n if (this.metadata.Properties) {\r\n res = Enumerable.from(this.metadata.Properties).firstOrDefault(x => x.Name === this.fieldName);\r\n } else {\r\n res = this.metadata;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n protected _nativeInputElement: TNativeElement;\r\n /**\r\n * Ссылка на нативный элемент ввода\r\n */\r\n protected abstract nativeInputElement: TNativeElement;\r\n\r\n private _value: any;\r\n /**\r\n * Текущее значение компонента.\r\n */\r\n public get value(): any { return (this.dataSource && this.fieldName) ? this.dataSource[this.fieldName] : this._value; }\r\n public set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this.updateValue(value);\r\n this.updateElementValue(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n }\r\n @ng.Output('valueChange') public valueChange = new ng.EventEmitter();\r\n\r\n protected inOnChanged: boolean;\r\n\r\n @ng.HostListener('change', ['$event'])\r\n @ng.HostListener('modelChange', ['$event'])\r\n public onChanged($event: any) {\r\n this.updateComponentValue($event instanceof Event ? undefined : $event);\r\n this.inOnChanged = true;\r\n }\r\n\r\n @ng.HostListener('keydown', ['$event'])\r\n public onKeyDown($event: KeyboardEvent) {\r\n this.inOnChanged = false;\r\n }\r\n\r\n @ng.HostListener('keyup', ['$event'])\r\n public onKeyUp($event: KeyboardEvent) {\r\n this.updateFormValue();\r\n }\r\n\r\n @ng.HostListener('focusin', ['$event'])\r\n public onFocused($event: Event) {\r\n if (this.autoSelectOnFocus)\r\n ($event.srcElement).select();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.dataSource || changes.fieldName || changes.metadata) {\r\n this.updateValue();\r\n this.observeChanges();\r\n }\r\n }\r\n\r\n\r\n private _observerHash = `${this.$uid}_dataSourceObserver`;\r\n\r\n protected observeChanges() {\r\n ObserverPlatform.removeObserver(this._observerHash);\r\n if (this.dataSource != null && typeof this.dataSource === 'object' && this.fieldName) {\r\n ObserverPlatform.addPathObserver(this._observerHash, this.dataSource, this.fieldName,\r\n newValue => {\r\n this.value = newValue;\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n ObserverPlatform.removeObserver(this._observerHash);\r\n }\r\n\r\n\r\n /**\r\n * Обновление значения компонента в источнике данных.\r\n */\r\n protected updateValue(value?: any) {\r\n this.fieldName = this.fieldName || (this.propertyMetadata ? this.propertyMetadata.Name : undefined);\r\n if (this.dataSource && this.fieldName/* && this.wasInit*/) {\r\n this.dataSource[this.fieldName] = value === undefined ? this.value : value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.elementRef.nativeElement['_ussDataSource'] = this;\r\n // если хост-компонент имплементирует UssValueComponent - будем использовать этот интерфейс \r\n // для получения/установки значения компонента, если нет - создадим имплементацию по умолчанию,\r\n // для простоты работы директивы:\r\n const hostComponent = this.hostComponent || {};\r\n this.ussHostComponent = this.createUssHostComponent(hostComponent);\r\n this.initControl();\r\n }\r\n\r\n protected createUssHostComponent(hostComponent: any): UssSimpleValueComponent {\r\n const res = UssSimpleValueComponent.create(\r\n () => this.getComponentValue(),\r\n v => this.setElementValue(v),\r\n hostComponent.toText,\r\n hostComponent.toValue\r\n );\r\n res.metadata = this.propertyMetadata;\r\n return res;\r\n }\r\n\r\n /**\r\n * Получение текущего значения компонента на основании значения в HTML-элементе\r\n */\r\n protected getComponentValue(): any {\r\n return this.nativeElement ? this.nativeInputElement.value : null;\r\n }\r\n\r\n /**\r\n * Установка значения в HTML-элементе, соответствующая текущему значению компонента.\r\n */\r\n protected setElementValue(value: any) {\r\n if (this.nativeElement) {\r\n value = value === undefined ? '' : value;\r\n if (this.nativeInputElement.value !== value) {\r\n this.nativeInputElement.value = value;\r\n }\r\n }\r\n }\r\n\r\n protected initControl() {\r\n this.fieldName = this.fieldName || (this.propertyMetadata ? this.propertyMetadata.Name : undefined);\r\n const formDirective = Enumerable.from(this.viewContainer.injector['_view'])\r\n .select(kv => kv.value)\r\n .firstOrDefault(x => x instanceof ngForms.FormGroupDirective);\r\n if (formDirective) {\r\n this.form = formDirective.form;\r\n } else {\r\n this.form = Enumerable.from(this.viewContainer.injector['_view'])\r\n .select(kv => kv.value)\r\n .where(x => x instanceof ngForms.NgForm)\r\n .select(f => f.form)\r\n .firstOrDefault();\r\n }\r\n\r\n if (this.form) {\r\n this.dataSource = this.dataSource || this.form.datasource;\r\n this.metadata = this.metadata || this.form.metadata;\r\n if (this.dataSource && this.ussHostComponent) {\r\n let fieldName = this.fieldName;\r\n if (!fieldName && this.propertyMetadata) {\r\n fieldName = this.propertyMetadata.Name;\r\n }\r\n const control = this.form.controls[fieldName];\r\n if (control) {\r\n control['_ussComponents'] = control['_ussComponents'] || [];\r\n control['_ussComponents'].push(this.ussHostComponent);\r\n this.ussHostComponent.control = control;\r\n }\r\n this.ussHostComponent.metadata = this.propertyMetadata;\r\n setTimeout(() => {\r\n this.ussHostComponent.value = this.dataSource[fieldName];\r\n });\r\n }\r\n }\r\n // Установить значение в контроле равным значению в источнике данных\r\n setTimeout(() => {\r\n this.updateElementValue(this.value);\r\n });\r\n this.observeChanges();\r\n }\r\n\r\n /**\r\n * Установка значения в FormControl-е, соответствующая текущему значению компонента.\r\n */\r\n private updateFormValue(value?: any) {\r\n if (this.form) {\r\n const control = this.form.controls[this.fieldName];\r\n if (control && this.nativeElement) {\r\n if (value === undefined) value = this.nativeInputElement.value;\r\n value = this.ussHostComponent.toValue(value);\r\n // Нужно вызывать setValue для FormControl'а только если оно изменилось,\r\n // чтобы не вызывались ненужные события, информирующие об изменении состояния\r\n let v1 = this.form.controls[this.fieldName].value;\r\n let v2 = value;\r\n if (isJsObject(value)) {\r\n // Однако объектные значения просто так сравнивать нельзя (например дату),\r\n // поэтому превратим их в текст для сравнения\r\n v1 = this.ussHostComponent.toText(v1);\r\n v2 = this.ussHostComponent.toText(v2);\r\n }\r\n if (v1 !== v2) {\r\n this.form.controls[this.fieldName].setValue(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Обновляет значение компонента на основании данных контрола\r\n * @param value\r\n */\r\n protected updateComponentValue(value?: any) {\r\n this.value = value === undefined ? this.ussHostComponent.value : value;\r\n this.updateFormValue(this.value);\r\n }\r\n\r\n /**\r\n * Обновляет значение в контроле соответствующего текущему значению компонента\r\n * @param value\r\n */\r\n protected updateElementValue(value: any) {\r\n if (!this.ussHostComponent.isValuesEqual(this.ussHostComponent.value, value)) {\r\n this.ussHostComponent.value = value;\r\n this.updateFormValue(this.ussHostComponent.value);\r\n }\r\n }\r\n\r\n/*\r\n private inForm(el: Node, classname: string): Node {\r\n if (el.parentNode) {\r\n if (el.parentNode.nodeName.toLowerCase() === classname.toLowerCase()) {\r\n return el.parentNode;\r\n } else {\r\n return this.inForm(el.parentNode, classname);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n*/\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.base.directive.ts","import * as ng from '@angular/core';\r\nimport { DataTable } from 'primeng/components/datatable/datatable';\r\nimport { Column } from 'primeng/components/common/shared';\r\nimport { LazyLoadEvent } from 'primeng/components/common/lazyloadevent';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { translate, b64ToBlob, dialog, parser, toUpperCamelCase, convertToValue, isEmpty, download, isString, isArray, isNotEmpty, OData, IODataFilterCreator, IODataLogical, ifEmpty, clone, msg, detectChanges, isFunction } from '@core.module';\r\nimport { UssCrudApiService, IEntityObjectId, IEntityMetadata, UssMetadataService, UssCrudMetadataApiService } from '@metadata.module';\r\nimport { UssSettingsService, StoreSettingsOptions } from '@settings.module';\r\nimport { UssDialogsService } from '@dialogs.module';\r\n\r\n\r\nimport { UssDirectiveBase, HostBinding } from '../../directives/directive.base';\r\nimport { IUssDataTableSettings } from './IUssDataTableSettings';\r\nimport { UssDataSourcePDataTableTemplates } from './data-source.p-dataTable.templates';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { TTableColumnFilterValue } from '../table-column-filter/table-column-filter.component';\r\nimport { UssObjectListSettings } from '../object-list/object-list.settings';\r\nimport { UssObjectListComponent } from '../object-list/object-list.component';\r\n\r\nimport { SystemComponent } from '../../internals';\r\nimport { Paginator } from 'primeng/primeng';\r\nimport { UssImportSystemTaskPage } from '../../systemTasks/import.system-task/import-systemTask.page';\r\nimport { UssSystemTaskDialog } from '../../systemTasks/system-task.dialog/system-task.dialog';\r\n\r\n\r\nexport interface UssDataTableColumn extends Column {\r\n// ReSharper disable once InconsistentNaming\r\n PropertyMetadata: App.PropertyMetadata;\r\n typeName: string;\r\n title: string;\r\n settings: UssDataTableColumnSettings;\r\n\r\n clearFilter(filterControl: any): void;\r\n applyFilter(value: TTableColumnFilterValue): void;\r\n\r\n defaultInvisible: boolean;\r\n getText(item: any): string;\r\n getTitle(item: any): string;\r\n getValue(item: any): any;\r\n\r\n /** Видимость колонки в заголовке таблицы.\r\n * Это значение сохраняется в настройках и переключается в диалоге параметров таблицы.\r\n */\r\n visible: boolean;\r\n\r\n /** Доступность колонки для диалога параметров таблицы.\r\n * hidden: true - колонка не видна в заголовке и диалоге параметров и не сохраняются в настройках.\r\n * hidden: 1 - колонка не видна в заголовке, но видна в диалоге параметров. Равносильно visible = false.\r\n * hidden: 0 - колонка видна в заголовке и видна в диалоге параметровю Равносильно visible = true.\r\n */\r\n hidden: boolean | 1 | 0 | any;\r\n\r\n /** Пересоздаёт объект колонки в списке колонок для изменения отображения, например при изменении заголовков */\r\n update();\r\n\r\n /**\r\n * Изменяет значение заголовка и хинта к заголовку таблицы.\r\n * Если менять просто установив значение св-ва ничего не произойдёт - нужно обновить темплейт.\r\n */\r\n setHeader(value: string, title?: string);\r\n\r\n getClass(item: any): Object;\r\n getStyle(item: any): Object;\r\n}\r\n\r\nclass UssDataTableColumnClass extends Column implements UssDataTableColumn {\r\n\r\n PropertyMetadata: App.PropertyMetadata;\r\n typeName: string = 'text';\r\n title: string;\r\n settings: UssDataTableColumnSettings;\r\n defaultInvisible: boolean;\r\n hidden: boolean | 1 | 0 | any;\r\n\r\n constructor(public owner: UssDataSourcePDataTableDirective, defaultInvisible?: boolean) {\r\n super();\r\n this.defaultInvisible = !!defaultInvisible;\r\n this.visible = !this.defaultInvisible;\r\n this.sortable = true;\r\n this.filter = owner.showColumnFilters;\r\n this.filterMatchMode = 'contains';\r\n this.bodyTemplate = owner.templatesComponent.textBody;\r\n owner.showColumnFilters && (this.filterTemplate = owner.templatesComponent.standardFilter);\r\n\r\n }\r\n\r\n clearFilter(filterControl: any): void {\r\n if (filterControl) {\r\n if (filterControl.inputElement && typeof filterControl.inputElement.focus === 'function') {\r\n setTimeout(() => filterControl.inputElement.focus());\r\n }\r\n if (filterControl instanceof UssDataSourceComponent) {\r\n if (isEmpty(filterControl.control) ||\r\n (isEmpty(filterControl.control.value) ||\r\n filterControl.control.value === '' ||\r\n filterControl.control.value.lenght === 0)) {\r\n return;\r\n }\r\n }\r\n else if ('value' in filterControl && (isEmpty(filterControl.value) || filterControl.value === '' || filterControl.value.lenght === 0)) {\r\n return;\r\n }\r\n if (typeof filterControl.clear === 'function') {\r\n filterControl.clear();\r\n } else {\r\n filterControl.value = '';\r\n }\r\n }\r\n delete this.owner.hostComponent.filters[this.field];\r\n this.owner.refreshTable();\r\n }\r\n\r\n applyFilter(value: TTableColumnFilterValue): void {\r\n const field = this.filterField || this.field;\r\n if (isNotEmpty(value)) {\r\n const type = (this.PropertyMetadata ? this.PropertyMetadata.TypeName : this.typeName ?? this.filterType) ?? 'text';\r\n if (type === 'datetime') {\r\n //const from = moment(value['from']).startOf('day');\r\n //const to = moment(value['to']).endOf('day');\r\n const from = value['from'];\r\n const to = value['to'];\r\n\r\n this.owner.hostComponent.filter([from, to], field, 'range');\r\n } else {\r\n this.owner.hostComponent.filter(value, field, this.filterMatchMode);\r\n }\r\n } else {\r\n delete this.owner.hostComponent.filters[field];\r\n this.owner.refreshTable();\r\n }\r\n }\r\n\r\n getText(item: any): string {\r\n let val = item['__formattedText' + this.settings.name];\r\n if (isEmpty(val)) {\r\n if (isNotEmpty(this.settings.onGetText)) {\r\n val = this.settings.onGetText(item, this);\r\n }\r\n if (isEmpty(val)) {\r\n val = item[this.field];\r\n }\r\n item['__formattedText' + this.settings.name] = val;\r\n }\r\n return val;\r\n }\r\n\r\n getValue(item: any): any {\r\n let val = item['__formattedValue' + this.settings.name];\r\n if (isEmpty(val)) {\r\n if (isNotEmpty(this.settings.onGetValue)) {\r\n val = this.settings.onGetValue(item, this);\r\n }\r\n if (isEmpty(val)) {\r\n val = item[this.field];\r\n }\r\n item['__formattedValue' + this.settings.name] = val;\r\n }\r\n return val;\r\n }\r\n\r\n\r\n getTitle(item: any): string {\r\n let val = item['__formattedTitle' + this.settings.name];\r\n if (isEmpty(val)) {\r\n if (isNotEmpty(this.settings.onGetTitle)) {\r\n val = this.settings.onGetTitle(item, this);\r\n }\r\n else {\r\n val = this.getText(item);\r\n }\r\n if (typeof val !== 'string') {\r\n val = undefined;\r\n }\r\n item['__formattedTitle' + this.settings.name] = val;\r\n }\r\n return val;\r\n }\r\n\r\n get visible(): boolean { return !this.hidden; }\r\n set visible(value: boolean) {\r\n this.hidden = value ? 0 : 1;\r\n this.owner.markForCheck();\r\n }\r\n\r\n setHeader(value: string, title?: string) {\r\n this.header = value;\r\n this.title = ifEmpty(title, this.title);\r\n this.update();\r\n }\r\n\r\n update() {\r\n const idx = this.owner.hostColumns.indexOf(this);\r\n if (idx >= 0) {\r\n const cloned = clone(this);\r\n this.owner.hostColumns[idx] = cloned;\r\n }\r\n }\r\n\r\n getClass(item: any): Object {\r\n return typeof this.settings.bodyClass === 'function'\r\n ? this.settings.bodyClass(item, this)\r\n : this.settings.bodyClass;\r\n }\r\n\r\n getStyle(item: any): Object {\r\n return typeof this.settings.bodyStyle === 'function'\r\n ? this.settings.bodyStyle(item, this)\r\n : this.settings.bodyStyle;\r\n }\r\n}\r\n\r\nexport interface IExportDialogData {\r\n reportParams: App.ExportParams;\r\n loadReport: (params: App.ExportParams) => Promise;\r\n}\r\n\r\nexport interface UssDataTableColumnSettings {\r\n name: string;\r\n position?: number;\r\n first?: boolean;\r\n last?: boolean;\r\n after?: string;\r\n before?: string;\r\n\r\n template?: string | ng.TemplateRef;\r\n headerTemplate?: string | ng.TemplateRef;\r\n bodyTemplate?: string | ng.TemplateRef;\r\n footerTemplate?: string | ng.TemplateRef;\r\n filterTemplate?: string | ng.TemplateRef;\r\n editorTemplate?: string | ng.TemplateRef;\r\n\r\n bodyStyle?: Object | ((item: any, col: UssDataTableColumn) => Object);\r\n bodyClass?: string | ((item: any, col: UssDataTableColumn) => Object);\r\n displayFormat?: string;\r\n emptyText?: string;\r\n onGetText?: (item: any, col: UssDataTableColumn) => string;\r\n onGetTitle?: (item: any, col: UssDataTableColumn) => string;\r\n onGetValue?: (item: any, col: UssDataTableColumn) => any;\r\n\r\n defaultFilter?: any;\r\n disableFilter?: boolean;\r\n}\r\n\r\nexport interface UssDataTableStoreSettings {\r\n storeSection?: string;\r\n columns?: UssDataTableColumn[];\r\n userData?: any;\r\n /** Для внутреннего использования. Устанавливается в true если нужно пропустить восстановление/сохранение колонок */\r\n $skipSaveRestoreSettings?: boolean;\r\n}\r\n\r\n\r\nexport const SEARCH_DELAY_MS = 1000;\r\n\r\n/*-----------------------------------------------------------*/\r\nexport declare class UssDataTable extends DataTable {\r\n\r\n public $dataSource: UssDataSourcePDataTableDirective;\r\n public ussDataSource: UssDataSourcePDataTableDirective;\r\n /**\r\n * Количество пропущенных записей с начала выборки (при постраничном просмотре)\r\n */\r\n public first: number;\r\n\r\n public refresh(globalFilter?: string, fromStart?: boolean, forceReload?: boolean, debounceTime?: number);\r\n public refresh(fromStart?: boolean, globalFilter?: string, forceReload?: boolean, debounceTime?: number);\r\n\r\n /**\r\n * Значение ключа записи на которое необходимо установить выделение после обновления таблицы.\\\r\n * Очищается после запроса обновления.\r\n */\r\n public keyValue: string;\r\n}\r\n\r\nexport interface IUssTableDataSource extends IUssDataTableSettings {\r\n /**\r\n * Ссылка на CRUD-сервис класса, его тип или его название.\r\n */\r\n service?: UssCrudApiService;\r\n\r\n /**\r\n * Альтернативный обработчик настроечных методов. Если указан, то в первую очередь будет использоваться он.\r\n */\r\n controller?: IUssDataTableSettings;\r\n}\r\n\r\nexport interface IUssTableDataSourceEx extends IUssDataTableSettings {\r\n /**\r\n * Ссылка на CRUD-сервис класса, его тип или его название.\r\n */\r\n service?: UssCrudApiService | ng.Type> | string;\r\n\r\n /**\r\n * Альтернативный обработчик настроечных методов. Если указан, то в первую очередь будет использоваться он.\r\n */\r\n controller?: IUssDataTableSettings;\r\n\r\n prepareQuery?: (odata: OData, firstTime: boolean) => void;\r\n onLoad?: (items: IEntityObjectId[]) => IEntityObjectId[] | void;\r\n}\r\n\r\nconst SettingsProp = () => (target, propertyKey) => { Object.defineProperty(target, propertyKey, { get: function () { return this.getProp(propertyKey) } }); };\r\nconst SettingsFn = () => (target, name, descriptor) => { descriptor.value = function (...args) { return this.executeFn(name, ...args); } };\r\n\r\n\r\nexport type TDataSource = IUssTableDataSourceEx | string | IEntityMetadata | Object[] | UssCrudApiService | Observable | Promise;\r\n\r\n@ng.Directive({\r\n selector: 'p-dataTable[ussDataSource]'\r\n})\r\n@SystemComponent()\r\nexport class UssDataSourcePDataTableDirective extends UssDirectiveBase implements IUssTableDataSource,\r\nng.OnChanges, ng.OnInit, ng.AfterViewInit, ng.AfterViewChecked {\r\n\r\n /**\r\n * Преобразованный к полному виду источник данных, с которым работает директива.\r\n */\r\n protected dataSource: IUssTableDataSource;\r\n\r\n /** Запретить поиск данных в таблице по ключу (odata.$key) */\r\n @ng.Input('noKey') noKey: boolean;\r\n\r\n @ng.Input('noPaging') noPaging: boolean;\r\n\r\n /**\r\n * Источник данных, устанавливаемый пользователем. Может принимать множество различных значений и\r\n * приводится автоматически к IUssTableDataSource.\r\n */\r\n @ng.Input('ussDataSource') ussDataSource: TDataSource;\r\n\r\n @ng.Input('selectionMode') selectionMode: 'single' | 'multiple';\r\n\r\n @ng.Input('canEdit') canEdit = true;\r\n @ng.Input('canDelete') canDelete = true;\r\n\r\n @ng.Input('loadImmediatelly') loadImmediatelly = true;\r\n\r\n @ng.Input('showColumnFilters') showColumnFilters = true;\r\n\r\n @ng.Output('loading') loading = new ng.EventEmitter();\r\n @ng.Output('onDblClick') onDblClick = new ng.EventEmitter();\r\n\r\n /**\r\n * Наименование секции для сохранения параметров списка.\r\n * Если не указано - сохранение и восстановление работать не будет.\r\n */\r\n @ng.Input('storeSection') storeSection: string;\r\n\r\n /**\r\n * Источник данных компонента DataTable.\r\n */\r\n @HostBinding('value') rowSet: Object[];\r\n @HostBinding('columns') hostColumns: UssDataTableColumn[];\r\n\r\n @ng.ViewChild('p-paginator') paginator: Paginator;\r\n\r\n private _columns: UssDataTableColumn[] = [];\r\n get columns(): UssDataTableColumn[] { return this._columns; }\r\n set columns(v: UssDataTableColumn[]) {\r\n this._columns = v || [];\r\n this.updateHostColumns();\r\n }\r\n\r\n updateHostColumns() {\r\n const cols = this.columns.filter(c => c.hidden !== true);\r\n this.hostColumns = cols;\r\n }\r\n\r\n constructor( @ng.Host() hostComponent: DataTable, vcr: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(hostComponent, vcr, changeDetector);\r\n }\r\n\r\n public debounceRefreshTable(p1?, p2?, p3?, debounceTime?: number) {\r\n if (!this.isLoading || p3) {\r\n debounceTime = ifEmpty(debounceTime, 50);\r\n if (debounceTime <= 0 || p3) {\r\n this.refreshTable(p1, p2, p3);\r\n } else {\r\n this.debounce(() => this.refreshTable(p1, p2, p3), debounceTime, 'refreshTable');\r\n }\r\n }\r\n }\r\n\r\n /** Признак того, что при следующий запрос должен очистить кеш */\r\n $clearCache: boolean;\r\n\r\n public refreshTable(globalFilter?: string, fromStart?: boolean, forceReload?: boolean);\r\n public refreshTable(fromStart?: boolean, globalFilter?: string, forceReload?: boolean);\r\n public refreshTable(p1, p2, p3) {\r\n let globalFilter: string;\r\n let fromStart: boolean;\r\n if (typeof p1 === 'boolean') fromStart = p1;\r\n if (typeof p2 === 'boolean') fromStart = p2;\r\n if (typeof p1 === 'string') globalFilter = p1;\r\n if (typeof p2 === 'string') globalFilter = p2;\r\n if (globalFilter !== undefined)\r\n this.hostComponent.globalFilter = globalFilter;\r\n if (fromStart) {\r\n this.hostComponent._filter();\r\n } else {\r\n const md = this.hostComponent.createLazyLoadMetadata();\r\n md['__force'] = p3;\r\n this.hostComponent.onLazyLoad.emit(md);\r\n }\r\n }\r\n\r\n /**\r\n * Настройки DataTable по умолчанию. Установленные в разметке значения перекроют эти.\r\n */\r\n private defaultDataTableSettings() {\r\n const me = this;\r\n this.hostComponent.reorderableColumns = true;\r\n this.hostComponent.rows = 10;\r\n this.hostComponent.paginator = true;\r\n this.hostComponent.pageLinks = 5;\r\n this.hostComponent.rowsPerPageOptions = [5, 10, 20, 50, 100];\r\n this.hostComponent.selectionMode = this.selectionMode;\r\n this.hostComponent['refresh'] = (p1, p2, p3, debounceTime?: number) => this.debounceRefreshTable(p1, p2, p3, debounceTime);\r\n\r\n this.hostComponent['$dataSource'] = this;\r\n\r\n // запрещаем изменение страницы во время перезагрузки\r\n Paginator.prototype.onPageLinkClick = function (event, page) {\r\n // Таким извращённым способом находим ссылку на компонент таблицы к которому относится пагинатор.\r\n let pDataTable = event.srcElement;\r\n while (pDataTable && pDataTable.nodeName !== 'P-DATATABLE') pDataTable = pDataTable.parentElement;\r\n if (pDataTable && pDataTable === me.elementRef.nativeElement && me.isLoading) {\r\n // ничего не делаем во время загрузки таблицы\r\n } else {\r\n // ReSharper disable once SuspiciousThisUsage\r\n this.changePage(page);\r\n }\r\n event.preventDefault();\r\n };\r\n }\r\n\r\n private onLazyLoadHandler(event) {\r\n this.loadData(event);\r\n }\r\n\r\n public templatesComponent: UssDataSourcePDataTableTemplates;\r\n\r\n private makeTemplate(template: string | ng.TemplateRef): ng.TemplateRef {\r\n if (typeof template === 'string')\r\n template = this.templatesComponent[template];\r\n return template as ng.TemplateRef;\r\n }\r\n\r\n private createColumn(defaultInvisible: boolean = false): UssDataTableColumn {\r\n return new UssDataTableColumnClass(this, defaultInvisible);\r\n }\r\n\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n this.hostComponent['ussDataSource'] = this;\r\n // лэйзи лоадинг\r\n this.hostComponent.lazy = true;\r\n this.hostComponent.onLazyLoad.subscribe(e => this.onLazyLoadHandler(e));\r\n this.hostComponent.onSort.subscribe(e => this.saveSettings());\r\n this.hostComponent.onColReorder.subscribe(e => this.saveSettings(e));\r\n this.hostComponent.onPage.subscribe(e => { this.saveSettings(e) });\r\n //this.hostComponent.onColResize.subscribe(e => this.saveSettings());\r\n // В этом месте все параметры, сделанные в разметке, перекроют установки, сделанные в defaultDataTableSettings.\r\n this.defaultDataTableSettings();\r\n this.checkIfVisibility = true;\r\n }\r\n\r\n private _originalSortField: string;\r\n private _originalSortOrder: number;\r\n\r\n public ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n setTimeout(() => {\r\n this._originalSortField = this.hostComponent.sortField;\r\n this._originalSortOrder = this.hostComponent.sortOrder;\r\n this.initTable();\r\n this.hostComponent.onRowDblclick.subscribe((e: { originalEvent: MouseEvent, data: any }) => {\r\n const selectedObject = e.data;\r\n if (selectedObject) {\r\n this.onDblClick.emit(selectedObject);\r\n }\r\n });\r\n });\r\n }\r\n\r\n/*\r\n ngAfterViewChecked(): void {\r\n if (this.checkIfVisibility) {\r\n if (this.isElementVisible) {\r\n this.checkIfVisibility = false;\r\n this.refreshTable(true);\r\n }\r\n }\r\n super.ngAfterViewChecked();\r\n }\r\n*/\r\n onVisibilityInit() {\r\n super.onVisibilityInit();\r\n this.loadImmediatelly && this.refreshTable(true);\r\n }\r\n\r\n async initTable(): Promise {\r\n this.templatesComponent = UssDialogsService.createComponent(UssDataSourcePDataTableTemplates, this.viewContainer);\r\n this.templatesComponent.self = this;\r\n let ussColumns: UssDataTableColumn[] = [];\r\n this._columns = this.hostColumns;\r\n // В этом месте все параметры, сделанные в разметке, уже применены и могут быть принудительно изменены.\r\n if (this.columns.length === 0 && this.metadata && this.metadata.Properties) {\r\n this.hostComponent.sortField = this._originalSortField;\r\n this.hostComponent.sortOrder = this._originalSortOrder;\r\n // Добавляем колонки, взятые из метаинформации\r\n ussColumns = this.metadata.Properties\r\n //.where(pi => pi.Hidden === false || !pi.DefaultInvisible && !pi.Hidden)\r\n .where(pi => !pi.Hidden)\r\n .select(pi => clone(pi))\r\n .select(pi => {\r\n const c = this.createColumn(pi.DefaultInvisible);\r\n c.PropertyMetadata = pi;\r\n c.typeName = ifEmpty(c.PropertyMetadata?.TypeName, 'text');\r\n c.settings = { name: pi.Name, position: pi.Position, displayFormat: pi.Format };\r\n c.field = pi.Name;\r\n\r\n c.headerTemplate = this.templatesComponent.simpleHead;\r\n if (pi.EnumerableMetadata) {\r\n c.bodyTemplate = this.templatesComponent.enumBody;\r\n } else if (pi.ObjectRefMetadata) {\r\n c.bodyTemplate = this.templatesComponent.expressionBody;\r\n } else if (pi.TypeName === 'datetime') {\r\n c.bodyTemplate = this.templatesComponent.datetimeBody;\r\n } else if (pi.TypeName === 'boolean') {\r\n c.bodyTemplate = this.templatesComponent.boolBody;\r\n c.styleClass = 'dt-boolean';\r\n/*\r\n } else if (pi.Name === 'Tags') {\r\n c.bodyTemplate = this.templatesComponent.tagsBody;\r\n*/\r\n } else if (pi.Name === 'Color') {\r\n c.bodyTemplate = this.templatesComponent.colorBody;\r\n }\r\n c.header = pi.Description;\r\n c.title = pi.Note || pi.Description;\r\n return this.prepareStandardColumn(c);\r\n })\r\n .where(c => c != null)\r\n .toArray();\r\n } else if (isNotEmpty(this.rowSet) && this.rowSet.length > 0) {\r\n ussColumns = Object.keys(this.rowSet[0]).select(pi => {\r\n const c = this.createColumn();\r\n c.header = pi;\r\n c.field = pi;\r\n c.title = pi;\r\n return this.prepareStandardColumn(c);\r\n })\r\n .where(c => c != null)\r\n .toArray();\r\n }\r\n\r\n // Add custom columns\r\n this.onAddCustomColumns(ussColumns);\r\n\r\n // Sorting columns and assign columns\r\n const columns = this.sortColums(ussColumns);\r\n\r\n // Применяем текущие фильтры\r\n columns\r\n .where((c: UssDataTableColumn) => {\r\n c.visible = !!ifEmpty(c.visible, true);\r\n/*\r\n if (c.filterTemplate === this.templatesComponent.dropdownFilter) {\r\n c.filterMatchMode = 'equals';\r\n }\r\n*/\r\n if (c.PropertyMetadata && !c.field) {\r\n c.field = c.PropertyMetadata.Name;\r\n }\r\n return c.field && isNotEmpty(c.settings.defaultFilter);\r\n })\r\n .forEach((c: UssDataTableColumn) => {\r\n this.hostComponent.filter(convertToValue(c.settings.defaultFilter, c.PropertyMetadata), c.field, c.filterMatchMode);\r\n });\r\n\r\n\r\n if (this.selectionMode && this.selectionMode === 'multiple') {\r\n const c = new Column();\r\n c.styleClass = 'dt-boolean dt-selection-checkbox';\r\n c.selectionMode = this.selectionMode;\r\n c.frozen = true;\r\n columns.unshift(c);\r\n }\r\n\r\n this.subscribe(translate.onLangChange, () => this.clearCellCache());\r\n\r\n this.isLoading = true;\r\n const res = await this.restoreSettings({ columns, storeSection: this.storeSection });\r\n this.columns = res.columns;\r\n this.isLoading = false;\r\n this.refreshTable();\r\n this.markForCheck();\r\n return res;\r\n }\r\n\r\n private smartEdit(entity: IEntityObjectId): Promise {\r\n let se = this.dataSource.service.smartEdit(entity,\r\n this.editComponent,\r\n e => this.prepareEdit(e, this.hostComponent),\r\n e => {\r\n entity && (this.hostComponent.keyValue = entity.Id);\r\n this.loading.emit(false);\r\n })\r\n .then(x => {\r\n if (x) {\r\n this.hostComponent.keyValue = x.Id;\r\n this.afterEdit([x], this.hostComponent);\r\n }\r\n return x;\r\n });\r\n\r\n return se;\r\n }\r\n\r\n private isLoading: boolean = true;\r\n\r\n /**\r\n * Открывает диалог для создания указанного объекта.\r\n * @param fromEntityObject если указан - данные этого объекта копируются в новый.\r\n */\r\n public async create(fromEntityObject?: IEntityObjectId): Promise {\r\n let entity = {};\r\n if (fromEntityObject) {\r\n //assign(entity, fromEntityObject);\r\n entity = clone(fromEntityObject);\r\n entity.Id = null;\r\n }\r\n const res = await this.smartEdit(entity);\r\n if (res && isNotEmpty(res.Id)) {\r\n const md = this.hostComponent.createLazyLoadMetadata();\r\n md['__obj'] = res;\r\n this.loadData(md);\r\n }\r\n\r\n //this.hostComponent.onLazyLoad.emit(md);\r\n\r\n this.afterEdit([entity], this.hostComponent);\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * Открывает диалог для редактирования указанного объекта.\r\n * @param entityObject редактируемый объект\r\n */\r\n public edit(entityObject: IEntityObjectId): Promise {\r\n this.loading.emit(true);\r\n const res = this.smartEdit(entityObject);\r\n return res;\r\n }\r\n\r\n /**\r\n * Открывает диалог для просмотра указанного объекта.\r\n * @param entityObject просматриваемый объект\r\n */\r\n public read(entityObject: IEntityObjectId): Promise {\r\n this.loading.emit(true);\r\n (entityObject = (entityObject || {}))['$readonly'] = true;\r\n const res = this.smartEdit(entityObject);\r\n return res;\r\n }\r\n\r\n /**\r\n * Удаление указанного объекта. Предварительно будет задан вопрос с подтверждением удаления.\r\n * @param entityObject удаляемый объект\r\n */\r\n public async delete(entityObject: IEntityObjectId | IEntityObjectId[]): Promise {\r\n const res = await this.dataSource.service.smartDelete(entityObject);\r\n if (res) {\r\n this.debounceRefreshTable();\r\n this.afterEdit(isArray(entityObject) ? entityObject : [entityObject], this.hostComponent);\r\n }\r\n return res;\r\n }\r\n\r\n \r\n\r\n public async doExport(params: App.ExportParams) {\r\n\r\n params = await dialog.show(UssDialogsService.exportOptionsDialog,\r\n {\r\n reportParams: params,\r\n loadReport: async (params) => {\r\n const data = await this.dataSource.service.export$(params, this.prevOdata).toPromise() as App.FileResult;\r\n //dialog.info(`Файл сформирован. Загрузить`);\r\n //download(data.Url || data as any, params.Name);\r\n if (data.FileDownloadName) {\r\n const type = mime.lookup(data.FileDownloadName);\r\n const blob = b64ToBlob(data.Data, type);\r\n if (blob) {\r\n download(blob, data.FileDownloadName);\r\n }\r\n } else {\r\n msg.warning(translate.instant('@DIALOG.NO_DATA'));\r\n }\r\n }\r\n }).result;\r\n //if (params) {\r\n // const data = await this.dataSource.service.export$(params, this.prevOdata).toPromise() as App.FileResult;\r\n // //dialog.info(`Файл сформирован. Загрузить`);\r\n // //download(data.Url || data as any, params.Name);\r\n\r\n // const type = mime.lookup(data.FileDownloadName);\r\n // const blob = b64ToBlob(data.Data, type);\r\n // download(blob, data.FileDownloadName);\r\n //}\r\n }\r\n\r\n public async doImport(file: File): Promise {\r\n /*\r\n const data = await this.dataSource.service.import$(file).toPromise() as App.ImportResult;\r\n if (data) {\r\n if (data.Errors.any()) {\r\n data.Errors.forEach(x => {\r\n x.Error && error(x.Error);\r\n });\r\n }\r\n info(`Создано записей ${data.Succeded} из ${data.Succeded + data.Failed}`);\r\n this.debounceRefreshTable();\r\n this.afterEdit([], this.hostComponent);\r\n }\r\n */\r\n const importDialog = UssImportSystemTaskPage.show({ service: this.dataSource.service, file });\r\n await importDialog.result as Uss.ImportResult;\r\n const data = importDialog.taskResult?.Result;\r\n if (data) {\r\n this.debounceRefreshTable();\r\n this.afterEdit([], this.hostComponent);\r\n }\r\n }\r\n\r\n public async doSettings(objectList?: UssObjectListComponent) {\r\n const res = await dialog.show(UssObjectListSettings, { columns: this.columns, objectList: objectList }).result;\r\n this.saveSettings();\r\n this.refreshTable();\r\n return res;\r\n }\r\n\r\n public ngOnChanges(changes) {\r\n if (changes.ussDataSource) {\r\n this.updateDataSource(this.ussDataSource);\r\n }\r\n if (changes.selectionMode && this.hostComponent) {\r\n this.hostComponent.selectionMode = this.selectionMode;\r\n }\r\n }\r\n\r\n /**\r\n * Создание dataSource на основании различных входных вариантов ussDataSource.\r\n */\r\n private updateDataSource(ussDataSource: TDataSource) {\r\n this.dataSource = { service: null };\r\n const entityMetadata = ussDataSource;\r\n const dataSource = ussDataSource;\r\n if (!ussDataSource) {\r\n } else if (ussDataSource instanceof Promise) {\r\n // В качестве источника данных передали промис - нужно обработать его результат\r\n ussDataSource.then(res => this.updateDataSource(res));\r\n } else if (ussDataSource instanceof Observable) {\r\n // В качестве источника данных передали обсёрв - нужно обработать его результат\r\n ussDataSource.subscribe(res => this.updateDataSource(res));\r\n } else if (ussDataSource instanceof UssCrudApiService) {\r\n // В качестве источника данных передали сервис\r\n this.dataSource = dataSource;\r\n this.dataSource.service = ussDataSource;\r\n } else if (isString(ussDataSource)) {\r\n // В качестве источника данных передали название класса\r\n const metadata = UssMetadataService.getEntityInfo(ussDataSource);\r\n if (metadata && typeof metadata.service === 'function')\r\n this.dataSource = { service: metadata.service() };\r\n } else if (typeof (entityMetadata.service) === 'function' &&\r\n (entityMetadata.service() instanceof UssCrudApiService)) {\r\n // В качестве источника данных передали что-то очень похожее на метаинформацию класса\r\n this.dataSource = clone(dataSource);\r\n this.dataSource.service = entityMetadata.service();\r\n } else if (dataSource.service) {\r\n // В качестве источника данных передали что-то очень похожее на UssTableDataSource\r\n this.dataSource = dataSource;\r\n } else if (isArray(ussDataSource)) {\r\n // В качестве источника данных явно передали набор данных\r\n this.rowSet = ussDataSource;\r\n }\r\n if (this.dataSource.service) {\r\n /*\r\n const ussCrudApiServiceName = this.dataSource.service as any;\r\n if (typeof ussCrudApiServiceName === 'string') {\r\n const metadata = UssMetadataService.getEntityInfo(ussCrudApiServiceName);\r\n if (metadata && typeof metadata.service === 'function')\r\n this.dataSource.service = metadata.service();\r\n else if (!metadata)\r\n debug(`USS: Can't find metadata for entity type ${ussCrudApiServiceName}.`);\r\n } else if (!(this.dataSource.service instanceof UssCrudApiService)) {\r\n this.dataSource.service = Reflection.get(this.dataSource.service);\r\n }\r\n */\r\n this.dataSource.service = UssMetadataService.getService(this.dataSource.service);\r\n const ussCrudApiService = this.dataSource.service;\r\n if (!this.dataSource.metadata && ussCrudApiService instanceof UssCrudMetadataApiService) {\r\n this.dataSource.metadata = clone(ussCrudApiService.metadata);\r\n }\r\n if (this.dataSource.service instanceof UssCrudApiService) {\r\n // Всё ок - сервис правильный. Возможно тут что-то ещё можно сделать.\r\n } else {\r\n // Что-то непонятное передали - не будем использовать\r\n this.dataSource.service = null;\r\n console.error(`Can't find service for entity type: `, this.dataSource.service);\r\n }\r\n }\r\n }\r\n\r\n private getPropertyInfo(propName: string): App.PropertyMetadata {\r\n let res = null;\r\n if (this.metadata && this.metadata.Properties)\r\n res = this.metadata.Properties.firstOrDefault(pi => pi.Name === propName);\r\n return res;\r\n }\r\n\r\n /**\r\n * Признак самого первого вызова метода loadData.\r\n * Передаётся в качестве параметра в метод prepareQuery.\r\n */\r\n private firstLoad: boolean = true;\r\n\r\n /**\r\n * Возвращает список полей, входящих в формулу текстового представления объекта\r\n */\r\n static extractParserFields(metadata: App.EntityMetadata, expression?: string): Array {\r\n const fields = [];\r\n expression = expression || metadata?.RepresentExpression;\r\n if (expression) {\r\n const expressionFields = parser.extractParsedFields(expression);\r\n for (let fld of expressionFields) {\r\n const prop = metadata.Properties.firstOrDefault(pi => pi.Name === fld);\r\n prop && fields.push(prop.Name);\r\n }\r\n }\r\n return fields;\r\n }\r\n\r\n prevOdata: OData;\r\n /**\r\n * Загрузка данных с сервера на основании текущего состояния таблицы.\r\n * Вызывается при получении события onLazyLoad.\r\n */\r\n private loadData(event: LazyLoadEvent) {\r\n let forceReload = event['__force'];\r\n let onDataChangesEvent = event['__obj'] as IEntityObjectId;\r\n\r\n if (this.isLoading && !forceReload) return;\r\n\r\n this.loadImmediatelly = false;\r\n\r\n this.isLoading = true;\r\n this.loading.emit(true);\r\n this.detectChanges();\r\n this.changeDetector.detach();\r\n this.updateHostColumns();\r\n\r\n// setTimeout(() => {\r\n if (this.dataSource) {\r\n// this.changeDetector.detach();\r\n let odata;\r\n if (this.metadata && typeof (this.metadata).createOData === 'function') {\r\n odata = (this.metadata).createOData();\r\n }\r\n odata = (odata || OData.create);\r\n this.hostComponent.paginator = !this.noPaging;\r\n if (!this.noPaging) {\r\n if (event.first > 0 && this.rowSet.length === 0) {\r\n event.first = event.first - event.rows;\r\n }\r\n odata = odata.$skip(event.first).$top(event.rows);\r\n }\r\n if (event.sortField) {\r\n let prop = this.metadata.Properties.firstOrDefault(x => x.Name === event.sortField);\r\n let sortOrder = event.sortOrder < 0 ? ' desc' : '';\r\n if (prop) {\r\n let f = [event.sortField + sortOrder];\r\n if (prop.ObjectRefMetadata) {\r\n let fields = UssDataSourcePDataTableDirective.extractParserFields(UssMetadataService.getEntityInfo(prop.ObjectRefMetadata.Name));\r\n f = fields.select(x => `${event.sortField}/${x}` + sortOrder).toArray();\r\n }\r\n odata.$orderBy(f);\r\n } else {\r\n odata.$orderBy(`${event.sortField} ${sortOrder}`);\r\n }\r\n }\r\n\r\n if (event.filters) {\r\n for (let propName in event.filters) {\r\n if (!event.filters.hasOwnProperty(propName)) continue;\r\n const q = odata.query; // обязательно нужно для правильного построения запроса\r\n const propValue = event.filters[propName];\r\n let val: any = propValue && propValue.value;\r\n if (isNotEmpty(val) && val.toString().length > 0) {\r\n const notFlag = (val || '').toString().endsWith('!') ? '!' : ''; // восклицательный знак в конце - признак отрицания отбора \r\n if (notFlag) val = (val as string).substring(0, val.length - 1);\r\n let pi = this.getPropertyInfo(propName);\r\n let matchMode = propValue.matchMode;\r\n if (pi && pi.TypeName !== 'string') {\r\n // если не строковое значение - то сравнение будет по полному соответствию\r\n switch (pi.TypeName) {\r\n case 'integer':\r\n propName = `${propName}:i`;\r\n break;\r\n case 'float':\r\n propName = `${propName}:f`;\r\n break;\r\n case 'datetime':\r\n //propName = `${propName}:d`;\r\n if (matchMode === 'range' && isArray(val)) {\r\n const from = moment(val[0]);\r\n const to = moment(val[1]);\r\n if (from.isValid() && to.isValid()) {\r\n odata.prop(propName).ge(from).and(propName).le(to);\r\n }\r\n else if (from.isValid()) {\r\n odata.prop(propName).ge(from);\r\n }\r\n else if (to.isValid()) {\r\n odata.prop(propName).le(to);\r\n }\r\n val = null;\r\n }\r\n break;\r\n case 'boolean':\r\n propName = `${propName}:b`;\r\n break;\r\n default:\r\n if (pi.EnumerableMetadata) {\r\n // Это перечисление\r\n // новая версия ODATA-провайдера на сервере.\r\n // теперь НЕ нужно указывать название типа перечисления в запросе\r\n //val = OData.enum(pi.TypeName, val);\r\n // добавим условие поиска по названиям элементов перечисления\r\n // 1. найдём значения перечисления, чьи названия удовлетворяют введённому фильтру\r\n let query;\r\n if (typeof val === 'number') {\r\n query = pi.EnumerableMetadata.where(x => x.Value === val);\r\n }\r\n else {\r\n let strVal = val.toString();\r\n switch (matchMode) {\r\n case 'contains':\r\n query = pi.EnumerableMetadata.where(x => (x.Description || x.Name).Contains(strVal, true));\r\n break;\r\n case 'endsWith':\r\n query = pi.EnumerableMetadata.where(x => (x.Description || x.Name).EndsWith(strVal, true));\r\n break;\r\n case 'startsWith':\r\n query = pi.EnumerableMetadata.where(x => (x.Description || x.Name).StartsWith(strVal, true));\r\n break;\r\n case 'strict':\r\n query = pi.EnumerableMetadata.where(x => (x.Description || x.Name).toUpperCase() === strVal.toUpperCase());\r\n break;\r\n default:\r\n query = pi.EnumerableMetadata.where(x => (x.Description || x.Name).Contains(strVal, true));\r\n break;\r\n }\r\n }\r\n // 2. Сформируем условие вида 'and (EnumField = val1 or EnumField = val2 ... or EnumField = valN)\r\n let ofc: IODataFilterCreator = undefined;\r\n let op: IODataLogical = undefined;\r\n for (let enumValue of query.select(x => x.Value).toArray()) {\r\n ofc = op ? op.or(propName) : (ofc || odata.prop(propName));\r\n op = ofc.eq(enumValue, !notFlag);\r\n }\r\n if (op)\r\n odata.and(op);\r\n else {\r\n if (matchMode === 'equals') {\r\n odata.prop(propName).eq(val, !notFlag);\r\n } else {\r\n// odata.prop(propName).eq(-1000000, !notFlag);\r\n odata.prop(propName).eq(val, !notFlag);\r\n }\r\n }\r\n // 3. Очистим это значение, чтобы не было попыток искать по нему\r\n val = null;\r\n } else if (pi.ObjectRefMetadata) {\r\n let md = UssMetadataService.getEntityInfo(pi.ObjectRefMetadata.Name);\r\n let fields = UssDataSourcePDataTableDirective.extractParserFields(md);\r\n\r\n let f = fields.distinct()\r\n .select(x => `*${pi.ObjectRefMetadata.ObjectPropertyName}/${x}*${notFlag}`).toArray()\r\n .join(',');\r\n odata.appendQuery(f, val, true);\r\n val = null;\r\n }\r\n }\r\n } else {\r\n switch (matchMode) {\r\n case 'contains':\r\n propName = `*${propName}*`;\r\n break;\r\n case 'endsWith':\r\n propName = `*${propName}`;\r\n break;\r\n case 'startsWith':\r\n propName = `${propName}*`;\r\n break;\r\n case 'strict':\r\n break;\r\n default:\r\n propName = `*${propName}*`;\r\n break;\r\n }\r\n }\r\n if (isNotEmpty(val) || notFlag)\r\n odata.appendQuery(`${propName}${notFlag}`, val);\r\n }\r\n }\r\n }\r\n const globalFilterValue = typeof this.hostComponent.globalFilter === 'string'\r\n ? this.hostComponent.globalFilter\r\n : this.hostComponent.globalFilter\r\n ? this.hostComponent.globalFilter.value\r\n : undefined;\r\n\r\n // Добавим условие из фильтра глобального поиска\r\n if (globalFilterValue) {\r\n let globalFilterProps = this.globalFilterProps;\r\n if (!globalFilterProps) {\r\n let fields = [];\r\n // Добавим набор ключевых полей в качестве полей для глобального поиска\r\n if (this.metadata.KeyAttrs) {\r\n fields = this.metadata.KeyAttrs.toArray();\r\n }\r\n // Добавим полей из выражения текстового представления в качестве полей для глобального поиска\r\n\r\n fields.AddRange(UssDataSourcePDataTableDirective.extractParserFields(this.metadata));\r\n\r\n globalFilterProps = fields.distinct().where(x => this.metadata.Properties.any(p => p.TypeName === 'string' && p.Name === x)).select(x => `*${x}*`).toArray().join(',');\r\n }\r\n const q = odata.query; // обязательно нужно для правильного построения запроса\r\n odata.appendQuery(globalFilterProps, globalFilterValue, !this.globalFilterStrict);\r\n }\r\n\r\n //if (this.firstLoad && this.selectionMode === 'single' && this.hostComponent && this.hostComponent.selection && this.hostComponent.selection.length > 0) {\r\n let selObjects = this.hostComponent.selection\r\n ? (isArray(this.hostComponent.selection)\r\n ? this.hostComponent.selection\r\n : [this.hostComponent.selection])\r\n : [];\r\n if (onDataChangesEvent && !this.noKey) {\r\n odata.$key(onDataChangesEvent.Id);\r\n }\r\n this.expandRefsColumns(odata, this.columns);\r\n if (this.hostComponent.keyValue && !this.noKey) {\r\n odata.$key(this.hostComponent.keyValue);\r\n }\r\n this.hostComponent.keyValue = undefined;\r\n this.prepareQuery(odata, this.firstLoad);\r\n this.firstLoad = false;\r\n const currentOData = odata.query;\r\n if (forceReload !== false || currentOData !== this.prevOdata.query) {\r\n this.prevOdata = odata;\r\n if (this.$clearCache) {\r\n odata.$addExtra('$clearCache');\r\n delete this.$clearCache;\r\n }\r\n this.dataSource.service &&\r\n this.dataSource.service.smartLoad(odata)\r\n .then(rows => {\r\n this.hostComponent.totalRecords = rows['odata.count'] || 0;\r\n const r1 = this.onLoad(rows) as IEntityObjectId[];\r\n\r\n if (r1) {\r\n rows = r1;\r\n if (rows['odata.count'])\r\n this.hostComponent.totalRecords = rows['odata.count'] || 0;\r\n }\r\n\r\n this.rowSet = rows;\r\n\r\n if (onDataChangesEvent) {\r\n this.hostComponent.selection = [onDataChangesEvent.Id];\r\n } else /*if (!this.hostComponent.selection || this.hostComponent.selection.length === 0)*/\r\n {\r\n this.hostComponent.selection =\r\n selObjects.select(x => typeof x === 'string' ? x : x['Id']).toArray();\r\n }\r\n\r\n\r\n // если selection передан как список Id-шек, тут можно их превратить в объекты\r\n if (isArray(this.hostComponent.selection)) {\r\n for (let i = 0; i < this.hostComponent.selection.length; i++) {\r\n const obj = this.hostComponent.selection[i];\r\n if (typeof obj === 'string') {\r\n this.hostComponent.selection[i] =\r\n this.rowSet.firstOrDefault(x => x['Id'] === obj) || obj;\r\n }\r\n }\r\n }\r\n\r\n let toDelete = [];\r\n if (isArray(this.hostComponent.selection)) {\r\n for (let i = 0; i < this.hostComponent.selection.length; i++) {\r\n const obj = this.rowSet.firstOrDefault(x => this.hostComponent.selection[i] && (x['Id'] === this.hostComponent.selection[i]['Id']));\r\n if (!obj) {\r\n toDelete.push(this.hostComponent.selection[i]);\r\n }\r\n }\r\n\r\n toDelete.forEach(x => (>this.hostComponent.selection).Remove(x));\r\n }\r\n\r\n const skipped = rows['odata.skipped'] || 0;\r\n const keyRecordNumber = rows['odata.keyRecordNumber'] || 0;\r\n\r\n if (isNotEmpty(skipped) && isNotEmpty(keyRecordNumber)) {\r\n this.hostComponent.first = skipped;\r\n this.hostComponent.updatePaginator();\r\n }\r\n this.resetTable();\r\n })\r\n .catch(e => {\r\n this.rowSet = [];\r\n this.hostComponent.totalRecords = 0;\r\n this.hostComponent.selection = null;\r\n this.resetTable();\r\n });\r\n } else {\r\n this.onLoad(this.rowSet);\r\n this.resetTable();\r\n }\r\n } else {\r\n this.isLoading = false;\r\n this.loading.emit(false);\r\n }\r\n// });\r\n\r\n }\r\n\r\n private resetTable() {\r\n this.changeDetector.reattach();\r\n setTimeout(() => {\r\n this.isLoading = false;\r\n this.loading.emit(false);\r\n detectChanges(this.hostComponent.changeDetector);\r\n });\r\n }\r\n\r\n private bindFn(fnName: string): Function {\r\n let res = null;\r\n if (this.dataSource) {\r\n if (this.dataSource.controller && typeof this.dataSource.controller[fnName] === 'function') {\r\n res = this.dataSource.controller[fnName];\r\n } else if (typeof this.dataSource[fnName] === 'function') {\r\n res = this.dataSource[fnName];\r\n }\r\n if (res && this.dataSource.controller && !res.name)\r\n res = res.bind(this.dataSource.controller);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Вызов методов из контроллера или IUssDataTableSettings в контексте контроллера, установленного в параметре controller.\r\n * @param fnName имя метода\r\n */\r\n private executeFn(fnName: string, ...args): any {\r\n let res = undefined;\r\n let fn = undefined;\r\n let owner = undefined;\r\n\r\n let objectListFn = undefined;\r\n let objectList = undefined;\r\n if (this.dataSource) {\r\n if (this.dataSource.controller) {\r\n if (this.dataSource.controller['objectList'] && typeof this.dataSource.controller['objectList'][fnName] === 'function') {\r\n // это метод object-list\r\n objectListFn = this.dataSource.controller['objectList'][fnName];\r\n objectList = this.dataSource.controller['objectList'];\r\n }\r\n\r\n if (typeof this.dataSource.controller[fnName] === 'function') {\r\n // это метод list-panel\r\n fn = this.dataSource.controller[fnName];\r\n owner = this.dataSource.controller;\r\n }\r\n }\r\n if (fn === undefined && typeof this.dataSource[fnName] === 'function') {\r\n // это кастомный метод\r\n fn = this.dataSource[fnName];\r\n owner = this.dataSource;\r\n }\r\n }\r\n if (owner === undefined) {\r\n // это метод директивы\r\n fn = this[`internal${toUpperCamelCase(fnName)}`];\r\n if (typeof fn === 'function') {\r\n owner = this;\r\n }\r\n }\r\n\r\n // в начале обязательно нужно вызвать метод object-list, если object-list присутствует\r\n if (objectList !== undefined && typeof objectListFn === 'function') {\r\n if (!objectListFn.name)\r\n objectListFn = objectListFn.bind(objectList);\r\n res = (objectListFn)(...args);\r\n }\r\n\r\n // потом вызываем метод не object-list'а\r\n if (owner !== objectList && owner !== undefined && typeof fn === 'function') {\r\n if (!fn.name)\r\n fn = fn.bind(owner);\r\n if (res instanceof Promise) {\r\n res = res.then(() => (fn)(...args));\r\n } else {\r\n res = (fn)(...args);\r\n }\r\n }\r\n return res;\r\n }\r\n /**\r\n * Получение значения свойства из контроллера или IUssDataTableSettings, установленного в параметре controller.\r\n * @param propName имя свойства\r\n */\r\n private getProp(propName: string): any {\r\n let res = null;\r\n if (this.dataSource) {\r\n if (this.dataSource.controller) {\r\n if (propName in this.dataSource.controller) {\r\n res = this.dataSource.controller[propName];\r\n } else if (this.dataSource.controller['objectList'] && propName in this.dataSource.controller['objectList']) {\r\n res = this.dataSource.controller['objectList'][propName];\r\n }\r\n } else {\r\n res = this.dataSource[propName];\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n static clearItemCellCache(item: any, valueCache: boolean = false, textCache: boolean = true): void {\r\n if (item) {\r\n for (let prop in item) {\r\n if (item.hasOwnProperty(prop)) {\r\n if (textCache && (prop.startsWith('__formattedText') || prop.startsWith('__formattedTitle'))) {\r\n delete item[prop];\r\n }\r\n if (valueCache && prop.startsWith('__formattedValue')) {\r\n delete item[prop];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public clearCellCache(valueCache: boolean = false, textCache: boolean = true): void {\r\n if (isArray(this.hostComponent.value)) {\r\n for (let item of this.hostComponent.value) {\r\n UssDataSourcePDataTableDirective.clearItemCellCache(item, valueCache, textCache);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Подготавливает стандартную колонку к списку отображаемых колонок.\r\n * Если возвращает null - колонка не будет добавлена.\r\n */\r\n private prepareStandardColumn(c: Column): UssDataTableColumn {\r\n let ussColumn = c;\r\n ussColumn.settings = ussColumn.settings || { name: c.field };\r\n if (!this.onPrepareColumn(ussColumn)) {\r\n ussColumn = null;\r\n } else {\r\n ussColumn.template = this.makeTemplate(ussColumn.settings.template || ussColumn.template);\r\n ussColumn.headerTemplate = this.makeTemplate(ussColumn.settings.headerTemplate || ussColumn.headerTemplate);\r\n ussColumn.bodyTemplate = this.makeTemplate(ussColumn.settings.bodyTemplate || ussColumn.bodyTemplate);\r\n ussColumn.footerTemplate = this.makeTemplate(ussColumn.settings.footerTemplate || ussColumn.footerTemplate);\r\n this.showColumnFilters && ussColumn.filter && (ussColumn.filterTemplate = this.makeTemplate(ussColumn.settings.filterTemplate || ussColumn.filterTemplate || 'standardFilter'));\r\n ussColumn.editorTemplate = this.makeTemplate(ussColumn.settings.editorTemplate || ussColumn.editorTemplate);\r\n }\r\n return ussColumn;\r\n }\r\n\r\n /**\r\n * Выполняет дополнительные настройки над добавляемой колонкой.\r\n * Если возвращает false - колонка не будет добавлена.\r\n */\r\n private onPrepareColumn(c: UssDataTableColumn): boolean {\r\n return this.prepareColumn(c) !== false;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Добавляет кастомные колонки списку отображаемых колонок.\r\n */\r\n private onAddCustomColumns(columns: UssDataTableColumn[]): void {\r\n //const self = this;\r\n const customColumns: UssDataTableColumn[] = [];\r\n this.addCustomColumns((name: string, defaultInvisible?: boolean) => {\r\n let replaceColumn = true;\r\n if (name.StartsWith('+')) {\r\n replaceColumn = false;\r\n name = name.substring(1);\r\n }\r\n const existingColumn = columns.firstOrDefault(c => c.settings.name === name);\r\n let c: UssDataTableColumn;\r\n if (existingColumn && replaceColumn) {\r\n c = existingColumn;\r\n c.defaultInvisible = ifEmpty(defaultInvisible, c.defaultInvisible);\r\n } else {\r\n if (existingColumn) columns.Remove(existingColumn);\r\n c = this.createColumn(defaultInvisible);\r\n c.sortable = false;\r\n c.filter = false;\r\n c.filterTemplate = undefined;\r\n c.settings = { name: name, position: columns.length + customColumns.length + 1 };\r\n c.header = name;\r\n c.headerTemplate = this.templatesComponent.simpleHead;\r\n c.bodyTemplate = this.templatesComponent.textBody;\r\n customColumns.push(c);\r\n }\r\n return c;\r\n });\r\n customColumns\r\n .select(c => this.prepareStandardColumn(c))\r\n .where(c => c != null)\r\n .forEach(c => columns.push(c));\r\n }\r\n\r\n /**\r\n * Сортирует колонки в зависимости от текущих настроек.\r\n */\r\n private sortColums(columns: UssDataTableColumn[]): UssDataTableColumn[] {\r\n // умножим все позиции на 100 - чтобы можно было их перетасовывать\r\n // обработаем колонки с признаком first\r\n columns.where(c => { c.settings.position = c.settings.position * 100; return c.settings.first; }).select((c, index) => {\r\n c.settings.position = -99999999 - index;\r\n }).toArray();\r\n // обработаем колонки с признаком last\r\n columns.where(c => c.settings.last).select((c, index) => {\r\n c.settings.position = 99999999 + index;\r\n }).toArray();\r\n // обработаем колонки с признаком before\r\n columns.where(c => !!c.settings.before).select(c => {\r\n // найдём колонку с таким name\r\n const nextCol = columns.firstOrDefault(x => x.settings.name === c.settings.before);\r\n if (nextCol) {\r\n c.settings.position = nextCol.settings.position - 50;\r\n }\r\n }).toArray();\r\n // обработаем колонки с признаком after\r\n columns.where(c => !!c.settings.after).select(c => {\r\n // найдём колонку с таким name\r\n const priorCol = columns.firstOrDefault(x => x.settings.name === c.settings.after);\r\n if (priorCol) {\r\n c.settings.position = priorCol.settings.position + 25;\r\n }\r\n }).toArray();\r\n\r\n columns = columns.orderBy(c => c.settings.position).toArray();\r\n return columns;\r\n }\r\n\r\n /**\r\n * Экспандит запрос навигационными полями, связанными с колонками, отображаемыми в списке\r\n */\r\n private expandRefsColumns(odata: OData, columns: UssDataTableColumn[]) {\r\n const objectsProps = (columns || [])\r\n .where(c => c.visible && isNotEmpty(c.PropertyMetadata) && isNotEmpty(c.PropertyMetadata.ObjectRefMetadata))\r\n .select(c => c.PropertyMetadata.Name).toArray();\r\n odata.$expand(true, ...objectsProps);\r\n }\r\n\r\n\r\n /**\r\n * Метаинформация о классе, данные которого отображаются в таблице.\r\n * Если не указана явно - берётся из переданного сервиса.\r\n * Используется свойство properties, для настройки колонок по умолчанию и определения типов полей при фильтраци.\r\n */\r\n @SettingsProp() metadata: App.EntityMetadata;\r\n\r\n /**\r\n * Компонент редактирования объекта.\r\n */\r\n @SettingsProp() editComponent: ng.Type;\r\n /**\r\n * Список свойств объекта для глобального фильтра.\r\n * Можно использовать * для указания типа фильтрации (по началу / вхождению / по концу)\r\n * Если не указано - будут использоваться поля и KeysAttrs и DisplayExpr\r\n */\r\n @SettingsProp() globalFilterProps: string;\r\n\r\n /**\r\n * Тип поиска по глобальному фильтру.\r\n * По умолчанию ищется одно из введенных значений, разделённых пробелом.\r\n * Если globalFilterStrict == true - будет искаться полностью введённое значение с учётом пробелов.\r\n */\r\n @SettingsProp() globalFilterStrict: boolean;\r\n\r\n\r\n /**\r\n * Вызывается перед выполнением запроса. Здесь можно добавить дополнительные условия отбора.\r\n * Возвращает список выражений, которые будут переданы в метод $scope.$watch() для отслеживания необходимости обновления запроса.\r\n * @param odata OData-параметры запроса\r\n * @param dataTable ссылка на компонент таблицы\r\n * @param firstTime true, если вызывается самый первый раз\r\n */\r\n @SettingsFn() prepareQuery(odata: OData, firstTime: boolean) { }\r\n\r\n /**\r\n * Вызывается при изменении источника данных.\r\n * @param items текущий источник данных\r\n * @returns {} если возвращает массив - он будет использован в качестве источника данных таблицы. Иначе источником данных будет items.\r\n */\r\n @SettingsFn() onLoad(items: IEntityObjectId[]): IEntityObjectId[] | void { return null; }\r\n\r\n\r\n /**\r\n * Вызывается перед редактированием элемента. Здесь можно проинициализировать объект дополнительными значениями \r\n * или даже полностью перекрыть редактирование по умолчанию.\r\n * Если возвращает промис - стандартный метод редактирования не будет вызван.\r\n * @param entity элемент для редактироания\r\n * @param dataTable ссылка на компонент таблицы\r\n * @returns {} если возвращает промис - стандартный метод редактирования не будет вызван.\r\n */\r\n @SettingsFn() prepareEdit(entity: IEntityObjectId, dataTable: DataTable): Promise | void { return null; }\r\n\r\n /**\r\n * Вызывается после редактирования элемента.\r\n * @param entity элемент для редактироания\r\n * @param dataTable ссылка на компонент таблицы\r\n */\r\n @SettingsFn() afterEdit(entities: IEntityObjectId[], dataTable: DataTable): void { return null; }\r\n\r\n /**\r\n * Добавляет кастомные колонки к общему списку колонок.\r\n */\r\n @SettingsFn() addCustomColumns(add: (name: string, defaultInvisible?: boolean) => UssDataTableColumn): void {}\r\n\r\n /**\r\n * Дополнительно настраивает параметры колонки перед добавлением к списку.\r\n * Если возвращает false - колонка не будет добавлена.\r\n * @param column исходная колонка.\r\n * @returns {} Если возвращает false - колонка не будет добавлена.\r\n */\r\n @SettingsFn() prepareColumn(column: UssDataTableColumn): boolean | void { return null; };\r\n\r\n @SettingsFn() restoreSettings(settings?: UssDataTableStoreSettings): Promise { return null; };\r\n\r\n @SettingsFn() saveSettings(settings?: UssDataTableStoreSettings) { }\r\n\r\n\r\n async internalRestoreSettings(settings?: UssDataTableStoreSettings): Promise {\r\n settings = settings || {};\r\n if (settings.$skipSaveRestoreSettings) {\r\n settings.$skipSaveRestoreSettings = false;\r\n } else {\r\n settings.storeSection = settings.storeSection || this.storeSection;\r\n settings.columns = settings.columns || this.columns;\r\n if (settings.storeSection) {\r\n const storedSettings = await UssSettingsService.getAsync('objectList', { section: settings.storeSection });\r\n for (let col of settings.columns) {\r\n col.visible = !col.defaultInvisible;\r\n if (storedSettings) {\r\n const cs = storedSettings.cols.firstOrDefault(c => col.settings && c.name === col.settings.name);\r\n if (cs) {\r\n col.settings.position = cs.position;\r\n col.visible = !ifEmpty(cs.hidden, col.defaultInvisible);\r\n }\r\n }\r\n }\r\n if (storedSettings) {\r\n settings.columns = settings.columns.orderBy(c => c.settings ? c.settings.position : -1).toArray();\r\n settings.userData = storedSettings.userData;\r\n this.hostComponent.sortField = storedSettings.sortField;\r\n this.hostComponent.sortOrder = ifEmpty(storedSettings.sortOrder, 1);\r\n if (isNaN(this.hostComponent.sortOrder)) {\r\n this.hostComponent.sortOrder = 1;\r\n }\r\n // не будем восстанавливать pageSize, если pageSize > 20\r\n if (storedSettings.pageSize && !isNaN(storedSettings.pageSize)) {\r\n if (storedSettings.pageSize > 20) storedSettings.pageSize = 20;\r\n this.hostComponent.rows = storedSettings.pageSize;\r\n }\r\n }\r\n }\r\n }\r\n return settings;\r\n }\r\n\r\n async internalSaveSettings(settings?: UssDataTableStoreSettings): Promise {\r\n settings = settings || {};\r\n if (settings.$skipSaveRestoreSettings) {\r\n settings.$skipSaveRestoreSettings = false;\r\n } else {\r\n settings.storeSection = settings.storeSection || this.storeSection;\r\n settings.columns = settings.columns || this.columns;\r\n if (settings.storeSection) {\r\n const cols = settings.columns\r\n .where(c => c.settings && !!c.settings.name && c.hidden !== true)\r\n .select((c, i) => ({\r\n name: c.settings.name,\r\n position: i,\r\n hidden: !c.visible\r\n })).toArray();\r\n const storedSettings = {\r\n cols,\r\n sortField: this.hostComponent.sortField,\r\n sortOrder: this.hostComponent.sortOrder,\r\n pageSize: this.hostComponent.rows\r\n };\r\n storedSettings.userData = settings.userData;\r\n\r\n /*\r\n console.log(`SAVE DB [${settings.storeSection}]`, storedSettings);\r\n storedSettings.cols && console.table(storedSettings.cols);\r\n */\r\n\r\n await UssSettingsService.set('objectList', storedSettings, { section: settings.storeSection });\r\n }\r\n }\r\n return settings;\r\n }\r\n}\r\n\r\ndeclare type TColSettings = {\r\n name: string;\r\n position: number;\r\n hidden?: boolean;\r\n //sortOrder?: number;\r\n //caption?: string;\r\n //width?: number;\r\n}\r\n\r\ndeclare type TColsSettings = {\r\n cols: TColSettings[];\r\n sortField: string;\r\n sortOrder: number;\r\n pageSize?: number;\r\n userData?: any;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.p-dataTable.directive.ts","import * as ng from '@angular/core';\r\nimport { dialog, getPathValue, setPathValue, isNotEmpty, debug, translate, ifEmpty, clone, toJson } from '@core.module';\r\nimport { UssMetadataService, IEntityMetadata, ussExpression, entityEditDialogs, IEntityObjectId } from '@metadata.module';\r\nimport { UssFormGroup } from '../../common/UssFormGroup';\r\nimport { UssDialog } from './UssDialog';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssButtonComponent } from '../../button/button.component';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nexport interface IEditorParams {\r\n model?: any;\r\n isReadOnly?: boolean;\r\n}\r\n\r\nexport interface IModalEditor extends IEditorParams {\r\n modal?: any;\r\n}\r\n\r\n@ng.Injectable()\r\nexport abstract class EditorModal extends UssDialog implements IEditorParams, ng.OnInit, ng.AfterViewInit, ng.OnDestroy {\r\n\r\n public isReadOnly: boolean/* = false*/;\r\n\r\n protected oldModel: TModel;\r\n protected _model: TModel;\r\n\r\n constructor(vcr: ng.ViewContainerRef, @ng.Optional() skipCheckingNgEvents?: boolean) {\r\n super(vcr, skipCheckingNgEvents);\r\n for (let name in entityEditDialogs) {\r\n if (entityEditDialogs.hasOwnProperty(name)) {\r\n if (entityEditDialogs[name] === this.constructor) {\r\n this.metadata = UssMetadataService.getEntityInfo(name);\r\n break;\r\n }\r\n }\r\n }\r\n this.saving.subscribe(x => this.modal.isSaving = x);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.disableClose(false);\r\n super.ngOnDestroy();\r\n }\r\n\r\n setFormValue(item: object, propPath: string, value: any) {\r\n const priorValue = getPathValue(item, propPath);\r\n if (priorValue !== value) {\r\n setPathValue(item, propPath, value);\r\n priorValue !== undefined && this.markDirty();\r\n }\r\n }\r\n\r\n public isPropVisible(propName: string): boolean {\r\n return this.metadata?.Properties?.any(pi => pi.Name === propName);\r\n }\r\n\r\n private isCloseDisabled: boolean = false;\r\n protected disableClose(disable: boolean) {\r\n if (disable && !this.isCloseDisabled) {\r\n this.isCloseDisabled = true;\r\n window['$disableClose'] = ifEmpty(window['$disableClose'], 0);\r\n window['$disableClose'] = +window['$disableClose'] + 1;\r\n }\r\n else if (!disable && this.isCloseDisabled) {\r\n this.isCloseDisabled = false;\r\n window['$disableClose'] = ifEmpty(window['$disableClose'], 0);\r\n window['$disableClose'] && (window['$disableClose'] = (+window['$disableClose']-1));\r\n }\r\n }\r\n\r\n public get canApply() {\r\n const res = this.canSave && this.isDirty && !this.isReadOnly;\r\n this.disableClose(res);\r\n return res;\r\n }\r\n\r\n public get canSave(): boolean {\r\n return /*this.afterInit && */!this.isSaving && (!this.hasForm || this.form.valid);\r\n }\r\n\r\n get $userData(): { [name: string]: any } { return (this.model).$userData; }\r\n\r\n protected getModel(): TModel { return this._model; }\r\n\r\n public get model(): TModel { return this.getModel(); }\r\n\r\n\r\n protected setModel(val: TModel) {\r\n if (this.oldModel === val || this._model === val) return;\r\n if (!this._model) {\r\n this.oldModel = val;\r\n this._model = clone(val);\r\n if (this._model && this._model['$readonly']) {\r\n this.isReadOnly = true;\r\n }\r\n } else {\r\n this.oldModel = val;\r\n Object.assign(this._model, val);\r\n }\r\n this.prepareEdit(this._model);\r\n }\r\n\r\n public set model(val: TModel) { this.setModel(val); }\r\n\r\n public updateHeader(header: string, noTranslate: boolean): string {\r\n header = header || '';\r\n if (!noTranslate) {\r\n header = translate.instant(header || '');\r\n } \r\n if (this.isReadOnly) {\r\n header = `${header} (${translate.instant('@DIALOG.READ_ONLY|только просмотр')})`;\r\n }\r\n else if (this.isNew) {\r\n header = `[+] ${header}`;\r\n }\r\n else if (this.isDirty) {\r\n //header = `${header} *`;\r\n header = `[*] ${header}`;\r\n }\r\n return header.trim();\r\n }\r\n\r\n private _descr: string;\r\n private _oldHeader: string;\r\n\r\n public get header() {\r\n let res = this._descr;\r\n if (this.metadata) {\r\n this._descr = this._descr == undefined ? translate.instant(this.metadata.Description) : this._descr;\r\n res = ussExpression(this.model, this.metadata);\r\n if (this._descr) {\r\n if (res) {\r\n res = translate.instant(res);\r\n res = `${res} - ${this._descr}`;\r\n } else {\r\n res = this._descr;\r\n }\r\n }\r\n res = this.updateHeader(res, true);\r\n if (this._oldHeader !== res)\r\n {\r\n this._oldHeader = res;\r\n this.detectChanges();\r\n }\r\n }\r\n return res;\r\n }\r\n public set header(value: string) {\r\n this._descr = translate.instant(value);\r\n }\r\n\r\n public saving = new ng.EventEmitter();\r\n\r\n protected entityName: string;\r\n\r\n public get isSaving(): boolean {\r\n return this.modal.isSaving;\r\n }\r\n\r\n public get isNew(): boolean {\r\n return this.model && !this.model['Id'];\r\n }\r\n\r\n protected _metadata: IEntityMetadata;\r\n\r\n public get metadata(): IEntityMetadata {\r\n return this._metadata || (this._form && this._form.metadata);\r\n }\r\n public set metadata(value: IEntityMetadata) {\r\n const oldMetadata = this.metadata;\r\n if (oldMetadata !== value) {\r\n this._metadata = value;\r\n if (this.hasForm && this._form.metadata === oldMetadata) {\r\n this._form = null;\r\n }\r\n }\r\n }\r\n\r\n private _form: UssFormGroup;\r\n public get form(): UssFormGroup {\r\n if (this._form === undefined) {\r\n const formElement = this.nativeElement.querySelector('form');\r\n if (formElement && formElement['_ussDataSource'] && formElement['_ussDataSource'].form instanceof FormGroup) {\r\n this._form = formElement['_ussDataSource'].form;\r\n } \r\n if (!this._form) {\r\n this._form = this.metadata ? UssFormGroup.create(this.metadata).setDatasource(this.model) : null;\r\n }\r\n if (this._form) {\r\n this._form['$editorModal'] = this;\r\n this._form.submit = () => {\r\n this.save();\r\n };\r\n }\r\n }\r\n return this._form;\r\n }\r\n\r\n public get hasForm(): boolean {\r\n return isNotEmpty(this._form);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.metadata = this.metadata || UssMetadataService.getEntityInfo(this.entityName);\r\n }\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n setTimeout(() => {\r\n if (this.modal && (this.modal as any).header === undefined) {\r\n (this.modal as any).header = this.header;\r\n }\r\n if (this.form) {\r\n this.form.valueChanges.subscribe(f => {\r\n this.debounce(() => {\r\n this.onFormChanged(f);\r\n (this.modal as any).header = this.header;\r\n }, 0, 'onFormChanged');\r\n });\r\n }\r\n if (this.isNew && this.model['$sourceId']) {\r\n // если создано по копии - разрешить кнопку apply\r\n this.markDirty();\r\n } else {\r\n // если создано не по копии - ставим признак, чтобы можно было закрыть по крестику без подтверждения\r\n this.markPristine();\r\n }\r\n this.saving.subscribe(() => this.updateForm());\r\n });\r\n }\r\n\r\n updateForm() {\r\n if (this.hasForm && this.form.valueChanges instanceof ng.EventEmitter) {\r\n (this.form.valueChanges as ng.EventEmitter).emit(this.form.value);\r\n }\r\n }\r\n\r\n\r\n get isDirty(): boolean {\r\n const res = !this.isReadOnly && this.hasForm && (this.form['_dirty'] || this.form.dirty);\r\n res && this.hasForm && (this.form['_dirty'] = true);\r\n return res;\r\n }\r\n\r\n markPristine() {\r\n if (this.hasForm) {\r\n this.form['_dirty'] = false;\r\n this.form.markAsPristine();\r\n this.form.markAsUntouched();\r\n }\r\n if (this.modal) {\r\n (this.modal as any).header = this.header;\r\n }\r\n }\r\n\r\n markDirty() {\r\n if (this.hasForm) {\r\n this.form['_dirty'] = true;\r\n this.form.markAsDirty();\r\n this.form.markAsTouched();\r\n }\r\n if (this.modal) {\r\n (this.modal as any).header = this.header;\r\n }\r\n }\r\n\r\n protected onFormChanged(f) {\r\n \r\n }\r\n\r\n /**\r\n /* Подготовка сохранения объекта.\r\n * Вызывается перед самим сохранением.\r\n * Если возвращает true - это означает, что стандартный метод сохранения вызывать не нужно.\r\n * @param model\r\n */\r\n public prepareSave(model?: TModel): boolean | Promise | void {\r\n return false;\r\n }\r\n\r\n public prepareEdit(model?: TModel) {\r\n \r\n }\r\n\r\n public afterSave(model: TModel, noClose?: boolean): Promise {\r\n let res = Promise.resolve(null);\r\n if (this.metadata) {\r\n const md = this.metadata.Properties\r\n .where(x => !!x.ObjectRefMetadata && x.ObjectRefMetadata.ObjectPropertyName !== 'CreatedBy' && x.ObjectRefMetadata.ObjectPropertyName !== \"ModifiedBy\")\r\n .select(x => x.ObjectRefMetadata)\r\n .distinct(e => e.KeyPropertyName);\r\n \r\n const services = md.select(x => {\r\n const srv = UssMetadataService.getEntityInfo(x.Name).service();\r\n return model[x.KeyPropertyName] ? srv.load(model[x.KeyPropertyName]).then(z => model[x.ObjectPropertyName] = z) : null;\r\n }).toArray();\r\n res = Promise.all(services);\r\n }\r\n return res;\r\n }\r\n\r\n public async save(noClose?: boolean, skipSaving?: boolean): Promise {\r\n let res: TModel = null;\r\n if (/*this.metadata && */(!this.hasForm || this.form && this.form.valid) && !this.isSaving) {\r\n if (this.isReadOnly) {\r\n dialog.warning('@DIALOG.CANNOT_SAVE_READ_ONLY|Вы можете только просматривать данные.');\r\n return this.model;\r\n }\r\n this.saving.emit(true);\r\n try {\r\n let entity = this.model;\r\n if (entity) {\r\n let r = this.prepareSave(entity);\r\n if (r instanceof Promise) {\r\n r = await r;\r\n }\r\n\r\n if (typeof this.metadata?.service === 'function' && !r && !skipSaving) {\r\n entity = await this.metadata.service().save(entity);\r\n }\r\n res = entity;\r\n // если объект успешно сохранён - получим его актуальные данные с сервера\r\n // и обновим ими исходную модель\r\n if (typeof this.metadata?.service === 'function' && !skipSaving) {\r\n await this.metadata.service().refresh(this.oldModel, entity);\r\n }\r\n await this.afterSave(entity, noClose);\r\n }\r\n if (!noClose) {\r\n await this.close(entity);\r\n }\r\n this.markPristine();\r\n }\r\n finally {\r\n this.saving.emit(false);\r\n }\r\n } else {\r\n this.noSaveReason();\r\n }\r\n\r\n return res;\r\n }\r\n\r\n noSaveReason() {\r\n if (!this.metadata) debug('Saving is cancelled: No metadata.');\r\n else if (this.isSaving) debug('Saving is cancelled: Saving in progress.');\r\n else if (this.hasForm && !this.form.valid) {\r\n debug('Saving is cancelled: Form is not valid: ' + toJson(this.form.errors || {}));\r\n const controls = this.form.controls;\r\n for (let name in controls) {\r\n if (controls.hasOwnProperty(name)) {\r\n const val = controls[name];\r\n if (val.invalid) {\r\n debug(` ${name}: ${toJson(val.errors || {})}`);\r\n }\r\n }\r\n }\r\n if (this.isDevelopment) {\r\n console.log(this.form);\r\n }\r\n }\r\n }\r\n\r\n public cancel() {\r\n if (this.isDevelopment) {\r\n this.noSaveReason();\r\n }\r\n this.close(false);\r\n }\r\n\r\n\r\n /**\r\n * Возвращает список имён контролов не прошедших валидацию.\r\n */\r\n protected get notValidFields(): any[] {\r\n let params: any[] = [];\r\n \r\n Object.keys(this.form.controls).forEach(item => {\r\n if (!this.form.controls[item].valid) {\r\n params.push(item);\r\n }\r\n });\r\n\r\n return params;\r\n }\r\n\r\n public async checkAndSave(onEditAction?: () => Promise, confirmationBeforeSave?: string, error?: string, saveModified?: boolean): Promise {\r\n let res = false;\r\n if (this.isNew || saveModified && this.isDirty\r\n ? await dialog.ask(confirmationBeforeSave || '@DIALOG.SAVE_TO_CONTINUE|Для выполнения действия необходимо сохранить данные. Продолжить?')\r\n : true) {\r\n if (!this.hasForm || this.form.valid) {\r\n res = true;\r\n if (this.isDirty) {\r\n await this.save(true);\r\n }\r\n if (typeof onEditAction === 'function') {\r\n const r = await onEditAction();\r\n if (typeof r === 'boolean') {\r\n res = r;\r\n }\r\n }\r\n } else {\r\n const notValidFields = this.notValidFields;\r\n error = translate.instant(error || '@DIALOG.CANT_SAVE_NO_VALIDATION|Не заполнены необходимые поля: {{fields}}', { fields: notValidFields.join(', ') });\r\n await dialog.warning(error);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public actionButtons: { ok?: UssButtonComponent, apply?: UssButtonComponent, cancel?: UssButtonComponent } = {};\r\n\r\n /**\r\n * Закрывает диалог и возвращает результат.\r\n */\r\n public async close(closeResult?: TModel | boolean) {\r\n if ((closeResult === false || closeResult === undefined) && this.isDirty && this.hasForm && this.form.controls) {\r\n\r\n if (this.isDevelopment) {\r\n console.log('Form is dirty', this.form);\r\n const controls = this.form.controls;\r\n for (let name in controls) {\r\n if (controls.hasOwnProperty(name)) {\r\n const ctrl = controls[name];\r\n if (ctrl.errors && Object.keys(ctrl.errors).length > 0) {\r\n console.log(`ERROR: ${name}: `, ctrl.errors);\r\n }\r\n else if (ctrl.dirty) {\r\n console.log(` ${name}: `, ctrl.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const res = await dialog.ask('@DIALOG.CLOSE_NO_SAVE|Сохранить сделанные изменения?', true);\r\n if (res !== false) {\r\n if (res) await this.save();\r\n return;\r\n }\r\n }\r\n super.close(closeResult);\r\n }\r\n\r\n}\r\n\r\n@ng.Component({\r\n selector: 'uss-modal>modal-actions>ok-cancel,[uss-modal]>modal-actions>ok-cancel',\r\n template: `\r\n
\r\n{{okCaption|translate}}\r\n{{cancelCaption|translate}}\r\n`\r\n})\r\n@SystemComponent()\r\nexport class UssOkCancelComponent implements ng.AfterViewInit {\r\n\r\n public parent: EditorModal;\r\n\r\n @ng.Input('canSave') canSave: boolean = true;\r\n @ng.Input('okCaption') okCaption: string;\r\n @ng.Input('cancelCaption') cancelCaption: string;\r\n\r\n @ng.ViewChild('btnOk') btnOk: UssButtonComponent;\r\n @ng.ViewChild('btnCancel') btnCancel: UssButtonComponent;\r\n\r\n constructor(injector: ng.Injector) {\r\n this.parent = (injector).view.component;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.parent && this.parent.actionButtons) {\r\n this.parent.actionButtons.ok = this.btnOk;\r\n this.parent.actionButtons.cancel = this.btnCancel;\r\n }\r\n }\r\n}\r\n\r\n@ng.Component({\r\n selector: 'uss-modal>modal-actions>apply-ok-cancel,[uss-modal]>modal-actions>apply-ok-cancel',\r\n template: `\r\n
\r\n\r\n\r\n\r\n`\r\n})\r\n@SystemComponent()\r\nexport class UssApplyOkCancelComponent extends UssOkCancelComponent {\r\n @ng.Input('canApply') canApply: boolean = true;\r\n\r\n @ng.ViewChild('btnApply') btnApply: UssButtonComponent;\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n if (this.parent && this.parent.actionButtons) {\r\n this.parent.actionButtons.apply = this.btnApply;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/common/EditorModal.ts","import * as ng from '@angular/core';\r\n\r\nimport { Subscribe, currentKeyState, OData, IODataParams, isArray, isNotEmpty, NotifyChanges, onWindowResize, translate, auth, isEmpty, toJson } from '@core.module';\r\nimport { IEntityMetadata, UssMetadataService, IEntityObjectId } from '@metadata.module';\r\nimport { UssSettingsService, StoreSettingsOptions } from '@settings.module';\r\n\r\nimport { UssDataTable, TDataSource, SEARCH_DELAY_MS } from '../data-source/data-source.p-dataTable.directive';\r\nimport { TAddObjectListAction, ObjectListActionDescriptor, IUssObjectListPanel, TObjectListPanelShowMode } from './IUssObjectListPanel';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { IUssDataTableSettings } from '../data-source/IUssDataTableSettings';\r\nimport { UssDataTableStoreSettings } from '../data-source/data-source.p-dataTable.directive';\r\nimport { UssDataTableColumn } from '../data-source/data-source.p-dataTable.directive';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssObjectTableSelectComponent } from '../dialogs/object-table-select/object-table-select.component';\r\nimport { cloneDeep } from 'lodash';\r\n\r\n@ng.Component({\r\n selector: 'uss-object-list',\r\n template: require('./object-list.component.html'),\r\n styles: [require('./object-list.component.scss')],\r\n changeDetection: ng.ChangeDetectionStrategy.OnPush,\r\n})\r\n@SystemComponent()\r\nexport class UssObjectListComponent extends UssComponent2 implements ng.OnChanges, ng.AfterViewInit, ng.OnDestroy, IUssDataTableSettings {\r\n\r\n @ng.Input('entityName') entityName: string;\r\n\r\n @ng.Input('offsetBottom') offsetBottom: number = 0;\r\n @ng.Input('parentContainer') parentContainer: any;\r\n\r\n @ng.Input('disabled') disabled: boolean;\r\n\r\n @ng.Input('tabindex') inputTabindex: number = 0;\r\n public get tabindex(): number { return this.disabled ? -1 : this.inputTabindex }\r\n public set tabindex(value: number) { this.inputTabindex = value; }\r\n\r\n /** Компонент используется в диалоге выбора объектов */\r\n @ng.Input('forSelect') forSelect: boolean;\r\n\r\n /** Значение какого поля выводить в качестве значимого. `$self` - выводит выранный объект */\r\n @ng.Input('valueFieldName') valueFieldName: string = 'Id';\r\n\r\n /** Запретить поиск данных в таблице по ключу (odata.$key) */\r\n @ng.Input('noKey') noKey: boolean;\r\n\r\n /** Если `true` - то action-кнопки будут располагаться сразу за заголовком. **/\r\n @ng.Input('compactMode') compactMode: boolean = false;\r\n @ng.Input('showCounter') showCounter: boolean = true;\r\n @ng.Input('noHeader') noHeader: boolean;\r\n @ng.Input('noTitle') noTitle: boolean;\r\n @ng.Input('noActions') noActions: boolean;\r\n @ng.Input('noGlobalFilter') noGlobalFilter: boolean;\r\n @ng.Input('noPaging') noPaging: boolean = false;\r\n @ng.Input('height') height: number = 0;\r\n\r\n @ng.Input('loadImmediatelly') loadImmediatelly: boolean = true;\r\n @ng.Input('showColumnFilters') showColumnFilters = true;\r\n\r\n @ng.Input('titleCaption') title: string;\r\n @ng.Input('entityComment') entityComment: string;\r\n\r\n @ng.Input('filter') filter: OData | IODataParams | string;\r\n\r\n @ng.Input('noDataText') noDataText = '@OBJECT_LIST.NO_DATA|Нет данных';\r\n @ng.Input('loadingText') loadingText = '@OBJECT_LIST.LOADING|Загрузка...';\r\n\r\n @ng.Input('relatedData') relatedData: any;\r\n\r\n @ng.Input('onResize') onResize: ng.EventEmitter;\r\n\r\n // ReSharper disable InconsistentNaming\r\n @ng.Input('readonly') _readOnly = false;\r\n @ng.Input('canAdd') _canAdd = true;\r\n @ng.Input('canEdit') _canEdit = true;\r\n @ng.Input('canRead') _canRead = true;\r\n @ng.Input('canDelete') _canDelete = true;\r\n @ng.Input('canExport') _canExport = true;\r\n @ng.Input('canImport') _canImport = true;\r\n @ng.Input('storeSection') _storeSection: string;\r\n private _listPanel: IUssObjectListPanel;\r\n // ReSharper restore InconsistentNaming\r\n\r\n @ng.Input('actions') toolBarActions: ObjectListActionDescriptor[];\r\n toolBarActionSections: { name: string, actions: ObjectListActionDescriptor[]}[] = [];\r\n\r\n @ng.Output('selectionChange') selectionChange = new ng.EventEmitter();\r\n \r\n @ng.Input('dataSource') dataSource: TDataSource;\r\n /**\r\n * Возвращает идентификаторы (!!!) (или значения поля, указанного в свойстве `valueFieldName`) выделенных объектов.\r\n * Для selectionMode = 'single' - это будет один элемент. Иначе - массив.\r\n */\r\n @ng.Input('selection')\r\n get selection(): any[] | any {\r\n return this._savedSelection;\r\n }\r\n set selection(val: any[] | any) {\r\n this.setSelection(val, false);\r\n }\r\n\r\n @ng.Input('panelOpened') public panelOpened: boolean = true;\r\n\r\n updateSelection() {\r\n this.selection = this.dataTable.selection;\r\n }\r\n\r\n @ng.Input('metadata') @NotifyChanges() metadata: IEntityMetadata;\r\n\r\n @ng.Input('selectionMode') selectionMode: 'single' | 'multiple';\r\n\r\n @ng.Output('onPrepareQuery') onPrepareQuery = new ng.EventEmitter<{odata: OData, firstTime: boolean}>();\r\n @ng.Output('onRefresh') onRefresh = new ng.EventEmitter();\r\n\r\n @ng.ViewChild('dataTable') dataTable: UssDataTable;\r\n @ng.ViewChild('globalFilter') globalFilter;\r\n\r\n public showMode: TObjectListPanelShowMode = 'default';\r\n\r\n public storeSection: string;\r\n\r\n /**\r\n * Список колонок списка.\r\n */\r\n get columns(): UssDataTableColumn[] { return this.dataTable ? this.dataTable.$dataSource.columns : []; }\r\n set columns(value: UssDataTableColumn[]) { this.dataTable && (this.dataTable.$dataSource.columns = value); }\r\n\r\n public isColumnVisible(columnName: string): boolean {\r\n return this.columns.any(c => !c.hidden && isNotEmpty(c.settings) && c.settings.name === columnName);\r\n }\r\n\r\n\r\n listPanelProp(propName: string, defaultValue?: T): T|undefined|null {\r\n let res = this.listPanel ? this.listPanel[propName] : undefined;\r\n if (this.listPanel) {\r\n for (let e of (this.listPanel['$listPanelExtenders'] || [])) {\r\n res = e[propName] ?? res;\r\n }\r\n }\r\n return res ?? defaultValue;\r\n }\r\n\r\n listPanelFn(fnName: string, action?: (fn: Function) => T|undefined|null, defaultResult?: T): T|undefined|null {\r\n let res;\r\n let fn = this.listPanel && typeof this.listPanel[fnName] === 'function' ? this.listPanel[fnName] : undefined;\r\n if (fn) {\r\n if (typeof action === 'function') {\r\n res = action(fn.bind(this.listPanel));\r\n }\r\n else {\r\n res = fn();\r\n }\r\n }\r\n if (this.listPanel) {\r\n for (let e of (this.listPanel['$listPanelExtenders'] || [])) {\r\n fn = typeof e[fnName] === 'function' ? e[fnName] : undefined;\r\n if (fn) {\r\n if (typeof action === 'function') {\r\n res = action(fn.bind(e)) ?? res;\r\n }\r\n else {\r\n res = fn.bind(e)() ?? res;\r\n }\r\n }\r\n }\r\n }\r\n return res ?? defaultResult; \r\n }\r\n\r\n/*\r\n get canAdd() { return this._canAdd && !this._readOnly && (!this.listPanel || this.listPanel.canAdd !== false && !this.listPanel.readOnly) }\r\n //get canCopy() { return this.canAdd && (!this._readOnly && (!this.listPanel || this.listPanel.canCopy && !this.listPanel.readOnly)) }\r\n get canCopy() { return this.canAdd && (!this.listPanel || this.listPanel.canCopy) }\r\n get canEdit() { return this._canEdit && !this._readOnly && (!this.listPanel || this.listPanel.canEdit !== false && !this.listPanel.readOnly) }\r\n get canRead() { return this._canRead && (!this.listPanel || this.listPanel.canRead !== false) }\r\n get canDelete() { return this._canDelete && !this._readOnly && (!this.listPanel || this.listPanel.canDelete !== false && !this.listPanel.readOnly) }\r\n get readOnly() { return this._readOnly && (!this.listPanel || this.listPanel.readOnly !== false) && !(this.canEdit || this.canAdd || this.canDelete) }\r\n get canExport() { return this._canExport && (!this.listPanel || this.listPanel.canExport !== false) }\r\n get canImport() { return this._canImport && !this._readOnly && (!this.listPanel || this.listPanel.canImport !== false && !this.listPanel.readOnly) }\r\n*/ \r\n get canAdd() { return this._canAdd && !this._readOnly && this.listPanelProp('canAdd', true) && !this.listPanelProp('readOnly', false) }\r\n get canCopy() { return this.canAdd && this.listPanelProp('canCopy', true) }\r\n get canEdit() { return this._canEdit && !this._readOnly && this.listPanelProp('canEdit', true) && !this.listPanelProp('readOnly', false) }\r\n get canRead() { return this._canRead && this.listPanelProp('canRead', true) }\r\n get canDelete() { return this._canDelete && !this._readOnly && this.listPanelProp('canDelete', true) && !this.listPanelProp('readOnly', false) }\r\n get readOnly() { return this._readOnly || !(this.canEdit || this.canAdd || this.canDelete) || this.listPanelProp('readOnly', false) }\r\n get canExport() { return this._canExport && this.listPanelProp('canRead', true) }\r\n get canImport() { return this._canImport && !this._readOnly && this.listPanelProp('canImport', true) && !this.listPanelProp('readOnly', false) }\r\n\r\n private panelEmpty: boolean;\r\n\r\n public loading: boolean = false;\r\n /**\r\n * Возвращает текущий массив объектов в списке. (Только те объекты, которые загружены на текущей странице).\r\n */\r\n get items(): any[] {\r\n if (this.dataTable) {\r\n return this.dataTable.value || [];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /** Возвращает идентификатор объекта (или значение поля, указанного в свойстве `valueFieldName`) */\r\n convertToValue(val: any): any {\r\n let res = val;\r\n if (isNotEmpty(val) && typeof val === 'object') {\r\n res = this.valueFieldName === '$self' ? val : val[this.valueFieldName];\r\n }\r\n return res;\r\n }\r\n\r\n /** Возвращает объект по его идентификатору (или значение поля, указанного в свойстве `valueFieldName`) */\r\n convertToObject(val: any): any {\r\n let res = val;\r\n if (isNotEmpty(val) && typeof val !== 'object') {\r\n // ищем среди загруженных данных\r\n res = this.dataTable && this.dataTable.value && this.dataTable.value.firstOrDefault(x => (this.valueFieldName === '$self' ? x : x[this.valueFieldName]) === val);\r\n if (!res) {\r\n // загружаем ?\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /** Выделяет выделенные объекты в таблице */\r\n updateDataTableSelection() {\r\n if (this.dataTable && this.dataTable.value && this.selection) {\r\n if (this.selectionMode === 'multiple') {\r\n this.dataTable.selection = this.dataTable.value.where(x => this.selection.contains(this.valueFieldName === '$self' ? x : x[this.valueFieldName])).toArray();\r\n } else {\r\n this.dataTable.selection = this.dataTable.value.firstOrDefault(x => (this.valueFieldName === '$self' ? x : x[this.valueFieldName]) === this.selection);\r\n }\r\n }\r\n }\r\n\r\n /** Следует устанавлвать, если ожидается обновление данных в таблице после которого необходимо сбросить текущее выделение */\r\n needUpdateSelection: boolean;\r\n private _savedSelection: any;\r\n\r\n /**\r\n * Устанавливает текущее выделение. В качестве значения может быть передан как объекты, так и значение идентификатора объектов.\r\n * @param val Объект/объекты или их идентификаторы (или значения поля, указанного в свойстве `valueFieldName`)\r\n * @param appendSelection признак, что выделение следует добавить к текущему\r\n */\r\n setSelection(val: any | any[], appendSelection: boolean) {\r\n if (this.selectionMode === 'single') {\r\n if (isArray(val)) val = val[0];\r\n val = this.convertToValue(val);\r\n if (toJson(this._savedSelection) === toJson(val)) return;\r\n this._savedSelection = val;\r\n } else if (this.selectionMode === 'multiple') {\r\n if (!isArray(val)) val = [val];\r\n val = val.select(x => this.convertToValue(x)).where(x => !!x).toArray();\r\n if (toJson(this._savedSelection) === toJson(val)) return;\r\n this._savedSelection = this._savedSelection || [];\r\n if (!appendSelection) {\r\n // нужно установить\r\n this._savedSelection.Clear();\r\n // иначе - нужно добавить\r\n }\r\n for (let item of val) {\r\n if (!this._savedSelection.Contains(item))\r\n this._savedSelection.push(item);\r\n }\r\n } else {\r\n this._savedSelection = val;\r\n }\r\n if (!appendSelection) {\r\n this.updateDataTableSelection();\r\n }\r\n //console.log('setSelection: selectionChange', this.selection);\r\n this.selectionChange.emit(this.selection);\r\n }\r\n\r\n @ng.ContentChild('panel') panelContainer: ng.ElementRef;\r\n @ng.Input('listPanel') \r\n public get listPanel(): IUssObjectListPanel {\r\n if (this._listPanel === undefined) {\r\n this._listPanel = (this.panelContainer\r\n ? this.panelContainer.nativeElement['__panel']\r\n : null); \r\n if (this._listPanel) {\r\n this._listPanel.objectList = this;\r\n }\r\n }\r\n return this._listPanel;\r\n }\r\n public set listPanel(value: IUssObjectListPanel) {\r\n this._listPanel = value;\r\n if (this._listPanel) {\r\n this._listPanel.objectList = this;\r\n }\r\n }\r\n\r\n\r\n /** Возвращает `true` в списке есть хотя бы один выделенный элемент */\r\n get isSelected(): boolean {\r\n return !!(this.selection && (!isArray(this.selection) || this.selection.length > 0));\r\n }\r\n\r\n /** Возвращает `true` в списке есть хотя ровно один выделенный объект */\r\n get isSingleObjectSelected(): boolean {\r\n return !!(this.selection && (!isArray(this.selection) || this.selection.length === 1));\r\n }\r\n\r\n getSelectedObjects(): any[] {\r\n return (isArray(this.selection) ? this.selection : this.selection ? [this.selection] : [])\r\n .select(x => this.convertToObject(x))\r\n .where(x => !!x)\r\n .toArray();\r\n }\r\n\r\n ngDoCheck() {\r\n if (this._initGlobalFilter && this.dataTable) {\r\n this.dataTable.globalFilter.value = this._initGlobalFilter;\r\n this._initGlobalFilter = null;\r\n }\r\n }\r\n\r\n prepareQuery(odata: OData, firstTime: boolean) {\r\n if (this.filter) {\r\n odata.appendFrom(this.filter);\r\n }\r\n this.dataTable.alwaysShowPaginator = false;\r\n this.loading = true;\r\n this.dataTable.emptyMessage = translate.instant(this.loadingText);\r\n if (currentKeyState.event?.ctrlKey) {\r\n odata.$addExtra('$update');\r\n this.dataTable?.$dataSource && (this.dataTable.$dataSource.$clearCache = true);\r\n }\r\n this.onPrepareQuery.emit({odata, firstTime});\r\n\r\n if (this.listPanel?.routeParams) {\r\n this.listPanel.routeParams['_s'] = this.dataTable.globalFilter.value;\r\n }\r\n this.markForCheck();\r\n }\r\n\r\n private _totalCount: string | number;\r\n public get totalCount() {\r\n let res = this._totalCount;\r\n/*\r\n if (res && this.entityName === \"ReestrCard\" && $appSettings['deltaReestrCard']) {\r\n res = +res + +$appSettings['deltaReestrCard'];\r\n }\r\n*/\r\n return res;\r\n };\r\n\r\n private prevHeight;\r\n public resize() {\r\n this.zone.runOutsideAngular(() => {\r\n if (this.dataTable && this.ngAfterViewCheckedCalled) {\r\n const container = this.parentContainer || (this.listPanel ? this.listPanel['parentContainer'] : null);\r\n if (container || this.height > 0) {\r\n\r\n const offset = (this.offsetBottom || (this.listPanel ? this.listPanel['offsetBottom'] as number : 0) || 0) + 1;\r\n\r\n let h = 0;\r\n\r\n const $dataTable = $(this.dataTable.el.nativeElement);\r\n const $paginator = $dataTable.find('.ui-paginator');\r\n const paginatorOffset = $paginator.outerHeight(true) || 0;\r\n\r\n if (container) {\r\n const $container = $dataTable.closest(container);\r\n const containerOffset = $container.offset();\r\n if (containerOffset) {\r\n h = $container.height() - ($dataTable.offset().top - containerOffset.top) - offset - paginatorOffset;\r\n } else {\r\n return;\r\n }\r\n\r\n\r\n } else if (this.height > 0) {\r\n h = this.height - $dataTable.offset().top - offset - paginatorOffset;\r\n }\r\n if (isNaN(h)) h = 0;\r\n \r\n if (this.prevHeight !== h) {\r\n if (this.parentComponent instanceof UssObjectTableSelectComponent && this.parentComponent.modal && this.parentComponent.modal.isFullscreen) {\r\n $(this.nativeElement).find('.ui-datatable-tablewrapper').height('auto');\r\n this.prevHeight = 0;\r\n } else {\r\n $(this.nativeElement).find('.ui-datatable-tablewrapper').height(h);\r\n this.prevHeight = h;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n \r\n\r\n onLoad(items: IEntityObjectId[]): IEntityObjectId[] | void {\r\n this.dataTable.emptyMessage = translate.instant(this.noDataText);\r\n this.dataTable.alwaysShowPaginator = isNotEmpty(items['odata.count']) && items['odata.count'] > 5;\r\n this._totalCount = parseInt(items['odata.count']) || '\\xA0';\r\n this.loading = false;\r\n return items;\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.entityName) {\r\n this.metadata = UssMetadataService.getEntityInfo(this.entityName);\r\n this.updateStoreSection();\r\n }\r\n else if (changes.metadata) {\r\n if (this.metadata) {\r\n this._listPanel = (this.metadata.listPanel || this._listPanel);\r\n this.entityName = this.metadata.Name;\r\n this.dataSource = {\r\n service: this.metadata.Name,\r\n controller: this.listPanel || this,\r\n prepareQuery: (odata, firstTime) => this.prepareQuery(odata, firstTime),\r\n onLoad: (items: IEntityObjectId[]) => this.onLoad(items)\r\n }\r\n } else {\r\n this.entityName = null;\r\n }\r\n this.updateStoreSection();\r\n }\r\n else if (changes.filter) {\r\n this.dataTable.$dataSource.refreshTable();\r\n }\r\n }\r\n\r\n @ng.ViewChild('templateStandardAction') public templateStandardAction: ng.TemplateRef;\r\n @ng.ViewChild('templateImportAction') public templateImportAction: ng.TemplateRef;\r\n\r\n private accordion: JQuery | any;\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n //this.listPanel && typeof this.listPanel.afterObjectListInit === 'function' && this.listPanel.afterObjectListInit();\r\n this.listPanelFn('afterObjectListInit');\r\n this.updateStoreSection();\r\n this.initTable();\r\n this.detectChanges();\r\n\r\n this.panelEmpty = !this.listPanel || !this.listPanel['nativeElement'] || this.listPanel['nativeElement'].children.length === 0;\r\n \r\n this.onResize && this.onResize.subscribe(() => this.resize());\r\n this.subscribe(onWindowResize, () => this.resize());\r\n\r\n this.showMode = this.listPanelProp('showMode', 'default');\r\n if (this.compactMode && !this.panelEmpty && this.showMode !== 'always' && this.showMode !== 'never'\r\n ) {\r\n this.accordion = $(this.nativeElement).find('.ui.accordion');\r\n\r\n const switchingStart = () => { };\r\n\r\n const switchingEnd = () => { this.resize() };\r\n\r\n this.accordion.accordion({\r\n duration: 150,\r\n animateChildren: false,\r\n onOpening: () => {\r\n switchingStart();\r\n },\r\n onOpen: () => {\r\n switchingEnd();\r\n },\r\n onClosing: () => {\r\n switchingStart();\r\n },\r\n onClose: () => {\r\n switchingEnd();\r\n }\r\n });\r\n }\r\n }\r\n\r\n \r\n\r\n initPanel() {\r\n if (this.listPanel) {\r\n switch (this.showMode) {\r\n case 'always':\r\n case 'never':\r\n this.panelOpened = this.showMode === 'always';\r\n break;\r\n case 'open':\r\n case 'close':\r\n if (this.panelOpened === undefined)\r\n this.panelOpened = this.showMode === 'open';\r\n break;\r\n default:\r\n if (this.panelOpened === undefined)\r\n this.panelOpened = true;\r\n break;\r\n }\r\n }\r\n this.switchPanel(this.panelOpened, true);\r\n }\r\n\r\n public async switchPanel(show?: boolean, noSave?: boolean) {\r\n if (show === undefined) {\r\n show = !this.panelOpened;\r\n }\r\n this.panelOpened = show;\r\n if (this.accordion) {\r\n if (show) {\r\n this.accordion.accordion('open', 0);\r\n } else {\r\n this.accordion.accordion('close', 0);\r\n }\r\n }\r\n !noSave && this.saveSettings();\r\n }\r\n\r\n private _initGlobalFilter: string;\r\n setGlobalSearch(value: string) {\r\n if (this.dataTable?.globalFilter) {\r\n this.dataTable.globalFilter.value = value;\r\n this.dataTable.refresh();\r\n }\r\n else {\r\n this._initGlobalFilter = value;\r\n }\r\n }\r\n\r\n clearGlobalSearch() {\r\n if (this.dataTable?.globalFilter) {\r\n this.dataTable.globalFilter.value = '';\r\n this.dataTable.refresh();\r\n }\r\n else {\r\n this._initGlobalFilter = null;\r\n }\r\n }\r\n\r\n globalKeyHandler(e: KeyboardEvent, keyDown: boolean) {\r\n if (!this.disabled) {\r\n switch (e.key) {\r\n case 'Shift':\r\n case 'Control':\r\n case 'Alt': \r\n break;\r\n case 'Enter':\r\n keyDown && !e.shiftKey && !e.ctrlKey && !e.altKey && this.dblClickAction();\r\n break;\r\n case 'ArrowUp': \r\n keyDown /*&& !e.shiftKey*/ && !e.ctrlKey && !e.altKey && this.movePosition(-1, e.shiftKey);\r\n break;\r\n case 'ArrowDown':\r\n keyDown /*&& !e.shiftKey*/ && !e.ctrlKey && !e.altKey && this.movePosition(1, e.shiftKey);\r\n break;\r\n case 'PageUp':\r\n if (keyDown && !e.shiftKey && !e.ctrlKey && !e.altKey && this.dataTable.paginator) {\r\n const page = { first: this.dataTable.first - this.dataTable.rows, rows: this.dataTable.rows };\r\n if (page.first >= 0)\r\n this.dataTable.onPageChange(page);\r\n }\r\n break;\r\n case 'PageDown':\r\n if (keyDown && !e.shiftKey && !e.ctrlKey && !e.altKey && this.dataTable.paginator) {\r\n const page = { first: this.dataTable.first + this.dataTable.rows, rows: this.dataTable.rows };\r\n if (page.first < this.dataTable.totalRecords)\r\n this.dataTable.onPageChange(page);\r\n }\r\n break;\r\n /*\r\n case 'End':\r\n if (keyDown && this.dataTable.paginator) {\r\n const page = { first: (Math.ceil(this.dataTable.totalRecords / this.dataTable.rows) - 1) * this.dataTable.rows, rows: this.dataTable.rows };\r\n this.dataTable.onPageChange(page);\r\n }\r\n break;\r\n case 'Home':\r\n if (keyDown && this.dataTable.paginator) {\r\n const page = { first: 0, rows: this.dataTable.rows };\r\n this.dataTable.onPageChange(page);\r\n }\r\n break;\r\n */\r\n default:\r\n return undefined;\r\n }\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n return false;\r\n }\r\n\r\n movePosition(delta: number, addSelection: boolean = false) {\r\n if (isArray(this.dataTable.value) && this.dataTable.value.length > 0) {\r\n let index = null;\r\n if (!this.isSelected) {\r\n if (delta > 0) index = -1;\r\n else if (delta < 0) index = this.dataTable.value.length;\r\n } else if (this.selectionMode === 'multiple') {\r\n const selection = this.dataTable.value.select((x, i) => ({ item: x, index: i }))\r\n .where(x => this.selection.contains(this.valueFieldName === '$self' ? x.item : x.item[this.valueFieldName])).select(x => x.index);\r\n index = delta > 0 ? selection.max() : selection.min();\r\n } else {\r\n index = this.dataTable.value.select((item, index) => ({item, index})).where(x => x.item[this.valueFieldName] === this.selection).select(x => x.index).firstOrDefault();\r\n }\r\n\r\n if (isNotEmpty(index)) {\r\n index += delta;\r\n if (index > this.dataTable.value.length - 1) index = this.dataTable.value.length - 1;\r\n if (index < 0) index = 0;\r\n const selItem = this.dataTable.value[index];\r\n this.setSelection(selItem, this.selectionMode === 'multiple' && addSelection);\r\n this.updateDataTableSelection();\r\n this.markForCheck();\r\n }\r\n }\r\n }\r\n\r\n private _globalKeyListener;\r\n\r\n addGlobalKeyListener() {\r\n this._globalKeyListener = this.renderer.listen(window,\r\n 'keydown',\r\n e => {\r\n if (document.activeElement === this.nativeElement.children[0]) this.globalKeyHandler(e, true);\r\n });\r\n }\r\n removeGlobalKeyListener() {\r\n if (typeof this._globalKeyListener === 'function') {\r\n this._globalKeyListener();\r\n this._globalKeyListener = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeGlobalKeyListener();\r\n super.ngOnDestroy();\r\n }\r\n\r\n private _addselection: boolean = false;\r\n\r\n initTable() {\r\n this.dataTable.emptyMessage = '';\r\n this.dataTable.alwaysShowPaginator = false;\r\n //this.dataTable.paginator = !this.noPaging;\r\n // Глобальный поиск\r\n this.dataTable.globalFilter = this.globalFilter ? this.globalFilter.nativeElement : null;\r\n this.dataTable.filterDelay = SEARCH_DELAY_MS;\r\n\r\n this.dataTable.globalFilter && this.renderer.listen(this.dataTable.globalFilter, 'keyup', e => this.globalKeyHandler(e, false));\r\n this.dataTable.globalFilter && this.renderer.listen(this.dataTable.globalFilter, 'keydown', e => this.globalKeyHandler(e, true));\r\n this.dataTable.globalFilter && this.dataTable.globalFilter.focus();\r\n this.addGlobalKeyListener();\r\n\r\n this.dataTable.ngAfterViewInit();\r\n\r\n this.dataTable.selectionChange.subscribe(s => {\r\n this.setSelection(s, this._addselection);\r\n this._addselection = false;\r\n });\r\n\r\n this.dataTable.onRowSelect.subscribe((e: { originalEvent: Event, data: any, type: string }) => {\r\n this._addselection = e.type === 'checkbox';\r\n this.dataTable.globalFilter && this.dataTable.globalFilter.focus();\r\n });\r\n\r\n this.dataTable.onRowUnselect.subscribe((e: { originalEvent: Event, data: any, type: string }) => {\r\n this._savedSelection && this._savedSelection.Remove(this.convertToValue(e.data));\r\n this._addselection = e.type === 'checkbox';\r\n this.dataTable.globalFilter && this.dataTable.globalFilter.focus();\r\n //console.log('rowUnselect: selectionChange', this.selection);\r\n this.selectionChange.emit(this.selection); \r\n });\r\n\r\n this.dataTable.valueChange.debounceTime(1).subscribe(() => {\r\n if (this.dataTable) {\r\n if (this.needUpdateSelection) {\r\n this.needUpdateSelection = false;\r\n this.selection = this.dataTable.selection;\r\n } else {\r\n this.updateDataTableSelection();\r\n //console.log('loading: selectionChange', this.selection);\r\n this.selectionChange.emit(this.selection); \r\n }\r\n } \r\n });\r\n\r\n this.dataTable.$dataSource.loading.subscribe(x => {\r\n this.loading = x;\r\n this.resize();\r\n if (!this.loading) {\r\n this.updateSelection();\r\n }\r\n //this.markForCheck();\r\n this.detectChanges(); // ! именно detectChanges() т.к. если signaR не поддерживает WebSocket - не убирается лоадер по OnDataChanged\r\n });\r\n\r\n this.dataTable.$dataSource.onDblClick.subscribe(() => this.dblClickAction());\r\n\r\n if (!this.toolBarActions) {\r\n let btns: ObjectListActionDescriptor[] = [\r\n {\r\n name: 'add',\r\n icon: 'fa-plus',\r\n caption: '@OBJECT_LIST.ACTIONS.ADD|Добавить',\r\n section: 'main',\r\n position: 0,\r\n noAutoLoading: true\r\n },\r\n {\r\n name: 'copy',\r\n icon: 'fa-copy',\r\n caption: '@OBJECT_LIST.ACTIONS.COPY|Создать копию',\r\n section: 'main',\r\n position: null,\r\n noAutoLoading: true\r\n },\r\n {\r\n name: 'edit',\r\n icon: 'fa-edit',\r\n caption: '@OBJECT_LIST.ACTIONS.EDIT|Изменить',\r\n section: 'main',\r\n position: 1,\r\n noAutoLoading: true,\r\n /*\r\n subActions: [\r\n {\r\n name: 'edit',\r\n icon: 'fa-edit',\r\n caption: '@OBJECT_LIST.ACTIONS.EDIT|Изменить',\r\n },\r\n {\r\n name: 'read',\r\n icon: 'fa-eye',\r\n iconColor: '#0a5f9e!important',\r\n caption: '@OBJECT_LIST.ACTIONS.READ|Просмотреть',\r\n }\r\n ]\r\n */\r\n },\r\n {\r\n name: 'read',\r\n icon: 'fa-eye',\r\n iconColor: '#0a5f9e',\r\n caption: '@OBJECT_LIST.ACTIONS.READ|Просмотреть',\r\n section: 'main',\r\n position: 1,\r\n noAutoLoading: true\r\n },\r\n {\r\n name: 'delete',\r\n icon: 'fa-trash',\r\n caption: '@OBJECT_LIST.ACTIONS.DELETE|Удалить',\r\n section: 'main',\r\n position: 2,\r\n noAutoLoading: true\r\n },\r\n {\r\n name: 'refresh',\r\n icon: 'fa-refresh',\r\n caption: '@OBJECT_LIST.ACTIONS.REFRESH|Обновить',\r\n section: 'main',\r\n position: 3\r\n },\r\n {\r\n name: 'settings',\r\n icon: 'fa-cog',\r\n caption: '@OBJECT_LIST.ACTIONS.SETTINGS|Параметры',\r\n section: 'additional',\r\n last: true,\r\n noAutoLoading: true\r\n }\r\n ];\r\n\r\n if (!this.forSelect && this.metadata.Exportable) {\r\n btns.push({\r\n name: 'export',\r\n icon: 'fa-upload',\r\n caption: '@OBJECT_LIST.ACTIONS.EXPORT|Экcпорт',\r\n section: 'additional',\r\n position: 0,\r\n noAutoLoading: true\r\n });\r\n }\r\n\r\n if (!this.forSelect && this.metadata.Importable) {\r\n btns.push({\r\n name: 'import',\r\n icon: 'fa-download',\r\n caption: '@OBJECT_LIST.ACTIONS.IMPORT|Импорт',\r\n section: 'additional',\r\n template: this.templateImportAction,\r\n position: 1,\r\n noAutoLoading: true\r\n });\r\n }\r\n\r\n this.toolBarActions = btns\r\n .select(a => this.prepareStandardAction(a))\r\n .where(a => a != null)\r\n .toArray();\r\n }\r\n\r\n this.doAddCustomActions(this.toolBarActions);\r\n this.toolBarActions = this.sortActions(this.toolBarActions);\r\n\r\n\r\n setTimeout(() => {\r\n this.toolBarActionSections = this.toolBarActions.groupBy(x => x.section)\r\n .orderBy(x => x.key() === 'main' ? ' ' : x.key() === 'additional' ? 'яяяяяяя' : x.key())\r\n .select(x => ({ name: x.key(), actions: x.toArray() })).toArray();\r\n if (!this.toolBarActionSections.any(s => s.name === 'additional')) {\r\n this.toolBarActionSections.push({ name: 'additional', actions: [] });\r\n }\r\n this.detectChanges();\r\n //this.resize();\r\n });\r\n this.markForCheck();\r\n }\r\n\r\n \r\n @Subscribe(App.UssEvents.OnAccessRightsChanged)\r\n async onAccessRightsChanged(e: App.OnAccessRightsChanged) {\r\n if (auth.loggedUser && (e.UserId === auth.loggedUser.Id || isEmpty(e.UserId))) {\r\n await auth.updateUserInfo();\r\n this.updateAccessRights();\r\n }\r\n }\r\n\r\n @Subscribe(App.UssEvents.OnDataChanged)\r\n OnDataChanged(e: OnDataChanged) {\r\n if (e && e.TypeId?.split('`')[0] !== this.entityName) return;\r\n this.dataTable.$dataSource.$clearCache = true;\r\n this.dataTable.refresh(undefined, undefined, undefined, 1000);\r\n }\r\n\r\n public updateStoreSection() {\r\n //this.storeSection = this.listPanel && this.listPanel.storeSection ? this.listPanel.storeSection : this._storeSection;\r\n this.storeSection = this.listPanelProp('storeSection', this._storeSection);\r\n if (this.storeSection === undefined) {\r\n this.storeSection = '{className}';\r\n }\r\n if (this.storeSection && this.metadata) {\r\n this.storeSection = this.storeSection.replace(/\\{className\\}/g, this.metadata.Name);\r\n }\r\n if (this.parentComponent) {\r\n this.storeSection = `${this.parentComponent.constructor.name}_${this.storeSection}`;\r\n }\r\n\r\n }\r\n\r\n public dblClickAction() {\r\n const selection = this.getSelectedObjects();\r\n if (!this.isActionDisabled({ name: 'edit' }, selection) && !this.isActionHidden({ name: 'edit' }, selection)) {\r\n this.doAction({ name: 'edit' });\r\n } else if (!this.isActionDisabled({ name: 'read' }, selection) && !this.isActionHidden({ name: 'read' }, selection)) {\r\n this.doAction({ name: 'read' });\r\n }\r\n }\r\n\r\n public wrapTableChangeDetector(func: Promise): Promise {\r\n this.changeDetector.detach();\r\n this.dataTable.changeDetector.detach();\r\n this.dataTable.$dataSource.changeDetector.detach();\r\n this.removeGlobalKeyListener();\r\n const focusedElement: any = document.activeElement;\r\n\r\n return func.then(r => {\r\n this.addGlobalKeyListener();\r\n this.changeDetector.reattach();\r\n this.dataTable.changeDetector.reattach();\r\n this.dataTable.$dataSource.changeDetector.reattach();\r\n return r;\r\n }).then(r => {\r\n r && this.dataTable.refresh();\r\n focusedElement ? focusedElement.focus() : ((this.nativeElement.children[0])).focus();\r\n return r;\r\n });\r\n }\r\n\r\n updateAccessRights() {\r\n/* if (this.listPanel && typeof this.listPanel.updateAccessRights === 'function') {\r\n this.listPanel.updateAccessRights();\r\n }\r\n*/\r\n this.listPanelFn('updateAccessRights');\r\n this.markForCheck();\r\n }\r\n\r\n public isActionDisabled(action: ObjectListActionDescriptor, selection?: any[]): boolean {\r\n selection = selection || this.getSelectedObjects();\r\n let enabled = !(\r\n (action?.name === 'add' && !this.canAdd) ||\r\n (action?.name === 'copy' && !this.canCopy) ||\r\n (action?.name === 'edit' && !this.canEdit) ||\r\n (action?.name === 'read' && !this.canRead) ||\r\n (action?.name === 'delete' && !this.canDelete) ||\r\n (action?.name === 'export' && !this.canExport) ||\r\n (action?.name === 'import' && !this.canImport)\r\n );\r\n\r\n enabled = enabled && !!this.dataTable; \r\n\r\n if (enabled) {\r\n\r\n switch (action.acceptSelection) {\r\n case 'empty': enabled = !this.isSelected; break;\r\n case 'selected': enabled = this.isSelected; break;\r\n case 'single': enabled = this.isSingleObjectSelected; break;\r\n case 'multi': enabled = this.isSelected && !this.isSingleObjectSelected; break;\r\n case 'non-multi': enabled = !this.isSelected || this.isSingleObjectSelected; break;\r\n }\r\n if (enabled && isNotEmpty(action.isDisabled)) {\r\n if (typeof action.isDisabled === 'function') {\r\n enabled = !action.isDisabled(selection);\r\n } else {\r\n enabled = !action.isDisabled;\r\n }\r\n }\r\n\r\n/* if (this.listPanel && typeof this.listPanel.isActionDisabled === 'function') {\r\n const r = this.listPanel.isActionDisabled(action?.name, selection);\r\n if (isNotEmpty(res)) enabled = !r;\r\n }\r\n*/\r\n const r = this.listPanelFn('isActionDisabled', fn => fn(action?.name, selection));\r\n if (isNotEmpty(r)) enabled = !r;\r\n\r\n\r\n if (enabled !== false) {\r\n switch (action?.name) {\r\n case 'copy':\r\n case 'edit':\r\n case 'read':\r\n enabled = this.isSingleObjectSelected; // копировать, редактировать и просматривать можно только один объект\r\n break;\r\n case 'delete':\r\n enabled = this.isSelected;\r\n break;\r\n }\r\n }\r\n }\r\n return enabled === false;\r\n }\r\n\r\n public isActionHidden(action: ObjectListActionDescriptor, selection?: any[]): boolean {\r\n selection = selection || this.getSelectedObjects();\r\n let hidden = (\r\n (action?.name === 'add' && !this.canAdd) ||\r\n (action?.name === 'copy' && !this.canCopy) ||\r\n (action?.name === 'edit' && !this.canEdit) ||\r\n (action?.name === 'read' && (!this.canRead || this.canEdit)) ||\r\n (action?.name === 'delete' && !this.canDelete) ||\r\n (action?.name === 'export' && !this.canExport) ||\r\n (action?.name === 'import' && !this.canImport)\r\n );\r\n\r\n if (isNotEmpty(action.isHidden)) {\r\n if (typeof action.isHidden === 'function') {\r\n hidden = action.isHidden(selection);\r\n } else {\r\n hidden = action.isHidden;\r\n }\r\n }\r\n\r\n/* if (this.listPanel && typeof this.listPanel.isActionHidden === 'function') {\r\n const r = this.listPanel.isActionHidden(action?.name, selection);\r\n if (isNotEmpty(r))\r\n hidden = !!r;\r\n }\r\n*/\r\n const r = this.listPanelFn('isActionHidden', fn => fn(action?.name, selection));\r\n if (isNotEmpty(r)) hidden = !!r;\r\n\r\n return hidden;\r\n }\r\n\r\n afterEdit(entities: IEntityObjectId[], dataTable: UssDataTable): void {\r\n this.loading = false;\r\n this.dataTable.refresh();\r\n }\r\n\r\n private onListPanelBeforeEdit(entityObject: IEntityObjectId): IEntityObjectId {\r\n if (this.listPanel) {\r\n //entityObject.$userData = this.listPanel.userData;\r\n entityObject.$userData = this.listPanelProp('userData');\r\n //this.listPanel.doBeforeEdit && (entityObject = this.listPanel.doBeforeEdit(entityObject) || entityObject);\r\n entityObject = this.listPanelFn('doBeforeEdit', fn => fn(entityObject), entityObject);\r\n } \r\n return entityObject;\r\n }\r\n\r\n public onEdit(entityObject: IEntityObjectId): Promise {\r\n if (entityObject) {\r\n entityObject = this.onListPanelBeforeEdit(entityObject);\r\n return this.wrapTableChangeDetector(this.dataTable.$dataSource.edit(entityObject));\r\n } else {\r\n return Promise.resolve(entityObject);\r\n }\r\n }\r\n\r\n public onRead(entityObject: IEntityObjectId): Promise {\r\n if (entityObject) {\r\n entityObject = this.onListPanelBeforeEdit(entityObject);\r\n return this.wrapTableChangeDetector(this.dataTable.$dataSource.read(entityObject));\r\n } else {\r\n return Promise.resolve(entityObject);\r\n }\r\n }\r\n\r\n public onAdd(): Promise {\r\n let entityObject = {};\r\n entityObject = this.onListPanelBeforeEdit(entityObject);\r\n return this.wrapTableChangeDetector(this.dataTable.$dataSource.create(entityObject));\r\n }\r\n\r\n public onCopy(entityObject: IEntityObjectId): Promise {\r\n entityObject = cloneDeep(entityObject);\r\n entityObject.$sourceId = entityObject.Id;\r\n entityObject.Id = null;\r\n if (entityObject['Name']) {\r\n entityObject['Name'] = `${entityObject['Name']} - ${translate.instant('@OBJECT_LIST.COPY_PREFIX|копия')}`;\r\n }\r\n entityObject = this.onListPanelBeforeEdit(entityObject);\r\n return this.wrapTableChangeDetector(this.dataTable.$dataSource.create(entityObject));\r\n }\r\n\r\n public refresh() {\r\n this.dataTable.$dataSource.$clearCache = true;\r\n return this.dataTable.$dataSource.refreshTable();\r\n }\r\n\r\n public async doAction(actionDescriptionOrName: ObjectListActionDescriptor | string, ...params: any[]): Promise {\r\n let result = undefined;\r\n let res = undefined;\r\n let action;\r\n if (typeof actionDescriptionOrName === 'string') {\r\n action = this.toolBarActions.firstOrDefault(x => x.name === actionDescriptionOrName);\r\n }\r\n else {\r\n action = actionDescriptionOrName;\r\n }\r\n if (action && !this.isActionDisabled(action, this.getSelectedObjects())) {\r\n/*\r\n if (this.listPanel && typeof this.listPanel.doBeforeAction === 'function') {\r\n res = this.listPanel.doBeforeAction(action.name, ...params);\r\n if (res instanceof Promise) {\r\n result = await res;\r\n } else {\r\n result = res;\r\n }\r\n }\r\n*/\r\n res = this.listPanelFn('doBeforeAction', fn => fn(action.name, ...params));\r\n if (res instanceof Promise) {\r\n result = await res;\r\n } else {\r\n result = res;\r\n }\r\n\r\n if (result !== false) {\r\n if (typeof action.handler === 'function') {\r\n res = action.handler(this.getSelectedObjects(), ...params);\r\n } else {\r\n res = this.listPanelFn('doAction', fn => fn(action.name, this.getSelectedObjects(), ...params), 'no_handler');\r\n if (res === 'no_handler') { \r\n/*\r\n if (this.listPanel && typeof this.listPanel.doAction === 'function') {\r\n res = this.listPanel.doAction(action.name, this.getSelectedObjects(), ...params);\r\n } else {\r\n*/\r\n switch (action.name) {\r\n case 'add': res = this.onAdd(); this.needUpdateSelection = true; break;\r\n case 'copy': res = this.onCopy(this.getSelectedObjects()[0]); break;\r\n case 'edit': res = this.onEdit(this.getSelectedObjects()[0]); break;\r\n case 'read': res = this.onRead(this.getSelectedObjects()[0]); break;\r\n case 'delete': res = this.dataTable.$dataSource.delete(this.getSelectedObjects()); this.needUpdateSelection = true; break;\r\n case 'refresh': res = this.refresh(); this.onRefresh.emit(); break;\r\n case 'import':\r\n {\r\n const element = (params[0]).srcElement;\r\n const file = element.files[0];\r\n element.value = null;\r\n res = this.dataTable.$dataSource.doImport(file);\r\n res.then(() => this.onRefresh.emit());\r\n break;\r\n }\r\n case 'export': res = this.dataTable.$dataSource.doExport({\r\n Name: this.translate.instant(this.metadata.Description),\r\n PageOnly: false,\r\n ForImport: false\r\n });\r\n break;\r\n case 'settings': res = this.dataTable.$dataSource.doSettings(this); break;\r\n }\r\n }\r\n }\r\n if (res instanceof Promise) {\r\n result = await res;\r\n } else {\r\n result = res;\r\n }\r\n/*\r\n if (this.listPanel && typeof this.listPanel.doAfterAction === 'function') {\r\n res = this.listPanel.doAfterAction(action.name, ...params);\r\n if (res instanceof Promise) {\r\n await res;\r\n }\r\n }\r\n*/\r\n res = this.listPanelFn('doAfterAction', fn => fn(action.name, ...params));\r\n if (res instanceof Promise) {\r\n await res;\r\n }\r\n }\r\n//!! this.selectionChange.emit(this.selection); \r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Дополнительная настройка стандартного и кастомного действия\r\n * @param action \r\n */\r\n prepareAction(action: ObjectListActionDescriptor): boolean | void {\r\n //return !this.listPanel || !this.listPanel.prepareAction || this.listPanel.prepareAction(action);\r\n return this.listPanelFn('prepareAction', fn => fn(action));\r\n }\r\n\r\n /**\r\n * Подготавливает стандартое действие к добавлению к списку отображаемых действий.\r\n * Если возвращает null - действие не будет добавлено.\r\n */\r\n private prepareStandardAction(action: ObjectListActionDescriptor): ObjectListActionDescriptor {\r\n action.title = action.title || action.caption;\r\n action.doAction = selection => this.doAction(action, selection);\r\n return this.prepareAction(action) === false ? null : action;\r\n }\r\n\r\n private _customActions:{name: string, setup: (a: ObjectListActionDescriptor) => void, parentAction?: string}[] = [];\r\n\r\n /**\r\n * Добавляет кастомное действие к списку отображаемых действий.\r\n * Следует вызывать до вызова метода doAddCustomActions (вызываемого в методе initTable).\r\n * Служит для инициализации кастомных действий напрямую с использованием objectList.\r\n */\r\n public addCustomAction(action: {name: string, setup: (a: ObjectListActionDescriptor) => void, parentAction?: string}): this {\r\n this._customActions.push(action);\r\n return this;\r\n }\r\n\r\n /**\r\n /* Вызывается в начале инициализации\r\n */\r\n addCustomActions(add: TAddObjectListAction) {\r\n if (this.canCopy) {\r\n add('add', null, 'add');\r\n add('copy', null, 'add');\r\n }\r\n for (var ca of this._customActions) {\r\n const a = add(ca.name, null, ca.parentAction);\r\n ca.setup && ca.setup(a);\r\n }\r\n //this.listPanel && this.listPanel.addCustomActions && this.listPanel.addCustomActions(add);\r\n this.listPanelFn('addCustomActions', fn => fn(add));\r\n }\r\n\r\n /**\r\n * Добавляет кастомные действия к списку отображаемых действий.\r\n */\r\n private doAddCustomActions(actions: ObjectListActionDescriptor[]): void {\r\n if (this.forSelect) return;\r\n const customActions: ObjectListActionDescriptor[] = [];\r\n this.addCustomActions((name: string, handler: (selection: any[], ...params: any[]) => Promise | any, parentAction?: string) => {\r\n let processActions = actions;\r\n if (parentAction) {\r\n const parent = actions.firstOrDefault(c => c.name === parentAction);\r\n if (parent) {\r\n parent.subActions = parent.subActions || [];\r\n processActions = parent.subActions;\r\n }\r\n }\r\n const c = processActions.firstOrDefault(c => c.name === name) || actions.firstOrDefault(c => c.name === name) || \r\n {\r\n name: name,\r\n position: processActions.length + (processActions === actions ? customActions.length : 0) + 1,\r\n doAction: selection => this.doAction(c, selection)\r\n };\r\n c.handler = c.handler || handler;\r\n //c.doAction = selection => this.doAction(c, selection);\r\n processActions.Remove(c);\r\n if (processActions === actions) {\r\n customActions.push(c);\r\n } else {\r\n processActions.Remove(c);\r\n processActions.push(this.prepareStandardAction(c));\r\n }\r\n return c;\r\n });\r\n customActions\r\n .select(c => this.prepareStandardAction(c))\r\n .where(c => c != null)\r\n .forEach(c => actions.push(c));\r\n }\r\n\r\n /**\r\n * Сортирует действия в зависимости от текущих настроек.\r\n */\r\n private sortActions(actions: ObjectListActionDescriptor[]): ObjectListActionDescriptor[] {\r\n // умножим все позиции на 100 - чтобы можно было их перетасовывать\r\n // обработаем действия с признаком first\r\n actions.where(c => c.position !== null).where(c => { c.position = c.position * 100; return c.first; }).select((c, index) => {\r\n c.position = -99999999 - index;\r\n }).toArray();\r\n // обработаем действия с признаком last\r\n actions.where(c => c.position !== null).where(c => c.last).select((c, index) => {\r\n c.position = 99999999 + index;\r\n }).toArray();\r\n // обработаем действия с признаком before\r\n actions.where(c => c.position !== null).where(c => !!c.before).select(c => {\r\n // найдём действие с таким name\r\n const nextCol = actions.firstOrDefault(x => x.name === c.before);\r\n if (nextCol) {\r\n c.position = nextCol.position - 50;\r\n }\r\n }).toArray();\r\n // обработаем действия с признаком after\r\n actions.where(c => c.position !== null).where(c => !!c.after).select(c => {\r\n // найдём действие с таким name\r\n const priorCol = actions.firstOrDefault(x => x.name === c.after);\r\n if (priorCol) {\r\n c.position = priorCol.position + 25;\r\n }\r\n }).toArray();\r\n\r\n return actions.where(c => c.position !== null).orderBy(c => c.position).toArray();\r\n }\r\n\r\n //ngAfterViewChecked() {\r\n // super.ngAfterViewChecked();\r\n // this.debounce(() => this.resize(), 1000, 'resize');\r\n //}\r\n\r\n public userData: any = {};\r\n\r\n async restoreSettings(settings?: UssDataTableStoreSettings): Promise {\r\n settings = settings || {};\r\n settings.storeSection = settings.storeSection || this.storeSection;\r\n settings.columns = settings.columns || this.columns;\r\n const r = await this.dataTable.$dataSource.internalRestoreSettings(settings);\r\n settings.$skipSaveRestoreSettings = true;\r\n r.userData = r.userData || this.userData;\r\n this.onRestoreSettings(r.userData, r);\r\n this.userData = r.userData;\r\n /*\r\n console.log(`RESTORE [${settings.storeSection}]`, settings);\r\n settings.columns && console.table(settings.columns.where(c => c.hidden !== true).select(c => ({field: c.field, header: c.header, visible: `${c.visible}`})).toArray());\r\n */\r\n return r;\r\n }\r\n\r\n async saveSettings(settings?: UssDataTableStoreSettings): Promise {\r\n settings = settings || {};\r\n settings.storeSection = settings.storeSection || this.storeSection;\r\n settings.userData = settings.userData || this.userData;\r\n settings.columns = settings.columns || this.columns;\r\n\r\n this.onSaveSettings(settings.userData, settings);\r\n this.userData = settings.userData;\r\n /*\r\n console.log(`SAVE [${settings.storeSection}]`, settings);\r\n settings.columns && console.table(settings.columns.where(c => c.hidden !== true).select(c => ({field: c.field, header: c.header, visible: `${c.visible}`})).toArray());\r\n */\r\n const r = await this.dataTable.$dataSource.internalSaveSettings(settings);\r\n settings.$skipSaveRestoreSettings = true;\r\n return r;\r\n }\r\n\r\n onRestoreSettings(userData: T, settings: UssDataTableStoreSettings) {\r\n this.panelOpened = userData['@panelOpened'];\r\n //this.listPanel && typeof this.listPanel.onRestoreSettings === 'function' && this.listPanel.onRestoreSettings(userData, settings);\r\n this.listPanelFn('onRestoreSettings', fn => fn(userData, settings));\r\n this.initPanel();\r\n }\r\n\r\n onSaveSettings(userData: T, settings: UssDataTableStoreSettings) {\r\n userData['@panelOpened'] = !!this.panelOpened;\r\n //this.listPanel && typeof this.listPanel.onSaveSettings === 'function' && this.listPanel.onSaveSettings(userData, settings);\r\n this.listPanelFn('onSaveSettings', fn => fn(userData, settings));\r\n }\r\n\r\n /**\r\n * Очищает все сохранённые параметры.\r\n */\r\n clearSettings(): Promise {\r\n return UssSettingsService.clear('objectList', { section: this.storeSection });\r\n }\r\n\r\n /**\r\n * Перезагружает сохранённые параметры.\r\n */\r\n async reloadSettings(): Promise {\r\n this.columns = [];\r\n this.userData = {};\r\n const res = await this.dataTable.$dataSource.initTable();\r\n this.markForCheck();\r\n return res;\r\n }\r\n\r\n public onObjectListFocus() {\r\n // передать фокус в фильтр первой текстовой колонки\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/object-list/object-list.component.ts","import { Type, ViewContainerRef } from '@angular/core';\r\nimport { appComponents } from '@core.module';\r\nimport { UssDialogsService } from '@dialogs.module';\r\nimport { UssObjectListComponent } from '../components/object-list/object-list.component';\r\nimport { IUssObjectListPanel } from '../components/object-list/IUssObjectListPanel';\r\n\r\n/**\r\n * Список помеченных данным декоратором компонентов добавляется в словарь objectListPanels.\r\n * Эти компоненты автоматически появятся на стандартной форме отображения списка бизнес-объектов.\r\n * Также данные компоненты автоматически попадают в список appComponents, так что их не нужно дополнительно регистрировать\r\n * при помощи декоратора @AppComponent() или в модуле приложения.\r\n * --------------------------------------------------------------\r\n * Можно также зарегистрировать класс как extender (расширитель функционала стандартного объекта ObjectListPanel).\r\n * Такой класс-extender не должен иметь визуальной части, но может реализовывать интерфейс IUssObjectListPanel методы которого будут вызываться\r\n * после вызова метода стандартного объекта ObjectListPanel.\r\n */\r\nexport const ObjectListPanel = (entityName: string, extender: boolean = false) => target => {\r\n if (extender) {\r\n objectListPanelExtenders[entityName] = objectListPanelExtenders[entityName] ?? [];\r\n objectListPanelExtenders[entityName].push(target);\r\n }\r\n else {\r\n objectListPanels[entityName] = target;\r\n if (!appComponents.contains(target))\r\n appComponents.push(target);\r\n }\r\n}\r\n\r\n/**\r\n * Список всех компонентов-extender'ов для кастомизации списка бизнес-объектов.\r\n */\r\nexport const objectListPanelExtenders: { [entityName: string]: Type[] } = { };\r\nexport function createObjectListPanelExtenders(entityName: string): IUssObjectListPanel[] {\r\n return(objectListPanelExtenders[entityName] ?? []).select(x => new x()).toArray();\r\n}\r\n\r\n\r\n/**\r\n * Список всех компонентов для кастомизации списка бизнес-объектов.\r\n */\r\nexport const objectListPanels: { [entityName: string]: Type } = { };\r\nexport function createObjectListPanelComponent(panel: Type, entityName: string, container?: ViewContainerRef, parameters?: any): UssObjectListComponent {\r\n let res = null;\r\n if (panel) {\r\n res = UssDialogsService.createComponent(panel, container, parameters) as UssObjectListComponent;\r\n container.element.nativeElement['__panel'] = res;\r\n\r\n res.parentContainer = 'main';\r\n //res.offsetBottom = 28;\r\n res.offsetBottom = 4;\r\n res['$listPanelExtenders'] = createObjectListPanelExtenders(entityName);\r\n }\r\n return res;\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/decorators/object-list-panel.decorator.ts","import { Inject, Injectable, EventEmitter, Optional } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\nimport { UssCacheApiService } from '@cache.module';\r\nimport { UssSignalRService } from '@signalr.module';\r\nimport { ApiModuleService, EVENTS_SERVICE_TOKEN, isNotEmpty, appEvents, ApiMethod, UssErrorHandler } from '@core.module';\r\nimport { SystemService } from '../internals';\r\n\r\nexport declare type TProgressType = 'init' | 'complete' | 'fault' | 'cancel' | 'run';\r\nexport interface OnProgress extends TotalApi.OnProgress, TotalApi.OnAsyncTaskFinished, TotalApi.OnAsyncTaskStarted {\r\n Type: TProgressType;\r\n}\r\nexport interface OnSystemTaskProgress extends OnProgress {\r\n Result: Uss.SystemTaskResult;\r\n}\r\n\r\n@Injectable()\r\n@ApiModuleService('api/asyncTasks')\r\n@SystemService()\r\nexport class UssAsyncTasksService extends UssCacheApiService {\r\n\r\n onProgress = new EventEmitter();\r\n\r\n constructor(@Inject(EVENTS_SERVICE_TOKEN) private signalr: UssSignalRService, @Optional() http: Http) {\r\n super(http);\r\n }\r\n\r\n async startTask(taskParams: object|string): Promise {\r\n const taskId = (typeof taskParams === 'string' ? taskParams : await this.create(taskParams));\r\n this.addSubscriptions(taskId);\r\n return this.getResult(taskId);\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '{taskId}' })\r\n GetTaskResult(taskId: string): Promise {\r\n return this.request({ taskId });\r\n }\r\n\r\n @ApiMethod({ method: 'DELETE', route: '{taskId}' })\r\n CancelTask(taskId: string): Promise {\r\n return this.request({ taskId });\r\n }\r\n\r\n private _tasks: any = { $count: 0 };\r\n private _un1: { unsubscribe: () => void };\r\n private _un2: { unsubscribe: () => void };\r\n private _un3: { unsubscribe: () => void };\r\n\r\n private hasSubscriptions(taskId: string): boolean {\r\n return isNotEmpty(this._tasks[taskId]);\r\n }\r\n\r\n private addSubscriptions(taskId: string) {\r\n if (this.hasSubscriptions(taskId)) return;\r\n this._tasks[taskId] = 0;\r\n this._tasks.$count++;\r\n if (this._tasks.$count === 1) {\r\n this._un1 = appEvents.subscribe(App.UssEvents.OnAsyncTaskStarted, e => this._onAsyncTaskStarted(e));\r\n this._un2 = appEvents.subscribe(App.UssEvents.OnProgress, e => this._onProgress(e));\r\n this._un3 = appEvents.subscribe(App.UssEvents.OnAsyncTaskFinished, e => this._onAsyncTaskFinished(e));\r\n }\r\n }\r\n private removeSubscriptions(taskId: string) {\r\n if (!this.hasSubscriptions(taskId)) return;\r\n if (this._tasks[taskId]) {\r\n clearTimeout(this._tasks[taskId]);\r\n }\r\n delete this._tasks[taskId];\r\n this._tasks.$count--;\r\n if (this._tasks.$count === 0) {\r\n this._un1 && this._un1.unsubscribe();\r\n this._un2 && this._un2.unsubscribe();\r\n this._un3 && this._un3.unsubscribe();\r\n }\r\n }\r\n\r\n private _onAsyncTaskStarted(e: TotalApi.OnAsyncTaskStarted) {\r\n console.log(\"> OnAsyncTaskStarted\", e);\r\n if (e && e.TaskId && this.hasSubscriptions(e.TaskId)) {\r\n const x = e;\r\n x.Type = 'init';\r\n x.InstanceId = x.TaskId;\r\n x.Status = TotalApi.AsyncTaskStatus.Running;\r\n this.onProgress.emit(x);\r\n }\r\n }\r\n\r\n private _onProgress(e: TotalApi.OnProgress) {\r\n console.log(\"> OnProgress\", e);\r\n if (e && e.InstanceId && this.hasSubscriptions(e.InstanceId)) {\r\n const x = e;\r\n x.Type = e.Progress <= 0 ? 'init' : 'run';\r\n x.TaskId = x.InstanceId;\r\n x.Status = TotalApi.AsyncTaskStatus.Running;\r\n this.onProgress.emit(x);\r\n }\r\n }\r\n\r\n private async _onAsyncTaskFinished(e: TotalApi.OnAsyncTaskFinished) {\r\n console.log(\"> OnAsyncTaskFinished\", e);\r\n if (e && e.TaskId && this.hasSubscriptions(e.TaskId)) {\r\n const taskResult = await this.GetTaskResult(e.TaskId) || e;\r\n if (taskResult) {\r\n const res = await this.doAsyncTask(taskResult);\r\n res && this.onProgress.emit(res);\r\n }\r\n }\r\n }\r\n\r\n private async getResult(taskId: string): Promise {\r\n const res = await this.doAsyncTask(taskId);\r\n if (res) {\r\n if (res.Type === 'run') {\r\n if (this.hasSubscriptions(taskId)) {\r\n this._tasks[taskId] = setTimeout(() => this.getResult(taskId), 1000);\r\n }\r\n }\r\n this.onProgress.emit(res);\r\n }\r\n return res;\r\n }\r\n\r\n protected async doAsyncTask(task: string | TotalApi.OnAsyncTaskFinished): Promise {\r\n let result: OnSystemTaskProgress;\r\n if (typeof task === 'string') {\r\n const taskId = task;\r\n const res = await this.GetTaskResult(taskId);\r\n if (res) {\r\n result = res;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n result = task;\r\n result.Type = result.Status === TotalApi.AsyncTaskStatus.Cancelled ? 'cancel' : result.Status === TotalApi.AsyncTaskStatus.Faulted ? 'fault' : 'complete';\r\n }\r\n\r\n if (result.Status === TotalApi.AsyncTaskStatus.Running) {\r\n result.Type = result.Progress <= 0 ? 'init' : 'run';\r\n }\r\n else if (result.Status === TotalApi.AsyncTaskStatus.Cancelled) {\r\n result.Type = 'cancel';\r\n }\r\n else if (result.Status === TotalApi.AsyncTaskStatus.Done) {\r\n result.Type = 'complete';\r\n }\r\n else if (result.Status === TotalApi.AsyncTaskStatus.Faulted) {\r\n result.Type = 'fault';\r\n result.StatusText = UssErrorHandler.ExtractError(result['Result']);\r\n }\r\n\r\n result.InstanceId = result.TaskId;\r\n return result;\r\n }\r\n\r\n\r\n subscribe(taskId: string): Promise {\r\n this.addSubscriptions(taskId);\r\n return this.getResult(taskId);\r\n }\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/services/asyncTask.service.ts","import * as ng from '@angular/core';\r\nimport * as rx from 'rxjs';\r\n\r\nimport { translate, dialog, parser, ExtendMethod, OData, ODataLike, isArray, bool } from '@core.module';\r\nimport { UssCrudApiService, IEntityObjectId, IEntityMetadata as EntityMetadata, UssMetadataService } from '@metadata.module';\r\nimport { UssDialogsService } from '@dialogs.module';\r\n\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { UssDataBindedComponent } from '../common/UssDataBindedComponent';\r\nimport {SystemComponent} from '../../internals';\r\nimport {IUssObjectListPanel} from '../object-list/IUssObjectListPanel';\r\n\r\n\r\ntype TDataSource = EntityMetadata | Object[] | UssCrudApiService | rx.Observable | Promise;\r\ntype TObjectDescription = { object: any; description: string };\r\n\r\n@ng.Component({\r\n selector: 'uss-object-select',\r\n template: require('./object-select.component.html'),\r\n styles: [require('./object-select.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssObjectSelectComponent extends UssDataSourceComponent implements ng.OnInit, ng.OnChanges {\r\n\r\n @ng.Input('selectionMode') selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @ng.Input('displayExpression') displayExpression: string;\r\n\r\n @ng.Input('showClear') showClearMode: boolean = true;\r\n\r\n public get showClear(): boolean {\r\n const res = !!(\r\n bool(this.showClearMode) !== false\r\n && this.afterInitVisible\r\n && !this.isRequired()\r\n && !this.disabled\r\n && this.control\r\n && !this.loading\r\n && !this.isReadOnly()\r\n && ((this.control.value && this.control.value.length > 0) || this.control.value === 0)\r\n );\r\n return res;\r\n }\r\n\r\n \r\n\r\n get entityName() {\r\n let metaData;\r\n if (typeof this.metadata === 'function') {\r\n metaData = this.metadata();\r\n } else {\r\n metaData = this.metadata;\r\n }\r\n return metaData ? metaData.Name : undefined;\r\n }\r\n @ng.Input('entityName') set entityName(value: string) {\r\n this.metadata = UssMetadataService.getEntityInfo(value);\r\n }\r\n\r\n @ng.Input('l10n-placeholder') l10nPlaceholder: string;\r\n\r\n @ng.Input('valueFieldName') valueFieldName: string = 'Id';\r\n\r\n @ng.Input('data') set data(value: any[] | rx.Observable | Promise) {\r\n this.setData(value);\r\n }\r\n\r\n @ng.Input('filter') filter: ODataLike;\r\n\r\n @ng.Input('listPanel') listPanel: IUssObjectListPanel | any;\r\n\r\n @ng.Output('selectedObjectChange') selectedObjectChange = new ng.EventEmitter();\r\n\r\n\r\n @ExtendMethod(UssDataBindedComponent) setData(value: any) { }\r\n @ExtendMethod(UssDataBindedComponent) onChanges(ch: any) { }\r\n @ExtendMethod(UssDataBindedComponent) afterViewInit() { }\r\n @ExtendMethod(UssDataBindedComponent) initObjectList() { }\r\n @ExtendMethod(UssDataBindedComponent) getRelatedObjects(key?: string | string[]): rx.Observable { return null; }\r\n @ExtendMethod(UssDataBindedComponent) getExpression(): string { return null; }\r\n @ExtendMethod(UssDataBindedComponent) getObjects$(): rx.Observable { return null; }\r\n @ExtendMethod(UssDataBindedComponent) getObjects(): any[] { return null; }\r\n @ExtendMethod(UssDataBindedComponent) resetLoading() { }\r\n @ExtendMethod(UssDataBindedComponent) load$(em, query) { return null; }\r\n\r\n public loading: boolean;\r\n\r\n public objectList: rx.Observable;\r\n\r\n private descriptionsCache: { [id: string]: TObjectDescription } = {}; \r\n\r\n private setLoading(val: boolean) {\r\n if (!this.loading === !val) return;\r\n this.loading = val;\r\n setTimeout(() => this.detectChanges());\r\n }\r\n\r\n public getPlaceholder(): string {\r\n if (this.loading) {\r\n return translate.instant('@DIALOG.LOADING|Загрузка...');\r\n }\r\n else if (this.l10nPlaceholder !== undefined) {\r\n return translate.instant(this.l10nPlaceholder);\r\n } else {\r\n return this.placeholder;\r\n }\r\n }\r\n\r\n _savedValue: any;\r\n afterVisiblitityInitialized = false;\r\n\r\n protected getDataSourceValue() {\r\n return super.getDataSourceValue() || this._savedValue;\r\n }\r\n\r\n afterVisibilityInit(): void {\r\n this.afterVisiblitityInitialized = true;\r\n super.afterVisibilityInit();\r\n }\r\n\r\n private fixValue(value) {\r\n if (value) {\r\n if (this.selectionMode === 'multiple' && !isArray(value)) {\r\n value = [value];\r\n }\r\n if (this.selectionMode !== 'multiple' && isArray(value)) {\r\n value = value[0];\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n public getValue() {\r\n let res;\r\n if (!this.afterVisiblitityInitialized) {\r\n res = this._savedValue;\r\n } else {\r\n res = super.getValue();\r\n }\r\n return this.fixValue(res);\r\n }\r\n\r\n\r\n skipClearingInputText: boolean;\r\n protected onInputElementChange($event: Event) {\r\n if (this.skipClearingInputText) {\r\n this.skipClearingInputText = false;\r\n } else {\r\n this.setInputValueDirect('');\r\n this.clearValue();\r\n }\r\n }\r\n\r\n public setValue(id: string | string[], descriptions?: TObjectDescription | TObjectDescription[]) {\r\n id = this.fixValue(id);\r\n if (!this.afterVisiblitityInitialized) {\r\n this._savedValue = id;\r\n return;\r\n }\r\n const oldValue = this.value;\r\n super.setValue(id);\r\n if (oldValue === id) {\r\n this.setLoading(false);\r\n } else {\r\n let text = '';\r\n if (id) {\r\n if (!descriptions) {\r\n this.setLoading(true);\r\n const descriptionsPromises = ((isArray(id) ? id : [id]))\r\n .select(id => {\r\n let res;\r\n const descr = this.descriptionsCache[id];\r\n if (descr) {\r\n res = Promise.resolve(descr);\r\n } else {\r\n const metadata = this.getEntityMetadata();\r\n if (metadata && metadata.service) {\r\n res = metadata.service()\r\n// .load(id)\r\n .load(OData.create.$top(1).eq(this.valueFieldName || 'Id', id))\r\n .then(x => {\r\n return (this.descriptionsCache[id] = {\r\n object: x[0],\r\n //description: parser.evaluate(this.getExpression(), x[0])\r\n description: UssMetadataService.getDisplayText(metadata, x[0])\r\n });\r\n });\r\n } else {\r\n res = `#${id}`;\r\n }\r\n }\r\n return res;\r\n })\r\n .toArray();\r\n Promise.all(descriptionsPromises)\r\n .then(results => {\r\n text = results.select(x => x.description).toArray().join(';');\r\n this.setInputValueDirect(text);\r\n\r\n let selectedObject = results.select(x => x.object).toArray();\r\n if (selectedObject.length === 0)\r\n selectedObject = null;\r\n else if (selectedObject.length === 1)\r\n selectedObject = selectedObject[0];\r\n this.selectedObjectChange.emit(selectedObject);\r\n this.setLoading(false);\r\n })\r\n .catch(() => {\r\n this.value = null;\r\n this.setInputValueDirect('');\r\n this.setLoading(false);\r\n });\r\n } else {\r\n const descr = (isArray(descriptions) ? descriptions : [descriptions]);\r\n ((isArray(id) ? id : [id])).forEach((id, index) => this.descriptionsCache[id] = descr[index]);\r\n text = descr.select(x => x.description).toArray().join(';');\r\n let selectedObject = descr.select(x => x.object).toArray();\r\n if (selectedObject.length === 0)\r\n selectedObject = null;\r\n else if (selectedObject.length === 1)\r\n selectedObject = selectedObject[0];\r\n this.selectedObjectChange.emit(selectedObject);\r\n }\r\n } else {\r\n this.selectedObjectChange.emit(null);\r\n }\r\n this.setLoading(false);\r\n this.setInputValueDirect(text);\r\n }\r\n }\r\n\r\n protected updateInputElement(value: string | string[]): void {\r\n // стандартное поведение не используем.\r\n // текст компонента устанавливается в методе setValue()\r\n }\r\n\r\n prepareQuery(odata: OData, dataTable: any, firstLoad: boolean) {\r\n odata.appendFrom(this.filter);\r\n }\r\n\r\n public async inputClickReaction() {\r\n this.inputElement.focus();\r\n }\r\n\r\n public async modalSelect() {\r\n if (this.isReadOnly()) return;\r\n let selectedObjects = this.dataSource && this.dataSource[this.fieldName] ? this.dataSource[this.fieldName] : (this.value ? this.value : []);\r\n if (isArray(selectedObjects)) {\r\n selectedObjects = [...selectedObjects];\r\n }\r\n const modal = dialog.show(UssDialogsService.tableSelectDialog,\r\n {\r\n metadata: this.getEntityMetadata(),\r\n dataSource: this.objectList,\r\n filter: this.filter,\r\n listPanel: this.listPanel,\r\n selectionMode: this.selectionMode,\r\n selectedObjects,\r\n valueFieldName: this.valueFieldName\r\n });\r\n\r\n let x: any = await modal.result;\r\n if (x) {\r\n if (this.selectionMode === 'multiple') {\r\n x = isArray(x) ? x : [x];\r\n const arr = x.select(x => x != null && typeof x === 'object' ? x[this.valueFieldName] : x).toArray();\r\n const arrDescr = x.select(x => x != null && typeof x === 'object'\r\n ? { object: x, description: parser.evaluate(this.getExpression(), x) }\r\n : undefined)\r\n .toArray();\r\n this.setValue([]);\r\n this.setValue(arr, arrDescr.all(x => !x) ? undefined : arrDescr);\r\n } else {\r\n const val = isArray(x) ? x[0] : x;\r\n if (val != null && typeof val === 'object') {\r\n this.setValue(\r\n val[this.valueFieldName],\r\n { object: x, description: parser.evaluate(this.getExpression(), val) });\r\n this.emitChanges(val[this.valueFieldName]);\r\n } else {\r\n this.value = val;\r\n }\r\n }\r\n }\r\n this.inputElement.focus();\r\n }\r\n\r\n ngOnChanges(ch): void {\r\n super.ngOnChanges(ch);\r\n this.onChanges(ch);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loading = true;\r\n super.ngOnInit();\r\n }\r\n\r\n isAutoCompleteOpen: boolean;\r\n\r\n protected onInputElementKeyDown(e: KeyboardEvent) {\r\n switch (e.key) {\r\n case 'ArrowDown': \r\n if (!this.isReadOnly() && !this.isAutoCompleteOpen) {\r\n this.modalSelect();\r\n break;\r\n }\r\n default:\r\n return this.onDefaultNavigationKeyDownHandler(e);\r\n }\r\n return undefined;\r\n }\r\n\r\n onInputElementFocusIn($event: FocusEvent): void {\r\n super.onInputElementFocusIn($event);\r\n this.inputElement.select();\r\n }\r\n\r\n protected onInputElementFocus($event: FocusEvent) {\r\n this.isFocused = true;\r\n }\r\n\r\n public skipLostFocus : boolean;\r\n protected onInputElementBlur($event: FocusEvent) {\r\n setTimeout(() => {\r\n if (this.skipLostFocus) {\r\n this.skipLostFocus = false;\r\n }\r\n else if (document.activeElement !== this.inputElement) {\r\n this.isFocused = false;\r\n }\r\n }, 100);\r\n }\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/object-select/object-select.component.ts","import { ElementRef, Component, ViewChild, Input, ChangeDetectionStrategy, OnDestroy, Output, EventEmitter, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssComponent } from '../common/base.component';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\nimport { detectChanges, ifEmpty, toCssSize } from '@core.module';\r\n\r\n\r\ndeclare var jQuery: any;\r\n\r\n/**\r\n * Component, implementation of Semantic UI popup components.\r\n *\r\n * This component is triggered by UIPopupDirective.\r\n *\r\n * ВАЖНО!!!\r\n * Если контент выпадающего элемента задать явно - он будет всегда создаваться, даже если этот элемент не виден.\r\n * Это может приводить к дополнительным накладным расходам при отображении компонента, содержащего выпадающий элемент.\r\n * Чтобы избежать этого нужно задавать контент выпадающего элемента через ng-template, указывая его в качестве параметра templateRef.\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'uss-popover',\r\n template: `
\r\n
\r\n \r\n \r\n
\r\n
`\r\n})\r\n@SystemComponent()\r\nexport class UssPopoverComponent implements OnDestroy {\r\n\r\n @ViewChild('popup') popup: ElementRef;\r\n\r\n /** Контент выпадающего элемента, создаётся только при показе попапа и уничтожается при закрытии */ \r\n @Input('templateRef') templateRef: TemplateRef;\r\n\r\n @Input('maxWidth') maxWidth: string | number;\r\n @Input('width') width: 'auto' | 'target' | string | number = 'auto';\r\n @Input('maxHeight') maxHeight: string | number;\r\n @Input('height') height: 'auto' | 'target' | string | number = 'auto';\r\n @Input('context') context: HTMLElement | string;\r\n\r\n @Input() class: string;\r\n\r\n @Output() visibleChange = new EventEmitter();\r\n\r\n private visible: boolean = false;\r\n private element: Element;\r\n\r\n $popup: JQuery;\r\n\r\n /** Пользовательские данные, переданные через параметр `data` опций попапа при вызове метода `show` */\r\n data: any;\r\n\r\n private _resizeObserver1: ResizeObserver;\r\n private _resizeObserver2: ResizeObserver;\r\n\r\n constructor(private elementRef: ElementRef, private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnDestroy() {\r\n this._resizeObserver1?.disconnect();\r\n this._resizeObserver2?.disconnect();\r\n ((this.$popup))?.observer?.disconnect();\r\n this.$popup?.detach();\r\n }\r\n\r\n /*\r\n private toCssSize(x: number | string): string {\r\n return isFinite(x) ? x + 'px' : x;\r\n }\r\n */\r\n\r\n\r\n findNotOverflowParent(element: Element) {\r\n let res = element.parentNode;\r\n while (res !== document.body\r\n && (!res.style.overflow || res.style.overflow === 'visible')\r\n && (!res.style.overflowX || res.style.overflowX === 'visible')\r\n && (!res.style.overflowY || res.style.overflowY === 'visible')) {\r\n res = res.parentNode;\r\n }\r\n return res;\r\n }\r\n\r\n show(data: {} | Event | UssComponent | Element = {}, element?: Event | UssComponent | Element): HTMLElement {\r\n if (!this.visible) {\r\n\r\n if (data instanceof Event || data instanceof UssComponent || data instanceof Element) {\r\n element = data;\r\n data = {}\r\n }\r\n\r\n this.visible = true;\r\n detectChanges(this.changeDetector);\r\n if (element) {\r\n this.element = (element).target ||\r\n (element).nativeElement ||\r\n element;\r\n }\r\n this.element = this.element || (this.elementRef.nativeElement as HTMLElement).parentElement;\r\n\r\n const $element = jQuery(this.element);\r\n\r\n this.data = data['data'];\r\n\r\n const $popup = $(this.popup.nativeElement);\r\n this.$popup = $popup;\r\n\r\n let boundary = undefined;\r\n\r\n // для выпадающих списков не нужно делать этой проверки - они открываются поверх всего\r\n if (!this.popup.nativeElement.classList.contains('dropdown')) {\r\n // нужно найти первый элемент с установленным значением overflow: hidden or overflow: auto\r\n boundary = this.findNotOverflowParent(this.element);\r\n }\r\n\r\n\r\n\r\n const options: any = Object.assign({\r\n closable: true,\r\n on: 'manual',\r\n boundary: boundary,\r\n preserve: false,\r\n exclusive: true,\r\n lastResort: true,\r\n inline: false,\r\n popup: $popup,\r\n position: 'bottom center',\r\n scrollContext: this.context,\r\n target: this.element,\r\n transition: 'slide down',\r\n hideOnScroll: true,\r\n observeChanges: false,\r\n offset: 0,\r\n distanceAway: 0,\r\n },\r\n data);\r\n const $target = $(options.target);\r\n const priorOnHidden = options.onHidden;\r\n options.onHidden = () => {\r\n if (this.visible) {\r\n this.visible = false;\r\n detectChanges(this.changeDetector);\r\n }\r\n priorOnHidden && priorOnHidden();\r\n this.visibleChange.emit(this.visible);\r\n }\r\n const priorOnShow = options.onShow;\r\n $popup.observer = null;\r\n options.onShow = () => {\r\n $(element).addClass('uss-popover-visible');\r\n $popup.observer?.disconnect();\r\n $popup.observer = new MutationObserver(mutations => {\r\n mutations.forEach(mutation => {\r\n if (mutation.attributeName === 'class') {\r\n const attributeValue = $(mutation.target).prop(mutation.attributeName);\r\n $(element).removeClass('uss-popover-top');\r\n $(element).removeClass('uss-popover-bottom');\r\n if (attributeValue.Contains(' top ')) {\r\n $(element).addClass('uss-popover-top');\r\n } else if (attributeValue.Contains(' bottom ')) {\r\n $(element).addClass('uss-popover-bottom');\r\n }\r\n }\r\n });\r\n });\r\n $popup.observer.observe($popup[0],\r\n {\r\n attributes: true\r\n });\r\n\r\n priorOnShow && priorOnShow();\r\n\r\n $popup.css('position', 'absolute');\r\n\r\n // вариант 1\r\n /*\r\n const deltaY = $popup.position().top - $popup.offset().top;\r\n const deltaX = $popup.position().left - $popup.offset().left;\r\n\r\n if ($element.popup('set position')) {\r\n $element.popup('save conditions');\r\n if(options.exclusive) {\r\n $element.popup('hideAll');\r\n }\r\n $element.popup('animate show');\r\n\r\n const pos = {\r\n left: $popup[0].getBoundingClientRect().left + $(window).scrollLeft() + deltaX,\r\n top: $popup[0].getBoundingClientRect().top + $(window).scrollTop() + deltaY\r\n };\r\n $popup.css('position', 'fixed');\r\n $popup.css(pos);\r\n }\r\n return true;\r\n */\r\n\r\n // вариант 2\r\n /*\r\n const deltaY = $popup.position().top - $popup.offset().top;\r\n const deltaX = $popup.position().left - $popup.offset().left;\r\n\r\n queueMicrotask(() => {\r\n const pos = {\r\n left: $popup[0].getBoundingClientRect().left + $(window).scrollLeft() + deltaX,\r\n top: $popup[0].getBoundingClientRect().top + $(window).scrollTop() + deltaY\r\n };\r\n $popup.css('position', 'fixed');\r\n $popup.css(pos);\r\n });\r\n */\r\n\r\n queueMicrotask(() => this.visibleChange.emit(this.visible));\r\n }\r\n const priorOnHide = options.onHide;\r\n options.onHide = () => {\r\n $(element).removeClass('uss-popover-visible');\r\n $(element).removeClass('uss-popover-top');\r\n $(element).removeClass('uss-popover-bottom');\r\n $popup.observer && $popup.observer.disconnect();\r\n $popup.observer = null;\r\n priorOnHide && priorOnHide();\r\n }\r\n $popup.addClass('uss-popover');\r\n options.scrollContext && $popup.appendTo(options.scrollContext);\r\n $popup.css('zIndex', 100000);\r\n //$popup.css('overflow', 'auto');\r\n switch (this.width) {\r\n case 'auto':\r\n $popup.css('max-width', toCssSize(ifEmpty(this.maxWidth, 'min-content')));\r\n $popup.css('width', 'auto');\r\n break;\r\n case 'target':\r\n $popup.css('max-width', toCssSize(ifEmpty(this.maxWidth, 'inherit')));\r\n $popup.css('width', toCssSize($target.outerWidth()));\r\n this._resizeObserver1?.disconnect();\r\n (this._resizeObserver1 = new ResizeObserver(() => $popup.css('width', toCssSize($target.outerWidth())))).observe($target[0]);\r\n break;\r\n default:\r\n $popup.css('max-width', toCssSize(ifEmpty(this.maxWidth, 'inherit')));\r\n $popup.css('width', toCssSize(this.width));\r\n break;\r\n }\r\n switch (this.height) {\r\n case 'auto':\r\n $popup.css('max-height', toCssSize(ifEmpty(this.maxHeight, 'min-content')));\r\n $popup.css('height', 'auto');\r\n break;\r\n case 'target':\r\n $popup.css('max-height', toCssSize(ifEmpty(this.maxHeight, 'inherit')));\r\n $popup.css('height', toCssSize($target.outerHeight()));\r\n this._resizeObserver2?.disconnect();\r\n (this._resizeObserver2 = new ResizeObserver(() => $popup.css('height', toCssSize($target.outerHeight())))).observe($target[0]);\r\n break;\r\n default:\r\n $popup.css('max-height', toCssSize(ifEmpty(this.maxHeight, 'inherit')));\r\n $popup.css('height', toCssSize(this.height));\r\n break;\r\n }\r\n $element.css('position', 'relative')\r\n .popup(options)\r\n .popup('show');\r\n return $popup[0];\r\n } else {\r\n this.hide();\r\n return null;\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.visible && this.element) {\r\n jQuery(this.element)\r\n .popup('hide');\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/popover/popover.component.ts","/* Angular */\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { Http, HttpModule } from '@angular/http';\r\n\r\n/* 3rd party */\r\nimport * as ngxTranslate from '@ngx-translate/core';\r\n\r\n/*\r\n Translate\r\n*/\r\nimport { AppTranslateStaticLoader, AppMissingTranslationHandler } from './translate.service';\r\nimport { AppTranslateService } from './translate.service';\r\nimport { l10nDirective } from './l10n.directive';\r\nimport { TRANSLATE_SERVICE_TOKEN } from '../core.module/interfaces/core-interface.tokens';\r\n\r\n@NgModule({\r\n declarations: [ l10nDirective ],\r\n exports: [ ngxTranslate.TranslatePipe, ngxTranslate.TranslateDirective, l10nDirective ],\r\n imports: [ ngxTranslate.TranslateModule, HttpModule ],\r\n providers: [\r\n { provide: TRANSLATE_SERVICE_TOKEN, useClass: AppTranslateService }\r\n ],\r\n schemas: []\r\n})\r\nexport class UssTranslateModule {\r\n\r\n static updateModule(m: ModuleWithProviders): ModuleWithProviders {\r\n m.providers.push(AppTranslateService);\r\n m.ngModule = UssTranslateModule;\r\n return m;\r\n }\r\n\r\n /**\r\n * Use this method in your root module to provide the TranslateService\r\n * @param {TranslateModuleConfig} config\r\n * @returns {ModuleWithProviders}\r\n */\r\n static forRoot(config: ngxTranslate.TranslateModuleConfig = {}): ModuleWithProviders {\r\n const cfg = \r\n {\r\n loader: {\r\n provide: ngxTranslate.TranslateLoader,\r\n useFactory: (http: Http) => new AppTranslateStaticLoader(http, 'api/l10n/', '.json'),\r\n deps: [Http]\r\n },\r\n missingTranslationHandler: {\r\n provide: ngxTranslate.MissingTranslationHandler,\r\n useFactory: (http: Http) => new AppMissingTranslationHandler(http),\r\n deps: [Http]\r\n }\r\n };\r\n cfg.loader = config.loader || cfg.loader;\r\n cfg.compiler = config.compiler || cfg.compiler;\r\n cfg.parser = config.parser || cfg.parser;\r\n cfg.missingTranslationHandler = config.missingTranslationHandler || cfg.missingTranslationHandler;\r\n cfg.isolate = config.isolate || cfg.isolate;\r\n cfg.useDefaultLang = config.useDefaultLang || cfg.useDefaultLang;\r\n\r\n return this.updateModule(ngxTranslate.TranslateModule.forRoot(cfg));\r\n }\r\n /**\r\n * Use this method in your other (non root) modules to import the directive/pipe\r\n * @param {TranslateModuleConfig} config\r\n * @returns {ModuleWithProviders}\r\n */\r\n static forChild(config: ngxTranslate.TranslateModuleConfig = {}): ModuleWithProviders {\r\n return this.updateModule(ngxTranslate.TranslateModule.forChild(config));\r\n }\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/translate.module/translate.module.ts","export * from './messages.module';\r\n//export * from './messages.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/messages.module/index.ts","import { Map, Popup, PopupOptions, Layer, Tooltip, TooltipOptions, Icon, Path, PathOptions, LatLngExpression, LatLng, Point, Renderer, CircleMarker, Bounds, PointTuple, LeafletEventHandlerFn, Content } from 'leaflet';\r\nimport * as geojson from 'geojson';\r\nimport * as _ from 'lodash';\r\nimport { toLatLng, toPointTuple, toRadians, bindMeasureControl } from '../utils/LeafletHelper';\r\nimport { TRotationUnits, UssMapIcon, UssMapIconOptions } from '../map-icons/map-icon';\r\nimport { ifEmpty, isArray, throttle } from '@core.module';\r\nimport { CanvasIconLayer } from './CanvasIconLayer';\r\n\r\nexport interface CanvasTextStyle {\r\n font?: string;\r\n size?: number;\r\n color?: string;\r\n maxWidth?: number;\r\n backgroundColor?: string;\r\n}\r\n\r\ninterface CanvasTextStyleEx extends CanvasTextStyle {\r\n width: number;\r\n fontDescriptor: string;\r\n}\r\n\r\nexport interface CanvasMarkerOptions extends PathOptions {\r\n /** Признак видимости. По умолчанию (если не установлено - маркер видимый) */\r\n visible?: boolean;\r\n\r\n /** Текстовая метка, отображаемая рядом с маркером (или несколько меток - каждая метка выводится на отдельной строке с отдельными стилями). */\r\n title?: string | string[];\r\n /** Стиль текстовой метки (или нескольких меток) */\r\n titleStyle?: CanvasTextStyle | CanvasTextStyle[];\r\n /** Признак видимости заголовка на карте. Заголовок отображается если возвращается не false. */\r\n isTitleVisible?: boolean | ((map: Map) => boolean);\r\n\r\n /** Где выводить заголовок, относительно маркера (по умолчанию 'center top' ) #1#\r\n titleOrigin?: TRotationOrigin;\r\n */\r\n\r\n icon?: Icon;\r\n /** Угол поворота по часовой стрелке. */\r\n rotationAngle?: number;\r\n /** Единица измерения поворота. (по умочанию deg) */\r\n rotationUnits?: TRotationUnits;\r\n/*\r\n /** Точка поворота (по умолчанию 'center center' ) #1#\r\n rotationOrigin?: TRotationOrigin;\r\n*/\r\n zIndex?: number;\r\n\r\n}\r\n\r\nexport function canvasMarker(latlng: LatLngExpression, options?: CanvasMarkerOptions): CanvasMarker {\r\n return bindMeasureControl(new CanvasMarker(latlng, options));\r\n}\r\n\r\nexport class CanvasMarker extends Path {\r\n\r\n private _latlng: LatLng;\r\n private _renderer: Renderer;\r\n\r\n options: CanvasMarkerOptions = { interactive: false };\r\n\r\n feature?: geojson.Feature;\r\n\r\n constructor(latlng: LatLngExpression, options?: CanvasMarkerOptions) {\r\n super(options);\r\n this._latlng = toLatLng(latlng);\r\n options && (this.options = _.extend({}, this.options, options));\r\n this.on('mouseover', () => {\r\n if (this._renderer && this._renderer.options.pane && this._renderer.options.pane !== 'overlayPane') {\r\n this._renderer['_container'].style.pointerEvents = 'inherit';\r\n }\r\n });\r\n this.on('mouseout', () => {\r\n if (this._renderer && this._renderer.options.pane && this._renderer.options.pane !== 'overlayPane') {\r\n this._renderer['_container'].style.pointerEvents = 'none';\r\n }\r\n });\r\n }\r\n\r\n toGeoJSON(): geojson.Feature {\r\n return CircleMarker.prototype.toGeoJSON.call(this);\r\n }\r\n\r\n getLatLng(): LatLng {\r\n return this._latlng;\r\n }\r\n\r\n setLatLng(latlng: LatLngExpression): this {\r\n const oldLatLng = this._latlng;\r\n this._latlng = toLatLng(latlng);\r\n this._updateBounds();\r\n this.redraw();\r\n // @event move: Event\r\n // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n }\r\n\r\n setOpacity(opacity: number): this {\r\n this.options.opacity = opacity;\r\n this._updateBounds();\r\n this.redraw();\r\n return this;\r\n }\r\n\r\n setVisible(visible: boolean): this {\r\n this.options.visible = visible;\r\n this._updateBounds();\r\n this.redraw();\r\n return this;\r\n }\r\n\r\n setIcon(icon: Icon): this {\r\n this.options.icon = icon;\r\n this._updateBounds();\r\n this.redraw();\r\n return this;\r\n }\r\n\r\n setRotation(rotationAngle: number, rotationUnits?: TRotationUnits): this {\r\n this.options.rotationAngle = +rotationAngle;\r\n this.options.rotationUnits = ifEmpty(rotationUnits, this.options.rotationUnits);\r\n this._updateBounds();\r\n this.redraw();\r\n return this;\r\n }\r\n\r\n redraw(): this {\r\n if (this._renderer) {\r\n super.redraw();\r\n } else {\r\n this._update();\r\n }\r\n return this;\r\n }\r\n private _imageLookup: { [iconUrl: string]: any[] }; // [ Image, false, [[marker, pointPos]] ]\r\n private _canvasImgIconUrl: string;\r\n private _canvasImg: HTMLImageElement;\r\n\r\n private _drawMarker() {\r\n if (this.options.visible === false) return;\r\n if (!this._renderer) {\r\n // -- рисование маркера на CanvasIconLayer --\r\n const canvasIconLayer = this['_canvasIconLayer'];\r\n if (canvasIconLayer instanceof CanvasIconLayer) {\r\n canvasIconLayer.redraw();\r\n }\r\n } else if (this._renderer['_drawing'] && !this._empty()) {\r\n // -- рисование маркера на обычном слое --\r\n const options = this.options.icon.options;\r\n const opacity = ifEmpty(this.options.opacity, ifEmpty(this.options.fillOpacity, 1));\r\n if (opacity === 0) return;\r\n if (!this._imageLookup) this._imageLookup = {};\r\n const pointPos = this._point;\r\n const src: string = options['src'] || options.iconUrl || '';\r\n const isSvgFile = src.EndsWith('.svg', true);\r\n const isSvgContent = src.Contains('', true);\r\n const color = options['color'] || this.options.color || this.options.fillColor;\r\n const iconUrl = `${isSvgContent ? src.ToMd5() : src}?${color}`;\r\n if (this._canvasImg && this._canvasImgIconUrl === iconUrl) {\r\n this._drawImage(pointPos);\r\n } else {\r\n\r\n const svgToImage = (i: HTMLImageElement, svg: HTMLElement) => {\r\n // get svg data\r\n const xml = new XMLSerializer().serializeToString(svg);\r\n // make it base64 & prepend a \"header\"\r\n const image64 = `data:image/svg+xml;base64,${btoa(xml)}`;\r\n i.src = image64;\r\n }\r\n\r\n this._canvasImgIconUrl = iconUrl;\r\n if (this._imageLookup[iconUrl]) {\r\n this._canvasImg = this._imageLookup[iconUrl][0];\r\n\r\n if (this._imageLookup[iconUrl][1] === false) {\r\n this._imageLookup[iconUrl][2].push([this, pointPos]);\r\n } else {\r\n this._drawImage(pointPos);\r\n }\r\n } else {\r\n //Image,isLoaded,[marker\\pointPos] ref\r\n const i = new Image();\r\n this._imageLookup[iconUrl] = [i, false, [[this, pointPos]]];\r\n this._canvasImg = i;\r\n i.onload = () => {\r\n this._imageLookup[iconUrl][1] = true;\r\n this._imageLookup[iconUrl][2].forEach((e) => this._drawImage(e[1], true));\r\n //this._imageLookup[iconUrl][2].forEach((e) => this.redraw());\r\n }\r\n if (isSvgContent) {\r\n const svg = UssMapIcon.makeSvg(null, src, color); \r\n svgToImage(i, svg);\r\n }\r\n else if (isSvgFile) {\r\n const svg = UssMapIcon.createSvgElement(iconUrl, color);\r\n if (svg instanceof Promise) {\r\n svg.then(s => svgToImage(i, s));\r\n } else {\r\n svgToImage(i, svg);\r\n }\r\n } else {\r\n i.src = iconUrl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _drawImage(pointPos: Point, forced?: boolean) {\r\n if (!this._renderer || (!forced && !this._renderer['_drawing']) || this._empty()) { return; }\r\n\r\n const options = this.options.icon.options;\r\n const opacity = ifEmpty(this.options.opacity, ifEmpty(this.options.fillOpacity, 1));\r\n if (opacity > 0) {\r\n const [w, h] = toPointTuple(options.iconSize);\r\n const [ax, ay] = toPointTuple(options.iconAnchor, options.iconSize);\r\n const [x, y] = [pointPos.x, pointPos.y];\r\n\r\n const ctx = this._renderer['_ctx'];\r\n ctx.save();\r\n ctx.globalAlpha = opacity;\r\n if (this.options.rotationAngle) {\r\n const angleRad = this._angle;\r\n ctx.save();\r\n ctx.translate(x + ax, y + ay);\r\n ctx.rotate(angleRad);\r\n ctx.drawImage(this._canvasImg, -ax, -ay, w, h);\r\n ctx.restore();\r\n } else {\r\n ctx.drawImage(this._canvasImg, x, y, w, h);\r\n }\r\n if (this._map && this.options.title && (typeof this.options.isTitleVisible === 'function' ? (this.options.isTitleVisible)(this._map) : this.options.isTitleVisible) !== false ) {\r\n this.updateTitle();\r\n let totalHeight = 6;\r\n for (let i = this._titleSettings.titles.length - 1; i >= 0; i--) {\r\n const text = this._titleSettings.titles[i];\r\n const style = this._titleSettings.styles[i];\r\n if (text) {\r\n ctx.font = style.fontDescriptor;\r\n ctx.textAlign = 'left';\r\n ctx.textBaseline = 'top';\r\n const width = style.width;\r\n const height = style.size;\r\n totalHeight += height;\r\n if (style.backgroundColor) {\r\n ctx.fillStyle = style.backgroundColor;\r\n ctx.fillRect(x + w/2 - width/2 - 6, y - totalHeight, width + 6*2, height + 5);\r\n }\r\n ctx.fillStyle = style.color || 'black';\r\n ctx.fillText(text, x + w/2 - width/2, y - totalHeight + 3, style.maxWidth);\r\n totalHeight += 6 + 2;\r\n }\r\n }\r\n }\r\n ctx.restore();\r\n }\r\n }\r\n\r\n /** Координатная точка маркера на карте */\r\n private _point: Point;\r\n /** Границы в которые полностью вписывается маркер при повороте на любой угол */\r\n private _pxBounds: Bounds;\r\n\r\n /** Границы в которые вписывается маркер без поворота + _clickTolerance */\r\n private _bounds: Bounds;\r\n /** Центр маркера, указывает точку координат на карте и вокруг этой точки вращается маркер */\r\n private _origin: { x: number, y: number };\r\n /** Угол поворота в радианах */\r\n public _angle: number;\r\n\r\n /** Кастомная отрисовка маркера */\r\n public onDrawing: (ctx: CanvasRenderingContext2D, bounds: [number, number, number, number], img: CanvasImageSource, angle: number, marker: CanvasMarker) => void;\r\n\r\n private _angleRad(): number {\r\n let angleRad: number;\r\n switch (this.options.rotationUnits) {\r\n case 'rad':\r\n angleRad = this.options.rotationAngle;\r\n break;\r\n case 'grad':\r\n angleRad = toRadians(0.9 * this.options.rotationAngle);\r\n break;\r\n case 'turn':\r\n angleRad = toRadians(360 * this.options.rotationAngle);\r\n break;\r\n default:\r\n angleRad = toRadians(this.options.rotationAngle);\r\n break;\r\n }\r\n return angleRad;\r\n }\r\n\r\n protected _project() {\r\n this._point = this._map.latLngToLayerPoint(this._latlng);\r\n const options = this.options.icon.options;\r\n const [x, y] = toPointTuple(options.iconAnchor, options.iconSize);\r\n this._point.x = this._point.x - x;\r\n this._point.y = this._point.y - y;\r\n this._updateBounds();\r\n }\r\n\r\n protected _updateBounds() {\r\n this._angle = this._angleRad();\r\n if (this._point) {\r\n const options = this.options.icon.options;\r\n const [ax, ay] = toPointTuple(options.iconAnchor, options.iconSize);\r\n const [cx, cy] = [this._point.x + ax, this._point.y + ay];\r\n this._origin = { x: cx, y: cy };\r\n const [w, h] = toPointTuple(options.iconSize);\r\n const d = this['_clickTolerance']();\r\n this._bounds = new Bounds([this._point.x - d, this._point.y - d], [this._point.x + w + d, this._point.y + h + d]);\r\n const p1 = [this._point.x, this._point.y];\r\n const p2 = [this._point.x + w, this._point.y + h];\r\n const delta = Math.sqrt((w-ax)*(w-ax)+(h-ay)*(h-ay));\r\n // заведомо больший прямоугольник, чтобы в него вписывался повёрнутый маркер\r\n // просто увеличим относительно центра на максимальную ширину/высоту\r\n p1[0] = cx - delta - ax; // ?? это неправильное значение, но заведомо больше нужного\r\n p1[1] = cy - delta - ay; // ?? это неправильное значение, но заведомо больше нужного\r\n p2[0] = cx + delta + ax; // ?? это неправильное значение, но заведомо больше нужного\r\n p2[1] = cy + delta + ay; // ?? это неправильное значение, но заведомо больше нужного\r\n // если есть заголовок - добавим высоту заголовка\r\n this.updateTitle();\r\n if (this._titleSettings.isValid) {\r\n p1[0] = p1[0] - this._titleSettings.width / 2;\r\n p2[0] = p2[0] + this._titleSettings.width / 2;\r\n p1[1] = p1[1] - this._titleSettings.height;\r\n }\r\n this._pxBounds = new Bounds(p1, p2);\r\n }\r\n }\r\n\r\n /**\r\n * Выполняет поворот точки относительно центра на указанный угол\r\n * @param p координаты точки которую нужно повернуть\r\n * @param angle угол поворота в радианах\r\n * @param origin координаты центра, относительно которого выполняется поворот\r\n */\r\n private static _rot(p: Point, angle: number, origin: {x: number, y: number}): PointTuple {\r\n if (angle) {\r\n // translate point to origin\r\n const tempX = p.x - origin.x;\r\n const tempY = p.y - origin.y;\r\n\r\n // now apply rotation\r\n const rotatedX = tempX * Math.cos(angle) - tempY * Math.sin(angle);\r\n const rotatedY = tempX * Math.sin(angle) + tempY * Math.cos(angle);\r\n\r\n // translate back\r\n return [rotatedX + origin.x, rotatedY + origin.y];\r\n } else {\r\n return [p.x, p.y];\r\n }\r\n }\r\n\r\n\r\n protected _update() {\r\n if (this._map) {\r\n this._updatePath();\r\n }\r\n }\r\n\r\n protected _updatePath() {\r\n this._drawMarker();\r\n }\r\n\r\n protected _empty() {\r\n return !this._renderer || !this._renderer['_bounds'].intersects(this._pxBounds);\r\n }\r\n\r\n // Needed by the `Canvas` renderer for interactivity\r\n protected _containsPoint(p) {\r\n const rp = CanvasMarker._rot(p, -this._angle, this._origin);\r\n return this._bounds.contains(rp);\r\n }\r\n\r\n\r\n // factory\r\n\r\n with(setOptions: (options: CanvasMarkerOptions) => void): this {\r\n setOptions(this.options);\r\n return this;\r\n }\r\n\r\n withIcon(iconOrOptions: Icon | UssMapIcon | UssMapIconOptions): this {\r\n if (iconOrOptions instanceof Icon) {\r\n this.options.icon = iconOrOptions;\r\n } else {\r\n this.options.icon = (UssMapIcon.create(iconOrOptions));\r\n }\r\n return this;\r\n }\r\n\r\n /*\r\n withDraggable(draggable: boolean | LeafletEventHandlerFn = true): this {\r\n this.options.draggable = !!draggable;\r\n if (typeof draggable === 'function')\r\n this.on('dragend', e => draggable(e));\r\n return this;\r\n }\r\n */\r\n\r\n \r\n\r\n withClickable(clickable: boolean | LeafletEventHandlerFn = true): this {\r\n if (!!clickable) this.options.interactive = true;\r\n if (typeof clickable === 'function')\r\n this.on('click', e => clickable(e));\r\n return this;\r\n }\r\n\r\n withTitle(title: string | string[], titleStyle?: CanvasTextStyle | CanvasTextStyle[], isTitleVisible?: boolean | ((map: Map) => boolean)): this {\r\n this.options.title = title;\r\n this.options.titleStyle = titleStyle;\r\n this.options.isTitleVisible = isTitleVisible;\r\n this.updateTitle();\r\n return this;\r\n }\r\n\r\n withRotation(angle: number, units?: TRotationUnits/*, origin?: TRotationOrigin*/): this {\r\n this.options.rotationAngle = angle;\r\n this.options.rotationUnits = units || this.options.rotationUnits;\r\n // this.options.rotationOrigin = origin || this.options.rotationOrigin;\r\n return this;\r\n }\r\n\r\n bindPopup(content: ((layer: Layer) => Content) | Content | Popup, options?: PopupOptions): this {\r\n if (content) {\r\n this.options.interactive = true;\r\n super.bindPopup(content, options);\r\n }\r\n return this;\r\n }\r\n\r\n bindTooltip(content: ((layer: Layer) => Content) | Content | Tooltip, options?: TooltipOptions): this {\r\n if (content) {\r\n this.options.interactive = true;\r\n super.bindTooltip(content, options);\r\n }\r\n return this;\r\n }\r\n\r\n private _titleSettings = {\r\n isValid: false,\r\n title: null,\r\n style: null,\r\n titles: null,\r\n styles: null,\r\n height: 0,\r\n width: 0,\r\n }\r\n\r\n private updateTitle() {\r\n const ctx = this._renderer && this._renderer['_ctx'];\r\n if (!this.options.title || !ctx) {\r\n this._titleSettings.isValid = false;\r\n }\r\n else if (!this._titleSettings.isValid || this._titleSettings.title !== this.options.title || this._titleSettings.style !== this.options.titleStyle) {\r\n this._titleSettings.isValid = true;\r\n this._titleSettings.title = this.options.title;\r\n this._titleSettings.style = this.options.titleStyle;\r\n this._titleSettings.titles = isArray(this.options.title) ? this.options.title : [this.options.title];\r\n this._titleSettings.styles = isArray(this.options.titleStyle) ? this.options.titleStyle : [(this.options.titleStyle || {})];\r\n if (this._titleSettings.styles.length === 0) this._titleSettings.styles.push({});\r\n this._titleSettings.height = 6;\r\n for (let i = 0; i < this._titleSettings.titles.length; i++) {\r\n const text = this._titleSettings.titles[i];\r\n if (text) {\r\n if (i >= this._titleSettings.styles.length) {\r\n this._titleSettings.styles.push(_.clone(this._titleSettings.styles[i - 1]));\r\n }\r\n const style = this._titleSettings.styles[i];\r\n if (i > 0) {\r\n style.font = style.font || this._titleSettings.styles[i - 1].font;\r\n style.size = style.size || this._titleSettings.styles[i - 1].size;\r\n style.color = style.color || this._titleSettings.styles[i - 1].color;\r\n style.maxWidth = style.maxWidth || this._titleSettings.styles[i - 1].maxWidth;\r\n style.backgroundColor = style.backgroundColor || this._titleSettings.styles[i - 1].backgroundColor;\r\n }\r\n style.size = style.size || 10;\r\n style.fontDescriptor = `${style.size}px ${style.font || 'Verdana, Helvetica'}`;\r\n ctx.font = style.fontDescriptor;\r\n ctx.textAlign = 'left';\r\n ctx.textBaseline = 'top';\r\n style.width = Math.min(ctx.measureText(text).width, style.maxWidth || Number.MAX_VALUE);\r\n this._titleSettings.height += style.size + 6 + 2;\r\n this._titleSettings.width = Math.max(this._titleSettings.width, style.width);\r\n }\r\n }\r\n this._updateBounds();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/markers/CanvasMarker.ts","import { Layer, Map, Marker, LayerOptions, LatLng, LatLngLiteral, Point, Util, LeafletMouseEvent, LeafletEvent } from 'leaflet';\r\nconst Rbush = require('rbush');\r\nconst L: any = window['L'];\r\nimport { MapPoint } from '../directives/map-point';\r\nimport { UssMapIcon } from '../map-icons/map-icon';\r\nimport { ifEmpty, ngRun, throttle } from '@core.module';\r\nimport { CanvasMarker } from './CanvasMarker';\r\nimport { toPointTuple } from '../utils/LeafletHelper';\r\n\r\nexport declare type LeafletEventHandlerFnEx = (event: LeafletEvent, context: any) => void;\r\n\r\ninterface IMarkerPosition {\r\n minX: number;\r\n minY: number;\r\n maxX: number;\r\n maxY: number;\r\n data?: Marker;\r\n}\r\n\r\nexport class CanvasIconLayer extends Layer {\r\n private _onClickListeners: LeafletEventHandlerFnEx[];\r\n private _onHoverListeners: LeafletEventHandlerFnEx[];\r\n // Points of markers currently displaying on map\r\n private _markers: any; //Rbush; \r\n // Lat\\Long coordinates of all markers in layer\r\n private _latlngMarkers: any; //Rbush;\r\n private _imageLookup: { [iconUrl: string]: any[] }; // [ Image, false, [[marker, pointPos]] ]\r\n /** Маркер, для которого открыт tooltip */\r\n private _openedToolTip: Marker;\r\n /** Маркер, для которого открыт popup */\r\n private _openedPopup: Marker;\r\n\r\n private _canvas: HTMLCanvasElement;\r\n private _context: CanvasRenderingContext2D;\r\n\r\n\r\n //Add event listeners to initialized section.\r\n initialize(options: LayerOptions) {\r\n L.setOptions(this, options);\r\n this._onClickListeners = [];\r\n this._onHoverListeners = [];\r\n }\r\n\r\n setOptions(options: LayerOptions) {\r\n L.setOptions(this, options);\r\n return this.redraw();\r\n }\r\n\r\n redraw() {\r\n throttle(() => this._redraw(true), 100, 'CanvasIconLayer._redraw');\r\n }\r\n\r\n // Multiple layers at a time for rBush performance\r\n addMarkers(markers: Marker[]) {\r\n// console.log('Add markers', markers);\r\n const tmpMark: any[] = [];\r\n const tmpLatLng: any[] = [];\r\n markers.forEach(marker => {\r\n var latlng = marker.getLatLng();\r\n var isDisplaying = this._map.getBounds().contains(latlng);\r\n var dat = this._addMarker(marker, latlng, isDisplaying);\r\n //Only add to Point Lookup if we are on map\r\n if (isDisplaying === true) tmpMark.push(dat[0]);\r\n tmpLatLng.push(dat[1]);\r\n marker['_canvasIconLayer'] = this;\r\n });\r\n this._markers.load(tmpMark);\r\n this._latlngMarkers.load(tmpLatLng);\r\n }\r\n\r\n //Adds single layer at a time. Less efficient for rBush\r\n addMarker(marker: Marker) {\r\n// console.log('Add marker', marker);\r\n this.addMarkers([marker]);\r\n }\r\n\r\n addLayer(layer: Marker) {\r\n if ((layer.options.pane === 'markerPane') && layer.options.icon)\r\n this.addMarker(layer);\r\n else\r\n console.error('Layer isn\\'t a marker');\r\n }\r\n\r\n addLayers(layers: Marker[]) {\r\n this.addMarkers(layers);\r\n }\r\n\r\n removeLayer(layer: Marker) {\r\n this.removeMarker(layer, true);\r\n }\r\n\r\n clear() {\r\n this._latlngMarkers = null;\r\n this._markers = null;\r\n if (this._openedToolTip) {\r\n this._openedToolTip.closeTooltip();\r\n delete this._openedToolTip;\r\n }\r\n if (this._openedPopup) {\r\n this._openedPopup.closePopup();\r\n delete this._openedPopup;\r\n }\r\n this.redraw();\r\n }\r\n\r\n removeMarker(marker: Marker | IMarkerPosition, redraw: boolean) {\r\n //If we are removed point\r\n if ((marker).minX)\r\n marker = (marker).data;\r\n else\r\n marker = marker;\r\n\r\n if (marker === this._openedToolTip) {\r\n this._openedToolTip.closeTooltip();\r\n delete this._openedToolTip;\r\n }\r\n if (marker === this._openedPopup) {\r\n this._openedPopup.closePopup();\r\n delete this._openedPopup;\r\n }\r\n\r\n\r\n const latlng = marker.getLatLng();\r\n const isDisplaying = this._map.getBounds().contains(latlng);\r\n const markerData: IMarkerPosition = {\r\n minX: latlng.lng,\r\n minY: latlng.lat,\r\n maxX: latlng.lng,\r\n maxY: latlng.lat,\r\n data: marker\r\n };\r\n this._latlngMarkers.remove(markerData, (a, b) => a.data._leaflet_id === b.data._leaflet_id);\r\n this._latlngMarkers.total--;\r\n this._latlngMarkers.dirty++;\r\n if (isDisplaying === true && redraw === true) {\r\n this.redraw();\r\n }\r\n }\r\n\r\n onAdd(map: Map): this {\r\n this._map = map;\r\n if (!this._canvas) this._initCanvas();\r\n if (this['options'].pane) {\r\n this.getPane().appendChild(this._canvas);\r\n } else {\r\n map['_panes'].overlayPane.appendChild(this._canvas);\r\n }\r\n /*\r\n map.on('moveend', this._reset, this);\r\n map.on('resize', this._reset, this);\r\n */\r\n map.on('click', this._executeListeners, this);\r\n map.on('mousemove', this._executeListeners, this);\r\n\r\n map.on('movestart', this._executeLockRedraw, this);\r\n map.on('zoomstart', this._executeLockRedraw, this);\r\n map.on('moveend', this._executeLockRedraw, this);\r\n map.on('zoomend', this._executeLockRedraw, this);\r\n\r\n map.on('zoomend', this._sendToMarkers, this);\r\n return this;\r\n }\r\n\r\n onRemove(map: Map): this {\r\n if (this['options'].pane) this.getPane().removeChild(this._canvas);\r\n else map.getPanes().overlayPane.removeChild(this._canvas);\r\n\r\n map.off('click', this._executeListeners, this);\r\n map.off('mousemove', this._executeListeners, this);\r\n\r\n /*\r\n map.off('moveend', this._reset, this);\r\n map.off('resize', this._reset, this);\r\n */\r\n\r\n map.off('movestart', this._executeLockRedraw, this);\r\n map.off('zoomstart', this._executeLockRedraw, this);\r\n map.off('moveend', this._executeLockRedraw, this);\r\n map.off('zoomend', this._executeLockRedraw, this);\r\n map.off('zoomend', this._sendToMarkers, this);\r\n\r\n return this;\r\n }\r\n\r\n //#region - Event Listeners -\r\n addOnClickListener(listener: LeafletEventHandlerFnEx) {\r\n this._onClickListeners.push(listener);\r\n }\r\n\r\n addOnHoverListener(listener: LeafletEventHandlerFnEx) {\r\n this._onHoverListeners.push(listener);\r\n }\r\n\r\n private _sendToMarkers(e: LeafletMouseEvent) {\r\n this._latlngMarkers?.all().forEach(x => {\r\n x.data.fire(e.type, e);\r\n });\r\n }\r\n\r\n private _executeLockRedraw(event: LeafletMouseEvent) {\r\n if (event.type === 'movestart' || event.type === 'zoomstart') {\r\n if (event.type === 'zoomstart') {\r\n this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);\r\n }\r\n this._lockRedraw = true;\r\n } else {\r\n this._lockRedraw = false;\r\n setTimeout(() => this._reset());\r\n }\r\n }\r\n\r\n private _executeListeners(event: LeafletMouseEvent) {\r\n if (!this._markers || !event.containerPoint || this._lockRedraw) return;\r\n const x = event.containerPoint.x;\r\n const y = event.containerPoint.y;\r\n if (this._openedToolTip) {\r\n //console.log('close_tooltip');\r\n this._openedToolTip.closeTooltip();\r\n delete this._openedToolTip;\r\n }\r\n\r\n var ret = this._markers.search({ minX: x, minY: y, maxX: x, maxY: y })\r\n .where(e => e.data?.options && e.data.options['visible'] !== false)\r\n .orderByDescending(e => ifEmpty(e.data?.options?.zIndex, Number.MIN_VALUE))\r\n .toArray();\r\n if (ret && ret.length > 0) {\r\n this._map['_container'].style.cursor = 'pointer';\r\n if (event.type === 'click') {\r\n this._onClickListeners.forEach((listener) => listener(event, ret));\r\n if (ret[0].data['$mapPoint'] instanceof MapPoint && typeof ret[0].data['$mapPoint'].onClick === 'function') {\r\n ngRun(() => ret[0].data['$mapPoint'].onClick(event, ret[0].data));\r\n } else {\r\n const hasPopup = ret[0].data.getPopup();\r\n if (hasPopup) {\r\n //console.log('open popup');\r\n this._openedPopup = ret[0].data.openPopup();\r\n } else {\r\n const hasTooltip = ret[0].data.getTooltip();\r\n if (hasTooltip) {\r\n //console.log('open tooltip');\r\n this._openedToolTip = ret[0].data.openTooltip();\r\n }\r\n }\r\n }\r\n }\r\n if (event.type === 'mousemove') {\r\n if (!ret[0].data.isPopupOpen()) {\r\n const hasTooltip = ret[0].data.getTooltip();\r\n if (hasTooltip) {\r\n //console.log('open tooltip');\r\n this._openedToolTip = ret[0].data.openTooltip();\r\n }\r\n }\r\n this._onHoverListeners.forEach((listener) => listener(event, ret));\r\n ret[0].data.fire('mousemove', event);\r\n }\r\n } else {\r\n this._map['_container'].style.cursor = '';\r\n }\r\n }\r\n //#endregion - Event Listeners -\r\n\r\n addTo(map: Map): this {\r\n map.addLayer(this);\r\n return this;\r\n }\r\n\r\n private _createMarkerPosition(marker: Marker, pointPos: Point): IMarkerPosition {\r\n const [width, height] = toPointTuple(marker.options.icon.options.iconSize);\r\n const [anchorX, anchorY] = toPointTuple(marker.options.icon.options.iconAnchor, marker.options.icon.options.iconSize);\r\n const adjMinX = anchorX;\r\n const adjMaxX = width - adjMinX;\r\n const adjMinY = anchorY;\r\n const adjMaxY = height - adjMinY;\r\n return {\r\n minX: (pointPos.x - adjMinX),\r\n minY: (pointPos.y - adjMinY),\r\n maxX: (pointPos.x + adjMaxX),\r\n maxY: (pointPos.y + adjMaxY),\r\n data: marker\r\n };\r\n }\r\n\r\n private _addMarker(marker: Marker, latlng: LatLng | LatLngLiteral, isDisplaying: boolean): IMarkerPosition[] {\r\n// console.log('Add marker', marker);\r\n // Needed for pop-up & tooltip to work.\r\n marker['_map'] = this._map;\r\n\r\n // _markers contains Points of markers currently displaying on map\r\n if (!this._markers) this._markers = new Rbush();\r\n\r\n // _latlngMarkers contains Lat\\Long coordinates of all markers in layer.\r\n if (!this._latlngMarkers) {\r\n this._latlngMarkers = new Rbush();\r\n this._latlngMarkers.dirty = 0;\r\n this._latlngMarkers.total = 0;\r\n }\r\n\r\n Util.stamp(marker);\r\n\r\n const pointPos = this._map.latLngToContainerPoint(latlng);\r\n const ret = [\r\n this._createMarkerPosition(marker, pointPos),\r\n ({\r\n minX: latlng.lng,\r\n minY: latlng.lat,\r\n maxX: latlng.lng,\r\n maxY: latlng.lat,\r\n data: marker\r\n })\r\n ];\r\n\r\n this._latlngMarkers.dirty++;\r\n this._latlngMarkers.total++;\r\n\r\n marker.fire('add', { type: 'add', target: marker, sourceTarget: marker, propagatedFrom: this, layer: this });\r\n\r\n // Only draw if we are on map\r\n if (isDisplaying === true) {\r\n this.redraw();\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n private _lockRedraw = false;\r\n\r\n private _reset() {\r\n const topLeft = this._map.containerPointToLayerPoint([0, 0]);\r\n L.DomUtil.setPosition(this._canvas, topLeft);\r\n const size = this._map.getSize();\r\n this._canvas.width = size.x;\r\n this._canvas.height = size.y;\r\n this._redraw();\r\n }\r\n\r\n private _drawImage(marker: Marker, pointPos: Point) {\r\n const options = marker.options.icon.options;\r\n\r\n const [w, h] = toPointTuple(options.iconSize);\r\n let [x, y] = toPointTuple(options.iconAnchor, options.iconSize);\r\n x = pointPos.x - x;\r\n y = pointPos.y - y;\r\n\r\n if (marker instanceof CanvasMarker && (marker._angle || marker.onDrawing)) {\r\n this._context.save(); //saves the state of canvas\r\n if (typeof marker.onDrawing === 'function') {\r\n marker.onDrawing(this._context, [x, y, w, h], marker['canvas_img'], marker._angle, marker);\r\n } else {\r\n this._context.translate(x + w/2, y + h/2);\r\n this._context.rotate(marker._angle);\r\n this._context.drawImage(marker['canvas_img'], -w/2, -h/2, w, h);\r\n }\r\n this._context.restore();\r\n } else {\r\n this._context.drawImage(marker['canvas_img'], x, y, w, h);\r\n }\r\n //console.log('_drawImage', marker);\r\n }\r\n\r\n private _drawMarker(marker: Marker, pointPos: Point) {\r\n if (this._lockRedraw) return;\r\n if (marker.options['visible'] === false) {\r\n return;\r\n }\r\n// console.log('draw marker', canvasContext);\r\n if (!this._imageLookup) this._imageLookup = {};\r\n if (!pointPos) {\r\n pointPos = this._map.latLngToContainerPoint(marker.getLatLng());\r\n }\r\n const isSvg = marker.options.icon.options.iconUrl.EndsWith('.svg', true);\r\n const color = marker.options.icon.options['color'];\r\n const iconUrl = `${marker.options.icon.options.iconUrl}?${color}`;\r\n if (marker['canvas_img'] && marker['canvas_img_iconUrl'] === iconUrl) {\r\n this._drawImage(marker, pointPos);\r\n } else {\r\n marker['canvas_img_iconUrl'] = iconUrl;\r\n if (this._imageLookup[iconUrl]) {\r\n marker['canvas_img'] = this._imageLookup[iconUrl][0];\r\n\r\n if (this._imageLookup[iconUrl][1] === false) {\r\n this._imageLookup[iconUrl][2].push([marker, pointPos]);\r\n } else {\r\n this._drawImage(marker, pointPos);\r\n }\r\n } else {\r\n //Image,isLoaded,marker\\pointPos ref\r\n const i = new Image();\r\n this._imageLookup[iconUrl] = [i, false, [[marker, pointPos]]];\r\n marker['canvas_img'] = i;\r\n i.onload = () => {\r\n this._imageLookup[iconUrl][1] = true;\r\n this._imageLookup[iconUrl][2].forEach((e) => this._drawImage(e[0], e[1]));\r\n }\r\n if (isSvg) {\r\n const svg = UssMapIcon.createSvgElement(iconUrl, color);\r\n if (svg instanceof Promise) {\r\n svg.then(s => svgToImage(i, s));\r\n } else {\r\n svgToImage(i, svg);\r\n }\r\n } else {\r\n i.src = iconUrl;\r\n }\r\n }\r\n }\r\n\r\n function svgToImage(i: HTMLImageElement, svg: HTMLElement) {\r\n // get svg data\r\n const xml = new XMLSerializer().serializeToString(svg);\r\n // make it base64 & prepend a \"header\"\r\n const image64 = `data:image/svg+xml;base64,${btoa(xml)}`;\r\n i.src = image64;\r\n }\r\n }\r\n\r\n private _redraw(clear?: boolean) {\r\n if (this._lockRedraw) return;\r\n //console.log('Redraw: ', clear);\r\n if (clear) this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);\r\n if (!this._map || !this._latlngMarkers) return;\r\n let tmp = [];\r\n\r\n //If we are 10% individual inserts\\removals, reconstruct lookup for efficiency\r\n if (this._latlngMarkers.dirty / this._latlngMarkers.total >= .1) {\r\n this._latlngMarkers.all().forEach((e) => tmp.push(e));\r\n this._latlngMarkers.clear();\r\n this._latlngMarkers.load(tmp);\r\n this._latlngMarkers.dirty = 0;\r\n tmp = [];\r\n }\r\n const mapBounds = this._map.getBounds();\r\n //Only re-draw what we are showing on the map.\r\n const mapBoxCoords = {\r\n minX: mapBounds.getWest()/* - 1*/,\r\n minY: mapBounds.getSouth()/* - 1*/,\r\n maxX: mapBounds.getEast()/* + 1*/,\r\n maxY: mapBounds.getNorth()/* + 1*/,\r\n };\r\n\r\n // отрисовка всех маркеров\r\n const dm = [];\r\n this._latlngMarkers.search(mapBoxCoords).orderBy(e => ifEmpty(e.data?.options?.zIndex, Number.MIN_VALUE)).forEach(e => {\r\n // Readjust Point Map\r\n const pointPos = this._map.latLngToContainerPoint(e.data.getLatLng());\r\n const newCoords = this._createMarkerPosition(e.data, pointPos);\r\n tmp.push(newCoords);\r\n const marker = e.data;\r\n if (marker.options['visible'] !== false) {\r\n // Redraw points\r\n this._drawMarker(marker, pointPos);\r\n //console.log('_drawMarker', marker);\r\n marker.$mapPoint?.$transport?.regNumber && dm.push(marker.$mapPoint?.$transport?.regNumber);\r\n }\r\n });\r\n// console.log(`---(${dm.length})----------> ${dm.orderBy(x => x).toArray().join(',')}`)\r\n\r\n // Clear rBush & Bulk Load for performance\r\n this._markers.clear();\r\n this._markers.load(tmp);\r\n }\r\n\r\n private _initCanvas() {\r\n this._canvas = L.DomUtil.create('canvas', 'leaflet-canvas-icon-layer leaflet-layer');\r\n const originProp = L.DomUtil.testProp(['transformOrigin', 'WebkitTransformOrigin', 'msTransformOrigin']) as string;\r\n this._canvas.style[originProp] = '50% 50%';\r\n const size = this._map.getSize();\r\n this._canvas.width = size.x;\r\n this._canvas.height = size.y;\r\n this._context = this._canvas.getContext('2d');\r\n const animated = this._map.options.zoomAnimation && L.Browser.any3d;\r\n L.DomUtil.addClass(this._canvas, 'leaflet-zoom-' + (animated ? 'animated' : 'hide'));\r\n this._canvas.style.pointerEvents = 'none';\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/markers/CanvasIconLayer.ts","import { Map, Layer, LatLng, LatLngExpression, Icon, LatLngLiteral, Content, Popup, Tooltip, LeafletEvent, latLng, CircleMarker, Marker } from 'leaflet';\r\nimport { LeafletHelper, LEAFLET_ASSETS, toDegrees } from '../utils/LeafletHelper';\r\nimport { ifEmpty, isEmpty, debounce, uid, isNotEmpty } from '@core.module';\r\nimport { UssMapIcon } from '../map-icons/map-icon';\r\nimport { CanvasMarker, CanvasTextStyle } from '../markers/CanvasMarker';\r\n\r\nexport type MapPointEventHandlerFn = (event: LeafletEvent, source: Layer) => void;\r\n\r\nexport declare type TMarker = CanvasMarker;\r\nexport declare type TPopup = ((layer: Layer) => Content) | Content | Popup;\r\nexport declare type TTooltip = ((layer: Layer) => Content) | Content | Tooltip;\r\n\r\nexport declare type TPointSource = any;\r\n\r\nexport declare type TMapIcon = 'Default' | 'Car' | 'Poi' | string;\r\nexport declare type TFitToPoint = boolean | 'onadd';\r\n\r\nexport interface IMapPoint {\r\n /** Данные об источнике */\r\n source?: TPointSource;\r\n /** Маркер на карте, соответствующий данной точке */\r\n marker?: TMarker;\r\n /** Координаты точки на карте */\r\n point?: LatLngExpression;\r\n /** Указывает на то, что координаты переданы в радианах */\r\n isRadians?: boolean;\r\n /** Угол на который нужно повернуть иконку (в радианах) */\r\n angle?: number;\r\n /** Иконка, отображаемая для данной точки на карте */\r\n icon?: Icon | UssMapIcon | TMapIcon;\r\n /** Текстовая метка, отображаемая рядом с маркером (или несколько меток - каждая метка выводится на отдельной строке с отдельными стилями). */\r\n title?: string | string[];\r\n /** Стиль текстовой метка (или нескольких меток) */\r\n titleStyle?: CanvasTextStyle | CanvasTextStyle[];\r\n /** Признак видимости заголовка на карте. Заголовок отображается если возвращается не false. */\r\n isTitleVisible?: boolean | ((map: Map) => boolean);\r\n /** Все точки, имеющие признак fitToPoint будут отцентрированы на карте так, чтобы были все видимые */\r\n fitToPoint?: TFitToPoint;\r\n /** Маркер реагирует на клик мышкой */\r\n onClick?: MapPointEventHandlerFn;\r\n popup?: TPopup;\r\n tooltip?: TTooltip;\r\n\r\n /** Дополнительные слои, рисуемые вместе с маркером */\r\n subLayers?: (CircleMarker | Marker | TMarker | Layer)[];\r\n}\r\n\r\nexport class MapPoint implements IMapPoint, LatLngLiteral {\r\n id = uid();\r\n /** Данные об источнике */\r\n source: TPointSource;\r\n /** Координаты точки на карте */\r\n point: LatLng;\r\n /** Указывает на то, что координаты переданы в радианах */\r\n isRadians: boolean = false;\r\n /** Угол на который нужно повернуть иконку (в радианах) */\r\n angle?: number = 0;\r\n /** Иконка, отображаемая для данной точки на карте */\r\n icon: Icon | UssMapIcon;\r\n /** Текстовая метка, отображаемая рядом с маркером (или несколько меток - каждая метка выводится на отдельной строке с отдельными стилями). */\r\n title?: string | string[];\r\n /** Стиль текстовой метки (или нескольких меток) */\r\n titleStyle?: CanvasTextStyle | CanvasTextStyle[];\r\n /** Признак видимости заголовка на карте. Заголовок отображается если возвращается не false. */\r\n isTitleVisible?: boolean | ((map: Map) => boolean);\r\n /** Все точки, имеющие признак fitToPoint будут отцентрированы на карте так, чтобы были все видимые */\r\n fitToPoint?: TFitToPoint;\r\n /** Маркер реагирует на клик мышкой */\r\n onClick: MapPointEventHandlerFn;\r\n popup: TPopup;\r\n tooltip: TTooltip;\r\n\r\n /** Дополнительные слои, рисуемые вместе с маркером */\r\n subLayers?: (CircleMarker | Marker | TMarker | Layer)[] = [];\r\n\r\n /** Если установлено - будет вызываться всякий раз при изменении координат, угла или иконки */\r\n redraw: () => void;\r\n\r\n /** Признак того, что иконка прорисовывается нестандартными методами, например напрямую на канвасе или средствами d3\r\n * В этом случае метод this.setIcon() не будет вызываться.\r\n */\r\n isCustomIconDrawing: boolean;\r\n\r\n /**\r\n * Ссылка на карту на которой находится маркер\r\n */\r\n get map(): Map {\r\n return (this._marker || this.marker) && this._marker['_map'];\r\n }\r\n\r\n private _updateDebounceTag = `@${this.id}.map-point.update`;\r\n\r\n private bindTooltip(l: Layer, tooltip?: TTooltip): Layer {\r\n tooltip = tooltip || this.tooltip;\r\n if (tooltip) {\r\n const tooltipLayer = l.getTooltip();\r\n if (tooltipLayer) {\r\n const tooltipContent = (tooltip instanceof Tooltip) ? tooltip.getContent() : tooltip;\r\n tooltipLayer.setContent(tooltipContent);\r\n } else {\r\n l.bindTooltip(tooltip);\r\n }\r\n }\r\n return l;\r\n }\r\n\r\n private bindPopup(l: Layer, popup?: TPopup): Layer {\r\n popup = popup || this.popup;\r\n if (popup) {\r\n const popupLayer = l.getPopup();\r\n if (popupLayer) {\r\n const popupContent = (popup instanceof Popup) ? popup.getContent() : popup;\r\n popupLayer.setContent(popupContent);\r\n } else {\r\n l.bindPopup(popup);\r\n }\r\n }\r\n return l;\r\n }\r\n\r\n addSubLayersOnMap() {\r\n this.subLayers && this.map && this.subLayers.forEach(l => {\r\n if (!l['$added']) {\r\n l['$added'] = true;\r\n if (typeof l['setLatLng'] === 'function') {\r\n l['setLatLng'](this).addTo(this.map);\r\n } else {\r\n l.addTo(this.map);\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeSubLayersFromMap() {\r\n this.subLayers && this.map && this.subLayers.forEach(l => {\r\n l.removeFrom(this.map);\r\n });\r\n }\r\n\r\n update(immediate?: boolean): this {\r\n if (immediate) {\r\n this.marker.options.icon = this.icon;\r\n this.marker\r\n .withTitle(this.title, this.titleStyle, this.isTitleVisible)\r\n .withRotation(this.angle, this.isRadians ? 'rad' : 'deg');\r\n\r\n if (!this.isCustomIconDrawing) {\r\n this.marker.setRotation(this.angle);\r\n this.marker.setIcon(this.icon);\r\n }\r\n\r\n if (this.tooltip) {\r\n this.bindTooltip(this.marker);\r\n this.subLayers && this.subLayers.forEach(l => this.bindTooltip(l));\r\n }\r\n if (this.popup) {\r\n this.bindPopup(this.marker);\r\n this.subLayers && this.subLayers.forEach(l => this.bindPopup(l));\r\n }\r\n this.marker.setLatLng(this);\r\n //this.addSubLayersOnMap();\r\n /*\r\n if (this.fitToPoint === 'onadd') {\r\n this.fitToPoint = undefined;\r\n LeafletHelper.fitTo(this.marker);\r\n }\r\n */\r\n if (typeof this.redraw === 'function') {\r\n this.redraw();\r\n }\r\n } else {\r\n debounce(() => {\r\n this.update(true);\r\n }, 0, this._updateDebounceTag);\r\n }\r\n return this;\r\n }\r\n\r\n static create(point: LatLngExpression | MapPoint, extra?: IMapPoint): MapPoint {\r\n let res: MapPoint = null;\r\n if (point || (extra && extra.point)) {\r\n if (point instanceof MapPoint) {\r\n res = point;\r\n res.source = point;\r\n } else {\r\n res = new MapPoint();\r\n res.source = point;\r\n res.point = latLng(point);\r\n }\r\n if (extra) {\r\n res.assign(extra);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n\r\n assign(extra: IMapPoint): this {\r\n this.isRadians = ifEmpty(extra.isRadians, this.isRadians);\r\n if (isNotEmpty(extra.point)) {\r\n this.point = latLng(extra.point);\r\n }\r\n this.fitToPoint = ifEmpty(extra.fitToPoint, this.fitToPoint);\r\n this.source = ifEmpty(extra.source, this.source);\r\n extra.tooltip && (this.tooltip = extra.tooltip);\r\n extra.popup && (this.popup = extra.popup);\r\n extra.title && (this.title = extra.title);\r\n extra.titleStyle && (this.titleStyle = extra.titleStyle);\r\n this.isTitleVisible = ifEmpty(extra.isTitleVisible, this.isTitleVisible);\r\n extra.subLayers && (this.subLayers = extra.subLayers);\r\n this.angle = ifEmpty(extra.angle, this.angle);\r\n typeof extra.onClick === 'function' && (this.onClick = extra.onClick);\r\n if (typeof extra.icon === 'string') {\r\n this.icon = LeafletHelper.Icons[extra.icon];\r\n if (isEmpty(this.icon)) {\r\n // такой иконки нет - попробуем создать её\r\n if (extra.icon.EndsWith('.svg', true) || extra.icon.EndsWith('.png', true)) {\r\n // это может быть ссылка на .png или .svg файл\r\n let fileName = extra.icon.substr(0, (extra.icon).length - 4);\r\n const fileExt = extra.icon.substr((extra.icon).length - 3, 3);\r\n if (!fileName.startsWith('/')) {\r\n fileName = `${LEAFLET_ASSETS}/icons/${fileName}`;\r\n }\r\n this.icon = UssMapIcon.create({\r\n iconUrl: `${fileName}.${fileExt}`,\r\n iconSize: [20, 20],\r\n iconAnchor: [10, 10],\r\n });\r\n } else {\r\n // или это может быть название иконки из FontAwesome\r\n this.icon = UssMapIcon.create({ fontIcon: extra.icon, iconSize: [16, 16] });\r\n }\r\n\r\n\r\n }\r\n } else {\r\n this.icon = ifEmpty(extra.icon, this.icon);\r\n }\r\n this.update();\r\n return this;\r\n }\r\n\r\n /** Широта точки в градусах */\r\n get lat(): number {\r\n let res: number = null;\r\n let p: LatLng = null;\r\n if (this.point && this.point['lat'])\r\n res = this.point['lat'];\r\n else if (LeafletHelper.isLatLngExpression(this.point, e => p = e)) {\r\n res = p ? p.lat : null;\r\n }\r\n return toDegrees(res, this.isRadians);\r\n }\r\n\r\n /** Долготоа точки в градусах */\r\n get lng(): number {\r\n let res: number = null;\r\n let p: LatLng = null;\r\n if (this.point && this.point['lng'])\r\n res = this.point['lng'];\r\n else if (LeafletHelper.isLatLngExpression(this.point, e => p = e)) {\r\n res = p ? p.lng : null;\r\n }\r\n return toDegrees(res, this.isRadians);\r\n }\r\n\r\n createMarker(): TMarker {\r\n return LeafletHelper.createCanvasMarker(this)\r\n .withIcon(this.icon || LeafletHelper.Icons['Default'])\r\n .withTitle(this.title, this.titleStyle, this.isTitleVisible)\r\n .withRotation(this.angle, this.isRadians ? 'rad' : 'deg')\r\n .withClickable(this.onClick ? e => this.onClick(e, this._marker) : false);\r\n }\r\n\r\n\r\n protected _marker: TMarker;\r\n getMarker(): TMarker {\r\n if (!this._marker) {\r\n this._marker = this.createMarker();\r\n this._marker.once('add', () => {\r\n this.addSubLayersOnMap();\r\n this._marker['$addedOnMap'] = true;\r\n if (this.fitToPoint === 'onadd') {\r\n this.fitToPoint = undefined;\r\n LeafletHelper.fitTo(this.marker);\r\n }\r\n this._marker.onDrawing = this.icon?.options['onDrawing'];\r\n });\r\n this._marker.once('remove', () => {\r\n this._marker['$addedOnMap'] = false;\r\n this.removeSubLayersFromMap();\r\n });\r\n this._marker['$mapPoint'] = this;\r\n this._marker.onDrawing = this.icon?.options['onDrawing'];\r\n this.tooltip && this._marker.bindTooltip(this.tooltip);\r\n this.popup && this._marker.bindPopup(this.popup);\r\n }\r\n\r\n if (this._marker['$addedOnMap']) {\r\n this.addSubLayersOnMap();\r\n }\r\n return this._marker;\r\n }\r\n /** Маркер на карте, соответствующий данной точке */\r\n get marker(): TMarker {\r\n return this.getMarker();\r\n }\r\n}\r\n\r\nexport declare type TMapPoint = LatLngExpression | MapPoint;\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/directives/map-point.ts","import { Observable } from 'rxjs';\r\nimport { Point, Feature, LineString } from 'geojson';\r\nimport { LatLngExpression, Map } from 'leaflet';\r\nimport { Address } from '../address/Address';\r\nimport { TAddressServiceName } from '../utils/LeafletHelper';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { IGeoAddressService } from '.';\r\n\r\nexport const APP_ADDRESS_SERVICE_TOKEN = new InjectionToken('IAppAddressService');\r\n\r\nexport declare type TAddressSourceName = TAddressServiceName | string | Map | any/* | MapDirective*/;\r\n\r\nexport interface IAppAddressService {\r\n\r\n defaultSource: TAddressSourceName;\r\n\r\n /** Возвращает гео сервис для работы с адресами */\r\n geoService(source?: TAddressSourceName): IGeoAddressService;\r\n\r\n /**\r\n * Ищет адреса по названию. Возвращает список адресов, в названии которых встречаются указанные слова в виде подстроки.\r\n * @param query перечень искомых подстрок, разделённых пробелом или запятой.\r\n * @param source название сервиса для получения данных. По умолчанию берётся из LeafletHelper.Defaults.defaultAddressService.\r\n * @param limit ограничение на кол-во выдаваемых адресов. По умолчанию равно 50.\r\n */\r\n get$(query: string, source?: TAddressSourceName, limit?: number): Observable;\r\n /**\r\n * Выполняет поиск адреса по координатам (обратное геокодирование).\r\n * Возвращает ближайший к точке адрес или ничего, если адрес не найден.\r\n * @param coordinate точка для координат которой необходимо выполнить поиск адреса.\r\n * @param radius радиус в котором необходимо искать адрес.\r\n */\r\n get$(coordinate: Point | LatLngExpression, source?: TAddressSourceName, radius?: number): Observable
;\r\n\r\n /**\r\n * Получение геометрии по объекту.\r\n * Если объект с указанным id не найден — возвращается пустой обсервер.\r\n */\r\n feature$(id: string | number, source?: TAddressSourceName, params?: object): Observable;\r\n\r\n /**\r\n * Прокладывает маршрут из одной точки в другую.\r\n * @param origin Точка от которой нужно проложить маршрут\r\n * @param destination Точка куда нужно проложить маршрут\r\n * @param wayPoints Список промежуточных точек, через которые должен пройти маршрут\r\n * @param locks Список промежуточных точек, через которые не должен проходить маршрут\r\n * @param source Какой адресный сервис использовать\r\n */\r\n getRoute$(origin: Point | LatLngExpression, destination: Point | LatLngExpression,\r\n wayPoints?: (Point | LatLngExpression)[], locks?: (Point | LatLngExpression)[],\r\n source?: TAddressSourceName): Observable;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/IAppAddressService.ts","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { LatLngExpression } from 'leaflet';\r\nimport { AppService, ApiMethod, ApiService, translate } from '@core.module';\r\nimport { UssCacheApiService } from '@cache.module';\r\nimport { FeatureParams, IncludeGeometry, GeocodeParams } from './params';\r\nimport { Category, VisicomFeature, AdmLevel1, AdrAddress } from './classes';\r\nimport { FeatureCollection, Point, LineString, Geometry } from 'geojson';\r\nimport { IGeoAddressService } from \"../../services/IGeoAddressService\";\r\nimport { DistanceParams } from './params/DistanceParams';\r\nimport { LeafletHelper } from '../../utils/LeafletHelper';\r\n\r\n@Injectable()\r\n@AppService()\r\n@ApiService('//api.visicom.ua/data-api/5.0')\r\nexport class AppVisicomService extends UssCacheApiService implements IGeoAddressService {\r\n\r\n handleSearchResult(r: FeatureCollection | VisicomFeature): TResult[] {\r\n let res: TResult[] = r;\r\n if (!r || !r.type) {\r\n res = [];\r\n }\r\n else if (r.type === 'Feature') {\r\n res = ([r]);\r\n }\r\n else if (r.type === 'FeatureCollection') {\r\n res = (r.features || []);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Поиск стран, объектов административно-территориального деления, городов, улиц, адресов и точек интереса, а также обратное геокодирование.\r\n * Запрос позволяет получать данные по координатам (геозапрос) и по тексту.\r\n * В запросе указывается категория интересующих данных и параметры поиска.\r\n * Этот запрос не возвращает всей геометрии объекта, только гео-центроид (geo_centroid) и ограничивающую рамку (bbox).\r\n * В ответе для каждого объекта указан url для получения полной геометрии.\r\n */\r\n/*\r\n @ApiMethod({ method: 'GET', route: '{lang}/search/{categories}.{format}', cache: 'viscom' })\r\n search$(params: SearchParams | object): Observable {\r\n //\r\n // https://api.visicom.ua/ru/products/data-api/data-api-references/search\r\n //\r\n // Схема запроса:\r\n // https://api.visicom.ua/data-api/4.0/[lang]/search/[categories].[format]?[text|t][&word_text|wt][&near|n|intersect|i|contains|co][&radius|r][&limit|l][&country|c][&key][&callback]\r\n //\r\n return this\r\n .request$(SearchParams.create(params))\r\n .pipe(map(r => this.handleSearchResult(r)));\r\n }\r\n*/\r\n\r\n /**\r\n * Полнотекстовый поиск объектов по всей базе с учетом ошибок и неполноты информации.\r\n * Запрос геокодирования - получение объекта по тексту.\r\n * В отличие от запроса search поиск происходит по всей базе данных, по всем категориям.\r\n * Этот запрос не возвращает всей геометрии объекта, только гео-центроид (geo_centroid) и ограничивающую рамку (bbox).\r\n * В ответе для каждого объекта указан url для получения полной геометрии.\r\n */\r\n @ApiMethod({ method: 'GET', route: '{lang}/geocode.{format}', cache: 'viscom' })\r\n geocode$(params: GeocodeParams | Category | Category[] | string | object): Observable {\r\n //\r\n // https://api.visicom.ua/ru/products/data-api/data-api-references/geocode\r\n //\r\n // Схема запроса:\r\n // https://api.visicom.ua/data-api/4.0/[lang]/geocode[.format]?[text|t][&word_text|wt][&near|n|intersect|i|contains|co][&radius|r][&limit|l][&country|c][&boost_country|bc][&zoom][&key][&callback]\r\n //\r\n return this\r\n .request$(GeocodeParams.create(params))\r\n .pipe(map(r => this.handleSearchResult(r)));\r\n }\r\n\r\n /**\r\n * Получение геометрии и всей информации по объекту.\r\n * Передавая несколько ID объектов через запятую, можно получить геометрию до 255-ти объектов.\r\n * Если объект с указанным id не найден — возвращается пустой обсервер.\r\n * Структура ответа на запрос /feature зависит от значения параметра categories в полученном объекте (список категорий).\r\n */\r\n @ApiMethod({ method: 'GET', route: '{lang}/feature/{id}.{format}', cache: 'viscom' })\r\n feature$(id: string | number, params?: FeatureParams | IncludeGeometry | object): Observable {\r\n //\r\n // https://api.visicom.ua/ru/products/data-api/data-api-references/feature\r\n //\r\n // Схема запроса:\r\n // https://api.visicom.ua/data-api/4.0/[lang]/feature/[id].[format][?key][&callback]\r\n //\r\n return this.request$(FeatureParams.create(id, params));\r\n }\r\n\r\n /**\r\n * Расчет маршрута по двум точкам.\r\n * Есть возможность указать точки, через которые должен и через которые не должен проходить маршрут.\r\n */\r\n @ApiMethod({ method: 'GET', route: 'core/distance.{format}', cache: 'viscom' })\r\n distance$(params: DistanceParams | object): Observable {\r\n //\r\n // https://api.visicom.ua/ru/products/data-api/data-api-references/distance\r\n //\r\n // Схема запроса:\r\n // https://api.visicom.ua/data-api/4.0/core/distance.json?[origin][&destination][&waypoints][&locks][&mode][&accuracy][&key]\r\n //\r\n return this.request$(params);\r\n }\r\n\r\n /**\r\n * Ищет адреса по названию. Возвращает список адресов, в названии которых встречаются указанные слова в виде подстроки.\r\n * @param query перечень искомых подстрок, разделённых пробелом или запятой.\r\n * @param limit ограничение на кол-во выдаваемых адресов. По умолчанию равно 50.\r\n * @param center центр поиска. По умолчанию используется значение LeafletHelper.Defaults.center.\r\n * @param searchArea геометрия или boundongBox, внутри которой следует производить поиск адресов.\r\n * @param categories список категорий для поиска адреса (по умолчанию Category.Address)\r\n */\r\n getAddress$(query: string, limit?: number, center?: Point | LatLngExpression | string, searchArea?: Geometry | LatLngExpression | string | { [key: string]: string[] }, categories?: Category | Category[]): Observable;\r\n /**\r\n * Выполняет поиск адреса по координатам (обратное геокодирование).\r\n * Возвращает ближайший к точке адрес или ничего, если адрес не найден.\r\n * @param coordinate точка для координат которой необходимо выполнить поиск адреса.\r\n * @param radius радиус в котором необходимо искать адрес.\r\n */\r\n getAddress$(coordinate: Point | LatLngExpression, radius?: number): Observable;\r\n getAddress$(p1, p2?, p3?, p4?, p5?): Observable {\r\n if (p1 && typeof p1 === 'object') {\r\n const coordinate = p1;\r\n const radius = p2;\r\n return this.geocode$(GeocodeParams.create()\r\n //return this.geocode$(SearchParams.create()\r\n .with(o => {\r\n if (radius && radius > 0) {\r\n o.withNear(coordinate, radius);\r\n } else {\r\n o.withIntersect(coordinate);\r\n }\r\n })\r\n .withLimit(1))\r\n .pipe(map(r => r[0]));\r\n }\r\n else {\r\n const query = p1;\r\n const limit = p2;\r\n const center = p3;\r\n const searchArea = (p4 && typeof p4 === 'string') ? p4 : LeafletHelper.Defaults.searchGeometry;\r\n const searchSettlement = p4 && typeof p4 === 'object' ? p4 : LeafletHelper.Defaults.searchSettlement;\r\n const categories = p5 || Category.Address;\r\n const searchParams = GeocodeParams.create(categories, query)\r\n .withCategories(categories)\r\n .withCountry(LeafletHelper.Defaults.searchCountry)\r\n .withNear(center || LeafletHelper.Defaults.center)\r\n .withLimit(limit || 50);\r\n\r\n if (searchArea && searchArea.length < 6000) {\r\n searchParams.withContains(searchArea);\r\n }\r\n else if (LeafletHelper.Defaults.viewBox) {\r\n searchParams.withViewbox(LeafletHelper.Defaults.viewBox);\r\n }\r\n if (searchSettlement) {\r\n if (searchSettlement['visicom']) {\r\n searchParams.withContains(searchSettlement['visicom']);\r\n } else {\r\n const settlementName = searchSettlement[translate.currentLang] || searchSettlement['ua'] || searchSettlement['ru'] || searchSettlement['en'];\r\n if (settlementName) {\r\n searchParams.text = `${searchParams.text} ${settlementName}`;\r\n }\r\n }\r\n }\r\n return this.geocode$(searchParams);\r\n }\r\n }\r\n\r\n getRegions$(country: string = 'ua'): Observable {\r\n return this.geocode$(GeocodeParams.create(Category.Region).withNoLimit().withCountry(country));\r\n }\r\n\r\n /**\r\n * Прокладывает маршрут из одной точки в другую.\r\n * @param origin Точка от которой нужно проложить маршрут\r\n * @param destination Точка куда нужно проложить маршрут\r\n * @param wayPoints Список промежуточных точек, через которые должен пройти маршрут\r\n * @param locks Список промежуточных точек, через которые не должен проходить маршрут\r\n */\r\n getRoute$(origin: Point | LatLngExpression, destination: Point | LatLngExpression,\r\n wayPoints?: (Point | LatLngExpression)[], locks?: (Point | LatLngExpression)[]): Observable {\r\n return this.distance$(DistanceParams.create()\r\n .withWayPoints(wayPoints)\r\n .withLocks(locks)\r\n .withGeometry()\r\n .withOrigin(origin)\r\n .withDestination(destination)).map((r: VisicomFeature) => r.geometry);\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/visicom.service.ts","export * from './EventedWorker';\r\nexport * from './ObservableWorker';\r\nexport * from './web-worker.module';\r\nexport * from './WebWorkersManager';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/web-worker.module/index.ts","import { TypedEventEmitter } from '../core.module';\r\n\r\nexport interface IWebWorkerMessage {\r\n type: string;\r\n message: Object;\r\n}\r\n\r\nexport interface IWebWorker {\r\n fromMainThread(channel: string, workers?: Worker[]): TypedEventEmitter;\r\n toMainThread(channel: string, workers?: Worker[]): TypedEventEmitter;\r\n}\r\n\r\nexport class WebWorkersManager implements IWebWorker {\r\n\r\n public static Instance = new WebWorkersManager();\r\n \r\n public static $fromMain(channel: string, workers?: Worker[]): TypedEventEmitter {\r\n return WebWorkersManager.Instance.fromMainThread(channel, workers);\r\n }\r\n\r\n public static $toMain(channel: string, workers?: Worker[]): TypedEventEmitter {\r\n return WebWorkersManager.Instance.toMainThread(channel, workers);\r\n }\r\n\r\n public static $requestMain(channel: string, callback: (val: T) => void, value?: any) {\r\n const sub = WebWorkersManager.$fromMain(channel).subscribe((x: T) => {\r\n\r\n callback(x);\r\n \r\n sub.unsubscribe();\r\n delete WebWorkersManager.Instance._fromMainThread[channel];\r\n });\r\n\r\n const subTo = WebWorkersManager.$toMain(channel).emit(value);\r\n subTo.unsubscribe();\r\n delete WebWorkersManager.Instance._toMainThread[channel];\r\n }\r\n\r\n public fromMainThread(channel: string, workers?: Worker[]): TypedEventEmitter {\r\n if (!this._fromMainThread[channel]) {\r\n this._fromMainThread[channel] = new TypedEventEmitter();\r\n\r\n if (workers) {\r\n for (let worker of workers) {\r\n if (worker) {\r\n ((w) => {\r\n this._fromMainThread[channel].subscribe((e) => {\r\n w.postMessage({ type: channel, message: e });\r\n })})(worker);\r\n }\r\n }\r\n } else {\r\n onmessage = (e) => {\r\n const w = this._fromMainThread[e.data.type];\r\n w && w.emit(e.data.message);\r\n }\r\n }\r\n }\r\n\r\n return >this._fromMainThread[channel];\r\n }\r\n\r\n public toMainThread(channel: string, workers?: Worker[]): TypedEventEmitter {\r\n if (!this._toMainThread[channel]) {\r\n this._toMainThread[channel] = new TypedEventEmitter();\r\n if (workers) {\r\n for (let worker of workers) {\r\n worker.onmessage = (e) => {\r\n this._toMainThread[e.data.type].emit(e.data.message);\r\n }\r\n }\r\n } else {\r\n this._toMainThread[channel].subscribe((e) => {\r\n (postMessage as any)({ type: channel, message: e/*, hashCode: uid()*/ });\r\n });\r\n }\r\n }\r\n return >this._toMainThread[channel];\r\n }\r\n\r\n /* public get fromMainThreadAll(): Array> {\r\n return Object.keys(this._fromMainThread).map((key) => {\r\n return this._fromMainThread[key];\r\n });\r\n }\r\n\r\n public get toMainThreadAll(): Array> {\r\n return Object.keys(this._toMainThread).map((key) => {\r\n return this._toMainThread[key];\r\n });\r\n }*/\r\n \r\n\r\n private _fromMainThread: { [type: string]: TypedEventEmitter } = {};\r\n private _toMainThread: { [type: string]: TypedEventEmitter } = {};\r\n\r\n public unsubscribe(channel?: string) {\r\n Object.keys(this._fromMainThread).where(x => !channel || x.StartsWith(channel)).forEach((key) => {\r\n this._fromMainThread[key].unsubscribe();\r\n delete this._fromMainThread[key];\r\n });\r\n Object.keys(this._toMainThread).where(x => !channel || x.StartsWith(channel)).forEach((key) => {\r\n this._toMainThread[key].unsubscribe();\r\n delete this._toMainThread[key];\r\n });\r\n\r\n //this._fromMainThread = {};\r\n //this._toMainThread = {};\r\n }\r\n\r\n public removeObserver(type: string) {\r\n if (this._fromMainThread[type]) {\r\n this._fromMainThread[type].unsubscribe();\r\n delete this._fromMainThread[type];\r\n }\r\n if (this._toMainThread[type]) {\r\n this._toMainThread[type].unsubscribe();\r\n delete this._toMainThread[type];\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/web-worker.module/WebWorkersManager.ts","export namespace Md5 {\r\n\r\n function utf8_encode(argString) {\r\n // discuss at: http://phpjs.org/functions/utf8_encode/\r\n // original by: Webtoolkit.info (http://www.webtoolkit.info/)\r\n // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\r\n // improved by: sowberry\r\n // improved by: Jack\r\n // improved by: Yves Sucaet\r\n // improved by: kirilloid\r\n // bugfixed by: Onno Marsman\r\n // bugfixed by: Onno Marsman\r\n // bugfixed by: Ulrich\r\n // bugfixed by: Rafal Kukawski\r\n // bugfixed by: kirilloid\r\n // example 1: utf8_encode('Kevin van Zonneveld');\r\n // returns 1: 'Kevin van Zonneveld'\r\n\r\n if (argString === null || typeof argString === 'undefined') {\r\n return '';\r\n }\r\n\r\n // .replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\r\n var string = (argString + '');\r\n var utftext = '',\r\n start,\r\n end,\r\n stringl = 0;\r\n\r\n start = end = 0;\r\n stringl = string.length;\r\n for (var n = 0; n < stringl; n++) {\r\n var c1 = string.charCodeAt(n);\r\n var enc = null;\r\n\r\n if (c1 < 128) {\r\n end++;\r\n } else if (c1 > 127 && c1 < 2048) {\r\n enc = String.fromCharCode(\r\n (c1 >> 6) | 192,\r\n (c1 & 63) | 128\r\n );\r\n } else if ((c1 & 0xF800) !== 0xD800) {\r\n enc = String.fromCharCode(\r\n (c1 >> 12) | 224,\r\n ((c1 >> 6) & 63) | 128,\r\n (c1 & 63) | 128\r\n );\r\n } else {\r\n // surrogate pairs\r\n if ((c1 & 0xFC00) !== 0xD800) {\r\n throw new RangeError('Unmatched trail surrogate at ' + n);\r\n }\r\n var c2 = string.charCodeAt(++n);\r\n if ((c2 & 0xFC00) !== 0xDC00) {\r\n throw new RangeError('Unmatched lead surrogate at ' + (n - 1));\r\n }\r\n c1 = ((c1 & 0x3FF) << 10) + (c2 & 0x3FF) + 0x10000;\r\n enc = String.fromCharCode(\r\n (c1 >> 18) | 240,\r\n ((c1 >> 12) & 63) | 128,\r\n ((c1 >> 6) & 63) | 128,\r\n (c1 & 63) | 128\r\n );\r\n }\r\n if (enc !== null) {\r\n if (end > start) {\r\n utftext += string.slice(start, end);\r\n }\r\n utftext += enc;\r\n start = end = n + 1;\r\n }\r\n }\r\n\r\n if (end > start) {\r\n utftext += string.slice(start, stringl);\r\n }\r\n\r\n return utftext;\r\n }\r\n\r\n export function md5(str) { // Calculate the md5 hash of a string\r\n // \r\n // + original by: Webtoolkit.info (http://www.webtoolkit.info/)\r\n // + namespaced by: Michael White (http://crestidg.com)\r\n\r\n var RotateLeft = function(lValue, iShiftBits) {\r\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\r\n };\r\n\r\n var AddUnsigned = function(lX, lY) {\r\n var lX4, lY4, lX8, lY8, lResult;\r\n lX8 = (lX & 0x80000000);\r\n lY8 = (lY & 0x80000000);\r\n lX4 = (lX & 0x40000000);\r\n lY4 = (lY & 0x40000000);\r\n lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\r\n if (lX4 & lY4) {\r\n return (lResult ^ 0x80000000 ^ lX8 ^ lY8);\r\n }\r\n if (lX4 | lY4) {\r\n if (lResult & 0x40000000) {\r\n return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\r\n } else {\r\n return (lResult ^ 0x40000000 ^ lX8 ^ lY8);\r\n }\r\n } else {\r\n return (lResult ^ lX8 ^ lY8);\r\n }\r\n };\r\n\r\n var F = function(x, y, z) { return (x & y) | ((~x) & z); };\r\n var G = function(x, y, z) { return (x & z) | (y & (~z)); };\r\n var H = function(x, y, z) { return (x ^ y ^ z); };\r\n var I = function(x, y, z) { return (y ^ (x | (~z))); };\r\n\r\n var FF = function(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n };\r\n\r\n var GG = function(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n };\r\n\r\n var HH = function(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n };\r\n\r\n var II = function(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n };\r\n\r\n var ConvertToWordArray = function(str) {\r\n var lWordCount;\r\n var lMessageLength = str.length;\r\n var lNumberOfWords_temp1 = lMessageLength + 8;\r\n var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;\r\n var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\r\n var lWordArray = Array(lNumberOfWords - 1);\r\n var lBytePosition = 0;\r\n var lByteCount = 0;\r\n while (lByteCount < lMessageLength) {\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount) << lBytePosition));\r\n lByteCount++;\r\n }\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\r\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\r\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\r\n return lWordArray;\r\n };\r\n\r\n var WordToHex = function(lValue) {\r\n var WordToHexValue = \"\", WordToHexValue_temp = \"\", lByte, lCount;\r\n for (lCount = 0; lCount <= 3; lCount++) {\r\n lByte = (lValue >>> (lCount * 8)) & 255;\r\n WordToHexValue_temp = \"0\" + lByte.toString(16);\r\n WordToHexValue = WordToHexValue + WordToHexValue_temp.substring(WordToHexValue_temp.length - 2);\r\n }\r\n return WordToHexValue;\r\n };\r\n\r\n var x = Array();\r\n var k, AA, BB, CC, DD, a, b, c, d;\r\n var S11 = 7, S12 = 12, S13 = 17, S14 = 22;\r\n var S21 = 5, S22 = 9, S23 = 14, S24 = 20;\r\n var S31 = 4, S32 = 11, S33 = 16, S34 = 23;\r\n var S41 = 6, S42 = 10, S43 = 15, S44 = 21;\r\n\r\n str = utf8_encode(str);\r\n x = ConvertToWordArray(str);\r\n a = 0x67452301;\r\n b = 0xEFCDAB89;\r\n c = 0x98BADCFE;\r\n d = 0x10325476;\r\n\r\n for (k = 0; k < x.length; k += 16) {\r\n AA = a;\r\n BB = b;\r\n CC = c;\r\n DD = d;\r\n a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\r\n d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\r\n c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);\r\n b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\r\n a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\r\n d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\r\n c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);\r\n b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);\r\n a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);\r\n d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\r\n c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\r\n b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\r\n a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);\r\n d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);\r\n c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);\r\n b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);\r\n a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\r\n d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);\r\n c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\r\n b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\r\n a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\r\n d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\r\n c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\r\n b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\r\n a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\r\n d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\r\n c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\r\n b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\r\n a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\r\n d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\r\n c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\r\n b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\r\n a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\r\n d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);\r\n c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\r\n b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\r\n a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\r\n d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\r\n c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\r\n b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\r\n a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\r\n d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\r\n c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\r\n b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);\r\n a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\r\n d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\r\n c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\r\n b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\r\n a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);\r\n d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);\r\n c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\r\n b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);\r\n a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);\r\n d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\r\n c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\r\n b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);\r\n a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\r\n d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\r\n c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);\r\n b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\r\n a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);\r\n d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\r\n c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\r\n b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);\r\n a = AddUnsigned(a, AA);\r\n b = AddUnsigned(b, BB);\r\n c = AddUnsigned(c, CC);\r\n d = AddUnsigned(d, DD);\r\n }\r\n\r\n var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);\r\n\r\n return temp.toLowerCase();\r\n }\r\n\r\n if (typeof String.prototype.ToMd5 != 'function') {\r\n String.prototype.ToMd5 = function() {\r\n return md5(this);\r\n };\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.md5.ts","import { Type } from '@angular/core';\r\n\r\n/**\r\n * Adds a service to `appComponents` and (optional) `appEntryComponents` array.\r\n * Then this service could be added to bootstrap inside `declarations` and `entryComponents` sections.\r\n * Adding to appEntryComponents allows dynamic creating the component.\r\n * The sample of using in app.module.ts:\r\n * @NgModule({\r\n * declarations: [\r\n * AppComponent,\r\n * appComponents\r\n * ],\r\n * entryComponents: [\r\n * appEntryComponents\r\n * ],\r\n * ...\r\n* })\r\n* export class AppModule { }\r\n*/\r\nexport function AppComponent(entryComponent?: boolean) {\r\n return target => {\r\n if (entryComponent) {\r\n if (!appEntryComponents.includes(target)) {\r\n appEntryComponents.push(target);\r\n }\r\n }\r\n if (!appComponents.includes(target)) {\r\n appComponents.push(target);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * List of all components marked by @AppComponent decorator.\r\n */\r\nexport const appComponents: Type[] = [];\r\n\r\n\r\n/**\r\n * List of all entry components marked by @AppComponent decorator.\r\n */\r\nexport const appEntryComponents: Type[] = [];\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/app-component.decorator.ts","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toPropertyKey.js\n// module id = 852\n// module chunks = 1","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/typeof.js\n// module id = 853\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n// module id = 854\n// module chunks = 1","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\n\n/**\n * Handles a subexpression that's used to define a transform argument's value.\n * @param {{type: }} ast The subexpression tree\n */\nexports.argVal = function (ast) {\n if (ast) this._cursor.args.push(ast);\n};\n/**\n * Handles new array literals by adding them as a new node in the AST,\n * initialized with an empty array.\n */\n\n\nexports.arrayStart = function () {\n this._placeAtCursor({\n type: 'ArrayLiteral',\n value: []\n });\n};\n/**\n * Handles a subexpression representing an element of an array literal.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.arrayVal = function (ast) {\n if (ast) {\n this._cursor.value.push(ast);\n }\n};\n/**\n * Handles tokens of type 'binaryOp', indicating an operation that has two\n * inputs: a left side and a right side.\n * @param {{type: }} token A token object\n */\n\n\nexports.binaryOp = function (token) {\n var precedence = this._grammar.elements[token.value].precedence || 0;\n var parent = this._cursor._parent;\n\n while (parent && parent.operator && this._grammar.elements[parent.operator].precedence >= precedence) {\n this._cursor = parent;\n parent = parent._parent;\n }\n\n var node = {\n type: 'BinaryExpression',\n operator: token.value,\n left: this._cursor\n };\n\n this._setParent(this._cursor, node);\n\n this._cursor = parent;\n\n this._placeAtCursor(node);\n};\n/**\n * Handles successive nodes in an identifier chain. More specifically, it\n * sets values that determine how the following identifier gets placed in the\n * AST.\n */\n\n\nexports.dot = function () {\n this._nextIdentEncapsulate = this._cursor && this._cursor.type !== 'UnaryExpression' && (this._cursor.type !== 'BinaryExpression' || this._cursor.type === 'BinaryExpression' && this._cursor.right);\n this._nextIdentRelative = !this._cursor || this._cursor && !this._nextIdentEncapsulate;\n\n if (this._nextIdentRelative) {\n this._relative = true;\n }\n};\n/**\n * Handles a subexpression used for filtering an array returned by an\n * identifier chain.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.filter = function (ast) {\n this._placeBeforeCursor({\n type: 'FilterExpression',\n expr: ast,\n relative: this._subParser.isRelative(),\n subject: this._cursor\n });\n};\n/**\n * Handles identifier tokens when used to indicate the name of a function to\n * be called.\n * @param {{type: }} token A token object\n */\n\n\nexports.functionCall = function () {\n this._placeBeforeCursor({\n type: 'FunctionCall',\n name: this._cursor.value,\n args: [],\n pool: 'functions'\n });\n};\n/**\n * Handles identifier tokens by adding them as a new node in the AST.\n * @param {{type: }} token A token object\n */\n\n\nexports.identifier = function (token) {\n var node = {\n type: 'Identifier',\n value: token.value\n };\n\n if (this._nextIdentEncapsulate) {\n node.from = this._cursor;\n\n this._placeBeforeCursor(node);\n\n this._nextIdentEncapsulate = false;\n } else {\n if (this._nextIdentRelative) {\n node.relative = true;\n this._nextIdentRelative = false;\n }\n\n this._placeAtCursor(node);\n }\n};\n/**\n * Handles literal values, such as strings, booleans, and numerics, by adding\n * them as a new node in the AST.\n * @param {{type: }} token A token object\n */\n\n\nexports.literal = function (token) {\n this._placeAtCursor({\n type: 'Literal',\n value: token.value\n });\n};\n/**\n * Queues a new object literal key to be written once a value is collected.\n * @param {{type: }} token A token object\n */\n\n\nexports.objKey = function (token) {\n this._curObjKey = token.value;\n};\n/**\n * Handles new object literals by adding them as a new node in the AST,\n * initialized with an empty object.\n */\n\n\nexports.objStart = function () {\n this._placeAtCursor({\n type: 'ObjectLiteral',\n value: {}\n });\n};\n/**\n * Handles an object value by adding its AST to the queued key on the object\n * literal node currently at the cursor.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.objVal = function (ast) {\n this._cursor.value[this._curObjKey] = ast;\n};\n/**\n * Handles traditional subexpressions, delineated with the groupStart and\n * groupEnd elements.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.subExpression = function (ast) {\n this._placeAtCursor(ast);\n};\n/**\n * Handles a completed alternate subexpression of a ternary operator.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.ternaryEnd = function (ast) {\n this._cursor.alternate = ast;\n};\n/**\n * Handles a completed consequent subexpression of a ternary operator.\n * @param {{type: }} ast The subexpression tree\n */\n\n\nexports.ternaryMid = function (ast) {\n this._cursor.consequent = ast;\n};\n/**\n * Handles the start of a new ternary expression by encapsulating the entire\n * AST in a ConditionalExpression node, and using the existing tree as the\n * test element.\n */\n\n\nexports.ternaryStart = function () {\n this._tree = {\n type: 'ConditionalExpression',\n test: this._tree\n };\n this._cursor = this._tree;\n};\n/**\n * Handles identifier tokens when used to indicate the name of a transform to\n * be applied.\n * @param {{type: }} token A token object\n */\n\n\nexports.transform = function (token) {\n this._placeBeforeCursor({\n type: 'FunctionCall',\n name: token.value,\n args: [this._cursor],\n pool: 'transforms'\n });\n};\n/**\n * Handles token of type 'unaryOp', indicating that the operation has only\n * one input: a right side.\n * @param {{type: }} token A token object\n */\n\n\nexports.unaryOp = function (token) {\n this._placeAtCursor({\n type: 'UnaryExpression',\n operator: token.value\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/parser/handlers.js\n// module id = 855\n// module chunks = 1","import * as moment from 'moment';\r\n\r\nexport namespace DateTime {\r\n import Moment = moment.Moment;\r\n\r\n /**\r\n * Converts Newton.Json string and Asp.Net string into Date.\r\n */\r\n export function ToDate(obj: string, useMomentDate: boolean = true): Date | Moment {\r\n let res: Date | Moment = obj;\r\n if (obj.length >= 19\r\n && obj[4] === '-'\r\n && obj[7] === '-'\r\n && obj[10] === 'T'\r\n && obj[13] === ':'\r\n && obj[16] === ':'\r\n )\r\n try {\r\n if (useMomentDate) {\r\n res = moment(obj);\r\n if (!res.isValid())\r\n res = obj;\r\n } else {\r\n res = new Date(obj);\r\n }\r\n } catch (e) { }\r\n // преобразование Asp.Net даты \r\n else if (obj.indexOf('/Date(') === 0)\r\n try {\r\n res = new Date(parseInt(obj.substring(6)));\r\n if (useMomentDate) {\r\n res = moment(res);\r\n if (!res.isValid())\r\n res = obj;\r\n }\r\n } catch (e) { }\r\n return res;\r\n }\r\n\r\n /**\r\n * Устанавливает значение времени, указаного в `time` в параметр `date`.\r\n * Учитывается переход с летнего времени на зимнее и наоборот.\r\n */\r\n export function setTime(date: moment.Moment, time: moment.Moment): moment.Moment {\r\n time = moment(time).month(0); // установим ДАТУ параметра `time` в такой день, где заведомо нет перехода на летнее/зимнее время\r\n const totalMs = time.diff(moment(time).startOf('day')); // кол-во миллисекунд, прошедшее от начала дня\r\n const res = moment(date).startOf('day').millisecond(totalMs);\r\n return res;\r\n }\r\n\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/DateTime.ts","// ReSharper disable InconsistentNaming\r\n\r\nconst _formatToRegExp: StringHashMap = {\r\n '0': /[0-9]/,\r\n 'a': /[a-z]/,\r\n 'A': /[A-Z]/,\r\n 'B': /[a-zA-Z]/,\r\n};\r\n\r\nconst _allFormatsStr = '(' +\r\n Object.keys(_formatToRegExp)\r\n .map(key => _formatToRegExp[key].toString())\r\n .map(regexStr => regexStr.substring(1, regexStr.length - 1))\r\n .join('|')\r\n + ')';\r\n\r\nconst _allFormatsGlobal = getAllFormatRegexp('g');\r\n\r\n/**\r\n * Apply format to a value string\r\n *\r\n * Format can be constructed from next symbols:\r\n * - '0': /[0-9]/,\r\n * - 'a': /[a-z]/,\r\n * - 'A': /[A-Z]/,\r\n * - 'B': /[a-zA-Z]/\r\n *\r\n * Example: 'AAA-00BB-aaaa'\r\n * will accept 'COD-12Rt-efww'\r\n *\r\n * @param value Current value\r\n * @param format Format\r\n * @param goingBack Indicates if change was done by BackSpace\r\n * @param prevValue Pass to precisely detect formatter chars\r\n */\r\nexport function valueToFormat(value: string, format: string, goingBack = false, prevValue?: string): string {\r\n let maskedValue = '';\r\n const unmaskedValue = unmaskValue(value);\r\n const isLastCharFormatter = !getAllFormatRegexp().test(value[value.length - 1]);\r\n const isPrevLastCharFormatter = prevValue && !getAllFormatRegexp().test(prevValue[prevValue.length - 1]);\r\n\r\n let formatOffset = 0;\r\n for (let i = 0, maxI = Math.min(unmaskedValue.length, format.length); i < maxI; ++i) {\r\n const valueChar = unmaskedValue[i];\r\n let formatChar = format[formatOffset + i];\r\n let formatRegex = getFormatRegexp(formatChar);\r\n\r\n if (formatChar && !formatRegex) {\r\n maskedValue += formatChar;\r\n formatChar = format[++formatOffset + i];\r\n formatRegex = getFormatRegexp(formatChar);\r\n }\r\n\r\n if (valueChar && formatRegex) {\r\n if (formatRegex.test(valueChar)) {\r\n maskedValue += valueChar;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n const nextFormatChar = format[formatOffset + i + 1];\r\n const nextFormatRegex = getFormatRegexp(nextFormatChar);\r\n const isLastIteration = i === maxI - 1;\r\n\r\n if (isLastIteration && nextFormatChar && !nextFormatRegex) {\r\n if (!isLastCharFormatter && goingBack) {\r\n if (prevValue && !isPrevLastCharFormatter) {\r\n continue;\r\n }\r\n maskedValue = maskedValue.substring(0, formatOffset + i);\r\n } else {\r\n maskedValue += nextFormatChar;\r\n }\r\n }\r\n }\r\n\r\n return maskedValue;\r\n}\r\n\r\nexport function unmaskValue(value: string): string {\r\n const unmaskedMathes = value.match(_allFormatsGlobal);\r\n return unmaskedMathes ? unmaskedMathes.join('') : '';\r\n}\r\n\r\nfunction getAllFormatRegexp(flags?: string) {\r\n return new RegExp(_allFormatsStr, flags);\r\n}\r\n\r\nfunction getFormatRegexp(formatChar: string): RegExp | null {\r\n return formatChar && _formatToRegExp[formatChar] ? _formatToRegExp[formatChar] : null;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/mask.ts","import { OData } from './OData';\r\nimport * as moment from 'moment';\r\n\r\n/*\r\n http://www.odata.org/documentation/odata-version-2-0/uri-conventions/\r\n http://docs.oasis-open.org/odata/odata/v4.0/errata01/os/complete/part2-url-conventions/odata-v4.0-errata01-os-part2-url-conventions-complete.html\r\n http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part2-url-conventions/odata-v4.0-errata02-os-part2-url-conventions-complete.html\r\n*/\r\n\r\n/**\r\n* Список операторов ODATA\r\n*/\r\nexport interface IODataOperators {\r\n odata: OData;\r\n query: string;\r\n not(): IODataOperators;\r\n eq(value: T, isEnum?: boolean): IODataLogical;\r\n ne(value: T, isEnum?: boolean): IODataLogical;\r\n gt(value: T, isEnum?: boolean): IODataLogical;\r\n ge(value: T, isEnum?: boolean): IODataLogical;\r\n lt(value: T, isEnum?: boolean): IODataLogical;\r\n le(value: T, isEnum?: boolean): IODataLogical;\r\n}\r\n\r\n/**\r\n* Список операторов ODATA\r\n*/\r\nexport interface IODataTypedOperators extends IODataOperators {\r\n not(): IODataTypedOperators;\r\n // ReSharper disable TypeParameterHidesTypeParamFromOuterScope\r\n eq(value: T, isEnum?: boolean): IODataLogical;\r\n ne(value: T, isEnum?: boolean): IODataLogical;\r\n gt(value: T, isEnum?: boolean): IODataLogical;\r\n ge(value: T, isEnum?: boolean): IODataLogical;\r\n lt(value: T, isEnum?: boolean): IODataLogical;\r\n le(value: T, isEnum?: boolean): IODataLogical;\r\n // ReSharper restore TypeParameterHidesTypeParamFromOuterScope\r\n}\r\n\r\n/**\r\n * Список логических операций ODATA\r\n */\r\nexport interface IODataLogical {\r\n odata: OData;\r\n query: string;\r\n not(): IODataFunctions;\r\n and(propName?: string): IODataFilterCreator;\r\n or(propName?: string): IODataFilterCreator;\r\n or(expr: IODataFunctions | IODataLogical): IODataLogical;\r\n}\r\n\r\n/**\r\n* Список функций ODATA\r\n*/\r\nexport interface IODataFunctions extends IODataOperators {\r\n\r\n //#region - Arithmetic Operators -\r\n/*\r\n add(value: number): IODataTypedOperators;\r\n sub(value: number): IODataTypedOperators;\r\n mul(value: number): IODataTypedOperators;\r\n div(value: number): IODataTypedOperators;\r\n mod(value: number): IODataTypedOperators;\r\n*/\r\n //#endregion\r\n\r\n //#region - String Functions -\r\n contains(value: string): IODataLogical;\r\n substringof(value: string): IODataLogical;\r\n startswith(value: string): IODataLogical;\r\n endswith(value: string): IODataLogical;\r\n\r\n length(): IODataTypedOperators;\r\n indexof(value: string): IODataTypedOperators;\r\n substring(pos: number, length?: number): IODataTypedOperators;\r\n trim(): IODataTypedOperators;\r\n\r\n/*\r\n replace(find: string, replace: string): IODataTypedOperators;\r\n*/\r\n concat(value: string): IODataTypedOperators;\r\n tolower(): IODataTypedOperators;\r\n toupper(): IODataTypedOperators;\r\n //#endregion\r\n\r\n //#region - Date Functions -\r\n year(): IODataTypedOperators;\r\n month(): IODataTypedOperators;\r\n day(): IODataTypedOperators;\r\n hour(): IODataTypedOperators;\r\n minute(): IODataTypedOperators;\r\n second(): IODataTypedOperators;\r\n/*\r\n fractionalseconds(): IODataTypedOperators;\r\n*/\r\n\r\n/*\r\n date(): IODataTypedOperators;\r\n time(): IODataTypedOperators;\r\n totaloffsetminutes(): IODataTypedOperators;\r\n totalseconds(): IODataTypedOperators;\r\n*/\r\n/*\r\n now(): IODataTypedOperators;\r\n maxdatetime(): IODataTypedOperators;\r\n mindatetime(): IODataTypedOperators;\r\n*/\r\n //#endregion\r\n\r\n //#region - Math Functions -\r\n/*\r\n round(): IODataTypedOperators; //?\r\n floor(): IODataTypedOperators; //?\r\n ceiling(): IODataTypedOperators; //?\r\n*/\r\n //#endregion\r\n\r\n}\r\n\r\n/** Генератор выражения фильтра ODATA */\r\nexport interface IODataFilterCreator extends IODataFunctions {\r\n}\r\n\r\n\r\nexport class ODataFilterCreator implements IODataFilterCreator, IODataLogical {\r\n\r\n constructor(public odata: OData, public propName: string, protected parent?: ODataFilterCreator) {\r\n if (this.propName)\r\n this.propName = this.propName.trim().replace(/\\./g, '/');\r\n if (parent)\r\n parent.child = this;\r\n }\r\n\r\n /*\r\n static create(odata: OData, propName: string) {\r\n return new ODataFilterCreator(odata, propName);\r\n }\r\n */\r\n\r\n protected _(value: T | T[]): string | string[] {\r\n if (value === undefined) return undefined;\r\n if (Array.isArray(value)) {\r\n let res = [];\r\n for (var arg of value) {\r\n res.push(this._(arg));\r\n }\r\n return res;\r\n } else {\r\n if (value === null) return 'null';\r\n let res = value.toString();\r\n if (typeof (value) === 'string') {\r\n res = res.replace(/'/g, \"''\");\r\n res = `'${res}'`;\r\n }\r\n else if (value != null && typeof value === 'object' && (value instanceof Date || moment.isMoment(value))) {\r\n res = moment(value).utc().format('YYYY-MM-DD[T]HH:mm:ss[Z]');\r\n return res;\r\n }\r\n // ToDo: somehow support enum values\r\n return res;\r\n }\r\n }\r\n\r\n protected child: ODataFilterCreator;\r\n protected get lastChild(): ODataFilterCreator {\r\n var res: ODataFilterCreator = this;\r\n while (res.child) {\r\n res = res.child;\r\n }\r\n return res;\r\n }\r\n\r\n protected getPropName() {\r\n var res: ODataFilterCreator = this;\r\n while (res && !res.propName) {\r\n res = res.parent;\r\n }\r\n return res ? res.propName : undefined;\r\n }\r\n\r\n /** Flag that current block is a function. Otherwise it's an operation. */\r\n public isFn: boolean;\r\n\r\n /** Flag that current block is negated. */\r\n public isNot: boolean;\r\n\r\n /** The function or operator name of the current block. */\r\n public opName: string;\r\n\r\n /** Value of the current operation or arguments of the current function. */\r\n public args: string[] | string;\r\n\r\n protected getQuery(): string {\r\n let res = undefined;\r\n let propName = this.propName;\r\n if (this.parent) {\r\n if (this.parent.opName !== 'and' && this.parent.opName !== 'or' && this.parent.opName !== 'or(') {\r\n propName = `${this.parent.getQuery() }` || propName;\r\n }\r\n }\r\n\r\n if (this.isNot)\r\n propName = `not ${propName}`;\r\n\r\n if (propName) {\r\n if ((!this.parent || this.parent.opName !== 'or(') && this.opName && this.args) {\r\n\r\n res = this.odata.onMakeFilterExpression && (this.odata.onMakeFilterExpression(this));\r\n if (res === undefined) {\r\n if (this.isFn) {\r\n const args = ((this.args)).join(',');\r\n /* v3\r\n if (this.opName === 'contains')\r\n res = `substringof(${args},${propName})`;\r\n */\r\n // v4\r\n if (this.opName === 'substringof') \r\n res = `contains(${propName}, ${args})`;\r\n else \r\n res = args ? `${this.opName}(${propName},${args})` : `${this.opName}(${propName})`;\r\n } else {\r\n if (propName.indexOf('[any]') > -1) {\r\n propName = propName.replace('[any]', '/any(_:_');\r\n res = `${propName} ${this.opName} ${this.args})`; \r\n } else if (propName.indexOf('[all]') > -1) {\r\n propName = propName.replace('[all]', '/all(_:_');\r\n res = `${propName} ${this.opName} ${this.args})`; \r\n } else {\r\n res = `${propName} ${this.opName} ${this.args}`; \r\n }\r\n }\r\n }\r\n } else {\r\n res = propName;\r\n }\r\n }\r\n if (this.parent) {\r\n if (this.parent.opName === 'and' || this.parent.opName === 'or')\r\n res = `${this.parent.getQuery() } ${this.parent.opName} ${res}`;\r\n else if (this.parent.opName === 'or(')\r\n res = `${this.propName} or (${this.parent.args.toString()})`;\r\n }\r\n return res;\r\n }\r\n\r\n get query(): string {\r\n return this.lastChild.getQuery();\r\n }\r\n\r\n toString() {\r\n return this.query;\r\n }\r\n\r\n /**\r\n * Creates an arithmetic operation\r\n * @param op operation name\r\n * @param value operand value\r\n */\r\n private aop(op: string, value: number): IODataTypedOperators {\r\n if (value === undefined) return this;\r\n this.args = this._(value);\r\n this.opName = op;\r\n return new ODataFilterCreator(this.odata, undefined, this);\r\n }\r\n\r\n /**\r\n * Creates an logical operation\r\n * @param op operation name\r\n * @param value operand value\r\n */\r\n private lop(op: string, value: T, isEnum?: boolean): IODataLogical {\r\n if (value === undefined) return this;\r\n this.args = this._(isEnum ? ((value === undefined || value === null) ? 'null' : OData.toEnumValue(value)) : value);\r\n this.opName = op;\r\n return new ODataFilterCreator(this.odata, undefined, this);\r\n }\r\n\r\n /**\r\n * Creates the function expression\r\n * @param fn function name\r\n * @param args function arguments\r\n */\r\n private fn(fn: string, ...args): IODataTypedOperators {\r\n this.args = this._(args);\r\n this.opName = fn;\r\n this.isFn = true;\r\n return new ODataFilterCreator(this.odata, undefined, this);\r\n }\r\n\r\n //#region - Arithmetic Operators -\r\n\r\n add(value: number): IODataTypedOperators { return this.aop('add', value); }\r\n\r\n sub(value: number): IODataTypedOperators { return this.aop('sub', value); }\r\n\r\n mul(value: number): IODataTypedOperators { return this.aop('mul', value); }\r\n\r\n div(value: number): IODataTypedOperators { return this.aop('div', value); }\r\n\r\n mod(value: number): IODataTypedOperators { return this.aop('mod', value); }\r\n\r\n //#endregion\r\n\r\n //#region - String Functions -\r\n\r\n contains(value: string): IODataLogical { return this.fn('contains', value).eq(true); }\r\n\r\n substringof(value: string): IODataLogical { return this.fn('substringof', value).eq(true); }\r\n\r\n startswith(value: string): IODataLogical { return this.fn('startswith', value).eq(true); }\r\n\r\n endswith(value: string): IODataLogical { return this.fn('endswith', value).eq(true); }\r\n\r\n length(): IODataTypedOperators { return this.fn('length'); }\r\n\r\n indexof(value: string): IODataTypedOperators { return this.fn('indexof', value); }\r\n\r\n replace(find: string, replace: string): IODataTypedOperators { return this.fn('replace', find, replace); }\r\n\r\n substring(pos: number, length?: number): IODataTypedOperators { return this.fn('substring', pos, length); }\r\n\r\n tolower(): IODataTypedOperators { return this.fn('tolower'); }\r\n\r\n toupper(): IODataTypedOperators { return this.fn('toupper'); }\r\n\r\n trim(): IODataTypedOperators { return this.fn('trim'); }\r\n\r\n concat(value: string): IODataTypedOperators { return this.fn('concat', value); }\r\n\r\n //#endregion\r\n\r\n //#region - Date Functions -\r\n\r\n year(): IODataTypedOperators { return this.fn('year'); }\r\n\r\n month(): IODataTypedOperators { return this.fn('month'); }\r\n\r\n day(): IODataTypedOperators { return this.fn('day'); }\r\n\r\n hour(): IODataTypedOperators { return this.fn('hour'); }\r\n\r\n minute(): IODataTypedOperators { return this.fn('minute'); }\r\n\r\n second(): IODataTypedOperators { return this.fn('second'); }\r\n\r\n fractionalseconds(): IODataTypedOperators { return this.fn('fractionalseconds'); }\r\n\r\n date(): IODataTypedOperators { return this.fn('date'); }\r\n time(): IODataTypedOperators { return this.fn('time'); }\r\n totaloffsetminutes(): IODataTypedOperators { return this.fn('totaloffsetminutes'); }\r\n totalseconds(): IODataTypedOperators { return this.fn('totalseconds'); }\r\n\r\n //#endregion\r\n\r\n //#region - Math Functions -\r\n\r\n round(): IODataTypedOperators { return this.fn('round'); }\r\n\r\n floor(): IODataTypedOperators { return this.fn('floor'); }\r\n\r\n ceiling(): IODataTypedOperators { return this.fn('ceiling'); }\r\n\r\n //#endregion\r\n\r\n //#region - Logical Functions -\r\n\r\n eq(value: T, isEnum?: boolean): IODataLogical { return this.lop('eq', value, isEnum); }\r\n\r\n ne(value: T, isEnum?: boolean): IODataLogical { return this.lop('ne', value, isEnum); }\r\n\r\n gt(value: T, isEnum?: boolean): IODataLogical { return this.lop('gt', value, isEnum); }\r\n\r\n ge(value: T, isEnum?: boolean): IODataLogical { return this.lop('ge', value, isEnum); }\r\n\r\n lt(value: T, isEnum?: boolean): IODataLogical { return this.lop('lt', value, isEnum); }\r\n\r\n le(value: T, isEnum?: boolean): IODataLogical { return this.lop('le', value, isEnum); }\r\n\r\n //#endregion\r\n\r\n //#region - Logical Operators -\r\n\r\n not(): IODataFunctions { this.isNot = true; return this; }\r\n\r\n and(propName?: string): IODataFilterCreator {\r\n this.opName = 'and';\r\n propName = propName || this.getPropName();\r\n return new ODataFilterCreator(this.odata, propName, this);\r\n }\r\n\r\n or(propName?: string): IODataFilterCreator;\r\n or(expr: IODataFunctions | IODataLogical): IODataLogical;\r\n or(p?): any {\r\n var propName = p;\r\n if (propName instanceof ODataFilterCreator) {\r\n var res = new ODataFilterCreator(this.odata, this.query, this);\r\n this.opName = 'or(';\r\n this.args = propName;\r\n return res;\r\n } else {\r\n this.opName = 'or';\r\n propName = propName || this.getPropName();\r\n return new ODataFilterCreator(this.odata, propName, this);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/ODataFilterCreator.ts","export const CACHE_CONSTANT = '~';\r\n\r\nexport interface ICacheOptionsInterface {\r\n\r\n /** Expires timestamp. */\r\n expires?: number;\r\n\r\n /** Max age in seconds. */\r\n maxAge?: number;\r\n\r\n /** Tag for this key. */\r\n tag?: string | string[];\r\n\r\n}\r\n\r\nexport const enum CacheStorages {\r\n LOCAL_STORAGE,\r\n SESSION_STORAGE,\r\n MEMORY,\r\n INDEXED_DB\r\n}\r\n\r\nexport interface ICacheService {\r\n\r\n /** Get tags list */\r\n getTags(): string[];\r\n\r\n /**\r\n * Set data to cache\r\n * @param key\r\n * @param value\r\n * @param options\r\n */\r\n set(key: string, value: any, options?: ICacheOptionsInterface): void;\r\n\r\n /**\r\n * Get data from cache\r\n * @param key\r\n * @returns {any}\r\n */\r\n get(key: string): any;\r\n\r\n /**\r\n * Check if value exists\r\n * @param key\r\n * @returns {boolean}\r\n */\r\n exists(key: string): boolean;\r\n\r\n /**\r\n * Remove item from cache\r\n * @param key\r\n */\r\n remove(key: string): void;\r\n\r\n /**\r\n * Remove all from cache\r\n */\r\n removeAll(): void;\r\n\r\n /**\r\n * Get all tag data\r\n * @param tag\r\n * @returns {Array}\r\n */\r\n getTagData(tag: string): any[];\r\n\r\n /**\r\n * Create a new instance of cache with needed storage\r\n * @param type\r\n * @returns {CacheService}\r\n */\r\n useStorage(type: CacheStorages): ICacheService;\r\n\r\n /**\r\n * Remove all by tag\r\n * @param tag\r\n */\r\n removeTag(tag: string | string[]): void;\r\n\r\n /**\r\n * Set global cache key prefix\r\n * @param prefix\r\n */\r\n setGlobalPrefix(prefix: string): void;\r\n}\r\n\r\nexport declare type TCacheOptions = {\r\n storage?: 'memory' | 'localStorage' | 'session' | ICacheService;\r\n /** Время жизни данных в кеше в секундах. */\r\n ttl?: number;\r\n\r\n /** Тэг группы кеша. Кеши, принадлежащие одной группе, могут быть сброшены одной командой. */\r\n tag?: string | string[];\r\n\r\n /**\r\n * Кешировать ошибки запросов.\r\n */\r\n cacheErrors?: boolean;\r\n}\r\n\r\nexport interface IApiMethodMetadata {\r\n /**\r\n * Name of HTTP-method.\r\n * If not set - for methods starts with Load and Get it will be 'GET',\r\n * with Delete and Remove - 'DELETE',\r\n * others - 'POST'.\r\n */\r\n method?: string;\r\n\r\n /**\r\n * Name of WebApi route.\r\n * If parameters transfers by url - they must be included in route as 'routeAddress/{param1}/{param2}...'\r\n */\r\n route?: string;\r\n\r\n /**\r\n * Indicates how to transfer parameters or request. false - by url, true - by request body.\r\n * For methods GET/DELETE/HEAD/OPTIONS - ignoring (always by url)\r\n * For POST/PUT/PATCH by default uses body (parameters transfered by url will be excluded from transfering object)\r\n * In other cases by default is false.\r\n * If useBody equals \"raw\" the value will be passed in body as is.\r\n */\r\n useBody?: boolean | 'raw';\r\n\r\n /** Name of calling method. */\r\n caller?: string;\r\n\r\n /**\r\n * Gets the caching options.\r\n * If 'cache' value in false, null or undefined - no caching\r\n * If 'cache' is true - the DefaultCacheOptions will be apllied\r\n * If 'cache' has a string value or array of string - the DefaultCacheOptions will be apllied with Tag = the 'cache' value.\r\n */\r\n cache?: boolean | string | string[] | TCacheOptions;\r\n\r\n /**\r\n * If defined - overrides API URL. \r\n */\r\n apiUrl?: string;\r\n}\r\n\r\nexport class ApiMethodMetadata implements IApiMethodMetadata {\r\n\r\n /**\r\n * Name of HTTP-method.\r\n * If not set - for methods starts with Load and Get it will be 'GET',\r\n * with Delete and Remove - 'DELETE',\r\n * others - 'POST'.\r\n */\r\n method: string;\r\n\r\n /**\r\n * Name of WebApi route.\r\n * If parameters transfers by url - they must be included in route as 'routeAddress/{param1}/{param2}...'\r\n */\r\n route: string;\r\n\r\n /**\r\n * Indicates how to transfer parameters or request. false - by url, true - by request body.\r\n * For methods GET/DELETE/HEAD/OPTIONS - ignoring (always by url)\r\n * For POST/PUT/PATCH by default uses body (parameters transfered by url will be excluded from transfering object)\r\n * In other cases by default is false.\r\n */\r\n useBody: boolean | 'raw';\r\n\r\n /**\r\n * If defined - overrides API URL. \r\n */\r\n apiUrl?: string;\r\n\r\n constructor(metadata: IApiMethodMetadata) {\r\n if (metadata) {\r\n this.method = metadata.method; \r\n this.route = metadata.route;\r\n this.useBody = metadata.useBody; \r\n }\r\n }\r\n}\r\n\r\nexport const ApiMethod = (metadata?: IApiMethodMetadata) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\r\n const oldFn = descriptor.value;\r\n descriptor.value = function () {\r\n metadata.caller = propertyKey;\r\n this['__apiMethod'] = metadata;\r\n try {\r\n return oldFn.apply(this, arguments);\r\n } finally {\r\n delete this['__apiMethod'];\r\n } \r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/api-method.decorator.ts","import { Reflection } from '../utils/Reflection';\r\nimport { AppService } from './app-service.decorator';\r\n\r\nexport declare type IApiServiceMetadata = any;\r\n\r\nexport class ApiServiceMetadata /*implements IApiServiceMetadata*/ {\r\n\r\n public Url: string;\r\n public ODataUrl: string;\r\n public Metadata: IApiServiceMetadata;\r\n\r\n constructor(url: string, odataUrl: string, metadata: IApiServiceMetadata) {\r\n this.Url = url;\r\n this.ODataUrl = odataUrl;\r\n this.Metadata = metadata;\r\n }\r\n}\r\n\r\n/**\r\n * Configures web api service and adds it to `appServices` array.\r\n * Use this decorator for the application level web api services.\r\n * @param url WebApi base address\r\n * @param odataUrl WebApi ODATA base address. If not set will be used the address {url}$\r\n * @param metadata Additional user data\r\n */\r\nexport function ApiService(url?: string, odataUrl?: string, metadata?: IApiServiceMetadata) {\r\n return target => {\r\n Reflection.makeDecorator(new ApiServiceMetadata(url, odataUrl || url, metadata), target);\r\n AppService()(target);\r\n }\r\n}\r\n\r\n/**\r\n * Configures web api service. You need add the service decorated with this decorator to module providers manually.\r\n * Use this decorator for the core web api services.\r\n * @param url WebApi base address\r\n * @param odataUrl WebApi ODATA base address. If not set will be used the address {url}$\r\n * @param metadata Additional user data\r\n */\r\nexport function ApiModuleService(url: string, odataUrl?: string, metadata?: IApiServiceMetadata) {\r\n return target => {\r\n Reflection.makeDecorator(new ApiServiceMetadata(url, odataUrl || url, metadata), target);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/api-service.decorator.ts","import { Type } from '@angular/core';\r\n\r\n/**\r\n * Extends class with a method of another class.\r\n * @param token class from which extension method will be taken (mixin).\r\n * @param fnName method name in mixin class (if not set - using method with the same name).\r\n *\r\n * Sample:\r\n * class Flies {\r\n * fly() { alert('Is it a bird? Is it a plane?'); }\r\n * }\r\n *\r\n * class Climbs {\r\n * climb() { alert('My spider-sense is tingling.'); }\r\n * }\r\n *\r\n * class BeetleGuy extends Flies {\r\n * @ExtendMethod(Climbs) climb() { }\r\n * }\r\n *\r\n * var superHero = new BeetleGuy();\r\n * superHero.climb();\r\n * \r\n */\r\nexport function ExtendMethod(token: Type, fnName?: string) {\r\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\r\n fnName = fnName || propertyKey;\r\n if (fnName in token.prototype) {\r\n descriptor.value = token.prototype[fnName];\r\n } else {\r\n throw new Error(`Class ${token.name} does not contain the method ${fnName}.`);\r\n }\r\n\r\n };\r\n}\r\n\r\n\r\nexport function extendClass(target: Type, source: Type) {\r\n for (let name of Object.getOwnPropertyNames(source.prototype)) {\r\n if (name !== 'constructor') {\r\n const fn = source.prototype[name];\r\n if (typeof fn === 'function') {\r\n const oldFn = target.prototype[name];\r\n const oldSuperFn = target.prototype[`_super_${name}`];\r\n target.prototype[`_super_${name}`] = function() {\r\n oldSuperFn && oldSuperFn.apply(this, arguments);\r\n oldFn && oldFn.apply(this, arguments);\r\n };\r\n target.prototype[name] = fn;\r\n /*\r\n target.prototype[name] = function() {\r\n if (oldFn) {\r\n oldFn.apply(this, arguments);\r\n }\r\n return fn.apply(this, arguments);\r\n }\r\n */\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Extends another class with own methods.\r\n * @param token class which should be extended.\r\n *\r\n * Sample:\r\n * class Man {\r\n * walk() { alert('I can walk.'); }\r\n * }\r\n *\r\n * @ExtendClass(Man)\r\n * class SuperMan {\r\n * fly() { alert('I can fly.'); }\r\n * }\r\n *\r\n * const man = new Man();\r\n * man.walk();\r\n * (man).fly();\r\n * \r\n */\r\nexport function ExtendClass(type: Type) { return target => extendClass(type, target) }\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/extend.decorator.ts","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { SetupSignleton } from './setup-singleton.decorator';\r\nimport { EVENTS_SERVICE_TOKEN } from './core-interface.tokens';\r\nimport { isArray } from '../utils/utils';\r\nimport { Reflection } from '../utils/Reflection';\r\n\r\nexport declare type TUssEventHandler = (...args: any[]) => void;\r\nexport declare type TUssEventUnsubscriber = { unsubscribe: () => void, eventName?: string, handler: TUssEventHandler }\r\n\r\n/**\r\n * Decorator '@Subscribe()' can be use in the components and directives only.`);\r\n */\r\nexport function Subscribe(eventName?: string) {\r\n return (target, propertyKey, descriptor) => {\r\n // перекрываем оригинальный метод ngOnInit и делаем в нём настройку подписки\r\n const origNgOnInit = target.ngOnInit;\r\n const origNgOnDestroy = target.ngOnDestroy;\r\n\r\n eventName = eventName || propertyKey;\r\n target.ngOnInit = function() {\r\n if (typeof origNgOnInit === 'function') {\r\n origNgOnInit.bind(this)();\r\n }\r\n const eventService: IUssEventsService = Reflection.get(EVENTS_SERVICE_TOKEN);\r\n let subscriptions = this['__core-events:subscriptions'];\r\n if (!subscriptions) {\r\n subscriptions = this['__core-events:subscriptions'] = [];\r\n }\r\n subscriptions.push(eventService.subscribe(eventName, descriptor.value.bind(this)));\r\n }\r\n\r\n if (!target['__core-events:ngOnDestroy']) {\r\n target['__core-events:ngOnDestroy'] = 'set';\r\n target.ngOnDestroy = function () {\r\n if (typeof origNgOnDestroy === 'function') {\r\n origNgOnDestroy.bind(this)();\r\n }\r\n let subscriptions = this['__core-events:subscriptions'];\r\n if (isArray(subscriptions)) {\r\n subscriptions.forEach(s => {\r\n if (s && typeof s.unsubscribe === 'function') {\r\n s.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Интерфейс глобальной внутренней системной шины сообщений приложения.\r\n * В любом месте программы можно подписаться на событие с указанным именем,\r\n * а также отправить это событие.\r\n * Поддерживается декоратор @Subscribe().\r\n */\r\nexport interface IUssEventsService {\r\n subscribe(eventName: string, handler: TUssEventHandler): TUssEventUnsubscriber;\r\n emit(eventName: string, data: any): void;\r\n}\r\n\r\n@Injectable()\r\nexport class DefaultEventsService implements IUssEventsService {\r\n private readonly _emitters: EventEmitter[] = [];\r\n\r\n /**\r\n * Названия событий вида `{HubName}@EventName` должны преобразовываться таким образом, чтобы название хаба было в нижнем регистре: `{hubname}@EventName`.\r\n */\r\n updateEventName(eventName: string): string {\r\n const arr = eventName?.split('@');\r\n if (arr?.length > 1) {\r\n arr[0] = arr[0].toLowerCase();\r\n eventName = arr.join('@');\r\n }\r\n return eventName;\r\n }\r\n\r\n subscribe(eventName: string, handler: TUssEventHandler): TUssEventUnsubscriber {\r\n eventName = this.updateEventName(eventName);\r\n let emitter: EventEmitter = this._emitters[eventName];\r\n if (!emitter) {\r\n emitter = new EventEmitter(false);\r\n this._emitters[eventName] = emitter;\r\n }\r\n const unscubscriber = emitter.subscribe(handler);\r\n return {\r\n eventName,\r\n handler,\r\n unsubscribe: () => {\r\n unscubscriber.unsubscribe();\r\n this.unsubscribe(eventName, handler);\r\n }\r\n }\r\n \r\n }\r\n\r\n unsubscribe(eventName: string, handler: TUssEventHandler) {\r\n }\r\n\r\n emit(eventName: string, data: any): void {\r\n eventName = this.updateEventName(eventName);\r\n const emitter = this._emitters[eventName];\r\n if (emitter)\r\n emitter.emit(data);\r\n }\r\n}\r\n\r\nexport class CoreEventsService implements IUssEventsService {\r\n subscribe(eventName: string, handler: TUssEventHandler): TUssEventUnsubscriber { throw new Error('Not implemented'); }\r\n emit(eventName: string, data: any): void { throw new Error('Not implemented'); }\r\n\r\n @SetupSignleton(EVENTS_SERVICE_TOKEN, DefaultEventsService) static instance: IUssEventsService;\r\n}\r\n\r\nexport const appEvents: IUssEventsService = new CoreEventsService();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-events.service.ts","import { Injectable, NgZone } from '@angular/core';\r\nimport { Location, PopStateEvent } from '@angular/common';\r\nimport { Router, ActivatedRouteSnapshot, NavigationStart, NavigationEnd, CanDeactivate, CanActivate, RouterStateSnapshot, Params as CoreParams } from '@angular/router';\r\nimport { SetupSignleton } from './setup-singleton.decorator';\r\nimport { NAVIGATION_SERVICE_TOKEN } from './core-interface.tokens';\r\nimport { isEmpty, ifEmpty, isNotEmpty, durationToString } from '../utils/utils';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport Moment = moment.Moment;\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { UssApiService } from '../services/api.service';\r\n\r\nexport declare type Params = CoreParams;\r\n\r\n\r\nexport interface IUssRouterService {\r\n queryParams: Params;\r\n getCurrentLocation(withParams: Params | boolean, asBase64?: boolean): string; \r\n goBack(returnUrl?: string, backUrl?: string | boolean): Promise | boolean;\r\n go(url: string, withParamsOrReturnUrl?: Params | boolean | string, addToUri?: boolean | 'base64', backUrl?: string | boolean): Promise | boolean;\r\n /**\r\n * Генерирует сообщение при нажатии на кнопки BACK, FORWARD.\r\n * Признак нажатия кнопки передаётся в свойстве парамтра state (false - BACK, true - FORWARD)\r\n */\r\n popEvent$: Observable;\r\n /** Предыдущий адрес, с которого был осуществлён переход на страницу */\r\n priorUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class UssRouterServiceOptions {\r\n useBase64 = false;\r\n}\r\n\r\nexport class UssRouterService implements IUssRouterService, CanActivate, CanDeactivate {\r\n\r\n private popState = false;\r\n private urlHistory: string[] = [];\r\n private readonly popSubject: Subject = new Subject();\r\n private navStartAddress: string;\r\n private priorAddress: string;\r\n\r\n // ReSharper disable once InconsistentNaming\r\n public static encodeUriComponent(obj: any): string {\r\n let res = '';\r\n if (isNotEmpty(obj)) {\r\n if (moment.isDate(obj)) {\r\n obj = moment(obj);\r\n }\r\n if (moment.isMoment(obj)) {\r\n res = moment(obj).toISOString();\r\n }\r\n else if (moment.isDuration(obj)) {\r\n res = durationToString(obj);\r\n }\r\n else {\r\n res += encodeURIComponent(obj)\r\n .replace(/%24/g, '$')\r\n .replace(/%20/g, ' ')\r\n .replace(/%2B/g, '+')\r\n .replace(/%40/g, '@')\r\n .replace(/%5E/g, '^')\r\n .replace(/%60/g, '`')\r\n .replace(/%3B/g, ';')\r\n .replace(/%3A/g, ':')\r\n .replace(/%7B/g, '{')\r\n .replace(/%7D/g, '}')\r\n .replace(/%5B/g, '[')\r\n .replace(/%5D/g, ']')\r\n ;\r\n ;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static encodeQueryParams(p: Params, usePefix: boolean = true): string {\r\n p = p || {};\r\n let res = '';\r\n const props = Object.getOwnPropertyNames(p);\r\n let prefix = usePefix ? '?' : '';\r\n for (let prop of props) {\r\n let value = p[prop];\r\n if (isNotEmpty(value)) {\r\n res += `${prefix}${this.encodeUriComponent(prop)}`;\r\n if (value !== '' && isNotEmpty(value)) {\r\n if (moment.isMoment(value)) {\r\n value = (value).toISOString(true);\r\n }\r\n else if (moment.isDuration(value)) {\r\n value = durationToString(value);\r\n }\r\n res += `=${this.encodeUriComponent(value)}`;\r\n }\r\n prefix = '&';\r\n }\r\n }\r\n return res;\r\n }\r\n public static decodeQueryParams(queryParams?: string): Params {\r\n const res = {};\r\n queryParams = ifEmpty(queryParams, location.search || location.hash);\r\n if (queryParams.startsWith('#')) {\r\n const idx = queryParams.indexOf('?');\r\n if (idx > 0) {\r\n queryParams = queryParams.substring(idx);\r\n }\r\n else {\r\n queryParams = '';\r\n }\r\n }\r\n while (queryParams.startsWith('?')) queryParams = queryParams.substring(1);\r\n const ares = queryParams.split('&');\r\n for (let p of ares) {\r\n const pv = p.split('=', 2);\r\n const name = pv[0].trim();\r\n if (name) {\r\n const value = pv[1];\r\n res[name] = isEmpty(value) ? value : decodeURIComponent(value);\r\n }\r\n }\r\n return res;\r\n }\r\n public static getSnapshotPath(routerSnapshot: ActivatedRouteSnapshot, withParams: Params | boolean = false, asBase64: boolean = false): string {\r\n let res = `/${routerSnapshot.url.select(x => x.path).toArray().join('/')}`;\r\n if (withParams !== false) {\r\n let p = withParams === true ? routerSnapshot.queryParams : withParams;\r\n if (asBase64 && Object.getOwnPropertyNames(p).length > 0) {\r\n p = { _: btoa(JSON.stringify(p)) }\r\n }\r\n res += UssRouterService.encodeQueryParams(p);\r\n }\r\n return res;\r\n }\r\n\r\n /** Предыдущий адрес, с которого был осуществлён переход на страницу */\r\n public priorUrl: string = null;\r\n\r\n /**\r\n * Генерирует сообщение при нажатии на кнопки BACK, FORWARD.\r\n * Признак нажатия кнопки передаётся в свойстве парамтра state (false - BACK, true - FORWARD)\r\n */\r\n public get popEvent$(): Observable {return this.popSubject.asObservable() }\r\n\r\n constructor(private router?: Router, private options?: UssRouterServiceOptions, private ngLocation?: Location, private ngZone?: NgZone) {\r\n this.options = options || new UssRouterServiceOptions();\r\n if (this.ngLocation && this.router) {\r\n this.ngLocation.subscribe(event => {\r\n\r\n let fwd = false;\r\n if (this.urlHistory.lastIndexOf(event.url)) {\r\n this.urlHistory.push(event.url);\r\n }\r\n else {\r\n fwd = true;\r\n this.urlHistory.pop();\r\n }\r\n this.popState = true;\r\n //event.state = fwd; // Angular 6+ ???\r\n event['state'] = fwd;\r\n //console.log(fwd ? 'FWD' : 'BACK', event);\r\n this.popSubject.next(event);\r\n });\r\n\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n this.navStartAddress = event.url;\r\n this.priorAddress = location.href;\r\n }\r\n if (event instanceof NavigationEnd) {\r\n if (!this.popState) {\r\n this.urlHistory = [this.router.url];\r\n }\r\n this.popState = false;\r\n if (event.url === this.navStartAddress) {\r\n this.priorUrl = this.priorAddress;\r\n this.navStartAddress = null;\r\n this.priorAddress = null;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (route.queryParams['returnUrl']) {\r\n if (route.queryParams['returnUrl']) {\r\n sessionStorage.setItem('_returnUrl', route.queryParams['returnUrl']);\r\n } else {\r\n sessionStorage.removeItem('_returnUrl');\r\n }\r\n history.replaceState(null, null, route.queryParams['returnUrl']);\r\n } else {\r\n const backUrl = sessionStorage.getItem('_backUrl');\r\n if (!isEmpty(backUrl)) {\r\n sessionStorage.setItem('_returnUrl', backUrl);\r\n history.replaceState(null, null, backUrl);\r\n sessionStorage.removeItem('_backUrl');\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n canDeactivate(component, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot) {\r\n let res: any = true;\r\n if (component && typeof component.canDeactivate === 'function') {\r\n res = component.canDeactivate(component, currentRoute, currentState, nextState);\r\n if (typeof res === 'boolean') {\r\n res = Promise.resolve(res);\r\n }\r\n else if (res instanceof Observable) {\r\n res = UssApiService.toPromise(res);\r\n }\r\n if (res instanceof Promise) {\r\n res.then(r => {\r\n if (!r) {\r\n // push current state again to prevent further attempts.\r\n history.pushState(null, null, location.href);\r\n }\r\n });\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public get queryParams(): Params {\r\n return UssRouterService.decodeQueryParams();\r\n }\r\n public set queryParams(p: Params) {\r\n p = p || {};\r\n const url = this.getCurrentLocation(p);\r\n this.router.navigateByUrl(url, { skipLocationChange: true });\r\n //this.location.replaceState(url);\r\n }\r\n\r\n public getCurrentLocation(withParams: Params | boolean, asBase64?: boolean): string {\r\n asBase64 = ifEmpty(asBase64, this.options.useBase64);\r\n let p = withParams === true ? this.queryParams : withParams !== false ? withParams : {};\r\n if (asBase64 && Object.getOwnPropertyNames(p).length > 0) {\r\n p = { _: btoa(JSON.stringify(p)) }\r\n }\r\n let url = (location.hash.startsWith(\"#/\"))\r\n ? location.hash.split('?')[0].substring(1) // если мы используем /#/route\r\n : location.pathname; // если мы не используем /#/route\r\n\r\n // убираем префикс базы, если он есть\r\n if (!location.hash.startsWith(\"#/\")) {\r\n const baseHref = document?.querySelector('base')?.getAttribute('href');\r\n if (baseHref && url.startsWith(baseHref)) {\r\n url = url.substring(baseHref.length);\r\n }\r\n }\r\n url += UssRouterService.encodeQueryParams(p);\r\n return url;\r\n }\r\n\r\n public goBack(returnUrl?: string, backUrl?: string | boolean): Promise | boolean {\r\n if (!returnUrl) {\r\n returnUrl = decodeURIComponent(this.queryParams['returnUrl'] || '') || sessionStorage.getItem('_returnUrl') || '';\r\n }\r\n sessionStorage.removeItem('_returnUrl');\r\n if (returnUrl) {\r\n return this.go(returnUrl, undefined, undefined, backUrl);\r\n } else if (history.length <= 2) {\r\n // the previous route is empty\r\n return this.router.navigate(['']);\r\n } else {\r\n // the previous route and history is empty\r\n if (backUrl) {\r\n return this.go('', undefined, undefined, backUrl);\r\n } else {\r\n //history.back();\r\n //return true;\r\n return this.go('');\r\n }\r\n }\r\n }\r\n public go(url: string, returnUrlOrParams: Params | boolean | string = false, addToUri: boolean | 'base64' = true, backUrl?: string | boolean): Promise | boolean {\r\n let params: { [name: string]: string } = {};\r\n let returnUrl = '';\r\n if (returnUrlOrParams) {\r\n if (typeof returnUrlOrParams === 'object') {\r\n params = returnUrlOrParams;\r\n } else {\r\n if (typeof returnUrlOrParams === 'boolean') {\r\n returnUrl = addToUri ? this.getCurrentLocation(true) : '';\r\n } else {\r\n returnUrl = returnUrlOrParams;\r\n }\r\n while (returnUrl.startsWith('/')) returnUrl = returnUrl.substring(1);\r\n if (returnUrl.trim()) {\r\n // добавить в session\r\n sessionStorage.setItem('_returnUrl', returnUrl);\r\n if (!addToUri) {\r\n returnUrl = '';\r\n }\r\n }\r\n }\r\n if (returnUrl) {\r\n params['returnUrl'] = returnUrl;\r\n }\r\n }\r\n if (addToUri === 'base64' && Object.getOwnPropertyNames(params).length > 0) {\r\n params = { _: btoa(JSON.stringify(params)) }\r\n }\r\n const prms = UssRouterService.encodeQueryParams(params, true);\r\n url = url + prms;\r\n if (backUrl === true) {\r\n backUrl = this.priorUrl;\r\n }\r\n else if (backUrl === false) {\r\n backUrl = null;\r\n }\r\n if (!url.StartsWith(/(https?:)?\\/\\//, true) && !url.StartsWith('//')) {\r\n if (!isEmpty(backUrl)) {\r\n sessionStorage.setItem('_backUrl', backUrl.toString());\r\n }\r\n this.ngZone = this.ngZone || Reflection.get(NgZone);\r\n return this.ngZone.run(() => this.router.navigateByUrl(url));\r\n } else {\r\n if (url.StartsWith('//')) url = url.substring(1);\r\n location.href = url;\r\n if (!isEmpty(backUrl)) {\r\n history.replaceState(null, null, backUrl.toString());\r\n }\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nexport class CoreRouterService implements IUssRouterService {\r\n\r\n getCurrentLocation(withParams: Params | boolean, asBase64?: boolean): string { throw new Error('Not implemented') }\r\n goBack(returnUrl?: string): Promise | boolean { throw new Error('Not implemented') }\r\n go(url: string, returnUrl?: boolean | string, addToUri?: boolean | 'base64'): Promise | boolean { throw new Error('Not implemented') }\r\n queryParams: Params;\r\n popEvent$: Observable;\r\n priorUrl: string;\r\n @SetupSignleton(NAVIGATION_SERVICE_TOKEN, UssRouterService) static instance: IUssRouterService;\r\n}\r\n\r\nexport const ussRouter: IUssRouterService = new CoreRouterService();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-router.service.ts","import { Optional, Injectable } from '@angular/core';\r\nimport { Http, RequestOptionsArgs, Response } from '@angular/http';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { ApiMethodMetadata, IApiMethodMetadata } from '../decorators/api-method.decorator';\r\nimport { UssHttp } from './http.service';\r\nimport { ApiServiceMetadata } from '../decorators/api-service.decorator';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { isString, isNotEmpty, callerName, ifEmpty } from '../utils/utils';\r\nimport { OData } from '../utils/OData';\r\nimport { ApiResponse, ApiQuestion } from './error-handler';\r\nimport { ApiAnswer, ApiError } from './error-handler';\r\nimport { appEvents } from '../interfaces/core-events.service';\r\nimport { API_SERVICE_QUESTION_HANDLER_TOKEN } from '../interfaces/core-interface.tokens';\r\nimport { clone } from '../utils/Json';\r\nimport { UssRouterService } from '../interfaces/core-router.service';\r\n\r\nexport interface IApiQuestionHandler {\r\n getAnswer(q: ApiQuestion): PromiseEx | ApiAnswer | void;\r\n getAnswer(q: ApiError): PromiseEx | boolean | void;\r\n getAnswer(q: ApiResponse): PromiseEx | any | void;\r\n}\r\n\r\nexport class DefaultApiQuestionHandler implements IApiQuestionHandler {\r\n static instance = new DefaultApiQuestionHandler();\r\n getAnswer(q: ApiQuestion | ApiError | ApiResponse): any { return q instanceof ApiQuestion ? new ApiAnswer(): undefined; }\r\n}\r\n\r\nexport type PromiseEx = Promise & { cancel(reason?): void };\r\n\r\n/**\r\n * Basic API controller\r\n */\r\n@Injectable()\r\nexport class UssApiService {\r\n\r\n public url: string;\r\n public odataUrl: string;\r\n public lastRequest: string;\r\n\r\n /** Преобразует Observable в Promise, содержащий дополнительный метод cancel() для отмены запроса. */\r\n static toPromise(source: Observable): PromiseEx {\r\n let reject;\r\n let sub;\r\n const rejectFn = (reason) => {\r\n sub?.unsubscribe();\r\n reject && reject(reason);\r\n };\r\n const res = new Promise((resolve, r) => {\r\n reject = r;\r\n sub = source.subscribe(r => resolve(r), e => rejectFn(e));\r\n }) as PromiseEx;\r\n res.cancel = reason => rejectFn(reason);\r\n return res;\r\n }\r\n constructor(@Optional() protected http?: Http) {\r\n this.http = http || Reflection.get(Http);\r\n if (this.constructor.name !== UssApiService.name) {\r\n const serviceDescription = Reflection.classMetadata(this, ApiServiceMetadata);\r\n if (serviceDescription) {\r\n this.url = serviceDescription.Url;\r\n this.odataUrl = serviceDescription.ODataUrl;\r\n }\r\n }\r\n }\r\n\r\n private static updateMethod(method: string, fnName: string) {\r\n fnName = (fnName || '').toUpperCase();\r\n if (!method) {\r\n if (fnName.StartsWith('GET') || fnName.StartsWith('LOAD'))\r\n method = 'GET';\r\n else if (fnName.StartsWith('DELETE') || fnName.StartsWith('REMOVE'))\r\n method = 'DELETE';\r\n else\r\n method = 'POST';\r\n }\r\n return method.toUpperCase();\r\n }\r\n\r\n private static objectToStringParams(params: any, url: string, methodDescriptor: IApiMethodMetadata, addRoute?: string): string {\r\n let res = url || '';\r\n let route = methodDescriptor.route;\r\n if (addRoute) {\r\n route = route && !addRoute.StartsWith('/') ? `${route}/${addRoute}` : addRoute;\r\n }\r\n if (route && route.StartsWith('/')) {\r\n res = route.substr(1);\r\n } else if (route && route !== '/') {\r\n if (!route.StartsWith('/') && !res.EndsWith('/'))\r\n res = res + '/';\r\n res = res + route;\r\n }\r\n\r\n\r\n\r\n\r\n if (methodDescriptor.useBody === undefined) {\r\n methodDescriptor.useBody = methodDescriptor.method === 'POST'\r\n || methodDescriptor.method === 'PUT'\r\n || methodDescriptor.method === 'PATCH';\r\n }\r\n else if (methodDescriptor.method === 'GET' || methodDescriptor.method === 'DELETE' || methodDescriptor.method === 'HEAD' || methodDescriptor.method === 'OPTIONS') {\r\n methodDescriptor.useBody = false;\r\n }\r\n\r\n let prefix = res.indexOf('?') === -1 ? '?' : '&';\r\n if (!isString(params)) {\r\n for (let param of Object.getOwnPropertyNames(params)) {\r\n if (param === '$query') {\r\n res = `${res}${prefix}${param}`;\r\n prefix = '&';\r\n delete params[param];\r\n }\r\n else if (res.indexOf(`{${param}}`) !== -1) {\r\n res = res.replace(`{${param}}`, UssRouterService.encodeUriComponent(ifEmpty(params[param], '')));\r\n delete params[param];\r\n }\r\n }\r\n if (!methodDescriptor.useBody) {\r\n for (let param of Object.getOwnPropertyNames(params)) {\r\n if (isNotEmpty(params[param])) {\r\n res = `${res}${prefix}${param}=${UssRouterService.encodeUriComponent(params[param])}`;\r\n prefix = '&';\r\n delete params[param];\r\n }\r\n }\r\n }\r\n } else if (!methodDescriptor.useBody) {\r\n res = res + prefix + params;\r\n }\r\n\r\n if (methodDescriptor.useBody === 'raw' && Object.keys(params).length === 1) {\r\n params.$raw = params[Object.keys(params)[0]];\r\n }\r\n\r\n if (res.endsWith('?'))\r\n res = res.substr(0, res.length - 1);\r\n return UssHttp.updateUrl(res);\r\n }\r\n\r\n public static apiQueryAsync(q: (answerRoute?: string) => PromiseEx, answerRoute?: string): PromiseEx {\r\n const respPromise = q(answerRoute);\r\n const res = respPromise\r\n .then(r => {\r\n let res = r;\r\n const q = ApiResponse.create(r);\r\n if (q instanceof ApiQuestion) {\r\n const apiQuestionHandler: IApiQuestionHandler = Reflection.get(API_SERVICE_QUESTION_HANDLER_TOKEN, DefaultApiQuestionHandler.instance);\r\n res = apiQuestionHandler.getAnswer(q);\r\n }\r\n return res;\r\n })\r\n .then(r => {\r\n let res = r;\r\n if (r instanceof ApiAnswer) {\r\n if (isNotEmpty(r.result)) {\r\n let eventName = null;\r\n let data = null;\r\n if (r.result && typeof r.result === 'object') {\r\n // это признак того, что нужно сгенерировать событие\r\n eventName = r.result['eventName'];\r\n data = r.result['data'];\r\n } else if (typeof r.result === 'string' && r.result.startsWith('{') && r.result.endsWith('}')) {\r\n eventName = r.result;\r\n }\r\n if (eventName) {\r\n appEvents.emit(eventName, data);\r\n throw new Error('#');\r\n } else {\r\n res = UssApiService.apiQueryAsync(q, `answer/${r.result}`);\r\n }\r\n }\r\n else\r\n throw new Error('#');\r\n }\r\n return res;\r\n }) as PromiseEx;\r\n res.cancel = respPromise.cancel;\r\n return res;\r\n }\r\n\r\n public request(params?: any, methodDescriptor?: IApiMethodMetadata | void, options?: RequestOptionsArgs | void, addRoute?: string, noCache?: boolean): PromiseEx {\r\n return UssApiService.apiQueryAsync(r => UssApiService.toPromise(this.request$(params, methodDescriptor, options, addRoute || r, noCache)));\r\n }\r\n\r\n public request$(params?: any, methodDescriptor?: IApiMethodMetadata | void, options?: RequestOptionsArgs | void, addRoute?: string, noCache?: boolean): Observable {\r\n params = params || {};\r\n const paramsObject = params instanceof OData ? params.query : (params instanceof FormData ? params : clone(params));\r\n\r\n let caller = '';\r\n methodDescriptor = methodDescriptor || this['__apiMethod'];\r\n if (!methodDescriptor) {\r\n caller = callerName(1);\r\n methodDescriptor = (Reflection.memberMetadata(this, caller, ApiMethodMetadata) || {});\r\n }\r\n methodDescriptor = methodDescriptor as IApiMethodMetadata;\r\n caller = methodDescriptor.caller || caller;\r\n\r\n const url = methodDescriptor.apiUrl || (params instanceof OData && params.query ? (this.odataUrl || this.url) : this.url);\r\n\r\n methodDescriptor.method = UssApiService.updateMethod(methodDescriptor.method, caller);\r\n const request = UssApiService.objectToStringParams(paramsObject, url, methodDescriptor, addRoute);\r\n const body = paramsObject.$raw || paramsObject;\r\n /*\r\n if (addRoute) {\r\n methodDescriptor.route = methodDescriptor.route ? `${methodDescriptor.route}/${addRoute}` : addRoute;\r\n }\r\n */\r\n const res = this.query$(methodDescriptor.method, request, body, options, methodDescriptor, noCache);\r\n res['$request'] = request;\r\n this.lastRequest = request;\r\n return res;\r\n }\r\n\r\n public query$(method: string, request: string, body?: any, options?: RequestOptionsArgs, methodDescriptor?: IApiMethodMetadata | void, noCache?: boolean): Observable {\r\n let response: Observable;\r\n switch (method) {\r\n case 'GET': response = this.http.get(request, options); break;\r\n case 'HEAD': response = this.http.head(request, options); break;\r\n case 'OPTIONS': response = this.http.options(request, options); break;\r\n case 'POST': response = this.http.post(request, body, options); break;\r\n case 'PUT': response = this.http.put(request, body, options); break;\r\n case 'PATCH': response = this.http.patch(request, body, options); break;\r\n case 'DELETE': response = this.http.delete(request, options); break;\r\n default:\r\n options = options || {};\r\n options.method = options.method || method;\r\n options.body = options.body || body;\r\n response = this.http.request(request, options);\r\n break;\r\n }\r\n return UssHttp.HandleResponse(response, options);\r\n }\r\n\r\n public create(object: T): PromiseEx {\r\n return UssApiService.toPromise(this.update$(object, true));\r\n }\r\n public update(object: T, isNew?: boolean): PromiseEx {\r\n return UssApiService.toPromise(this.update$(object, isNew));\r\n }\r\n\r\n public create$(object: T): Observable {\r\n return this.update$(object, true);\r\n }\r\n\r\n public update$(object: T, isNew?: boolean): Observable {\r\n const method = { method: isNew ? 'POST' : 'PUT', route: '', useBody: true };\r\n return this.request$(object, method);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/api.service.ts","import { Component, Input } from '@angular/core';\r\nimport { CoreComponent } from '../../internals';\r\nimport { isNotEmpty } from '../../utils/utils';\r\nimport { AppBase } from '../../app.base';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\n\r\n\r\ndocument.addEventListener('click', () => TooltipComponent.activeTooltip?.hide());\r\ndocument.body.addEventListener('scroll', () => TooltipComponent.activeTooltip?.hide());\r\ndocument.body.addEventListener('touchstart', () => TooltipComponent.activeTooltip?.hide());\r\nconst bo = new ResizeObserver(() => TooltipComponent.activeTooltip?.hide());\r\nbo.observe(document.body);\r\n\r\n@Component({\r\n template: require('./tooltip.component.html'),\r\n styles: [require('./tooltip.component.scss')]\r\n})\r\n@CoreComponent(true)\r\nexport class TooltipComponent extends AppBase {\r\n\r\n static activeTooltip?: TooltipComponent;\r\n\r\n @Input() content: string = '';\r\n\r\n isVisible: boolean = false;\r\n\r\n show() {\r\n if (isNotEmpty(this.content) && (this.content.trim() !== '') && !this.isVisible) {\r\n TooltipComponent.activeTooltip && TooltipComponent.activeTooltip !== this && (TooltipComponent.activeTooltip.isVisible = false);\r\n this.isVisible = true;\r\n TooltipComponent.activeTooltip = this;\r\n document.body.appendChild(this.elementRef.nativeElement);\r\n }\r\n // обязательно нужно вызвать, чтобы правильно расчитать размеры хинта !!!\r\n this.detectChanges();\r\n }\r\n\r\n hide() {\r\n if (this.isVisible) {\r\n this.isVisible = false;\r\n TooltipComponent.activeTooltip = undefined;\r\n document.body.removeChild(this.elementRef.nativeElement);\r\n }\r\n // обязательно нужно вызвать, чтобы вовремя расчитать значение видимости !!!\r\n this.detectChanges();\r\n }\r\n\r\n toggle() {\r\n if (this.isVisible) this.hide(); else this.show();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/components/tooltip/tooltip.component.ts","export default {\n id: \"FireHydrant-usage\",\n viewBox: \"0, 0, 400,400\",\n url: __webpack_public_path__ + \"svg-sprite.svg#FireHydrant-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/FireHydrant.svg\n// module id = 866\n// module chunks = 1","export default {\n id: \"accident-usage\",\n viewBox: \"0 0 120 120\",\n url: __webpack_public_path__ + \"svg-sprite.svg#accident-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/accident.svg\n// module id = 867\n// module chunks = 1","export default {\n id: \"areaPoint-usage\",\n viewBox: \"0 0 22 22\",\n url: __webpack_public_path__ + \"svg-sprite.svg#areaPoint-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/areaPoint.svg\n// module id = 868\n// module chunks = 1","export default {\n id: \"caller-shadow-usage\",\n viewBox: \"0 0 30 44\",\n url: __webpack_public_path__ + \"svg-sprite.svg#caller-shadow-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/caller-shadow.svg\n// module id = 869\n// module chunks = 1","export default {\n id: \"caller-usage\",\n viewBox: \"0 0 30 44\",\n url: __webpack_public_path__ + \"svg-sprite.svg#caller-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/caller.svg\n// module id = 870\n// module chunks = 1","export default {\n id: \"camera-usage\",\n viewBox: \"0 0 36 30\",\n url: __webpack_public_path__ + \"svg-sprite.svg#camera-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/camera.svg\n// module id = 871\n// module chunks = 1","export default {\n id: \"car-crush-usage\",\n viewBox: \"0 0 86.7 86.7\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-crush-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-crush.svg\n// module id = 872\n// module chunks = 1","export default {\n id: \"car-moving-usage\",\n viewBox: \"0 0 41 51\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-moving-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-moving.svg\n// module id = 873\n// module chunks = 1","export default {\n id: \"car-no-shadow-usage\",\n viewBox: \"0 0 41 47\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-no-shadow-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-no-shadow.svg\n// module id = 874\n// module chunks = 1","export default {\n id: \"car-nocoords-long-usage\",\n viewBox: \"0 0 500 500\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-nocoords-long-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-nocoords-long.svg\n// module id = 875\n// module chunks = 1","export default {\n id: \"car-nocoords-usage\",\n viewBox: \"0 0 500 500\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-nocoords-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-nocoords.svg\n// module id = 876\n// module chunks = 1","export default {\n id: \"car-notmoved-usage\",\n viewBox: \"0 0 500 500\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-notmoved-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-notmoved.svg\n// module id = 877\n// module chunks = 1","export default {\n id: \"car-stopped-long-usage\",\n viewBox: \"0 0 500 500\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-stopped-long-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-stopped-long.svg\n// module id = 878\n// module chunks = 1","export default {\n id: \"car-stopped-usage\",\n viewBox: \"0 0 500 500\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-stopped-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car-stopped.svg\n// module id = 879\n// module chunks = 1","export default {\n id: \"car-usage\",\n viewBox: \"0 0 41 47\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car.svg\n// module id = 880\n// module chunks = 1","export default {\n id: \"car1-usage\",\n viewBox: \"0 0 47 47\",\n url: __webpack_public_path__ + \"svg-sprite.svg#car1-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/car1.svg\n// module id = 881\n// module chunks = 1","export default {\n id: \"emergency-usage\",\n viewBox: \"0 0 36 36\",\n url: __webpack_public_path__ + \"svg-sprite.svg#emergency-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/emergency.svg\n// module id = 882\n// module chunks = 1","export default {\n id: \"fire-usage\",\n viewBox: \"0 0 36 36\",\n url: __webpack_public_path__ + \"svg-sprite.svg#fire-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/fire.svg\n// module id = 883\n// module chunks = 1","export default {\n id: \"flag-shadow-usage\",\n viewBox: \"0 0 30 44\",\n url: __webpack_public_path__ + \"svg-sprite.svg#flag-shadow-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/flag-shadow.svg\n// module id = 884\n// module chunks = 1","export default {\n id: \"flag-usage\",\n viewBox: \"0 0 30 44\",\n url: __webpack_public_path__ + \"svg-sprite.svg#flag-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/flag.svg\n// module id = 885\n// module chunks = 1","export default {\n id: \"flame-usage\",\n viewBox: \"0 0 36 36\",\n url: __webpack_public_path__ + \"svg-sprite.svg#flame-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/flame.svg\n// module id = 886\n// module chunks = 1","export default {\n id: \"group-house-usage\",\n viewBox: \"0 0 122.88 106.35\",\n url: __webpack_public_path__ + \"svg-sprite.svg#group-house-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/group-house.svg\n// module id = 887\n// module chunks = 1","export default {\n id: \"house-usage\",\n viewBox: \"0 0 122.88 106.35\",\n url: __webpack_public_path__ + \"svg-sprite.svg#house-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/house.svg\n// module id = 888\n// module chunks = 1","export default {\n id: \"information-usage\",\n viewBox: \"0 0 120 120\",\n url: __webpack_public_path__ + \"svg-sprite.svg#information-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/information.svg\n// module id = 889\n// module chunks = 1","export default {\n id: \"point-usage\",\n viewBox: \"0 0 60.1 100\",\n url: __webpack_public_path__ + \"svg-sprite.svg#point-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/point.svg\n// module id = 890\n// module chunks = 1","export default {\n id: \"star-usage\",\n viewBox: \"0 0 36 36\",\n url: __webpack_public_path__ + \"svg-sprite.svg#star-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg/star.svg\n// module id = 891\n// module chunks = 1","import { Pipe, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { ussFormatEx, UssFormatDisplayText } from '../utils/utils';\r\nimport { LangDependentPipe } from './lang-dependent.pipe';\r\n\r\n\r\n@Pipe({\r\n name: 'ussFormat',\r\n pure: false\r\n})\r\n@CoreComponent()\r\nexport class UssFormatPipe extends LangDependentPipe implements OnDestroy {\r\n\r\n private _timeoutId = null;\r\n\r\n constructor(cd: ChangeDetectorRef) { super(cd); }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n if (this._timeoutId) {\r\n clearTimeout(this._timeoutId);\r\n this._timeoutId = null;\r\n }\r\n }\r\n\r\n internalTransform(value: any, format?: string, defaultText?: string): string {\r\n const res = this.convert(value, format, defaultText);\r\n if (res.checkAfter) {\r\n if (this._timeoutId) {\r\n clearTimeout(this._timeoutId);\r\n this._timeoutId = null;\r\n }\r\n this._timeoutId = setTimeout(() => this.markForCheck(), res.checkAfter);\r\n }\r\n \r\n return res.displayText;\r\n }\r\n\r\n /**\r\n * Форматирует значение\r\n */\r\n convert(value: moment.MomentInput, format?: string, defaultText?: string): UssFormatDisplayText {\r\n return ussFormatEx(value, format, defaultText);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/format.pipe.ts","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { UssAccountService } from './account.service';\r\nimport { IUssAuthService, UssAuthServiceEvent, UssAuthAction, CoreAuthService, ussRouter } from '@core.module';\r\n\r\n@Injectable()\r\nexport class UssAuthService implements IUssAuthService, CanActivate {\r\n private storageKey: string = 'app_auth';\r\n\r\n private authHandlers: ((ev: UssAuthServiceEvent) => Promise)[] = [];\r\n\r\n /** Событие, вызывается при логине или логауте пользователя */\r\n public onAuthEvent = new EventEmitter();\r\n\r\n /** Регистрирует обработчик, который вызывается после логина или логаута. В отличие от события, ожидает окончание выполнения промиса. */\r\n public registerAuthHandler(handler: (ev: UssAuthServiceEvent) => Promise) {\r\n this.authHandlers.push(handler);\r\n }\r\n private doAuthHandlers(ev: UssAuthServiceEvent): Promise {\r\n return Promise.all(this.authHandlers.select(x => x(ev)).toArray());\r\n }\r\n\r\n constructor(private account: UssAccountService) {\r\n CoreAuthService.instance = this;\r\n this.accessToken = localStorage.getItem(`${this.storageKey}_access`);\r\n if (this.accessToken) {\r\n this.loggedUserName = localStorage.getItem(`${this.storageKey}_login`);\r\n this.accessTokenExpires = moment(localStorage.getItem(`${this.storageKey}_exp`));\r\n if (!this.accessTokenExpires.isValid()) {\r\n this.accessTokenExpires = moment();\r\n }\r\n }\r\n this._updateUserInfoPromise = new Promise(async r => {\r\n if (this.isLoggedIn && !this.loggedUser.Id) {\r\n await this.updateUserInfo(); \r\n }\r\n r(true);\r\n }); \r\n }\r\n\r\n private _updateUserInfoPromise: Promise;\r\n\r\n get waitLoading(): Promise { return this._updateUserInfoPromise || Promise.resolve(false) };\r\n\r\n /**\r\n * Требуется обязательный вызов этого метода перед использованием\r\n */\r\n public canActivate({ routeConfig }): Promise {\r\n return this._updateUserInfoPromise;\r\n }\r\n\r\n /**\r\n * Признак, что пользователь залогинен\r\n */\r\n public get isLoggedIn(): boolean {\r\n // проверяем наличие полученного токена и ппроверяем, не просрочен ли он\r\n const res = !!this.accessToken && this.accessTokenExpires?.isValid() && this.accessTokenExpires.isAfter(moment());\r\n if (!res && this.accessToken) {\r\n this.accessToken = null;\r\n // если токен есть, но просрочен - очищаем данные о нём\r\n this.logout();\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Признак, что пользователь админ\r\n */\r\n public get isAdmin(): boolean {\r\n return this.isLoggedIn && this.loggedUser && this.loggedUser.Roles && this.loggedUser.Roles.Contains(App.Role.Administrator);\r\n }\r\n\r\n /**\r\n * Признак, что пользователь супер-пользователь\r\n */\r\n public get isSuperUser(): boolean {\r\n return this.isLoggedIn && this.loggedUser && this.loggedUser.UserName === App.PredefinedUser.Administrator;\r\n }\r\n\r\n /**\r\n * Информация о текущем залогиненом пользователе\r\n */\r\n public loggedUser = { Roles: [], AccessRights: []};\r\n\r\n /**\r\n * Информация о логине текущего пользователя\r\n */\r\n public loggedUserName: string = localStorage.getItem(`${this.storageKey}_login`);\r\n\r\n /**\r\n * Информация о текущем токене залогиненого пользователя\r\n */\r\n public accessToken: string = localStorage.getItem(`${this.storageKey}_access`);\r\n\r\n /**\r\n * Время до которого текущий токен валиден\r\n */\r\n public accessTokenExpires: moment.Moment = moment(localStorage.getItem(`${this.storageKey}_exp`));\r\n\r\n\r\n private _updateUserInfo: Promise;\r\n /**\r\n * Обновляет информацию о пользователе.\r\n */\r\n public updateUserInfo(): Promise {\r\n if (this._updateUserInfo) return this._updateUserInfo;\r\n this._updateUserInfo = this.account.LoadCurrentUserInfo()\r\n .then(user => {\r\n this._updateUserInfo = null;\r\n this.loggedUser = user;\r\n if (user) {\r\n const ev = { action: UssAuthAction.LoggedIn, user };\r\n this.onAuthEvent.emit(ev);\r\n return this.doAuthHandlers(ev).then(() => user);\r\n } else {\r\n return this.logout().then(() => user);\r\n }\r\n })\r\n .catch(e => {\r\n this._updateUserInfo = null;\r\n return this.logout(e.status === 401).then(() => null);\r\n });\r\n\r\n return this._updateUserInfo;\r\n }\r\n\r\n public login(login: string, password: string/*, rememberMe: boolean = true*/): Promise {\r\n return this.account.BearerLogin(login, password)\r\n .then(r => {\r\n this.loggedUserName = r.userName;\r\n this.accessToken = r.access_token;\r\n this.accessTokenExpires = moment().local().add(r.expires_in, 's');\r\n localStorage.setItem(`${this.storageKey}_access`, this.accessToken);\r\n localStorage.setItem(`${this.storageKey}_login`, this.loggedUserName);\r\n localStorage.setItem(`${this.storageKey}_exp`, this.accessTokenExpires.format());\r\n return this.updateUserInfo();\r\n });\r\n }\r\n\r\n public async logout(noReload?: boolean): Promise {\r\n const logoutReq = this.account.Logout();\r\n \r\n localStorage.removeItem(`${this.storageKey}_access`);\r\n localStorage.removeItem(`${this.storageKey}_login`);\r\n localStorage.removeItem(`${this.storageKey}_exp`);\r\n const user = this.loggedUser;\r\n this.loggedUser = { Roles: [], AccessRights: [] };\r\n this.loggedUserName = null;\r\n this.accessToken = null;\r\n this.accessTokenExpires = null;\r\n\r\n try { await logoutReq } catch (e) { }\r\n\r\n const ev = { action: UssAuthAction.LoggedOut, user };\r\n if (noReload) ev.url = ussRouter.getCurrentLocation(false);\r\n this.onAuthEvent.emit(ev);\r\n await this.doAuthHandlers(ev);\r\n }\r\n\r\n public register(login: string, password: string): Promise {\r\n return this.account.Register(login, password).then(() => this.login(login, password));\r\n }\r\n\r\n/*\r\n public restorePassword(email: string): Promise {\r\n return this.account.RestorePassword(email);\r\n }\r\n\r\n public resetPassword(email: string, password: string, code: string): Promise {\r\n return this.account.ResetPassword(email, password, code).then(u => this.Login(u.UserName, password));\r\n }\r\n*/\r\n\r\n /**\r\n * Проверяет принадлежность текущего пользователя к одной из ролей.\r\n * Возвращает `true` если пользователь принадлежит хотя бы к одной из перечисленных ролей.\r\n * Суперпользователь всегда принадлежит любой роли.\r\n */\r\n public isInRoles(...roles: (App.Role | string)[] | (App.Role | string)[]): boolean;\r\n public isInRoles(roles: (App.Role | string)[] | (App.Role | string)[]): boolean;\r\n isInRoles(roles): boolean {\r\n roles = roles;\r\n if (typeof roles === 'string') {\r\n roles = [roles];\r\n }\r\n let res = this.isLoggedIn;\r\n if (res /*&& !this.isSuperUser*/) {\r\n const userRoles = (this.loggedUser.Roles || []).select(x => x.toLowerCase());\r\n res = (roles || []).select(x => x.toLowerCase()).intersect(userRoles).any();\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Проверяет наличие прав доступа у текущего пользователя.\r\n * Возвращает `true` если пользователь имеет хотя бы одно из перечисленных прав.\r\n * Суперпользователь всегда имеет полный доступ.\r\n */\r\n public hasAccessRights(...accessRights: (App.AccessRight | string)[] | (App.AccessRight | string)[]): boolean;\r\n public hasAccessRights(accessRights: (App.AccessRight | string)[] | (App.AccessRight | string)[]): boolean;\r\n hasAccessRights(accessRights): boolean {\r\n accessRights = accessRights;\r\n if (typeof accessRights === 'string') {\r\n accessRights = [accessRights];\r\n }\r\n let res = this.isLoggedIn;\r\n if (res /*&& !this.isSuperUser*/) {\r\n const userAccessRights = (this.loggedUser.AccessRights || []).select(x => x.toLowerCase());\r\n //return (accessRights || []).select(r => new RegExp(r)).any(r => userAccessRights.any(s => s.StartsWith(r, true)));\r\n res = (accessRights || []).select(x => x.toLowerCase()).intersect(userAccessRights).any();\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Проверяет возможность доступа к биснес-объекту.\r\n * Суперпользователь всегда имеет полный доступ.\r\n * @param entityName имя бизнес объекта\r\n * @param accessType вид доступа\r\n */\r\n public canAccessEntity(entityName: string, accessType: App.AccessType | string = ''): boolean {\r\n let accessRight = (App.AccessRight.AccessRefTemplate as string).replace('*', entityName);\r\n if (accessType) {\r\n accessRight = `${accessRight}:${accessType}`;\r\n }\r\n return this.hasAccessRights(accessRight);\r\n }\r\n\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/auth.module/auth.service.ts","import { Response } from '@angular/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CacheService, CacheStoragesEnum } from 'ng2-cache';\r\nimport { ICacheService, isEmpty, isNotEmpty, UssHttp, TCacheOptions, clone, cloneDeep, IUssEventsService, Reflection, EVENTS_SERVICE_TOKEN } from '@core.module';\r\n\r\n// исправление бага CacheService, когда removeAll() очищает весь CacheService без учёта префикса\r\nconst _set = CacheService.prototype.set;\r\nCacheService.prototype.set = function(key, value, options) {\r\n const res = _set.bind(this)(key, value, options);\r\n if (res && !this._isSystemKey(key)) {\r\n const storageKey = this._toStorageKey(key);\r\n this._saveTag(this._prefix, storageKey);\r\n }\r\nreturn res;\r\n};\r\nCacheService.prototype.removeAll = function() {\r\n this.removeTag(this._prefix);\r\n this.remove(this._tagsStorageKey());\r\n};\r\n\r\n/** Сервис кеширования результатов Http-запросов */\r\nexport class UssCacheService {\r\n\r\n public static readonly DefaultCacheOptions: TCacheOptions = {\r\n storage: 'memory',\r\n ttl: 100,\r\n tag: '@DEFAULT',\r\n cacheErrors: false\r\n }\r\n\r\n private static cacheFactory = new CacheService(null);\r\n\r\n public static defaultCaches = {\r\n memory: UssCacheService.create(CacheStoragesEnum.MEMORY, 'appCache: '),\r\n localStorage: UssCacheService.create(CacheStoragesEnum.LOCAL_STORAGE, 'appCache: '),\r\n session: UssCacheService.create(CacheStoragesEnum.SESSION_STORAGE, 'appCache: ')\r\n }\r\n\r\n public static create(type: CacheStoragesEnum, globalPrefix?: string): ICacheService {\r\n const res = this.cacheFactory.useStorage(type);\r\n if (globalPrefix) {\r\n res.setGlobalPrefix(globalPrefix);\r\n }\r\n return res;\r\n }\r\n\r\n public static getFromCache(key: string, fn: () => T, options?: string | TCacheOptions, cache?: ICacheService): T {\r\n let res: T;\r\n if (key) {\r\n if (typeof options === 'string') {\r\n options = clone(UssCacheService.DefaultCacheOptions, true);\r\n (options).tag = options;\r\n } else if (isEmpty(options)) {\r\n options = UssCacheService.DefaultCacheOptions;\r\n }\r\n // ReSharper disable once SuspiciousInstanceofCheck\r\n cache = cache\r\n || (options.storage instanceof CacheService\r\n ? (options.storage)\r\n : (typeof options.storage === 'string') ? this.defaultCaches[options.storage] : undefined)\r\n || this.defaultCaches['memory'];\r\n const cacheOptions = { tag: options.tag, maxAge: options.ttl };\r\n const cacheValue = cache.get(key);\r\n if (isNotEmpty(cacheValue)) {\r\n res = cacheValue();\r\n } else {\r\n try {\r\n res = fn();\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n if (res instanceof Observable) {\r\n let resolver;\r\n let rejector;\r\n const pRes = new Promise((resolve, reject) => {\r\n resolver = resolve;\r\n rejector = reject;\r\n });\r\n res = ((>res).map(r => {\r\n if (r instanceof Response) {\r\n r = UssHttp.TransformServiceResponse(r.text(), r.headers);\r\n }\r\n cache.set(key, () => Observable.fromPromise(Promise.resolve(r)), cacheOptions);\r\n resolver(r);\r\n return r;\r\n }).catch(error => {\r\n if ((options).cacheErrors) {\r\n cache.set(key, () => UssHttp.HandleError(error), cacheOptions);\r\n } else {\r\n cache.remove(key);\r\n }\r\n rejector(error);\r\n return error;\r\n }) as any);\r\n cache.set(key, () => Observable.fromPromise(pRes), cacheOptions);\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n } else if (res instanceof Promise) {\r\n let resolver;\r\n let rejector;\r\n const pRes = new Promise((resolve, reject) => {\r\n resolver = resolve;\r\n rejector = reject;\r\n });\r\n res = (>res)\r\n .then(r => {\r\n if (r instanceof Response) {\r\n r = UssHttp.TransformServiceResponse(r.text(), r.headers);\r\n }\r\n cache.set(key, () => Promise.resolve(r), cacheOptions);\r\n resolver(r);\r\n return r;\r\n })\r\n .catch(e => {\r\n if ((options).cacheErrors) {\r\n cache.set(key, () => Promise.reject(e), cacheOptions);\r\n } else {\r\n cache.remove(key);\r\n }\r\n rejector(e);\r\n throw e;\r\n });\r\n cache.set(key, () => pRes, cacheOptions);\r\n } else {\r\n cache.set(key, () => res, cacheOptions);\r\n }\r\n } catch (e) {\r\n if ((options).cacheErrors) {\r\n cache.set(key, () => { throw e }, cacheOptions);\r\n }\r\n throw e;\r\n }\r\n }\r\n // необходимо склонировать результат, чтобы данные не менялись в кеше при их изменении на клиенте\r\n res = cloneDeep(res);\r\n } else {\r\n res = fn();\r\n }\r\n return res;\r\n }\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/cache.module/services/cache.service.ts","import * as ng from '@angular/core';\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\nimport { msg, isEmpty, ifEmpty, isFunction } from '@core.module';\r\n\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { UssTheme } from '../../theme';\r\nimport { SystemComponent } from '../../internals';\r\n\r\nexport declare type UssButtonType = 'ok' | 'cancel' | 'yes' | 'no' | 'close' | 'save' | 'empty' | 'apply' | 'select' | 'clear' | 'saveAndPrint' | 'print' | 'delete';\r\nexport declare type UssButtonSize = 'mini' | 'tiny' | 'small' | 'medium' | 'large' | 'big' | 'huge' | 'massive';\r\n\r\nvar THEME = UssTheme;\r\n\r\n@ng.Component({\r\n selector: 'uss-button',\r\n template: require(`./${THEME}/button.component.html`),\r\n styles: [require(`./${THEME}/button.component.scss`)],\r\n changeDetection: ng.ChangeDetectionStrategy.OnPush,\r\n encapsulation: ng.ViewEncapsulation.None\r\n})\r\n@SystemComponent()\r\nexport class UssButtonComponent extends UssComponent2 implements ng.OnChanges, ng.AfterViewInit {\r\n @ng.Input('class') inputClass: string;\r\n @ng.Input('button-class') buttonClass: string = '';\r\n public class: string;\r\n\r\n @ng.Input() type: UssButtonType;\r\n @ng.Input() size: UssButtonSize;\r\n @ng.Input() icon: string;\r\n @ng.Input('icon-color') iconColor: string = '';\r\n\r\n @ng.Input() isVertical: boolean;\r\n \r\n @ng.Input('loading') inputLoading: boolean = false;\r\n public loading: number = 0;\r\n\r\n @ng.Input('auto-loading') autoLoading: boolean | string;\r\n\r\n @ng.Input('disabled') inputDisabled: boolean = false;\r\n public disabled: number = 0;\r\n\r\n @ng.ViewChild('content') content: ng.ElementRef;\r\n public defaultContent: string;\r\n\r\n @ng.Input('tabindex') inputTabindex: number = undefined;\r\n public get tabindex(): number { return this.disabled ? -1 : this.inputTabindex }\r\n public set tabindex(value: number) { this.inputTabindex = value; }\r\n\r\n /**\r\n * Пункты меню выпадающего списка. Если этот список не пуст - будет отображена кнопка для показа выпадающего списка.\r\n * Если для самой кнопки не задано событие (click) - клик на саму кнопку также покажет выпадающий список.\r\n * Шаблон элементов выпадающего списка может быть задан при помощи шаблона, указанного в popupItemTemplate.\r\n */\r\n @ng.Input('popupItems') popupItems: (object | string)[];\r\n\r\n /**\r\n * Шаблон элементов выпадающего списка. Может отсутствовать - в этом случае элементы списка просто выводятся как строки.\r\n */\r\n @ng.Input('popupItemTemplate') popupItemTemplate: ng.TemplateRef;\r\n\r\n /**\r\n * От какого элемента должен выпадать список - по умолчанию это сама кнопка\r\n */\r\n @ng.Input('popupNode') popupNode: Element;\r\n\r\n /**\r\n * Если `popupItems` - это список объектов, а `popupItemTemplate` не задан - это наименование поля для отображения в списке по умолчанию.\r\n * Если поле не задано, будет проведена попытка использовать поля `Description`, `description`, `Name`, `name` в указанном порядке.\r\n */\r\n @ng.Input('popupItemDisplayField') popupItemDisplayField: string;\r\n\r\n /**\r\n * Если шаблон для элементов выпадающего списка не указан - событие будет вызвано при клике на элементе выпадающего меню.\r\n * Если списком элементов являлся массив строк - в событие будет передан порядковый номер выбранной строки\r\n */\r\n @ng.Output('popupItemClick') popupItemClick = new ng.EventEmitter();\r\n @ng.Output('click') click = new ng.EventEmitter();\r\n\r\n ngOnChanges(changes) {\r\n this.updateLayout();\r\n }\r\n\r\n private _observer: MutationObserver;\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._observer?.disconnect();\r\n }\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n const icon = this.nativeElement.querySelector('button>.button-wrapper>i');\r\n\r\n if (icon) {\r\n const innerContent = this.nativeElement.querySelector('button>.button-wrapper .uss-button-content.uss-button-inner-content');\r\n const defaultContent = this.nativeElement.querySelector('button>.button-wrapper .button-wrapper .uss-button-content.uss-button-default-content');\r\n if ((innerContent || defaultContent)) {\r\n this._observer = new MutationObserver(() => setContentClass(innerContent, defaultContent));\r\n innerContent && this._observer.observe(innerContent, { characterData: true, childList: true, subtree: true });\r\n defaultContent && this._observer.observe(defaultContent, { characterData: true, childList: true, subtree: true });\r\n }\r\n setContentClass(innerContent, defaultContent);\r\n }\r\n\r\n function setContentClass(innerContent, defaultContent) {\r\n if (innerContent?.innerText || defaultContent?.innerText) {\r\n icon.classList.add('with-content');\r\n } else {\r\n icon.classList.remove('with-content');\r\n }\r\n }\r\n\r\n //this.autoLoading = this.autoLoading === 'false' ? false : !!ifEmpty(this.autoLoading, true);\r\n this.autoLoading = this.bool(this.autoLoading, !this.popupItems?.length);\r\n this.markForCheck();\r\n setTimeout(() => this.updateLayout());\r\n }\r\n\r\n clickPopupItem(x) {\r\n if (typeof x === 'object') {\r\n this.popupItemClick.emit(x);\r\n } else {\r\n this.popupItemClick.emit(this.popupItems.indexOf(x));\r\n }\r\n }\r\n\r\n updateLayout(): void {\r\n this.defaultContent = '';\r\n let res = (this.inputClass || '');\r\n switch (this.type) {\r\n case 'ok':\r\n res += ' primary uss-system-button';\r\n this.defaultContent = '@DIALOG.OK|OK';\r\n break;\r\n case 'select':\r\n res += ' primary uss-system-button';\r\n this.defaultContent = '@DIALOG.SELECT|Выбрать';\r\n break;\r\n case 'cancel':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.CANCEL|Отмена';\r\n break;\r\n case 'clear':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.CLEAR|Очистить';\r\n break;\r\n case 'yes':\r\n res += ' positive uss-system-button';\r\n this.defaultContent = '@DIALOG.YES|Да';\r\n break;\r\n case 'save':\r\n res += ' positive uss-system-button';\r\n this.defaultContent = '@DIALOG.SAVE_CHANGES|Сохранить';\r\n break;\r\n case 'apply':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.APPLY|Применить';\r\n break;\r\n case 'no':\r\n res += ' negative uss-system-button';\r\n this.defaultContent = '@DIALOG.NO|Нет';\r\n break;\r\n case 'close':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.CLOSE|Закрыть';\r\n break;\r\n case 'print':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.PRINT|Печать';\r\n break;\r\n case 'saveAndPrint':\r\n res += ' normal uss-system-button';\r\n this.defaultContent = '@DIALOG.SAVE_AND_PRINT|Сохранить и распечатать';\r\n break;\r\n case 'delete':\r\n res += ' negative uss-system-button';\r\n this.defaultContent = '@DIALOG.DELETE|Удалить';\r\n break;\r\n case 'empty':\r\n res += ' basic';\r\n break;\r\n default :\r\n res += ' normal';\r\n break;\r\n }\r\n res += this.size ? ` ${this.size}` : '';\r\n\r\n if ((this.autoLoading && this.loading) || this.inputLoading) {\r\n res += ' loading';\r\n }\r\n\r\n this.class = `${res} ${this.buttonClass}`;\r\n\r\n if (this.content?.nativeElement?.innerText?.trim()) {\r\n this.defaultContent = '';\r\n }\r\n\r\n this.markForCheck();\r\n }\r\n\r\n private loadingTimeout;\r\n\r\n setLoading(loading: boolean) {\r\n if (this.loadingTimeout) {\r\n clearTimeout(this.loadingTimeout);\r\n this.loadingTimeout = null;\r\n } else if (!loading) {\r\n this.loading--;\r\n }\r\n if (loading) \r\n this.disabled++;\r\n else\r\n this.disabled--;\r\n\r\n if (this.disabled) {\r\n this.loadingTimeout = setTimeout(() => {\r\n this.loadingTimeout = null;\r\n if (!this.changeDetector['destroyed'] && this.disabled) {\r\n this.loading++;\r\n this.updateLayout();\r\n }\r\n }, 50);\r\n }\r\n\r\n this.updateLayout();\r\n }\r\n\r\n @ng.ViewChild('btn') btn: ng.ElementRef;\r\n @ng.ViewChild('itemsPopup') itemsPopup;\r\n\r\n focus(debounceTime: number | boolean = 0) {\r\n if (this.btn) {\r\n if (isEmpty(debounceTime) || debounceTime === false)\r\n this.btn.nativeElement.focus();\r\n else {\r\n this.debounce(() => this.btn.nativeElement.focus(), debounceTime, 'setFocus');\r\n }\r\n }\r\n }\r\n\r\n\r\n public onClick($event) {\r\n if (this.disabled || this.inputDisabled || this.loading || this.inputLoading) {\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n return false;\r\n }\r\n else if (this.popupItems && this.popupItems.length > 0 && this.click.observers.length === 0) {\r\n this.showPopup();\r\n }\r\n return true;\r\n }\r\n\r\n\r\n\r\n public showPopup() {\r\n if (this.itemsPopup) {\r\n const target = this?.popupNode || this.btn?.nativeElement || this.nativeElement;\r\n const popup = this.itemsPopup.show({ position: 'bottom left' }, target);\r\n if (target && popup) {\r\n const targetBounding = target.getBoundingClientRect();\r\n (popup).style.marginLeft = `0`;\r\n const deltaX = targetBounding.left - popup.getBoundingClientRect().left;\r\n (popup).style.marginLeft = `${deltaX}px`;\r\n (popup).style.setProperty('min-width', `${targetBounding.right - targetBounding.left}px`, 'important');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Вызывает указанный метод.\r\n * Если метод возвращает
Promise или Observable,\r\n * кнопка будет заблокирована и будет выведена анимация загрузки, до окончания выполнения асинхронной операции.\r\n * @param fn - вызываемый метод.\r\n */\r\n public execute(fn: () => Promise | Observable | any, context?: Object): Promise | Observable | any {\r\n if (this.disabled || this.inputDisabled || this.loading || this.inputLoading) return () => { };\r\n const args = [];\r\n for (let i = 2; i < arguments.length; i++) {\r\n args.push(arguments[i]);\r\n }\r\n\r\n let res: Promise | Observable | Function = fn;\r\n if (isFunction(fn)) {\r\n fn.bind && (fn = fn.bind(context || this.parentComponent || this, ...args));\r\n res = fn();\r\n }\r\n\r\n if (/*this.autoLoading && */(res instanceof Observable || res instanceof Promise)) {\r\n this.setLoading(true);\r\n if (res instanceof Observable) {\r\n res.subscribe(\r\n () => this.reset(),\r\n e => {\r\n this.handleError(e);\r\n this.reset();\r\n }\r\n );\r\n }\r\n else if (res instanceof Promise) {\r\n res.then(\r\n () => this.reset(),\r\n e => {\r\n this.handleError(e);\r\n this.reset();\r\n }\r\n );\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n handleError(e) {\r\n msg.error(e);\r\n }\r\n\r\n private reset() {\r\n if (!this.changeDetector['destroyed']) {\r\n this.setLoading(false);\r\n } else {\r\n clearTimeout(this.loadingTimeout);\r\n }\r\n }\r\n\r\n public getPopupItemDisplayText(item): string {\r\n let res = item;\r\n if (typeof item === 'object') {\r\n if (this.popupItemDisplayField) {\r\n res = item[this.popupItemDisplayField];\r\n } else if ('Description' in item) {\r\n res = item['Description'];\r\n } else if ('description' in item) {\r\n res = item['description'];\r\n } else if ('Name' in item) {\r\n res = item['Name'];\r\n } else if ('name' in item) {\r\n res = item['name'];\r\n } else {\r\n res = item.toString();\r\n }\r\n }\r\n return ifEmpty(res, '');\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/button/button.component.ts","import { Type, EventEmitter } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ifEmpty, isNotEmpty, TUssEventHandler, TUssEventUnsubscriber, UssHttpHelper, auth, UssAuthServiceEvent, UssAuthAction, UssHttp, debounce, clearDebounce, translate } from '@core.module';\r\nimport * as signalR from '@aspnet/signalr';\r\nimport * as moment from 'moment';\r\nimport { LogLevel } from '@aspnet/signalr';\r\n\r\nexport interface UssSignalrHubOptions {\r\n name?: string;\r\n route?: string;\r\n needAuth?: boolean;\r\n}\r\n\r\nexport declare type TUssEventDescriptor = { hubName: string, eventName: string, payload: any };\r\n\r\nexport function AppHub();\r\nexport function AppHub(name: string);\r\nexport function AppHub(options: UssSignalrHubOptions);\r\nexport function AppHub(p?: string | UssSignalrHubOptions) {\r\n return (target: Type) => {\r\n const options: UssSignalrHubOptions = (p && typeof p === 'object') ? p : { name: p || '' };\r\n options.name = (options.name || target.name).toLowerCase();\r\n if (appHubs.all(x => x.options.name !== options.name)) {\r\n // ReSharper disable once InconsistentNaming\r\n const instance = new target(options);\r\n if (instance instanceof UssHub) {\r\n appHubs.push(instance);\r\n } else {\r\n console.error(`${target.name}: @AppHub() should be applied to the children of the UssHub class.`);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * List of all application signalR hubs by @AppHub decorator.\r\n */\r\nexport const appHubs: UssHub[] = [];\r\n\r\n// сделано только для того, чтобы убрать у запроса признак withCredentials.\r\n// скопировано из стандартного signalR.DefaultHttpClient\r\nclass UssHttpClient extends signalR.HttpClient {\r\n send(request: signalR.HttpRequest): Promise {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = false;\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhr.setRequestHeader('X-ID', UssHttp.clientId);\r\n if (translate.currentLang) {\r\n xhr.setRequestHeader('X-Language', translate.currentLang);\r\n }\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');\r\n if (request.headers) {\r\n Object.keys(request.headers)\r\n .forEach(header => xhr.setRequestHeader(header, request.headers[header]));\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new signalR.HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n } else {\r\n reject(new signalR.HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n //this['logger'].log(signalR.LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText);\r\n reject(new signalR.HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n //this['logger'].log(signalR.LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new signalR.TimeoutError());\r\n };\r\n xhr.send(request.content || '');\r\n });\r\n }\r\n}\r\n\r\n\r\nexport class UssHub {\r\n\r\n private static _isOffline: boolean = false;\r\n /** Признак того, что backend в оффлайне */\r\n public static get isOffline(): boolean { return this._isOffline }\r\n public static set isOffline(value: boolean) {\r\n if (value !== this._isOffline || value !== UssHttpHelper.isOffline) {\r\n const isOfflineChanged = value !== this._isOffline;\r\n this._isOffline = value;\r\n if (value) {\r\n debounce(() => UssHttpHelper.isOffline = this._isOffline, 5000, 'UssHttpHelper.isOffline');\r\n } else {\r\n UssHttpHelper.isOffline = false;\r\n clearDebounce('UssHttpHelper.isOffline');\r\n }\r\n if (isOfflineChanged) {\r\n this.onSignalrStateChanged.emit(this._isOffline);\r\n }\r\n }\r\n }\r\n\r\n /** Вызывается когда меняется признак подключения signalR.\r\n * Причиной может быть оффлайн режим или недоступность сервера.\r\n */\r\n public static onSignalrStateChanged = new EventEmitter();\r\n\r\n\r\n options: UssSignalrHubOptions;\r\n connectionId: string;\r\n private _isConnected: boolean = false;\r\n connection: signalR.HubConnection;\r\n subscriptions: { [eventName: string]: any } = { $count: 0 };\r\n\r\n private _isConnecting: boolean = false;\r\n\r\n get isConnected(): boolean { return this._isConnected && this.connection && this.connection && this.connection['connection'].connectionState === 1 /* Connected */}\r\n get isDisconnected(): boolean { return this._isConnected && this.connection && this.connection && this.connection['connection'].connectionState === 2 /* Disconnected */}\r\n\r\n constructor(options?: UssSignalrHubOptions) {\r\n this.options = options || {};\r\n this.options.name = (this.options.name || this.constructor.name).toLowerCase();\r\n auth.onAuthEvent.subscribe(e => this.onAuthEvent(e));\r\n }\r\n\r\n get isInitialized(): boolean { return isNotEmpty(this.connection) }\r\n\r\n /**\r\n * Создаёт сконфигурированный экземпляр хаба.\r\n * @param configure дополнительная конфигурация хаба\r\n * @param extraOptions дополнительные параметры\r\n */\r\n init(configure?: (builder: signalR.HubConnectionBuilder) => signalR.HubConnectionBuilder, extraOptions?: UssSignalrHubOptions): this {\r\n if (!this.isInitialized) {\r\n if (extraOptions) {\r\n this.options.name = ifEmpty(extraOptions.name, this.options.name).toLowerCase();\r\n this.options.route = ifEmpty(extraOptions.route, this.options.route) || `signalR/${this.options.name}`;\r\n this.options.needAuth = ifEmpty(ifEmpty(extraOptions.needAuth, this.options.needAuth), true);\r\n }\r\n if (!this.options.needAuth || auth.isLoggedIn) {\r\n configure = configure || (x => x);\r\n // Будем принудительно передавать access_token в роуте запроса (это нужно, чтобы access_token передавался в CORS preflight OPTIONS запрос)\r\n/*\r\n const opt = (this.options.needAuth ?\r\n {\r\n accessTokenFactory: () => auth.accessToken,\r\n httpClient: new UssHttpClient()\r\n }\r\n : {});\r\n*/\r\n const opt = ({ httpClient: new UssHttpClient() });\r\n this.connection = configure(new signalR.HubConnectionBuilder()\r\n .withUrl(UssHttp.updateUrl(this.options.route)+`?X-ID=${UssHttp.clientId}${(this.options.needAuth ? '&access_token='+auth.accessToken: '')}`, opt)\r\n .withHubProtocol(new signalR.JsonHubProtocol()))\r\n .configureLogging(LogLevel.Error) // Устанавливает уровень логирования\r\n .build();\r\n\r\n this.connection.serverTimeoutInMilliseconds = 10*60*1000; // 10 минут - таймаут, если события не будут приходить в течение 10 минут\r\n\r\n // Это извращение для получения connectionId\r\n if (this.connection['connection']._createConnectUrl === undefined) {\r\n this.connection['connection']._createConnectUrl = this.connection['connection'].createConnectUrl;\r\n this.connection['connection'].createConnectUrl = (url, connectionId) => {\r\n this.connectionId = connectionId;\r\n return this.connection['connection']._createConnectUrl(url, connectionId);\r\n }\r\n }\r\n\r\n this.connection.onclose((e: Error) => {\r\n this._isConnected = false;\r\n if (this.subscriptions['$count'] > 0) {\r\n this.connectionError(e);\r\n }\r\n console.log(`${this.options.name}: Connection closed`);\r\n this.onDisconnected$.next(this.connectionId);\r\n });\r\n\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Подписка на события хаба. \r\n */\r\n on$ = new Subject();\r\n\r\n /**\r\n * Подписка на событие соединения клиента с сервером.\r\n */\r\n onConnected$ = new Subject();\r\n\r\n /**\r\n * Подписка на событие разъединения клиента с сервером.\r\n */\r\n onDisconnected$ = new Subject();\r\n\r\n /**\r\n * Подписка на событие обрыва соединения клиента с сервером.\r\n */\r\n onConnectionError$ = new Subject();\r\n\r\n /**\r\n * Подписка на событие попытки переподключения соединения клиента с сервером (передаётся номер попытки).\r\n */\r\n onReconnecting$ = new Subject();\r\n\r\n private reconnectingAttemptNumber = 0;\r\n\r\n reconnect() {\r\n console.log(`${this.options.name}: ${this.reconnectingAttemptNumber ? `Reconnecting attempt #${this.reconnectingAttemptNumber}` : 'Opening connection'}`, this.connection['connection']);\r\n this.connection.start()\r\n .then(() => {\r\n this._isConnected = true;\r\n this.reconnectingAttemptNumber = 0;\r\n console.log(`${this.options.name}: Connection opened`);\r\n UssHub.isOffline = false;\r\n this.onConnected$.next(this.connectionId);\r\n /*\r\n this.connection.invoke('GetConnectionId').then(id => {\r\n this.connectionId = id;\r\n this.onConnected$.next(this.connectionId);\r\n });\r\n */\r\n })\r\n .catch(err => {\r\n //console.error(err);\r\n //setTimeout(() => this.reconnect(), 1000);\r\n this.connectionError(err);\r\n });\r\n }\r\n\r\n /**\r\n * Вызывается при обрыве соединения клиента с сервером.\r\n */\r\n connectionError(err: Error|any) {\r\n UssHub.isOffline = true;\r\n err && console.error(err);\r\n this.onConnectionError$.next(err);\r\n if (err?.statusCode !== 401) {\r\n setTimeout(() => {\r\n if (this.subscriptions['$count'] > 0 && !this._isConnected) {\r\n this.reconnectingAttemptNumber++;\r\n this.onReconnecting$.next(this.reconnectingAttemptNumber);\r\n this.reconnect();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * Подписывается на событие, вызываемое после того, как установлено соединение клиента с сервером.\r\n * Это происходит при появлении первой подписки (если перед этим не было ни одной активной подписки) или\r\n * если произошёл ToDo: реконнект signalR-соединения (если обнаружен разрыв связи, но связь восстанавливается если это возможно)\r\n * Возвращает подписку (Subscription) от которой можно в последствии отписаться.\r\n * @param fn callback который будет вызван при наступлении события\r\n * @param immediately указывает способ как будет происходить вызов callback-а, если соединение уже установлено на момент вызова:\r\n * undefined - не будет вызван\r\n * true - будет вызван немедленно\r\n * false - будет вызван через timeout 0\r\n */\r\n onConnected(fn: ((connectionId: string) => void), immediately?: boolean): Subscription {\r\n function fire(hub: UssHub) {\r\n if (hub._isConnected) {\r\n hub.onConnected$.next(hub.connectionId);\r\n }\r\n }\r\n const res = this.onConnected$.subscribe(connectionId => fn(connectionId));\r\n if (immediately === true) {\r\n fire(this);\r\n } else if (immediately === false) {\r\n setTimeout(() => fire(this), 0);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Подписывается на событие, вызываемое после того, как соединение клиента с сервером закрыто.\r\n * Возвращает подписку (Subscription) от которой можно в последствии отписаться.\r\n * @param fn callback который будет вызван при наступлении события\r\n * @param immediately указывает способ как будет происходить вызов callback-а, если соединение уже установлено на момент вызова:\r\n * undefined - не будет вызван\r\n * true - будет вызван немедленно\r\n * false - будет вызван через timeout 0\r\n */\r\n onDisconnected(fn: ((connectionId: string) => void), immediately?: boolean): Subscription {\r\n function fire(hub: UssHub) {\r\n if (!hub._isConnected) {\r\n hub.onDisconnected$.next(hub.connectionId);\r\n }\r\n }\r\n const res = this.onDisconnected$.subscribe(connectionId => fn(connectionId));\r\n if (immediately === true) {\r\n fire(this);\r\n } else if (immediately === false) {\r\n setTimeout(() => fire(this), 0);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Указанный callback будет вызван один раз если/когда установлено соединение с сервером.\r\n * @param fn callback который будет вызван\r\n */\r\n whenConnected(fn: ((connectionId: string) => T | Promise)): Promise {\r\n let res;\r\n if (this.isConnected) {\r\n console.log(`${this.options.name}: * IsConnected.1 *`, this.connection['connection']);\r\n res = new Promise(() => fn(this.connectionId));\r\n } else {\r\n let subscription = null;\r\n res = new Promise(r => {\r\n subscription = this.onConnected(clientId => {\r\n if (this.connection['connection'].connectionState === 1 /* Connected */) {\r\n console.log(`${this.options.name}: ** IsConnected **`, this.connection['connection']);\r\n return r(fn(clientId));\r\n } else {\r\n // ничего не надо делать - ждём подключения\r\n }\r\n }, true);\r\n });\r\n res.then(() => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Указанный callback будет вызван один раз если/когда соединение с сервером закрыто.\r\n * @param fn callback который будет вызван\r\n */\r\n whenDisconnected(fn: ((connectionId: string) => T | Promise)): Promise {\r\n let res;\r\n if (!this.isDisconnected) {\r\n console.log(`${this.options.name}: * IsDisconnected.1 *`, this.connection['connection']);\r\n res = new Promise(() => fn(this.connectionId));\r\n } else {\r\n let subscription = null;\r\n res = new Promise(r => {\r\n subscription = this.onDisconnected(connectionId => {\r\n if (this.connection['connection'].connectionState === 2 /* Disconnected */) {\r\n console.log(`${this.options.name}: ** IsDisconnected **`, this.connection['connection']);\r\n return r(fn(connectionId));\r\n } else {\r\n return r(null);\r\n }\r\n }, true);\r\n });\r\n res.then(() => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n private _authSubscriptions: { event: string, handler: TUssEventHandler }[] = [];\r\n private findAuthSubscription(event: string, handler: TUssEventHandler): ({ event: string, handler: TUssEventHandler }) {\r\n return this._authSubscriptions.firstOrDefault(s => s.event === event && s.handler === handler);\r\n }\r\n\r\n private onAuthEvent(e: UssAuthServiceEvent) {\r\n if (this.isInitialized) {\r\n if (e.action === UssAuthAction.LoggedIn) {\r\n for (let s of this._authSubscriptions) {\r\n this.subscribe(s.event, s.handler);\r\n }\r\n } else if (e.action === UssAuthAction.LoggedOut) {\r\n const saveSubscriptions = this._authSubscriptions.toArray();\r\n for (let s of saveSubscriptions) {\r\n this.unsubscribe(s.event, s.handler);\r\n }\r\n this._authSubscriptions = saveSubscriptions;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Подписка на событие хаба.\r\n * Не следует вызывать явно - нужно использовать метод `subscribe` сервиса `IUssEventsService`\r\n */\r\n private subscribe(event: string, handler: TUssEventHandler): TUssEventUnsubscriber {\r\n this.init();\r\n if (this.options.needAuth && !this.findAuthSubscription(event, handler)) {\r\n this._authSubscriptions.push({ event, handler });\r\n }\r\n if (!this.options.needAuth || auth.isLoggedIn) {\r\n if (this.subscriptions['$count'] === 0) {\r\n this.whenDisconnected(() => {\r\n if (this.connection) {\r\n this.reconnect();\r\n }\r\n });\r\n }\r\n const subs = (this.subscriptions[event] || []);\r\n if (subs.length === 0) {\r\n this.connection.on(event, e => {\r\n UssHub.isOffline = false;\r\n\r\n const serverTimeEmulated = e['$serverTimeEmulated'];\r\n if (isNotEmpty(serverTimeEmulated)) UssHttpHelper.serverTimeEmulated = !!serverTimeEmulated;\r\n let serverTime: moment.Moment = e['$serverTime'];\r\n if (isNotEmpty(serverTime)) {\r\n serverTime = moment(serverTime);\r\n if (serverTime.isValid()) {\r\n UssHttpHelper.serverTime = serverTime;\r\n }\r\n }\r\n\r\n this.on$.next({ hubName: this.options.name, eventName: event, payload: e });\r\n });\r\n }\r\n if (!subs.includes(handler)) {\r\n subs.push(handler);\r\n this.subscriptions[event] = subs;\r\n this.subscriptions['$count']++;\r\n }\r\n }\r\n return { eventName: event, handler, unsubscribe: () => this.unsubscribe(event, handler) };\r\n }\r\n\r\n /**\r\n * Отписка на событие хаба.\r\n * Не следует вызывать явно - нужно использовать метод `subscribe` сервиса `IUssEventsService`\r\n */\r\n private unsubscribe(event: string, handler: TUssEventHandler) {\r\n this.init();\r\n const s = this.findAuthSubscription(event, handler);\r\n if (s) this._authSubscriptions.Remove(s);\r\n const subs = (this.subscriptions[event] || []);\r\n if (subs.includes(handler)) {\r\n const idx = subs.indexOf(handler);\r\n if (idx >= 0)\r\n subs.splice(idx, 1);\r\n if (subs.length === 0) {\r\n this.connection.off(event);\r\n }\r\n this.subscriptions['$count']--;\r\n if (this.subscriptions['$count'] <= 0) {\r\n this.subscriptions['$count'] = 0;\r\n this.whenConnected(() => {\r\n if (this.connection) {\r\n console.log(`${this.options.name}: Closing connection`);\r\n this.connection\r\n .stop()\r\n .catch(err => {\r\n console.error(err);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /*\r\n getConnectionId(): Promise {\r\n return this.connection.invoke('GetConnectionId');\r\n }\r\n */\r\n}\r\n\r\n/*\r\n@AppHub()\r\nclass OnDeviceStatusChangedHub extends UssHub {\r\n}\r\n*/\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/signalr.module/UssHub.ts","declare type TUssTheme = 'semantic-ui' | 'primeng';\r\n\r\nexport const UssTheme: TUssTheme = 'semantic-ui';\r\n//export const UssTheme: TUssTheme = 'primeng';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/theme.ts","import { Component, Input } from '@angular/core';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssInputComponent } from '../input/inputs.component';\r\n\r\n@Component({\r\n selector: 'uss-color-picker',\r\n template: require('./color-picker.component.html'),\r\n styles: [require('./color-picker.component.scss')]\r\n})\r\n@SystemComponent()\r\nexport class UssColorPickerComponent extends UssInputComponent {\r\n\r\n /** Цвета исключаемые из списка */\r\n @Input('exclude') exclude: string | string[];\r\n\r\n /** Цвета добавляемые в список (в начало списка) */\r\n @Input('include') include: string | string[];\r\n\r\n /** Палитра цветов (если не задана используется палитра по умолчанию) */\r\n @Input('palette') palette: string | string[];\r\n\r\n /** Цвета, отображаемые впалитре */\r\n public colors: string[];\r\n\r\n defaultColors = [\r\n // красный\r\n 'Salmon',\r\n 'LightSalmon',\r\n 'Crimson',\r\n 'FireBrick',\r\n\r\n 'Red',\r\n\r\n 'DarkRed',\r\n 'HotPink',\r\n 'DeepPink',\r\n 'MediumVioletRed',\r\n\r\n // оранжевый-жёлтый\r\n 'OrangeRed',\r\n 'Orange',\r\n 'Yellow',\r\n 'DarkKhaki',\r\n\r\n // зелёный\r\n 'Lime',\r\n 'LimeGreen',\r\n 'Green',\r\n 'Olive',\r\n\r\n // голубой/фиолетовый\r\n 'Blue',\r\n 'Navy',\r\n 'Fuchsia',\r\n 'Purple',\r\n\r\n 'Indigo',\r\n 'Chocolate',\r\n 'SaddleBrown',\r\n 'Black',\r\n 'White'\r\n ];\r\n\r\n initColors() {\r\n if (typeof this.palette === 'string') {\r\n this.palette = this.palette.split(',').select(x => x.trim()).where(x => !!x).toArray();\r\n }\r\n this.colors = [...(this.palette || this.defaultColors)];\r\n if (this.exclude) {\r\n if (typeof this.exclude === 'string') {\r\n this.exclude = this.exclude.split(',').select(x => x.trim()).where(x => !!x).toArray();\r\n }\r\n this.colors.Remove(x => ((this.exclude)).select(s => s.toLowerCase()).contains(x.toLowerCase()));\r\n }\r\n if (this.include) {\r\n if (typeof this.include === 'string') {\r\n this.include = this.include.split(',').select(x => x.trim()).where(x => !!x).toArray();\r\n }\r\n this.colors = this.include.concat(this.colors).toArray();\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/color-picker/color-picker.component.ts","import { Type } from '@angular/core';\r\nimport * as core from '../core.module';\r\n\r\n\r\n/**\r\n * Список помеченных данным декоратором компонентов добавляется в словарь entityEditDialogs.\r\n * Эти компоненты автоматически войдут в состав диалогов которые будут открываться при редактировании бизнес-объектов.\r\n * Также данные компоненты автоматически попадают в список appComponents, так что их не нужно дополнительно регистрировать\r\n * при помощи декоратора @AppComponent() или в модуле приложения.\r\n */\r\nexport const EntityEditDialog = (entityName: string) => target => {\r\n entityEditDialogs[entityName] = target;\r\n if (!core.appComponents.contains(target))\r\n core.appComponents.push(target);\r\n}\r\n\r\n\r\n/**\r\n * Список всех компонентов для редактирования бизнес-объектов.\r\n */\r\nexport const entityEditDialogs: { [entityName: string]: Type } = { };\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/entity-edit-dialog.decorator.ts","import { Reflection, appServices } from '@core.module';\r\nimport { UssCrudMetadataApiService } from './crud-metadata-api.service';\r\n\r\ndeclare type ICrudServiceData = any; \r\n\r\nexport class CrudServiceMetadata {\r\n\r\n public EntityName: string;\r\n public Data: ICrudServiceData;\r\n\r\n constructor(entityName: string, data: ICrudServiceData) {\r\n this.EntityName = entityName;\r\n this.Data = data;\r\n }\r\n}\r\n\r\n/**\r\n * Configures web api CRUD service and adds it to `appServices` array.\r\n * Use this decorator for the application level web api CRUD services.\r\n */\r\nexport const CrudService = (entityName: string, data?: ICrudServiceData) => target => {\r\n Reflection.makeDecorator(new CrudServiceMetadata(entityName, data), target);\r\n appServices.push(target);\r\n UssCrudMetadataApiService.crudServices.push({ entityName: entityName, serviceToken: target });\r\n};\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/crud-service.decorator.ts","import { Pipe, ChangeDetectorRef } from '@angular/core';\r\nimport { isArray, translate, LangDependentPipe } from '@core.module';\r\nimport { UssMetadataService } from '..';\r\n\r\n\r\n/**\r\n * Gets an enum item description or name if description is not set\r\n */\r\n@Pipe({\r\n name: 'ussEnum',\r\n pure: false\r\n})\r\nexport class UssEnumPipe extends LangDependentPipe {\r\n\r\n constructor(cd: ChangeDetectorRef) { super(cd) }\r\n\r\n internalTransform(value: number, metadata: App.PropertyMetadata | App.EnumerableItemMetadata[] | string, nameOnly?: boolean): string {\r\n return UssEnumPipe.transormEnum(value, metadata, nameOnly);\r\n }\r\n\r\n public static transormEnum(value: number, metadata: App.PropertyMetadata | App.EnumerableItemMetadata[] | string, nameOnly?: boolean) {\r\n //value = value || 0;\r\n let res = value;\r\n if (typeof metadata === 'string') {\r\n // если передаём строку - то это строка c полным или коротким названием типа перечисления\r\n metadata = UssMetadataService.getEnumMetadata(metadata);\r\n }\r\n if (metadata) {\r\n if (!isArray(metadata)) {\r\n metadata = (metadata as App.PropertyMetadata).EnumerableMetadata;\r\n if (metadata && !isArray(metadata)) metadata = null;\r\n }\r\n res = (metadata).where(x => x.Value === value)\r\n .select(x => {\r\n return nameOnly ? x.Name : translate.instant(x.Description || x.Name);\r\n }).firstOrDefault();\r\n }\r\n return res || '';\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/enum.pipe.ts","import { Pipe, ChangeDetectorRef } from '@angular/core';\r\nimport { ussExpression } from './utils';\r\nimport { LangDependentPipe } from '../core.module/pipes/lang-dependent.pipe';\r\n\r\n\r\n@Pipe({\r\n name: 'ussExpression',\r\n pure: false\r\n})\r\nexport class UssExpressionPipe extends LangDependentPipe {\r\n\r\n constructor(cd: ChangeDetectorRef) { super(cd) }\r\n\r\n internalTransform(value: object, expression: App.PropertyMetadata | string | (() => App.PropertyMetadata | string)): string {\r\n return ussExpression(value, expression);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/expression.pipe.ts","import { isJsObject, isEmpty, isNotEmpty, Expression, parser } from '@core.module';\r\nimport { UssMetadataService } from './metadata.service';\r\n\r\nexport function ussExpression(value: object, expression: Expression | App.EntityMetadata | App.PropertyMetadata | string | (() => Expression | App.EntityMetadata | App.PropertyMetadata | string)): string {\r\n if (typeof expression === 'function') {\r\n return ussExpression(value, (expression)());\r\n }\r\n let res = '';\r\n if (typeof value === 'object') {\r\n let expr: Expression = undefined;\r\n if (expression instanceof Expression) {\r\n expr = expression;\r\n } else {\r\n if (isJsObject(expression)) {\r\n if ('RepresentExpression' in expression) {\r\n // expression is App.EntityMetadata\r\n const md = expression;\r\n expr = md['@RepresentExpression'];\r\n if (isEmpty(expr)) {\r\n const expressionText = md.RepresentExpression || md.KeyAttrs && md.KeyAttrs.firstOrDefault() || '';\r\n expr = expressionText ? parser.parse(expressionText) : null;\r\n md['@RepresentExpression'] = expr;\r\n expr && (expr['@entityMetadata'] = md);\r\n }\r\n } else if ('ObjectRefMetadata' in expression && expression['ObjectRefMetadata'].Name) {\r\n // expression is App.PropertyMetadata\r\n expr = expression['@ObjectRefMetadataExpression'];\r\n if (expr === undefined) {\r\n expr = null;\r\n const md = UssMetadataService.getEntityInfo(expression['ObjectRefMetadata'].Name);\r\n if (isNotEmpty(md)) {\r\n expr = md['@RepresentExpression'];\r\n if (isEmpty(expr)) {\r\n const expressionText = md.RepresentExpression ||\r\n md.KeyAttrs && md.KeyAttrs.firstOrDefault() ||\r\n '';\r\n expr = expressionText ? parser.parse(expressionText) : null;\r\n md['@RepresentExpression'] = expr;\r\n expr && (expr['@entityMetadata'] = md);\r\n }\r\n }\r\n expression['@ObjectRefMetadataExpression'] = expr;\r\n }\r\n// expression = expr;\r\n }\r\n } else if (typeof expression === 'string') {\r\n // expression is EntityName\r\n const md = UssMetadataService.getEntityInfo(expression);\r\n if (isNotEmpty(md)) {\r\n expr = md['@RepresentExpression'];\r\n if (isEmpty(expr)) {\r\n const expressionText =\r\n md.RepresentExpression || md.KeyAttrs && md.KeyAttrs.firstOrDefault() || '';\r\n expr = expressionText ? parser.parse(expressionText) : null;\r\n md['@RepresentExpression'] = expr;\r\n expr && (expr['@entityMetadata'] = md);\r\n }\r\n } else {\r\n try { expr = expression ? parser.parse(expression) : null } catch (e) { }\r\n }\r\n }\r\n }\r\n if (expr !== undefined && expr !== null) {\r\n res = expr.evaluate(value);\r\n } else {\r\n //res = ifEmpty(value, '').toString();\r\n res = undefined;\r\n }\r\n } else {\r\n res = (value || '')/*.toString()*/;\r\n }\r\n return res;\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/utils.ts","import { clone, ifEmpty, isNotEmpty } from '@core.module';\r\nimport { UssSettingsService } from '../services/settings.service';\r\n\r\nexport declare type TStorageType = 'memory' | 'localStorage' | 'session' | 'indexedDb';\r\n\r\n/**\r\n * Параметры сохранения данных.\r\n * По умолчанию используется значение из `UssSettingsService.defaultStorageSettings`.\r\n */\r\nexport interface StoreSettingsOptions {\r\n /**\r\n * Тип хранилища.\r\n * По умолчанию используется значение `UssSettingsService.defaultStorage`.\r\n */\r\n storage?: TStorageType;\r\n\r\n /**\r\n * Секция (группа) для сохранения данных.\r\n * По умолчанию используется название класса в котором используется декоратор.\r\n */\r\n section?: string;\r\n\r\n /**\r\n * Ключ хранимого значения в пределах указанной секции.\r\n * По умолчанию используется название поля для которого используется декоратор.\r\n */\r\n key?: string;\r\n\r\n /**\r\n * Если значение равно `true` - cохраняемое значение сохраняется отдельно для каждого пользователя.\r\n * По умолчанию - `true`.\r\n */\r\n isUserSettings?: boolean;\r\n\r\n /** Значение по умолчанию */\r\n defaultValue?: number | string | boolean | null;\r\n\r\n /*\r\n /** Если значение равно 'true' - результатом при получении данных будет промис прочитанного значения #1#\r\n async?: boolean;\r\n */\r\n}\r\n\r\n\r\nconst _initUserSettings: (() => Promise)[] = [];\r\n\r\n/** Следует вызывать при старте приложения, например при логине пользователя. Служит для загрузки локальных параметров пользователя в кеш, для корректной синхронной загрузки */ \r\nexport function initCacheUserSettings(): Promise {\r\n return Promise\r\n .all(_initUserSettings.select(x => x()).toArray())\r\n .then(r => {\r\n _initUserSettings.Clear();\r\n return r;\r\n })\r\n .catch(() => _initUserSettings.Clear());\r\n}\r\n\r\n/* выполняется при инициализации модуля\r\n@AppPageResolver()\r\nexport class InitCacheUserSettingsResolver {\r\n resolve(): Promise { return initCacheUserSettings() }\r\n}\r\n*/\r\n\r\n\r\nfunction disableStoreSettingsHash(propertyKey: string) {\r\n return `__extendForStoreSettings$${propertyKey}disable`;\r\n}\r\n\r\nexport function disableStoreSettings(target: any, propertyKey: string) {\r\n const hash = disableStoreSettingsHash(propertyKey);\r\n target[hash] = (target[hash] || 0) + 1;\r\n}\r\nexport function enableStoreSettings(target: any, propertyKey: string) {\r\n const hash = disableStoreSettingsHash(propertyKey);\r\n if (target[hash] > 0) {\r\n target[hash] = (target[hash] || 0) - 1;\r\n };\r\n}\r\n\r\n/**\r\n * Связывает указанное св-во объекта с автоматическим сохранением/восстановлением значения в хранилище параметров. \r\n * @param target объект\r\n * @param propertyKey имя свойства\r\n * @param options параметры сохранения\r\n * @param onGetValue метод, вызываемый после получения сохранённого значения из хранилища. Если возвращает результат отличный от undefined - он будет установлен в качестве значения.\r\n */\r\nexport function extendForStoreSettings(target: any, propertyKey: string, options?: StoreSettingsOptions, onGetValue?: (v: any) => any) {\r\n options = ifEmpty(options, clone(UssSettingsService.defaultStorageSettings));\r\n const prevDescriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};\r\n const descriptor = { configurable: true, enumerable: true };\r\n let currentValue = prevDescriptor.value || options.defaultValue;\r\n\r\n\r\n // Replacing get and set\r\n const originalGet = prevDescriptor.get || (() => currentValue);\r\n const originalSet = function (v) {\r\n currentValue = v;\r\n if (typeof prevDescriptor.set === 'function') {\r\n prevDescriptor.set.call(this, v);\r\n }\r\n };\r\n\r\n // Replacing get and set\r\n options.section = options.section || target.constructor.name;\r\n options.key = options.key || propertyKey;\r\n\r\n const defValue = originalGet.call(target);\r\n\r\n const initUserSettings = () => {\r\n let res = UssSettingsService.getAsync(options.key, options, () => defValue);\r\n const res1 = res.then(v => {\r\n if (!target[disableStoreSettingsHash(propertyKey)]) {\r\n if (typeof onGetValue === 'function') {\r\n disableStoreSettings(target, propertyKey);\r\n const r = onGetValue(v);\r\n res = r === undefined ? v : r;\r\n enableStoreSettings(target, propertyKey);\r\n } else {\r\n res = v;\r\n }\r\n if (defValue !== res && isNotEmpty(res)) {\r\n originalSet.call(target, res);\r\n }\r\n //console.log(`UssSettingsService.get(${options.key}) => ${res}`, res);\r\n }\r\n });\r\n return res1;\r\n };\r\n if (onGetValue) {\r\n initUserSettings();\r\n } else {\r\n _initUserSettings.push(initUserSettings);\r\n }\r\n descriptor.get = originalGet;\r\n descriptor.set = function (value) {\r\n const priorValue = originalGet.call(target);\r\n originalSet.call(this, value);\r\n if (!target[disableStoreSettingsHash(propertyKey)] && value !== priorValue) {\r\n UssSettingsService.set(options.key, value, options);\r\n //console.log(`UssSettingsService.set(${options.key}, ${value})`, value);\r\n }\r\n }\r\n // Updating new property or updating descriptor\r\n Object.defineProperty(target, propertyKey, descriptor);\r\n}\r\n\r\n/**\r\n * Связывает указанное св-во объекта с автоматическим сохранением/восстановлением значения в хранилище параметров. \r\n */\r\nexport function StoreSettings(defValue: number | string | boolean);\r\nexport function StoreSettings(options?: StoreSettingsOptions);\r\nexport function StoreSettings(options?) {\r\n return (target: any, propertyKey: string) => {\r\n if (isNotEmpty(options) && typeof options !== 'object') {\r\n options = { defaultValue: options };\r\n }\r\n extendForStoreSettings(target, propertyKey, options);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/decorators/store-settings.decorator.ts","import { Injectable } from '@angular/core';\r\nimport { auth, ifEmpty, MemoryStorage, SessionStorage, LocalStorage, TDefValueAsync, TDefValue } from '@core.module';\r\nimport { IndexedDbStorage } from './IndexedDbStorage';\r\nimport { TStorageType, StoreSettingsOptions } from '../decorators/store-settings.decorator';\r\n\r\n\r\n/**\r\n * Сервис для сохранения / загрузки параметров приложения в хранилище параметров.\r\n * Поддерживается прозрачное разграничение по пользователям. \r\n */\r\nexport class UssSettingsService {\r\n\r\n public static defaultStorage: TStorageType = 'indexedDb';\r\n public static storages = {\r\n memory: new MemoryStorage(),\r\n localStorage: new LocalStorage('@Settings'),\r\n session: new SessionStorage('@Settings'),\r\n indexedDb: new IndexedDbStorage('@Settings'),\r\n }\r\n\r\n public static defaultStorageSettings: StoreSettingsOptions = { };\r\n\r\n private static updateKey(key: string, options: StoreSettingsOptions, globalUser?: boolean): string {\r\n key = key || options.key;\r\n if (options.section) {\r\n key = `${options.section}.${key}`;\r\n }\r\n if (!auth.isLoggedIn) globalUser = true;\r\n if (!globalUser && options.isUserSettings !== false) {\r\n key = `${auth.loggedUserName}:${key}`;\r\n } else {\r\n key = `@:${key}`;\r\n }\r\n return key;\r\n }\r\n\r\n public static get(key: string, options: StoreSettingsOptions, defaultValue?: TDefValue): any {\r\n options = ifEmpty(options, this.defaultStorageSettings);\r\n const storageKey = this.updateKey(key, options);\r\n const storage = this.storages[options.storage || this.defaultStorage];\r\n return storage.get(storageKey, defaultValue);\r\n }\r\n\r\n public static getAsync(key: string, options: StoreSettingsOptions, defaultValue?: TDefValueAsync): Promise {\r\n options = ifEmpty(options, this.defaultStorageSettings);\r\n const storageKey = this.updateKey(key, options);\r\n const storage = this.storages[options.storage || this.defaultStorage];\r\n return storage.getAsync(storageKey, defaultValue);\r\n }\r\n\r\n public static set(key: string, value: any, options: StoreSettingsOptions): Promise {\r\n options = ifEmpty(options, this.defaultStorageSettings);\r\n const storageKey = this.updateKey(key, options);\r\n return this.storages[options.storage || this.defaultStorage].set(storageKey, value);\r\n }\r\n\r\n public static clear(key: string, options: StoreSettingsOptions): Promise {\r\n options = ifEmpty(options, this.defaultStorageSettings);\r\n const storageKey = this.updateKey(key, options);\r\n return this.storages[options.storage || this.defaultStorage].removeKey(storageKey);\r\n }\r\n\r\n public static clearAll(options: StoreSettingsOptions): Promise {\r\n options = ifEmpty(options, this.defaultStorageSettings);\r\n return this.storages[options.storage || this.defaultStorage].removeAll();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/services/settings.service.ts","import { MemoryStorage, TDefValue, TDefValueAsync } from '@core.module';\r\nimport { Observable } from 'rxjs';\r\nimport { AngularIndexedDB } from './angular2-indexeddb';\r\n\r\nexport class IndexedDbStorage extends MemoryStorage {\r\n\r\n db: AngularIndexedDB;\r\n\r\n updateDbPromise: Promise;\r\n\r\n constructor(public dbName: string, public storeName: string = 'Default') {\r\n super();\r\n this.db = new AngularIndexedDB(dbName, 1);\r\n this.storeName = storeName;\r\n this.updateDbPromise = this.db.createStore(1, evt => evt.currentTarget.result.createObjectStore(storeName));\r\n }\r\n\r\n get(key: string, defValue?: TDefValue): any {\r\n const readDefValue = () => {\r\n this.updateDbPromise\r\n .then(() => this.db.getByKey(this.storeName, key))\r\n .then(value => {\r\n value !== undefined && super.set(key, value);\r\n });\r\n return this.getDefValue(defValue);\r\n }\r\n const res = super.get(key, () => readDefValue());\r\n return res;\r\n }\r\n\r\n async getAsync(key: string, defValue?: TDefValueAsync): Promise {\r\n await this.updateDbPromise;\r\n const readDefValueAsync = async () => {\r\n let res = await this.db.getByKey(this.storeName, key);\r\n if (res !== undefined) {\r\n super.set(key, res);\r\n } else {\r\n res = this.getDefValue(defValue);\r\n }\r\n return res;\r\n }\r\n return super.getAsync(key, () => readDefValueAsync());\r\n }\r\n\r\n get$(key: string, defValue?: TDefValueAsync): Observable {\r\n return Observable.from(this.getAsync(key, defValue));\r\n }\r\n\r\n async set(key: string, value: any): Promise {\r\n super.set(key, value);\r\n await this.updateDbPromise;\r\n try {\r\n return await this.db.update(this.storeName, value, key);\r\n } catch (e) {\r\n console.error(e);\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n set$(key: string, value: any): Observable {\r\n return Observable.from(this.set(key, value));\r\n }\r\n\r\n async removeKey(key: string): Promise {\r\n super.removeKey(key);\r\n await this.updateDbPromise;\r\n try {\r\n return this.db.delete(this.storeName, key);\r\n } catch (e) {\r\n console.error(e);\r\n return Promise.resolve();\r\n } \r\n }\r\n async remove(key: string): Promise { return this.removeKey(key); }\r\n remove$(key: string): Observable { return Observable.from(this.removeKey(key)); }\r\n\r\n async removeAll(): Promise {\r\n super.removeAll();\r\n await this.updateDbPromise;\r\n try {\r\n return this.db.clear(this.storeName);\r\n } catch (e) {\r\n console.error(e);\r\n return Promise.resolve();\r\n } \r\n }\r\n removeAll$(): Observable { return Observable.from(this.removeAll()); }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/services/IndexedDbStorage.ts","import { Component, ViewContainerRef, ViewChild, ChangeDetectorRef } from '@angular/core';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssDialogsService } from '@dialogs.module';\r\nimport { UssDataTableColumn } from './data-source.p-dataTable.directive';\r\n\r\n@Component({\r\n template: `\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n {{col.header}}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {{col.getValue($item) | ussFormat : col.settings.displayFormat || '': col.settings.emptyText}} \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{col.getValue($item) | ussEnum : col.PropertyMetadata}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{col.getValue($item) | ussExpression : col.PropertyMetadata}} \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {{col.getValue($item) | ussFormat : col.settings.displayFormat || 'D:L': col.settings.emptyText}} \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n `\r\n})\r\n@SystemComponent()\r\nexport class UssDataSourcePDataTableTemplates {\r\n @ViewChild('none') none;\r\n\r\n @ViewChild('simpleHead') simpleHead;\r\n @ViewChild('simpleHead1') simpleHead1;\r\n @ViewChild('simpleHead2') simpleHead2;\r\n @ViewChild('simpleHead3') simpleHead3;\r\n @ViewChild('simpleHead4') simpleHead4;\r\n\r\n @ViewChild('actionHead') actionHead;\r\n\r\n @ViewChild('textBody') textBody;\r\n @ViewChild('enumBody') enumBody;\r\n @ViewChild('expressionBody') expressionBody;\r\n @ViewChild('datetimeBody') datetimeBody;\r\n @ViewChild('boolBody') boolBody;\r\n @ViewChild('tagsBody') tagsBody;\r\n @ViewChild('colorBody') colorBody;\r\n\r\n/*\r\n @ViewChild('datetimeRangeFilter') datetimeRangeFilter;\r\n @ViewChild('textFilter') textFilter;\r\n @ViewChild('dropdownFilter') dropdownFilter;\r\n*/\r\n @ViewChild('standardFilter') standardFilter;\r\n\r\n private static instance: UssDataSourcePDataTableTemplates;\r\n private static vc: ViewContainerRef;\r\n\r\n constructor(private viewContainer: ViewContainerRef) {\r\n UssDataSourcePDataTableTemplates.vc = viewContainer;\r\n }\r\n\r\n public getColumnClass(col: UssDataTableColumn, $item) {\r\n //return `col-${col.field} ${col.settings?.bodyClass || ''} ${$item.$class || ''}`.trim();\r\n return `col-${col.field} ${col.getClass($item) || ''} ${$item.$class || ''}`.trim();\r\n }\r\n public getColumnStyle(col: UssDataTableColumn, $item) {\r\n //return col.settings?.bodyStyle;\r\n return col.getStyle($item);\r\n }\r\n\r\n public static getInstance(): UssDataSourcePDataTableTemplates {\r\n UssDataSourcePDataTableTemplates.instance = UssDataSourcePDataTableTemplates.instance || UssDialogsService.createComponent(UssDataSourcePDataTableTemplates, UssDataSourcePDataTableTemplates.vc);\r\n return UssDataSourcePDataTableTemplates.instance;\r\n } \r\n\r\n public self;\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.p-dataTable.templates.ts","import * as ng from '@angular/core';\r\nimport { UssDataTableColumn } from '../data-source/data-source.p-dataTable.directive';\r\nimport { UssObjectListComponent } from './object-list.component';\r\nimport { UssDialog } from '../dialogs/common/UssDialog';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Component({\r\n template: require('./object-list.settings.html'),\r\n styles: [require('./object-list.settings.scss')]\r\n})\r\n@SystemComponent()\r\nexport class UssObjectListSettings extends UssDialog implements ng.OnInit {\r\n\r\n public columns: UssDataTableColumn[];\r\n public objectList: UssObjectListComponent;\r\n\r\n public cols: UssDataTableColumn[];\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.cols = (this.columns || [])\r\n .where(col => col.settings && col.hidden !== true)\r\n .select(col => {\r\n col['visible'] = !col.hidden;\r\n return col;\r\n })\r\n .toArray();\r\n }\r\n\r\n public async reset() {\r\n await this.objectList.clearSettings();\r\n await this.objectList.reloadSettings();\r\n this.columns = this.objectList.columns;\r\n this.ngOnInit();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/object-list/object-list.settings.ts","import { Injectable } from '@angular/core';\r\nimport { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { AppService } from '../../../../core.module';\r\n\r\n\r\nexport interface IModalDialog {\r\n /**\r\n * Закрывает диалог\r\n */\r\n close(closeResult?: TResult | boolean): void;\r\n}\r\n\r\n@Injectable()\r\n@AppService()\r\nexport class UssDeactivateRouteGuard implements CanDeactivate {\r\n public readonly openDialogs: IModalDialog[] = [];\r\n canDeactivate(component: any, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): boolean {\r\n const res = this.openDialogs.length === 0;\r\n if (!res) {\r\n const dialog = this.openDialogs[0];\r\n dialog.close();\r\n history.pushState(null, null, location.href);\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/common/UssDeactivateRouteGuard.ts","import { Component } from '@angular/core';\r\nimport { dialog, IUssDialog } from '@core.module';\r\nimport { UssSystemTask, UssSystemTaskPageBase } from '../system-task.page';\r\nimport { UssSystemTaskDialog } from '../system-task.dialog/system-task.dialog';\r\n\r\n@Component({\r\n template: require('./import-systemTask.page.html'),\r\n styles: [require('./import-systemTask.page.scss')]\r\n})\r\n@UssSystemTask(Uss.SystemTask.Import) \r\nexport class UssImportSystemTaskPage extends UssSystemTaskPageBase {\r\n\r\n minWidth = 600;\r\n minHeight = 400;\r\n resizable = true;\r\n\r\n isReadOnly = true;\r\n\r\n static show(params?: Uss.ImportSystemTaskParams): IUssDialog {\r\n const model = Object.assign({ SystemTaskId: Uss.SystemTask.Import }, params);\r\n return dialog.show(UssSystemTaskDialog, { model });\r\n }\r\n\r\n public get taskResult() { return this.systemTaskComponent.taskResult; }\r\n\r\n setModel(params: Uss.ImportSystemTaskParams, isEmbedded: boolean) {\r\n super.setModel(params, isEmbedded);\r\n // сразу запустим задачу (без ожидания нажатия на кнопу Выполнить)\r\n this.systemTaskComponent.execute().catch(r => {\r\n this.systemTaskComponent.progressType = 'cancel';\r\n this.systemTaskComponent.taskResult = {\r\n ValueType: Uss.SystemTaskResult.Type.Error,\r\n Result: {\r\n Errors: [ { Error: r } ],\r\n Error: r\r\n }\r\n }\r\n });\r\n }\r\n\r\n makeSystemTaskParams(): Uss.ImportSystemTaskParams {\r\n return this.model;\r\n }\r\n\r\n startTask(params: Uss.ImportSystemTaskParams): Promise {\r\n return params.service.importTask$(params.file).toPromise();\r\n }\r\n\r\n handleResult(taskResult: Uss.SystemTaskResult) {\r\n return taskResult;\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.ts","import { Component, ViewChild } from '@angular/core';\r\nimport { AppComponent } from '@core.module';\r\nimport { UssMetadataService } from '@metadata.module';\r\nimport { EditorModal } from '../../components/dialogs/common/EditorModal';\r\nimport { UssSystemTaskParamsComponent } from '../systemTask-params/systemTask-params.component';\r\n\r\n\r\n@Component({\r\n template: require('./system-task.dialog.html'),\r\n styles: [require('./system-task.dialog.scss')],\r\n})\r\n@AppComponent()\r\nexport class UssSystemTaskDialog extends EditorModal {\r\n\r\n @ViewChild('systemTaskParams') systemTaskParams: UssSystemTaskParamsComponent;\r\n\r\n get systemTaskPage() { return this.systemTaskParams?.systemTaskComponent; }\r\n get systemTaskComponent() { return this.systemTaskPage?.systemTaskComponent; }\r\n\r\n public get minWidth(): number { return this.systemTaskPage?.minWidth; }\r\n public get minHeight(): number { return this.systemTaskPage?.minHeight; }\r\n public get maxWidth(): number { return this.systemTaskPage?.maxWidth; }\r\n public get maxHeight(): number { return this.systemTaskPage?.maxHeight; }\r\n public get width(): number { return this.systemTaskPage?.width; }\r\n public get height(): number { return this.systemTaskPage?.height; }\r\n public get resizable(): boolean { return this.systemTaskPage?.resizable; }\r\n public get draggable(): boolean { return this.systemTaskPage?.draggable; }\r\n public get taskResult(): Uss.SystemTaskResult { return this.systemTaskComponent?.taskResult; }\r\n // @ts-ignore\r\n public get isReadOnly(): boolean { return this.systemTaskComponent?.isReadOnly; }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.header = this.model.SystemTaskId;\r\n const ri = UssMetadataService.getSystemTaskInfo(this.model.SystemTaskId);\r\n ri && (this.header = ri.Name);\r\n }\r\n\r\n get isDirty(): boolean { return false; }\r\n\r\n public save() {\r\n return this.systemTaskComponent.execute();\r\n }\r\n\r\n public cancel() {\r\n if (this.systemTaskComponent?.isExecuting)\r\n {\r\n this.systemTaskComponent.cancel();\r\n }\r\n else\r\n {\r\n super.cancel();\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.ts","import { Component, ChangeDetectionStrategy, Input, SimpleChanges, OnInit, OnChanges, ViewChild, ViewContainerRef, Output, EventEmitter } from '@angular/core';\r\nimport { AppComponent, UssComponentFactory, isEmpty } from '@core.module';\r\nimport { UssMetadataService } from '@metadata.module';\r\nimport { UssComponent2 } from '../../components/common/base.component';\r\nimport { UssSystemTaskPageBase, ussSystemTasks } from '../system-task.page';\r\n\r\n@Component({\r\n selector: 'uss-systemTask-params',\r\n template: require('./systemTask-params.component.html'),\r\n styles: [require('./systemTask-params.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n@AppComponent()\r\nexport class UssSystemTaskParamsComponent extends UssComponent2 implements OnInit, OnChanges {\r\n @Input() class = '';\r\n @Input('systemTaskId') systemTaskId: string;\r\n @Input('readonly') isReadOnly: boolean;\r\n\r\n @Input('systemTaskParams') systemTaskParams: any;\r\n\r\n @Output('valueChanges') valueChanges = new EventEmitter();\r\n\r\n\r\n metadata: App.SystemTaskMetadata;\r\n\r\n\r\n systemTaskComponent: UssSystemTaskPageBase;\r\n\r\n\r\n @ViewChild(UssComponentFactory) ussComponentFactory: UssComponentFactory;\r\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnChanges(c: SimpleChanges): void {\r\n if (c.systemTaskParams && this.systemTaskParams) {\r\n if (isEmpty(this.systemTaskParams.IsDefault)) {\r\n // если системная задача поддерживает параметр `по-умолчанию` - установим это значение при создании параметров.\r\n // в дальнейшем это значение может быть изменено или проигнорировано\r\n this.systemTaskParams.IsDefault = true;\r\n }\r\n if (this.systemTaskComponent) {\r\n this.systemTaskComponent.form && (this.systemTaskComponent.form.valueChanges['_skip'] = true);\r\n this.systemTaskComponent.setModel(this.systemTaskParams, true);\r\n }\r\n }\r\n if (c.systemTaskId) {\r\n if (this.container) {\r\n this.container.element.nativeElement.innerHTML = '';\r\n if (this.systemTaskId) {\r\n this.metadata = UssMetadataService.getSystemTaskInfo(this.systemTaskId);\r\n const systemTaskComponent = ussSystemTasks[this.systemTaskId];\r\n\r\n if (systemTaskComponent) {\r\n this.ussComponentFactory.insertComponentRef$(systemTaskComponent, this.container).subscribe(cmp => {\r\n this.systemTaskComponent = cmp.instance;\r\n if (isEmpty(this.systemTaskComponent.isReadOnly)) {\r\n this.systemTaskComponent.isReadOnly = () => this.isReadOnly;\r\n }\r\n this.systemTaskComponent.setModel(this.systemTaskParams, true);\r\n setTimeout(() => this.systemTaskComponent.form.valueChanges.debounceTime(10).subscribe(() => {\r\n if (this.systemTaskComponent.form.valueChanges['_skip']) {\r\n this.systemTaskComponent.form.valueChanges['_skip'] = false;\r\n } else {\r\n this.valueChanges.emit();\r\n }\r\n }), 500);\r\n });\r\n } else {\r\n // отсутствует форма параметров системной задачи\r\n }\r\n } else {\r\n // системная задача не выбрана\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.ts","import * as ng from '@angular/core';\r\nimport * as rx from 'rxjs';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { SystemComponent } from '../../internals';\r\nimport { isNotEmpty, DateTime } from '@core.module';\r\n\r\n// ReSharper disable once CommonJsExternalModule\r\nconst rome: rome.ApiInstance = require('rome');\r\n\r\n@ng.Component({\r\n selector: 'uss-datetime-picker',\r\n template: require('./datetime-picker.component.html'),\r\n styles: [require('./datetime-picker.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs,\r\n encapsulation: ng.ViewEncapsulation.None\r\n})\r\n@SystemComponent()\r\nexport class UssDatetimePickerComponent extends UssDataSourceComponent implements ng.AfterViewInit, ng.OnChanges {\r\n\r\n /**\r\n * Глобальный формат даты по умолчанию\r\n */\r\n public static defaultDateFormat: string = 'L';\r\n /**\r\n * Глобальный формат времени по умолчанию\r\n */\r\n public static defaultTimeFormat: string = 'LTS';\r\n /**\r\n * Глобальный формат даты со времением по умолчанию. Если не задан используется комбинация предыдущих двух форматов\r\n */\r\n public static defaultDateTimeFormat: string;\r\n\r\n @ng.Input('showClear') showClearMode: boolean;\r\n\r\n private _format: string;\r\n /**\r\n * Формат отображения даты в поле ввода\r\n */\r\n @ng.Input('format')\r\n get format(): string {\r\n let res = this._format;\r\n if (!res) {\r\n if (this.type === 'date')\r\n res = UssDatetimePickerComponent.defaultDateFormat;\r\n else if (this.type === 'time')\r\n res = UssDatetimePickerComponent.defaultTimeFormat;\r\n else\r\n res = UssDatetimePickerComponent.defaultDateTimeFormat || `${UssDatetimePickerComponent.defaultDateFormat} ${UssDatetimePickerComponent.defaultTimeFormat}`;\r\n }\r\n return res;\r\n }\r\n set format(value: string) {\r\n if (this.format === value) return;\r\n this._format = value;\r\n if (this._format) {\r\n if (this._format === 'LT' || this._format === 'LTS') {\r\n this.type = 'time';\r\n }\r\n else if (this._format.Contains(' LT') || this._format.Contains(' LTS')) {\r\n this.type = 'datetime';\r\n }\r\n }\r\n this.emitChanges();\r\n }\r\n /**\r\n * Тип значения\r\n */\r\n @ng.Input('type') type: 'date' | 'time' | 'datetime' | 'timespan' = 'date';\r\n @ng.Input('navigationType') navigationType: 'day' | 'week' | 'hour' = 'day';\r\n\r\n @ng.Input('icon') _icon: string;\r\n get icon(): string {\r\n return this._icon || this.type === 'time' || this.type === 'timespan' ? 'clock' : 'calendar';\r\n }\r\n\r\n /** Минимальное значение */\r\n @ng.Input('min') _min: DateTime | 'today';\r\n\r\n /** Максимальное значение */\r\n @ng.Input('max') _max: DateTime | 'today';\r\n\r\n private _beginPeriodComponent: UssDatetimePickerComponent;\r\n /** Компонент, задающий начало периода */\r\n @ng.Input('beginPeriodComponent')\r\n get beginPeriodComponent(): UssDatetimePickerComponent { return this._beginPeriodComponent }\r\n set beginPeriodComponent(value: UssDatetimePickerComponent) {\r\n if (this._beginPeriodComponent?._endPeriodComponent === this) {\r\n delete this._beginPeriodComponent._endPeriodComponent;\r\n }\r\n if (value instanceof UssDatetimePickerComponent) {\r\n this._beginPeriodComponent = value;\r\n this._beginPeriodComponent._endPeriodComponent = this;\r\n } else {\r\n delete this._beginPeriodComponent;\r\n }\r\n }\r\n /** Компонент, задающий конец периода */\r\n private _endPeriodComponent: UssDatetimePickerComponent;\r\n\r\n private _inFocus: boolean;\r\n\r\n get min(): DateTime {\r\n let res = this._min === 'today' ? moment().startOf('day') : this._min;\r\n if (!res && !this._inFocus && this._beginPeriodComponent?._inFocus === false) {\r\n res = this._beginPeriodComponent.value;\r\n }\r\n return res;\r\n }\r\n\r\n get max(): DateTime {\r\n let res = this._max === 'today' ? moment().startOf('day') : this._max;\r\n if (!res && !this._inFocus && this._endPeriodComponent?._inFocus === false) {\r\n res = this._endPeriodComponent.value;\r\n }\r\n return res;\r\n }\r\n\r\n onInputElementFocus($event: FocusEvent) {\r\n this._inFocus = true;\r\n super.onInputElementFocus($event);\r\n }\r\n\r\n onInputElementFocusOut($event: FocusEvent) {\r\n this.debounce(() => {\r\n if (!this.isFocused && (this._beginPeriodComponent && !this._beginPeriodComponent.isFocused || this._endPeriodComponent && !this._endPeriodComponent.isFocused)) {\r\n this._inFocus = false;\r\n this._beginPeriodComponent && (this._beginPeriodComponent._inFocus = false);\r\n this._endPeriodComponent && (this._endPeriodComponent._inFocus = false);\r\n this.updateMinMax();\r\n }\r\n }, 100, 'onInputElementFocusOut');\r\n super.onInputElementFocusOut($event);\r\n }\r\n\r\n /** На сколько секунд изменилась дата */\r\n public get changeDeltaSeconds() {\r\n return this._oldValue && this.value && moment(this.value).isValid() ? -this._oldValue.diff(this.value, 'seconds') : 0;\r\n }\r\n\r\n updateMinMax() {\r\n if (this._beginPeriodComponent) {\r\n this._beginPeriodComponent.setValue(this._beginPeriodComponent.value);\r\n }\r\n else if (this._endPeriodComponent) {\r\n this._endPeriodComponent.setValue(this._endPeriodComponent.value);\r\n }\r\n }\r\n\r\n\r\n @ng.Input('navigationControls') navigationControls: boolean;\r\n\r\n @ng.Input('l10n-placeholder') l10nPlaceholder: string;\r\n\r\n @ng.ViewChild('rootElement') rootElementRef: ng.ElementRef;\r\n @ng.ViewChild('calendarElement') cElement: ng.ElementRef;\r\n\r\n /**\r\n * Для блокирования навигационных кнопок\r\n */\r\n public canPrevDate: boolean = true;\r\n\r\n /**\r\n * Для блокирования навигационных кнопок\r\n */\r\n public canNextDate: boolean = true;\r\n\r\n /**\r\n * Выпадающий календарь.\r\n */\r\n public picker: rome.Api;\r\n\r\n /**\r\n * Параметры выпадающего календаря\r\n */\r\n private pickerOpts: rome.Options = {};\r\n\r\n private calendarElement: HTMLElement;\r\n\r\n public isCalendarVisible: boolean;\r\n\r\n\r\n public get showClear(): boolean {\r\n return this.showClearMode !== false && !!(!this.isReadOnly() && !this.isRequired() && !this.disabled && isNotEmpty(this.control) && this.control.value/* && this.isFocused*/);\r\n }\r\n\r\n public clear($event?: Event) {\r\n this.value = null;\r\n setTimeout(() => this.inputElement.focus());\r\n if (isNotEmpty($event)) {\r\n $event.stopPropagation();\r\n }\r\n this.onInputElementInput($event);\r\n return false;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.showClearMode = this.bool(this.showClearMode, true);\r\n }\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.calendarElement = this.cElement.nativeElement;\r\n this.updateControlSubscription();\r\n this.updateRestrictions();\r\n }\r\n\r\n private createPicker() {\r\n if (this.picker) {\r\n this.picker.destroy();\r\n this.picker = null;\r\n }\r\n if (this.calendarElement) {\r\n this.calendarElement.removeAttribute('data-rome-id');\r\n this.pickerOpts = {\r\n appendTo: this.rootElementRef.nativeElement.children[0],\r\n timeInterval: 300,\r\n time: this.type !== 'date',\r\n date: this.type !== 'time' && this.type !== 'timespan',\r\n autoClose: true,\r\n autoHideOnClick: true,\r\n autoHideOnBlur: false,\r\n required: false,\r\n\r\n inputFormat: this.format,\r\n min: this.toValue(this.min),\r\n max: this.toValue(this.max),\r\n initialValue: this.toValue(this.control ? this.control.value : this.value) || moment(),\r\n };\r\n this.picker = rome(this.calendarElement, this.pickerOpts);\r\n this.picker.container.classList.add('rd-container-attachment');\r\n\r\n // Убираем способность получать фокус у кнопок календаря\r\n Enumerable.from(this.picker.container.querySelectorAll('button')).forEach(x => x.tabIndex = -1);\r\n\r\n this.picker.on('data', data => {\r\n this.updateValue(data);\r\n this.clearDebounce('setFocus');\r\n this._inFocus = false;\r\n this._beginPeriodComponent && (this._beginPeriodComponent._inFocus = false);\r\n this._endPeriodComponent && (this._endPeriodComponent._inFocus = false);\r\n this.updateMinMax();\r\n this.inputElement.focus();\r\n this._inFocus = true;\r\n });\r\n this.picker.on('show', () => {\r\n this.isCalendarVisible = true;\r\n });\r\n this.picker.on('hide', () => {\r\n this.isCalendarVisible = false;\r\n });\r\n }\r\n }\r\n\r\n private showCalendar() {\r\n if (this.isCalendarVisible) return;\r\n this.inputElement.focus();\r\n if (!this.picker) {\r\n this.createPicker();\r\n } else {\r\n this.pickerOpts.inputFormat = this.format;\r\n this.pickerOpts.min = this.toValue(this.min);\r\n this.pickerOpts.max = this.toValue(this.max);\r\n this.pickerOpts.initialValue = this.toValue(this.control ? this.control.value : this.value) || moment();\r\n this.picker.restore(this.pickerOpts);\r\n this.picker.show();\r\n }\r\n this.isCalendarVisible = true;\r\n }\r\n\r\n getDataSourceValue() {\r\n let res = super.getDataSourceValue();\r\n if (res && this.type === 'timespan') {\r\n res = super.getDataSourceValue();\r\n }\r\n return res;\r\n }\r\n\r\n getValue() {\r\n const res = super.getValue();\r\n return this.toControlValue(res);\r\n }\r\n\r\n toControlValue(value) {\r\n if (value && this.type === 'timespan') {\r\n value = moment.duration(moment(value).diff(moment(value).startOf('day')));\r\n }\r\n if (value && typeof value.isValid === 'function' && !value.isValid()) {\r\n value = null;\r\n }\r\n return value;\r\n }\r\n\r\n private _currentDate: moment.Moment;\r\n private _currentTime: number;\r\n private _oldValue: moment.Moment;\r\n\r\n\r\n setValue(value) {\r\n\r\n if (!moment(this.value).isSame(value)) {\r\n this._oldValue = moment(this.value);\r\n if (!this._oldValue.isValid()) {\r\n this._oldValue = null;\r\n }\r\n }\r\n\r\n if (isNotEmpty(this.min) && moment(this.min).isValid()) {\r\n if (moment(this.min).isSameOrAfter(moment(value))) {\r\n // это компонент ДО\r\n if (this._beginPeriodComponent?.changeDeltaSeconds > 0 && (this.type === 'datetime' || moment(this.min).isAfter(moment(value)))) {\r\n value = moment(value).add(this._beginPeriodComponent?.changeDeltaSeconds, 'seconds');\r\n } else {\r\n value = moment(this.min);\r\n }\r\n }\r\n }\r\n if (isNotEmpty(this.max) && moment(this.max).isValid()) {\r\n if (moment(this.max).isSameOrBefore(moment(value))) {\r\n // это компонент ОТ\r\n if (this._endPeriodComponent?.changeDeltaSeconds < 0 && (this.type === 'datetime' || moment(this.max).isBefore(moment(value)))) {\r\n value = moment(value).add(this._endPeriodComponent?.changeDeltaSeconds, 'seconds');\r\n } else {\r\n value = moment(this.max);\r\n }\r\n }\r\n }\r\n\r\n super.setValue(value);\r\n this.updateRestrictions();\r\n this._currentDate = value ? moment(value).startOf('day') : null;\r\n this._currentTime = value ? moment(value).diff(this._currentDate, 'milliseconds'): null;\r\n }\r\n\r\n ngOnChanges(changes) {\r\n super.ngOnChanges(changes);\r\n if (changes.control) {\r\n this.updateControlSubscription();\r\n }\r\n\r\n if (changes._min || changes._max) {\r\n this.updateRestrictions();\r\n setTimeout(() => {\r\n if (this.min) {\r\n this.pickerOpts.min = moment(this.min);\r\n if ((this.pickerOpts.min).isAfter(moment(this.value))) {\r\n this.value = this.pickerOpts.min;\r\n }\r\n } else {\r\n this.pickerOpts.min = undefined;\r\n }\r\n\r\n if (this.max) {\r\n this.pickerOpts.max = moment(this.max);\r\n if ((this.pickerOpts.max).isBefore(moment(this.value))) {\r\n this.value = this.pickerOpts.max;\r\n }\r\n } else {\r\n this.pickerOpts.max = undefined;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private updateRestrictions() {\r\n this.canPrevDate = true;\r\n this.canNextDate = true;\r\n if (isNotEmpty(this.min) && moment(this.min).isValid()) {\r\n const prev = this.prevDate();\r\n this.canPrevDate = moment(this.min).isSameOrBefore(prev, 'seconds');\r\n }\r\n if (isNotEmpty(this.max) && moment(this.max).isValid()) {\r\n const next = this.nextDate();\r\n this.canNextDate = moment(this.max).isSameOrAfter(next, 'seconds');\r\n }\r\n }\r\n\r\n private prevDate(): moment.Moment {\r\n return moment(this.value).add(-1, this.navigationType);\r\n }\r\n\r\n private nextDate(): moment.Moment {\r\n return moment(this.value).add(1, this.navigationType);\r\n }\r\n\r\n public setPrevDate() {\r\n this.value = this.prevDate();\r\n this.updateRestrictions();\r\n }\r\n\r\n public setNextDate() {\r\n this.value = this.nextDate();\r\n this.updateRestrictions();\r\n }\r\n\r\n private hideCalendar() {\r\n if (!this.isCalendarVisible) return;\r\n this.isCalendarVisible = false;\r\n if (this.picker) {\r\n this.picker.hide();\r\n }\r\n }\r\n\r\n private controlSubscription: rx.Subscription;\r\n private updateControlSubscription() {\r\n if (this.controlSubscription) {\r\n this.controlSubscription.unsubscribe();\r\n this.controlSubscription = null;\r\n }\r\n if (this.control)\r\n this.controlSubscription = this.control.valueChanges.subscribe(value => {\r\n if (this.picker) {\r\n value = this.toValue(value);\r\n if (value && moment(value).isValid()) {\r\n this.picker.setValue(value);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n public toValue(d: DateTime): moment.Moment {\r\n if (d === undefined || d === null) return null;\r\n\r\n let res: moment.Moment;\r\n if (moment.isMoment(d)) {\r\n res = d;\r\n }\r\n else if (moment.isDuration(d)) {\r\n res = moment(d.asMilliseconds()).utc();\r\n }\r\n else if (typeof d === 'string') {\r\n if (d.Contains(/Z|T/)) {\r\n // Если строка содержит символы Z или T - это признак даты в ISO-формате\r\n // просто преобразуем её\r\n res = moment(d);\r\n } else {\r\n // Иначе преобразуем её согласно текущему формату\r\n //res = this.restoreDateTime(moment(d, this.format));\r\n res = this.restoreDateTime(d);\r\n }\r\n } else {\r\n res = moment(d);\r\n }\r\n res = res && res.isValid() ? res : undefined;\r\n if (res?.isSame(this._value)) {\r\n res = this._value;\r\n }\r\n return res;\r\n }\r\n\r\n /** Восстанавливает предыдущее значение даты (для компонентов типа `time`) и времени (для компонентов типа `date`) */\r\n private restoreDateTime(res: moment.Moment | any) {\r\n if (typeof res === 'string') {\r\n let s = res;\r\n let m = moment(s, this.format);\r\n if (!m.isValid()) {\r\n if (this.type === 'time' && isNotEmpty(this._currentDate)) {\r\n // слегка подшаманим, чтобы время строки такого вида корректно преобразовывались:\r\n // '90' -> 9:00\r\n // '900' -> 9:00\r\n if (s.length <= 3) s = `0${s}`;\r\n m = moment(s, this.format);\r\n }\r\n }\r\n res = moment(m.local());\r\n } else if (!moment.isMoment(res)) {\r\n res = moment(res);\r\n }\r\n\r\n\r\n if (this.type === 'date' && isNotEmpty(this._currentTime)) {\r\n res = res.add(this._currentTime, 'milliseconds');\r\n }\r\n if (this.type === 'time' && isNotEmpty(this._currentDate)) {\r\n res = DateTime.setTime(this._currentDate, res);\r\n }\r\n return res;\r\n }\r\n\r\n public toText(d: DateTime): string {\r\n if (d === undefined || d === null) return '';\r\n let res: any = this.toValue(d);\r\n if (!res)\r\n res = '';\r\n else\r\n res = res.format(this.format);\r\n return res;\r\n }\r\n\r\n /**\r\n * Нажата кнопка открытия календаря - биндится в разметке\r\n * @param $event\r\n */\r\n public showCalendarButtonClick($event: Event) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n if (!this.disabled) {\r\n const showCalendar = !this.isCalendarVisible;\r\n if (showCalendar) {\r\n this.showCalendar();\r\n }\r\n else {\r\n this.hideCalendar();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public lostFocus(e) {\r\n if (!this.isCalendarVisible) return;\r\n const timeList = this.elementRef.nativeElement.querySelector('div.rd-time-list');\r\n const timeListIsVisible = timeList && timeList.style.display === 'block';\r\n this.debounce(() => {\r\n if (!timeListIsVisible) {\r\n const timeList = this.elementRef.nativeElement.querySelector('div.rd-time-list');\r\n if (timeList && timeList.style.display === 'block') {\r\n this.inputElement.focus();\r\n return;\r\n }\r\n }\r\n this.updateValue();\r\n this.hideCalendar();\r\n }, 128, 'setFocus');\r\n }\r\n\r\n public updateValue(value?: string) {\r\n if (!this.inputElement) return;\r\n if (value !== undefined) {\r\n // вызывается самим календарём при выборе значения\r\n this.value = value === '' && !this.isRequired()\r\n ? null\r\n// : this.restoreDateTime(moment(value, this.format));\r\n : this.restoreDateTime(value);\r\n\r\n }\r\n else {\r\n // вызывается извне обработчиком события в разметке компонента при потере фокуса или нажатии Enter\r\n if ((this.inputElement.value || '').trim() === '') {\r\n this.inputElement.value = '';\r\n this.value = null;\r\n } else {\r\n value = moment(this.inputElement.value, this.format);\r\n if (value && moment(value).isValid()) {\r\n this.value = this.restoreDateTime(value);\r\n } else {\r\n this.value = this._value;\r\n }\r\n const textValue = this.toText(this.value);\r\n if (this.inputElement && this.inputElement.value !== textValue) {\r\n this.inputElement.value = textValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n isValuesEqual(value1: DateTime, value2: DateTime): boolean {\r\n value1 = this.toValue(value1);\r\n value2 = this.toValue(value2);\r\n if (value1 && value2) {\r\n return (value1).isSame(value2);\r\n } else {\r\n return super.isValuesEqual(value1, value2);\r\n }\r\n }\r\n\r\n\r\n public setFocus(e) {\r\n/*\r\n if (this.isCalendarVisible) return;\r\n this.debounce(() => this.showCalendar(), 128, 'setFocus');\r\n*/\r\n }\r\n\r\n public inputClick() {\r\n/*\r\n if (this.isCalendarVisible) return;\r\n this.debounce(() => this.showCalendar(), 128, 'setFocus');\r\n*/\r\n this.debounce(() => this.handleKey(''), 10, 'handleKey');\r\n }\r\n\r\n protected onInputElementFocusIn($event: FocusEvent) {\r\n this.inputElement.setSelectionRange(0, 0);\r\n this.debounce(() => this.handleKey('Home'), 10, 'handleKey');\r\n }\r\n\r\n protected onInputElementKeyDown(e: KeyboardEvent) {\r\n const res = (e.key === 'ArrowUp' || e.key === 'ArrowDown') ? false : this.handleKey(e.key);\r\n if (!res) {\r\n super.onInputElementKeyDown(e);\r\n }\r\n }\r\n\r\n public onKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Tab') {\r\n let handled;\r\n if (e.shiftKey) {\r\n handled = this.handleKey('ArrowLeft');\r\n } else {\r\n handled = this.handleKey('ArrowRight');\r\n }\r\n if (handled) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.handleKey(e.key);\r\n e.preventDefault();\r\n this.emitChanges();\r\n return false;\r\n }\r\n else if (e.key === ' ') {\r\n this.showCalendarButtonClick(e);\r\n }\r\n return true;\r\n }\r\n\r\n private isSeparator(c: string): boolean {\r\n return c === '-' || c === ' ' || c === ':' || c === '.' || c === '/';\r\n }\r\n\r\n private priorSeparatorIndex(value: string, startIndex: number): number {\r\n while (--startIndex >= 0 && !this.isSeparator(value[startIndex]));\r\n return startIndex;\r\n }\r\n\r\n private nextSeparatorIndex(value: string, startIndex: number): number {\r\n while (++startIndex < value.length && !this.isSeparator(value[startIndex]));\r\n return startIndex;\r\n }\r\n\r\n private handleKey(key: string): boolean {\r\n if (this.isReadOnly()) return false;\r\n // если нажали на стрелочки - выделяем текущий блок и изменяем значение\r\n let shift = 0;\r\n let res = true;\r\n let char: string;\r\n switch (key) {\r\n case '':\r\n if (this.inputElement.selectionStart === this.inputElement.selectionEnd) {\r\n this.inputElement.selectionStart = this.priorSeparatorIndex(this.inputElement.value, this.inputElement.selectionStart) + 1;\r\n this.inputElement.selectionEnd = this.nextSeparatorIndex(this.inputElement.value, this.inputElement.selectionStart);\r\n }\r\n break;\r\n case 'ArrowUp':\r\n shift = 1;\r\n case 'ArrowDown':\r\n\r\n // установка выделенного значения\r\n const changeInputValue = (changedSelection) => {\r\n const text = this.inputElement.value.substring(0, this.inputElement.selectionStart) + (changedSelection?.toString() || '') + this.inputElement.value.substring(this.inputElement.selectionEnd);\r\n const val = this.toValue(text);\r\n if (val) {\r\n const ss = this.inputElement.selectionStart;\r\n this.setValue(val);\r\n this.inputElement.setSelectionRange(ss, ss);\r\n this.handleKey('');\r\n }\r\n }\r\n\r\n this.hideCalendar();\r\n shift = shift || -1;\r\n // увеличение/уменьшение выделенного значения\r\n const selection = this.inputElement.value.substring(this.inputElement.selectionStart, this.inputElement.selectionEnd);\r\n if (selection === \"AM\") {\r\n changeInputValue(\"PM\");\r\n }\r\n else if (selection === \"PM\") {\r\n changeInputValue(\"AM\");\r\n }\r\n else if (selection) {\r\n let num = parseInt(selection);\r\n if (!isNaN(num)) {\r\n num += shift;\r\n if (num >= 0) {\r\n // установка выделенного значения\r\n changeInputValue(num);\r\n }\r\n }\r\n this._inFocus = false;\r\n this._beginPeriodComponent && (this._beginPeriodComponent._inFocus = false);\r\n this._endPeriodComponent && (this._endPeriodComponent._inFocus = false);\r\n this.updateMinMax();\r\n this._inFocus = true;\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n case 'Home':\r\n if (this.inputElement.selectionStart === 0) {\r\n char = this.inputElement.value.substring(1, 2);\r\n if (!this.isSeparator(char)) {\r\n this.inputElement.selectionEnd = this.inputElement.selectionStart + 2;\r\n } else {\r\n this.inputElement.selectionEnd = this.inputElement.selectionStart + 1;\r\n }\r\n res = false;\r\n } else {\r\n char = this.inputElement.value.substring(this.inputElement.selectionStart - 1, this.inputElement.selectionStart);\r\n if (this.isSeparator(char)) {\r\n this.inputElement.selectionEnd = this.inputElement.selectionStart - 1;\r\n } else {\r\n char = this.inputElement.value.substring(this.inputElement.selectionEnd, this.inputElement.selectionEnd + 1);\r\n }\r\n if (this.isSeparator(char)) {\r\n this.inputElement.selectionStart = this.priorSeparatorIndex(this.inputElement.value, this.inputElement.selectionEnd - 1) + 1;\r\n }\r\n }\r\n break;\r\n case 'ArrowRight':\r\n case 'End':\r\n char = this.inputElement.value.substring(this.inputElement.selectionEnd, this.inputElement.selectionEnd + 1);\r\n if (this.isSeparator(char)) {\r\n this.inputElement.selectionStart = this.inputElement.selectionEnd + 1;\r\n } else {\r\n char = this.inputElement.value.substring(this.inputElement.selectionStart - 1, this.inputElement.selectionStart);\r\n res = false;\r\n }\r\n if (this.isSeparator(char)) {\r\n this.inputElement.selectionEnd = this.nextSeparatorIndex(this.inputElement.value, this.inputElement.selectionStart);\r\n } else {\r\n this.inputElement.selectionStart = this.priorSeparatorIndex(this.inputElement.value, this.inputElement.selectionEnd - 1) + 1;\r\n this.inputElement.selectionEnd = this.nextSeparatorIndex(this.inputElement.value, this.inputElement.selectionStart);\r\n res = false;\r\n }\r\n break;\r\n default:\r\n res = false;\r\n break;\r\n }\r\n return res;\r\n }\r\n\r\n public emitChanges(value?, noRecurce?: boolean) {\r\n super.emitChanges(value);\r\n if (!noRecurce) {\r\n this._beginPeriodComponent?.emitChanges(undefined, true);\r\n this._endPeriodComponent?.emitChanges(undefined, true);\r\n }\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/datetime-picker/datetime-picker.component.ts","export * from './common/UssDeactivateRouteGuard';\r\nexport * from './common/EditorModal';\r\nexport * from './common/UssDialog';\r\nexport * from './export/export-options.editor';\r\nexport * from './modal/modal.component';\r\nexport * from './object-table-select/object-table-select.component';\r\nexport * from './progressDialog/progress.dialog';\r\nexport * from './simpleDialog/simple.dialog';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/index.ts","import * as ng from '@angular/core';\r\nimport * as core from '@core.module';\r\nimport { IEntityMetadata } from '@metadata.module';\r\n\r\nimport { UssObjectListComponent } from '../../../components/object-list/object-list.component';\r\nimport { EditorModal } from '../common/EditorModal';\r\nimport { IModalEditor } from '../common/EditorModal';\r\nimport { objectListPanels } from '../../../decorators/object-list-panel.decorator';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssDialogsService } from '../../../../dialogs.module/dialogs.service';\r\nimport {IUssObjectListPanel} from '../../object-list/IUssObjectListPanel';\r\n\r\n@ng.Component({\r\n selector: 'uss-table-select',\r\n styles: [require('./object-table-select.component.scss')],\r\n template: require('./object-table-select.component.html'),\r\n encapsulation: ng.ViewEncapsulation.None\r\n})\r\n@SystemComponent()\r\nexport class UssObjectTableSelectComponent extends EditorModal implements IModalEditor, ng.OnInit, ng.AfterViewInit {\r\n\r\n @ng.ViewChild('panel', { read: ng.ViewContainerRef }) panel: ng.ViewContainerRef;\r\n @ng.ViewChild('objectList') objectList: UssObjectListComponent;\r\n\r\n public dataSource: any;\r\n // @ts-ignore\r\n public metadata: IEntityMetadata;\r\n public selectedObjects: any[] | any;\r\n public selectionMode: 'single' | 'multiple' = 'single';\r\n valueFieldName: string = 'Id';\r\n\r\n\r\n public listPanel: IUssObjectListPanel | any;\r\n public filter: core.OData | core.IODataParams | string;\r\n\r\n public get isSelected(): boolean {\r\n return core.isArray(this.objectList.selection) ? this.objectList.selection.where(x => core.isNotEmpty(x)).count() > 0 : !!this.objectList.selection;\r\n }\r\n\r\n confirm() {\r\n this.close(this.objectList.selection);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.objectList.valueFieldName = this.valueFieldName;\r\n if (this.listPanel === undefined) {\r\n this.listPanel = UssDialogsService.createComponent(objectListPanels[this.metadata.Name], this.panel);\r\n }\r\n this.panel.element.nativeElement['__panel'] = this.listPanel;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n this.objectList.dblClickAction = () => this.close(this.objectList.selection);\r\n this.objectList.dataTable.keyValue = this.objectList.selection ? (core.isArray(this.objectList.selection) ? this.objectList.selection.firstOrDefault(x => core.isNotEmpty(x)) : this.objectList.selection) : undefined;\r\n this.modal.$ussDialog.onResize.subscribe(() => this.objectList.resize());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.ts","import * as ng from '@angular/core';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { UssSelectComponent } from '../select/select.component';\r\nimport { SystemComponent } from '../../internals';\r\nimport { isArray, translate } from '@core.module';\r\n\r\n@ng.Component({\r\n selector: 'uss-enum-select',\r\n template: require('./enum-select.component.html'),\r\n styles: [require('./enum-select.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssEnumSelectComponent extends UssSelectComponent {\r\n\r\n @ng.Input('innerContainerClass') innerContainerClass: string;\r\n @ng.Input('hideValues') hideValues: (number | string)[] = [];\r\n @ng.Input('onFilterItem') onFilterItem: (number) => boolean;\r\n \r\n private boolMetadata: App.EnumerableItemMetadata[];\r\n\r\n public get enumMetadata(): App.EnumerableItemMetadata[] {\r\n let res = this.propertyMetadata ? (this.propertyMetadata.EnumerableMetadata || this.boolMetadata) : undefined;\r\n if (res && (this.hideValues && this.hideValues.length > 0 || typeof this.onFilterItem === 'function')) {\r\n let q = res.where(() => true);\r\n if (this.hideValues && this.hideValues.length > 0) {\r\n q = q.where(x => !this.hideValues.contains(x.Value));\r\n }\r\n if (typeof this.onFilterItem === 'function') {\r\n q = q.where(x => this.onFilterItem(x.Value));\r\n }\r\n res = q.toArray();\r\n }\r\n return res?.toArray() ?? [];\r\n }\r\n\r\n /*\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.value = 1;\r\n }\r\n */\r\n\r\n initControl() {\r\n if (isArray(this.metadata)) {\r\n // можно передать просто список элементов в виде строк или App.EnumerableItemMetadata.\r\n this.metadata = {\r\n Name: this.fieldName,\r\n TypeName: 'number',\r\n Required: true,\r\n EnumerableMetadata: (this.metadata).select((x, i) => typeof x === 'string' ? {Value: i, Description: x} : x).toArray()\r\n };\r\n }\r\n if (this.propertyMetadata &&\r\n this.propertyMetadata.TypeName === 'boolean' &&\r\n !this.propertyMetadata.EnumerableMetadata) {\r\n this.boolMetadata = [\r\n { Name: 'True', Description: '@DIALOG.YES|Да', Value: 1 }, { Name: 'False', Description: '@DIALOG.NO|Нет', Value: 0 }\r\n ];\r\n }\r\n super.initControl();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/enum-select/enum-select.component.ts","import { Component, Input, Output, AfterViewInit, OnChanges, OnInit, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\nimport { translate } from '@core.module';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@Component({\r\n selector: `uss-multi-select`,\r\n template: require('./multi-select.component.html'),\r\n styles:[require('./multi-select.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n@SystemComponent()\r\nexport class UssMultiSelectComponent extends UssDataSourceComponent implements AfterViewInit, OnChanges, OnInit {\r\n\r\n @Input('l10n-placeholder') l10nPlaceholder: string;\r\n\r\n @Output('onDisplayText') onDisplayText = new EventEmitter<{ value: any }>();\r\n\r\n public getPlaceholder(): string {\r\n if (this.l10nPlaceholder !== undefined) {\r\n return translate.instant(this.l10nPlaceholder);\r\n } else {\r\n return this.placeholder;\r\n }\r\n }\r\n\r\n protected onControlValueChange(value) {\r\n super.onControlValueChange(value);\r\n this.value = this.getDataSourceValue();\r\n }\r\n\r\n setInputElementValue(value) {\r\n const ev = { value };\r\n this.onDisplayText.emit(ev);\r\n super.setInputElementValue(ev.value);\r\n this.detectChanges();\r\n }\r\n\r\n\r\n private _timeout;\r\n public showPopup(popup, container) {\r\n if (!this.disabled && !this.isReadOnly()) {\r\n this._timeout && clearTimeout(this._timeout);\r\n this._timeout = 0;\r\n popup.show({exclusive: false}, container);\r\n this.inputElement.focus();\r\n }\r\n }\r\n\r\n public hidePopup(popup) {\r\n this._timeout && clearTimeout(this._timeout);\r\n this._timeout = setTimeout(() => {\r\n this._timeout = 0;\r\n if (!this.isFocused) {\r\n popup.hide();\r\n }\r\n }, 100);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/multi-select/multi-select.component.ts","import * as ng from '@angular/core';\r\nimport * as rx from 'rxjs';\r\n\r\nimport { ExtendMethod, isEmpty, OData, ODataLike, translate, ifEmpty } from '@core.module';\r\nimport {UssMetadataService } from '@metadata.module';\r\n\r\nimport { UssSelectComponent } from '../select/select.component';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { UssDataBindedComponent } from '../common/UssDataBindedComponent';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Component({\r\n selector: 'uss-object-dropdown-select',\r\n template: require('./object-dropdown-select.component.html'),\r\n styles: [require('./object-dropdown-select.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssObjectDropdownSelectComponent extends UssSelectComponent implements ng.OnInit, ng.AfterViewInit, ng.OnChanges {\r\n\r\n public objectList: rx.Observable;\r\n\r\n public loading: boolean;\r\n\r\n @ExtendMethod(UssDataBindedComponent) setData(value: any) {}\r\n @ExtendMethod(UssDataBindedComponent) onChanges(ch: any) {}\r\n @ExtendMethod(UssDataBindedComponent) afterViewInit() {}\r\n @ExtendMethod(UssDataBindedComponent) initObjectList() {}\r\n @ExtendMethod(UssDataBindedComponent) getExpression(): string { return null; }\r\n @ExtendMethod(UssDataBindedComponent) getObjects$(): rx.Observable { return null; }\r\n @ExtendMethod(UssDataBindedComponent) getObjects(): any[] { return null; }\r\n @ExtendMethod(UssDataBindedComponent) resetLoading() { }\r\n @ExtendMethod(UssDataBindedComponent) load$(em, query) { return null; }\r\n\r\n @ExtendMethod(UssDataBindedComponent) getValueObject(): any { return null; }\r\n\r\n @ng.Input('displayExpression') displayExpression: string;\r\n\r\n public getItemValue(item) {\r\n return isEmpty(item) ? undefined : typeof item === 'object' ? item[this.valueFieldName] : item;\r\n }\r\n\r\n protected getInputElementValue() {\r\n let res = super.getInputElementValue();\r\n if (!res) res = null;\r\n return res;\r\n }\r\n\r\n get entityName() {\r\n let metaData;\r\n if (typeof this.metadata === 'function') {\r\n metaData = this.metadata();\r\n } else {\r\n metaData = this.metadata;\r\n }\r\n return metaData ? metaData.Name : undefined;\r\n }\r\n @ng.Input('entityName') set entityName(value: string) {\r\n this.metadata = UssMetadataService.getEntityInfo(value);\r\n }\r\n\r\n @ng.Input('valueFieldName') valueFieldName: string = 'Id';\r\n @ng.Input('filter') filter: ODataLike;\r\n\r\n @ng.Input('data') set data(value: object[] | rx.Observable | Promise) {\r\n this.setData(value);\r\n }\r\n @ng.Output('selectedObjectChange') selectedObjectChange = new ng.EventEmitter();\r\n\r\n @ng.Output('onDataLoaded') onDataLoaded = new ng.EventEmitter();\r\n\r\n\r\n private _emittedObject; \r\n public emitChanges(value?: string) {\r\n super.emitChanges(value);\r\n this.getObjects$().toPromise().then((res: any) => {\r\n const selectedObject = res.firstOrDefault(x => x.Id === this.value);\r\n if (this._emittedObject !== selectedObject) {\r\n this._emittedObject = selectedObject;\r\n this.selectedObjectChange.emit(selectedObject);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(ch): void {\r\n super.ngOnChanges(ch);\r\n this.onChanges(ch);\r\n\r\n if (this.wasInit && ch.filter) {\r\n if (ch.firstTime || !OData.isEqual(ch.filter.previousValue, ch.filter.currentValue)) {\r\n this.initObjectList();\r\n }\r\n }\r\n }\r\n\r\n public getQuery(): OData {\r\n return this.filter ? new OData(this.filter) : undefined;\r\n }\r\n\r\n public updatePlaceholder(placeholderText?: string) {\r\n if (placeholderText === undefined && this.loading) {\r\n placeholderText = translate.instant('@DIALOG.LOADING|Загрузка...');\r\n }\r\n super.updatePlaceholder(placeholderText);\r\n const selectElem = this.viewContainer.element.nativeElement.querySelector('div.ui.search.dropdown');\r\n if (selectElem) {\r\n if (this.disabled || this.loading) {\r\n selectElem.classList.add('disabled');\r\n } else {\r\n selectElem.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n //console.log('ngOnInit: true');\r\n this.loading = true;\r\n super.ngOnInit();\r\n }\r\n\r\n protected onVisibilityInit() {\r\n super.onVisibilityInit();\r\n this.afterViewInit();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.ts","import * as ng from '@angular/core';\r\nimport * as core from '../../../core.module';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { UssPageComponent } from './page.component';\r\nimport { SystemComponent } from '../../internals';\r\n\r\nexport declare type TPageDescriptor = { index: number; id: string; title: string; hidden: boolean; disabled: boolean; scrollableX: boolean; scrollableY: boolean; overflow: boolean }\r\n\r\n@ng.Component({\r\n selector: 'uss-page-control',\r\n template: require('./page-control.component.html'),\r\n styles: [require('./page-control.component.scss')],\r\n encapsulation: ng.ViewEncapsulation.None\r\n})\r\n@SystemComponent()\r\nexport class UssPageControlComponent extends UssComponent2 implements ng.OnInit, ng.OnChanges {\r\n\r\n @ng.Input('tabs') tabs: string[] = [];\r\n @ng.Input('activePageId') activePageId: string;\r\n @ng.Input('activePageIndex') activePageIndex: number;\r\n @ng.Output('activePageIdChange') activePageIdChange = new ng.EventEmitter();\r\n @ng.Output('activePageIndexChange') activePageIndexChange = new ng.EventEmitter();\r\n\r\n @ng.Output('activate') activate = new ng.EventEmitter();\r\n @ng.Output('deactivate') deactivate = new ng.EventEmitter();\r\n\r\n @ng.Input('canActivate') canActivate: (page: TPageDescriptor) => boolean | Promise;\r\n @ng.Input('canDeactivate') canDeactivate: (page: TPageDescriptor) => boolean | Promise;\r\n\r\n public activePage: TPageDescriptor;\r\n public pages: TPageDescriptor[] = [];\r\n\r\n ngOnChanges(ch) {\r\n if (ch.activePage) {\r\n this.updateActivePageIndex();\r\n }\r\n if (ch.activePageIndex) {\r\n this.updateActivePageId();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this.pages.length === 0) {\r\n this.pages = this.tabs.select((title, index) => { index, id: index.toString(), title }).toArray();\r\n }\r\n this.updateActivePage();\r\n }\r\n\r\n\r\n onActivePageIndexChanged() {\r\n this.debounce(() => this.activePageIndexChange.emit(this.activePageIndex), 0, 'activePageIndexChanged');\r\n }\r\n\r\n onActivePageIdChanged() {\r\n this.debounce(() => this.activePageIdChange.emit(this.activePageId), 0, 'activePageIdChanged');\r\n }\r\n\r\n updateActivePage() {\r\n this.debounce(() => {\r\n this.updateActivePageIndex();\r\n this.updateActivePageId(0);\r\n }, 0, 'updateActivePage');\r\n \r\n }\r\n\r\n async updateActivePageId(defPageIndex?: number) {\r\n let activePageIndex = core.ifEmpty(this.activePageIndex, defPageIndex);\r\n if (core.isNotEmpty(activePageIndex)) {\r\n activePageIndex = parseInt(activePageIndex);\r\n if (isNaN(activePageIndex)) {\r\n activePageIndex = undefined;\r\n } else {\r\n const activePage = this.pages.skip(activePageIndex).select(x => x.id).firstOrDefault();\r\n await this.setActivePage(activePage);\r\n }\r\n if (this.activePageIndex !== activePageIndex) {\r\n this.activePageIndex = activePageIndex;\r\n this.onActivePageIndexChanged();\r\n }\r\n }\r\n if (core.isNotEmpty(this.activePageId)) {\r\n this.activePage = this.pages.firstOrDefault(p => p.id === this.activePageId);\r\n } else {\r\n this.activePage = null;\r\n this.activePageId = null;\r\n }\r\n }\r\n\r\n updateActivePageIndex(emitActivePageChange?: boolean) {\r\n this.pages.forEach((p, index) => p.index = index);\r\n if (core.isNotEmpty(this.activePageId)) {\r\n this.activePage = this.pages.where(page => page.id === this.activePageId).firstOrDefault();\r\n const activePageIndex = this.activePage ? this.activePage.index : null;\r\n if (this.activePageIndex !== activePageIndex) {\r\n this.activePageIndex = activePageIndex;\r\n this.onActivePageIndexChanged();\r\n if (emitActivePageChange) {\r\n this.onActivePageIdChanged();\r\n }\r\n }\r\n } else {\r\n this.activePage = null;\r\n this.activePageIndex = null;\r\n }\r\n }\r\n\r\n async checkOnActivate(page: TPageDescriptor): Promise {\r\n let res = true;\r\n if (typeof this.canActivate === 'function') {\r\n res = await this.canActivate(page);\r\n }\r\n if (res && page instanceof UssPageComponent) {\r\n res = await page.checkOnActivate();\r\n }\r\n return res !== false;\r\n }\r\n async checkOnDeactivate(page: TPageDescriptor): Promise {\r\n let res = true;\r\n if (typeof this.canDeactivate === 'function') {\r\n res = await this.canDeactivate(page);\r\n }\r\n if (res && page instanceof UssPageComponent) {\r\n res = await page.checkOnDeactivate();\r\n }\r\n return res !== false;\r\n }\r\n\r\n doOnActivate(page: TPageDescriptor) {\r\n this.activate.emit(page);\r\n if (page instanceof UssPageComponent) {\r\n page.onActivate();\r\n }\r\n }\r\n doOnDeactivate(page: TPageDescriptor) {\r\n this.deactivate.emit(page);\r\n if (page instanceof UssPageComponent) {\r\n page.onDeactivate();\r\n }\r\n }\r\n\r\n async setActivePage(pageId: string, updatePageIndex?: boolean): Promise {\r\n const page = this.pages.firstOrDefault(x => x.id === pageId);\r\n if (!page?.disabled) {\r\n if (this.activePageId !== pageId) {\r\n let activePageDescription = this.pages.firstOrDefault(x => x.id === this.activePageId);\r\n if (activePageDescription) {\r\n if (!await this.checkOnDeactivate(activePageDescription)) return false;\r\n this.doOnDeactivate(activePageDescription);\r\n }\r\n activePageDescription = page;\r\n if (activePageDescription) {\r\n if (!await this.checkOnActivate(activePageDescription)) return false;\r\n }\r\n this.activePageId = pageId;\r\n this.onActivePageIdChanged();\r\n this.doOnActivate(activePageDescription);\r\n }\r\n\r\n if (updatePageIndex) {\r\n this.updateActivePageIndex(true);\r\n }\r\n this.detectChanges();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/page-control/page-control.component.ts","import * as ng from '@angular/core';\r\nimport * as ngForms from '@angular/forms';\r\nimport { ussFormat, getCaretPosition, isFloatNumber, isIntNumber, assign } from '@core.module';\r\nimport { CustomValidators } from '../common/CustomValidators';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Component({\r\n selector: 'uss-spinner',\r\n template: require('./spinner.component.html'),\r\n styles: [require('./spinner.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssSpinnerComponent extends UssDataSourceComponent implements ng.OnChanges {\r\n\r\n @ng.Input('l10n-placeholder') l10nPlaceholder: string;\r\n @ng.Input('min') min: number;\r\n @ng.Input('max') max: number;\r\n @ng.Input('step') step: number = 1;\r\n @ng.Input('type') private _type: 'int' | 'float' = 'int';\r\n @ng.Input('format') format: string;\r\n @ng.Input('autocomplete') autoComplete: string;\r\n\r\n public get type(): 'int' | 'float' {\r\n let res = undefined;\r\n if (this.propertyMetadata && this.afterInitVisible) {\r\n res = this.propertyMetadata.TypeName === 'integer'\r\n ? 'int'\r\n : this.propertyMetadata.TypeName === 'float' ? 'float' : undefined;\r\n this.format = this.format || this.propertyMetadata.Format;\r\n }\r\n return res || this._type;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.min && (this.min = +this.min);\r\n this.max && (this.max = +this.max);\r\n this.step && (this.step = +this.step);\r\n }\r\n\r\n public onValidate(control: ngForms.AbstractControl): { [index: string]: boolean; } {\r\n let res = super.onValidate(control);\r\n if (this.afterInitVisible) {\r\n\r\n if (this.type === 'int') {\r\n res = assign(res, CustomValidators.intNumberValidator(control));\r\n } else if (this.type === 'float') {\r\n res = assign(res, CustomValidators.floatNumberValidator(control));\r\n }\r\n res = assign(res, CustomValidators.minValueValidator(this.min)(control));\r\n res = assign(res, CustomValidators.maxValueValidator(this.max)(control));\r\n }\r\n return res;\r\n }\r\n\r\n protected validateControlValue(value: any): number | any {\r\n let res = super.validateControlValue(value);\r\n if (res === null && this.isRequired()) {\r\n res = this.min || 0;\r\n }\r\n if (this.min && res < this.min) res = this.min;\r\n if (this.max && res > this.max) res = this.max;\r\n return res;\r\n }\r\n\r\n ngOnChanges(ch) {\r\n super.ngOnChanges(ch);\r\n if (ch.min && this.wasInit) {\r\n setTimeout(() => this.value = this.validateControlValue(this.value), 0);\r\n }\r\n }\r\n\r\n public toValue(value: any): number {\r\n if (typeof value === 'string') value = value.replace(',', '.');\r\n let res = !this.wasInit ? value : value !== undefined && value !== null && value.toString().trim() !== ''\r\n ? (this.type === 'int'\r\n ? parseInt(value)\r\n : parseFloat(value))\r\n : null;\r\n if (isNaN(res)) {\r\n res = null;\r\n }\r\n return res;\r\n }\r\n\r\n public changeValue(step: number) {\r\n let nextValue: number;\r\n if (this.value === null || this.value === undefined) {\r\n nextValue = 0;\r\n } else {\r\n nextValue = (this.value || 0) + step;\r\n }\r\n\r\n if (!isNaN(nextValue)) {\r\n this.value = this.validateControlValue(nextValue);\r\n }\r\n }\r\n\r\n /** Перекрывем исходную функцию, т.к. нам нужно получать события БЕЗ задержки */\r\n protected assignInputElement(element?: HTMLInputElement) {\r\n this.inputElement = element || this.inputElement || this.viewContainer.element.nativeElement.querySelector('input');\r\n \r\n this.onInputElementChange && this.observeInputEvent('change', ($event: Event) => this.onInputElementChange($event));\r\n\r\n this.onInputElementKeyUp && this.observeInputEvent('keyup', ($event: KeyboardEvent) => this.onInputElementKeyUp($event));\r\n this.onInputElementKeyDown && this.observeInputEvent('keydown', ($event: KeyboardEvent) => this.onInputElementKeyDown($event));\r\n this.onInputElementKeyPress && this.observeInputEvent('keypress', ($event: KeyboardEvent) => this.onInputElementKeyPress($event));\r\n this.onInputElementInput && this.observeInputEvent('input', ($event: Event) => this.onInputElementInput($event));\r\n\r\n this.onInputElementFocus && this.observeInputEvent('focus', ($event: FocusEvent) => this.onInputElementFocus($event));\r\n this.onInputElementFocus && this.observeInputEvent('blur', ($event: FocusEvent) => this.onInputElementBlur($event));\r\n this.onInputElementFocus && this.observeInputEvent('focusin', ($event: FocusEvent) => this.onInputElementFocusIn($event));\r\n this.onInputElementFocus && this.observeInputEvent('focusout', ($event: FocusEvent) => this.onInputElementFocusOut($event));\r\n }\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////////////\r\n\r\n /**\r\n * Ввод символов\r\n * @param e\r\n */\r\n onInputElementKeyPress(e: KeyboardEvent) {\r\n super.onInputElementKeyPress(e);\r\n let text = (e.srcElement).value;\r\n if (window.getSelection().toString() === text) {\r\n // Если текст в инпуте выделен - то он будет стёрт при вводе нового символа,\r\n // поэтому считаем, что текст в инпуте пустой. \r\n text = '';\r\n // По хорошему неплохо было бы также учитыватьи частичное выделение, но \r\n // пока это не реализовано\r\n }\r\n \r\n if (e.key === ' ') {\r\n // Key ' ' - пробелы просто игнорируем\r\n } else if (e.key === '-' && text && text !== '-') {\r\n // Key '-' - минус меняет знак числа на противоположный\r\n //this.value = -this.value;\r\n let val = +text;\r\n if (isNaN(val)) val = this.value;\r\n val = -val;\r\n if (this.validateControlValue(val) === val) {\r\n (e.srcElement).value = val;\r\n }\r\n } else if (this.type === 'float' && (e.key === '.' || e.key === ',')) {\r\n // Key '.' - точку можно вводить только если тип спиннера float\r\n //const decimalSeparator = utils.getDecimalSeparator();\r\n //const decimalSeparator = '.';\r\n //if (this.value && this.value.toLocaleString().indexOf(decimalSeparator) === -1\r\n if (text && (text.toLocaleString().indexOf('.') === -1 && text.toLocaleString().indexOf(',') === -1)\r\n ) {\r\n // Если значение не содержит точку (десятичный разделитель) - можно пропустить значение\r\n return;\r\n }\r\n } else {\r\n // остальные символы можно вводить - если в результате получается валидное числовое значение\r\n const caretPosition = getCaretPosition(e.srcElement);\r\n text = [text.slice(0, caretPosition), e.key, text.slice(caretPosition)].join('');\r\n if (text === '-'\r\n || (this.type === 'float' && isFloatNumber(text)\r\n || this.type === 'int' && isIntNumber(text))\r\n ) {\r\n return;\r\n }\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n /**\r\n * Стрелки и Escape\r\n * @param e\r\n */\r\n onInputElementKeyDown(e: KeyboardEvent) {\r\n // Обработка нажатий стрелок вверх/вниз для изменения значения на указанный шаг\r\n if (e.key === 'ArrowUp') {\r\n if (!this.isReadOnly()) {\r\n // Key 'Up' - увеличим значение на величину шага\r\n this.changeValue(this.step);\r\n }\r\n }\r\n else if (e.key === 'ArrowDown') {\r\n if (!this.isReadOnly()) {\r\n // Key 'Down' - уменьшим значение на величину шага\r\n this.changeValue(-this.step);\r\n }\r\n } else {\r\n super.onInputElementKeyDown(e);\r\n return;\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n setInputValueDirect(value: string): void {\r\n super.setInputValueDirect(ussFormat(this.value, this.format));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/spinner/spinner.component.ts","import * as ng from '@angular/core';\r\nimport { isShiftPressed, isCtrlPressed, ifEmpty, isEmpty, uid, isNotEmpty, isArray } from '@core.module';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { SystemComponent } from '../../internals';\r\n\r\nexport interface ITreeListItem {\r\n /** Идентификатор объекта (служит для корректной работы св-ва trackBy) */\r\n readonly id?: string;\r\n\r\n /** Отображаемое значение объекта */\r\n readonly caption?: string | ng.TemplateRef;\r\n\r\n /** Исходный элемент */\r\n readonly $source: T;\r\n\r\n /** Идентификатор родительского элемента */\r\n readonly parentId?: string;\r\n\r\n /** Признак того, что узел в дереве запрещён */\r\n disabled?: boolean;\r\n\r\n /** Признак того, что узел в дереве скрыт */\r\n hidden?: boolean;\r\n\r\n /** Признак того, что узел в дереве раскрыт */\r\n expanded?: boolean;\r\n\r\n /** Признак того, что узел в дереве выбран (для множественного выбора) */\r\n checked?: boolean;\r\n\r\n /** Признак того, что узел в дереве выделен (для одиночного выбора) */\r\n selected?: boolean;\r\n}\r\n\r\nexport class TreeListItem implements ITreeListItem {\r\n /** Идентификатор объекта (служит для корректной работы св-ва trackBy) */\r\n readonly id: string;\r\n\r\n /** Исходный элемент */\r\n readonly $source: T;\r\n\r\n /** Идентификатор родительского элемента */\r\n readonly parentId: string;\r\n\r\n /** Родительский элемент */\r\n readonly parent: TreeListItem;\r\n\r\n /** Подчинённые элементы */\r\n readonly children: TreeListItem[] = [];\r\n\r\n /** Корневой элемент дерева */\r\n readonly root: TreeListItem;\r\n\r\n /** Уровень в дереве. null - для корневого элемента (не видно пользователю). */\r\n readonly level: number;\r\n\r\n /** Признак корневого элемента дерева (не видно пользователю) */\r\n readonly isRoot: boolean;\r\n\r\n /** Признак того, что узел имеет \"внуков\", т.е. не все его \"дети\" являются \"листьями\" дерева */\r\n hasGrandChildren: boolean;\r\n\r\n /** Отображаемое значение объекта */\r\n caption: string | ng.TemplateRef;\r\n\r\n template: ng.TemplateRef;\r\n\r\n /** Признак того, что узел в дереве запрещён */\r\n disabled: boolean = false;\r\n\r\n /** Признак того, что узел в дереве скрыт */\r\n hidden: boolean = false;\r\n\r\n /** Ссылка на компонент */\r\n get component(): UssTreeListComponent {\r\n return this.isRoot ? this.$source : this.root.component;\r\n }\r\n\r\n private _lockEvents: boolean = false;\r\n private _lock: boolean = false;\r\n private _checked: boolean = false;\r\n private _expanded: boolean = false;\r\n\r\n protected constructor(source: ITreeListItem | UssTreeListComponent | string, parent?: TreeListItem) {\r\n if (source instanceof UssTreeListComponent) {\r\n this.$source = source;\r\n this.root = this;\r\n this.isRoot = true;\r\n } else {\r\n this.root = parent ? parent.root || parent : null;\r\n this.parent = parent;\r\n this.level = parent ? (parent.isRoot ? 0 : parent.level + 1) : null;\r\n if (source) {\r\n if (typeof source === 'string') {\r\n source = { id: source, source };\r\n }\r\n else if (typeof source === 'object') {\r\n source['source'] = source['source'] || source['id'];\r\n }\r\n this.$source = (source).$source;\r\n this.parentId = (source).parentId;\r\n this.checked = !!(source).checked;\r\n this.expanded = (source).expanded;\r\n this.disabled = (source).disabled;\r\n this.hidden = (source).hidden;\r\n this.id = (source).id || (typeof this.$source === 'object'\r\n ? ifEmpty(ifEmpty(this.$source['Id'], this.$source['Name']), uid())\r\n : (this.$source as any)?.toString());\r\n this.caption = (source).caption || (typeof this.$source === 'object'\r\n ? ifEmpty(ifEmpty(this.$source['Name'], this.$source['Id']), (this.$source as any)?.toString())\r\n : this.id);\r\n this.template = (source).caption instanceof ng.TemplateRef ? (source).caption : null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Создаёт корневой элемент дерева, инициализируя его списком элементов дерева.\r\n */\r\n static createRoot(items: ITreeListItem[], component: UssTreeListComponent): TreeListItem {\r\n const res = new TreeListItem(component);\r\n res._lockEvents = true;\r\n res.assignChildren(items || []);\r\n res.updateSelection();\r\n res._lockEvents = false;\r\n return res;\r\n }\r\n\r\n private assignChildren(items: ITreeListItem[]): void {\r\n const children = items.where(x => this.root ? x.parentId === this.id : isEmpty(x.parentId)).select(x => TreeListItem.create(x, this)).toArray();\r\n this.children.AddRange(children);\r\n if (this.children.length > 0) {\r\n this.parent && (this.parent.hasGrandChildren = true);\r\n for (let item of this.children) {\r\n item.assignChildren(items);\r\n }\r\n }\r\n }\r\n\r\n /** Создаёт отдельный элемент дерева */\r\n static create(source: ITreeListItem, parent: TreeListItem): TreeListItem {\r\n let res: TreeListItem = null;\r\n if (source instanceof TreeListItem) {\r\n res = source;\r\n } else if (source) {\r\n res = new TreeListItem(source, parent);\r\n }\r\n return res;\r\n }\r\n\r\n /** Устанавливает признак selected/checked и expanded согласно переданному значению или значению, установленному в компоненте */\r\n updateSelection(selection?: string | string[], expandLevel?: number | 'all') {\r\n selection = selection || this.component?.selection;\r\n let selArr = null;\r\n if (this.component && selection) {\r\n selArr = (isArray(selection) ? selection : [selection]);\r\n if (this.component.selectionMode === 'single') {\r\n this.component.selection = selArr[0];\r\n } else {\r\n this.component.selection = selArr;\r\n }\r\n }\r\n expandLevel = (expandLevel || (this.component && this.component.expandLevel));\r\n if (selArr || isNotEmpty(expandLevel)) {\r\n this.root.allChildren.forEach(item => {\r\n if (expandLevel === 'all' || item.level === +expandLevel-1) {\r\n item.expanded = true;\r\n }\r\n if (selArr) {\r\n if (this.component.selectionMode === 'single') {\r\n item._checked = item.id === selArr[0];\r\n if (item._checked && item.parent) item.parent.expanded = true;\r\n }\r\n else {\r\n item.checked = selArr.contains(item.id);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n /** Признак того, что для узла не нужно генерировать события */\r\n get lockEvents(): boolean { return this._lockEvents || this.root._lockEvents }\r\n\r\n /** Признак того, что узел в дереве выбран (для множественного выбора) */\r\n get checked(): boolean { return ifEmpty(this._checked, null) }\r\n set checked(value: boolean) {\r\n value = ifEmpty(value, null);\r\n if (this.checked === value) return;\r\n this._checked = value;\r\n if (this.component /*&& this.component.selectionMode === 'multiple'*/) {\r\n if (this.parent && !this.parent.isRoot && this.component.selectionMode === 'multiple') {\r\n this.parent._lock = true;\r\n const checkedCount = this.parent.children.count(x => x.checked === true);\r\n const unCheckedCount = this.parent.children.count(x => x.checked === false);\r\n this.parent.checked = checkedCount === this.parent.children.length ? true : unCheckedCount === this.parent.children.length ? false : null;\r\n this.parent._lock = false;\r\n }\r\n\r\n if (!this._lock && (this.component.selectionMode === 'multiple' || this.component.selectionMode === 'manual' && (isCtrlPressed() || isShiftPressed()))) {\r\n this._lock = true;\r\n if (this.children.length > 0) { \r\n this.children.forEach(x => {\r\n x.checked = !!value;\r\n });\r\n }\r\n this._lock = false;\r\n }\r\n }\r\n if (!this._lock) {\r\n this.component.emitSelectionEvent(this);\r\n }\r\n }\r\n\r\n /** Признак того, что узел в дереве выделен (для одиночного выбора) */\r\n get selected(): boolean { return !!this._checked }\r\n set selected(value: boolean) {\r\n if (!this.hidden && !this.disabled && this.component.selectionMode === 'single') {\r\n if (!this._lock) {\r\n if (value) {\r\n this.root.allChildren.forEach(x => x._checked = false);\r\n }\r\n if (this._checked !== !!value) {\r\n this._checked = !!value;\r\n if (this._checked && this.parent) this.parent.expanded = true;\r\n this.component.emitSelectionEvent(this);\r\n }\r\n }\r\n } else {\r\n this._checked = false;\r\n }\r\n }\r\n\r\n /** Признак того, что узел в дереве раскрыт */\r\n get expanded(): boolean { return !!this._expanded }\r\n set expanded(value: boolean) {\r\n if (!this._lock) {\r\n this._lock = true;\r\n if (value) {\r\n if (this.parent && !this.parent._lock) {\r\n this.parent.expanded = true;\r\n }\r\n }\r\n this._lock = false;\r\n if (this._expanded !== !!value) {\r\n this._expanded = !!value;\r\n this.component.emitExpandedEvent(this);\r\n }\r\n }\r\n }\r\n\r\n private *allChildrenIterator(node: TreeListItem): IterableIterator {\r\n if (this !== node) {\r\n yield node;\r\n }\r\n for (let x of node.children) {\r\n yield* this.allChildrenIterator(x);\r\n }\r\n }\r\n\r\n /** Перечисляет все элементы узла дерева, включая вложенные и не включая сам узел */\r\n get allChildren(): linqjs.IEnumerable {\r\n return Enumerable.fromIterator(this.allChildrenIterator(this));\r\n }\r\n}\r\n\r\nexport interface UssTreeListEvent {\r\n sourceComponent: UssTreeListComponent;\r\n}\r\n\r\nexport interface UssTreeListItemEvent extends UssTreeListEvent {\r\n sourceItem: TreeListItem;\r\n}\r\n\r\nexport interface UssTreeListSelectionEvent extends UssTreeListItemEvent {\r\n selection: string[] | string;\r\n needClose: boolean;\r\n}\r\n\r\n\r\n@ng.Component({\r\n selector: 'uss-tree-list',\r\n template: require('./tree-list.component.html'),\r\n styles: [require('./tree-list.component.scss')],\r\n encapsulation: ng.ViewEncapsulation.None,\r\n // changeDetection: ng.ChangeDetectionStrategy.OnPush // нельзя! не работает в uss-tree-list-select\r\n})\r\n@SystemComponent()\r\nexport class UssTreeListComponent extends UssComponent2 implements ng.OnInit, ng.OnChanges {\r\n\r\n /** Список элементов дерева. */\r\n @ng.Input('items') items: ITreeListItem[] = [];\r\n\r\n /** Шаблон для отображения элемента. */\r\n @ng.Input('itemTemplate') itemTemplate: ng.TemplateRef;\r\n\r\n /** Режим выбора элементов:\r\n * `single` - только один элемент может быть выбран.\r\n * `multiple` - можно выбрать несколько элементов. Элементы верхнего и нижнего уровней относительно выбранных отмечаются автоматически. В `selection` попадают только значения листьев.\r\n * `manual` - можно выбрать несколько элементов. Каждый элемент в дереве отмечается отдельно. В `selection` попадают все выбранные значения. \r\n */\r\n @ng.Input('selectionMode') selectionMode: 'single' | 'multiple' | 'manual' = 'single';\r\n\r\n /** Признак того, что компонент используется в комбо-боксе. Имеет значение только для мультивыбора.\r\n * В этом случае если кликнули на чекбоксе - будет мультивыбор, а если по строке с названием - будет выбран ровно один этот элемент (предыдущее выделение очищается).\r\n */\r\n @ng.Input('combo') isCombo: boolean;\r\n\r\n /** Текущее выделение. Для режима `single` - это всегда одно значение ключевого поля. Иначе - массив ключевых значений. */\r\n @ng.Input('selection') selection: string[] | string;\r\n\r\n /** До какого уровня необходимо раскрыть дерево при инициализации.\r\n * `all` - раскрыть полностью.\r\n */\r\n @ng.Input('expandLevel') expandLevel: number | 'all' = 'all';\r\n\r\n /** Событие, вызываемое при изменении текущего выделения. */\r\n @ng.Output('selectionChange') selectionChange = new ng.EventEmitter();\r\n\r\n /** Событие, вызываемое при изменении текущего выделения. */\r\n @ng.Output('selected') onSelected = new ng.EventEmitter();\r\n\r\n /** Событие, вызываемое после инициализации компонента. */\r\n @ng.Output('loaded') onLoaded = new ng.EventEmitter();\r\n\r\n /** Ссылка на корневой элемент дерева. */\r\n public root: TreeListItem;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isCombo = this.bool(this.isCombo);\r\n !this.root && this.setup(true);\r\n }\r\n\r\n /*\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.updateDisplayText();\r\n }\r\n */\r\n\r\n ngOnChanges(ch) {\r\n if (this.wasInit) {\r\n this.setup(!!ch.items);\r\n }\r\n }\r\n\r\n setSelection(selection: string | string[]) {\r\n const oldSelection = this.selection;\r\n selection = ifEmpty(selection, []);\r\n this.selection = selection;\r\n if (this.root) {\r\n this.root.updateSelection(selection);\r\n this.selection = oldSelection;\r\n this.emitSelectionEvent(this.root);\r\n } \r\n }\r\n\r\n setup(setupItems: boolean) {\r\n if (setupItems) {\r\n this.root = TreeListItem.createRoot(this.items, this);\r\n this.emitLoadedEvent();\r\n }\r\n else\r\n {\r\n this.root && this.root.updateSelection();\r\n }\r\n }\r\n\r\n emitExpandedEvent(source: TreeListItem) {\r\n if (source.lockEvents) return;\r\n }\r\n\r\n emitLoadedEvent() {\r\n this.onLoaded.emit({sourceComponent: this});\r\n }\r\n\r\n emitSelectionEvent(source: TreeListItem) {\r\n if (source.lockEvents) return;\r\n this.debounce(() => {\r\n let selection;\r\n let changed;\r\n let needClose = false;\r\n if (this.selectionMode === 'single') {\r\n selection = source.selected && !source.disabled && !source.hidden ? source.id : null;\r\n changed = selection !== this.selection;\r\n needClose = true;\r\n } else {\r\n this.selection = this.selection || [];\r\n selection = this.root.allChildren.where(x => {\r\n if (x.checked === -1) {\r\n x.checked = true;\r\n needClose = true;\r\n }\r\n return (x.checked === true || x.checked === -1) && (this.selectionMode === 'manual' || x.children.length === 0);\r\n }).select(x => x.id).toArray();\r\n changed = selection.length !== this.selection.length || selection.except(this.selection).any();\r\n }\r\n if (changed)\r\n {\r\n this.selection = selection;\r\n this.root && this.root.updateSelection();\r\n this.selectionChange.emit(this.selection);\r\n }\r\n this.onSelected.emit({sourceComponent: this, sourceItem: source, selection: this.selection, needClose});\r\n }, 0, 'emitSelection');\r\n }\r\n\r\n updateDisplayText() {\r\n this.onSelected.emit({sourceComponent: this, sourceItem: null, selection: this.selection, needClose: false});\r\n }\r\n\r\n /** Текстовое представление текущего выделения. Для режима `single` - это всегда одно значение поля `caption`. Иначе - массив значений полей `caption`. */\r\n get selectedCaptions(): string[] | string {\r\n let res;\r\n if (this.root) {\r\n if (this.selectionMode === 'single') {\r\n res = this.root.allChildren.where(x => x.selected === true).select(x => x.caption).firstOrDefault() || '';\r\n } else {\r\n res = this.root.allChildren.where(x => x.checked === true && (this.selectionMode === 'manual' || x.children.length === 0)).select(x => x.caption).toArray();\r\n }\r\n }\r\n return res || '';\r\n }\r\n\r\n clickCheckLabel(e, item) {\r\n if (this.isCombo) {\r\n this.root.allChildren.forEach(i => i.checked = false);\r\n item.checked = -1;\r\n e.preventDefault();\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/tree-list/tree-list.component.ts","import * as ng from '@angular/core';\r\nimport * as core from '@core.module';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssHttpHelper, fromJson, isEmpty, isArray, isNotEmpty, translate } from '@core.module';\r\n\r\nexport declare type FileInfo = {\r\n FileName: string;\r\n FileSize: number;\r\n}\r\n\r\n@ng.Component({\r\n selector: 'uss-upload',\r\n template: require('./upload.component.html'),\r\n styles: [require('./upload.component.scss')],\r\n inputs: UssDataSourceComponent.Inputs,\r\n outputs: UssDataSourceComponent.Outputs\r\n})\r\n@SystemComponent()\r\nexport class UssUploadComponent extends UssDataSourceComponent {\r\n public static noImageDefault = 'assets/system/svg/photo-camera.svg';\r\n public imageSrc = UssUploadComponent.noImageDefault;\r\n public progressValue = 0;\r\n public fileSize: string;\r\n public successfulLoading: string;\r\n public wasChanged: boolean;\r\n public fileName: string;\r\n\r\n\r\n private defaultUploadUrl = 'api/upload/uploads';\r\n\r\n public file: File;\r\n public empty: boolean = true;\r\n\r\n @ng.Input('previewResolution') previewResolution: number|string;\r\n @ng.Input('uploadResolution') uploadResolution: number|string;\r\n @ng.Input('label') label: string;\r\n @ng.Input('url') uploadUrl: string;\r\n @ng.Input('previewMode') previewMode: boolean = false;\r\n @ng.Input('customName') customName: Function;\r\n @ng.Input('isButton') isButton: boolean = false;\r\n @ng.Input('immediateUpload') immediateUpload: boolean = false;\r\n @ng.Input('preloadFile') preloadFile: boolean = false;\r\n\r\n @ng.Input('headers') headers: { [id: string]: any } = {};\r\n @ng.Input('formData') formData: { [id: string]: any } = {};\r\n\r\n @ng.Input('beforeUpload') beforeUpload: (item: File) => boolean;\r\n\r\n /**\r\n * Список поддерживаемых типов файлов в виде: \".xls,.xlsx\" или \"image/*,audio/*,video/*\"\r\n */\r\n @ng.Input('accept') accept: string;\r\n\r\n /**\r\n * Если установлен - добавляется к запросу на получение даных в виде ?_={cacheHash}\r\n * Если равн true - текущее время\r\n */\r\n @ng.Input('cacheHash') cacheHash: boolean | string;\r\n\r\n @ng.Output('onProgress') onProgress = new ng.EventEmitter();\r\n @ng.Output('onUpload') onUpload = new ng.EventEmitter();\r\n @ng.Output('onError') onError = new ng.EventEmitter();\r\n\r\n @ng.ViewChild('uploader') uploader: ng.ElementRef;\r\n\r\n private progress: any;\r\n\r\n protected setDataSourceValue(v: string) {\r\n // не меняем значение поля\r\n }\r\n\r\n public setValue(v: string) {\r\n super.setValue(v);\r\n // только один раз делаем при старте\r\n if (this.wasChanged !== undefined) return;\r\n this.debounce(() => {\r\n this.imageSrc = v || UssUploadComponent.noImageDefault;\r\n this.empty = isEmpty(v) || v === '';\r\n if (!this.empty && !this.imageSrc.startsWith('data:image/')) {\r\n if (typeof this.cacheHash === 'string' && (this.cacheHash.toLowerCase() === 'true' || this.cacheHash.toLowerCase() === 'yes' || this.cacheHash === '1')) {\r\n this.cacheHash = true;\r\n }\r\n const hash = isNotEmpty(this.cacheHash)\r\n ? typeof this.cacheHash === 'boolean'\r\n ? this.cacheHash\r\n ? Date.now()\r\n : null\r\n : this.cacheHash.toString().ToMd5()\r\n : null;\r\n if (this.previewResolution > 0) {\r\n this.imageSrc += `?resolution=${this.previewResolution}`;\r\n if (hash) this.imageSrc += `&_=${hash}`;\r\n } else {\r\n if (hash) this.imageSrc += `?_=${hash}`;\r\n }\r\n this.imageSrc = UssHttpHelper.updateUrl(this.imageSrc);\r\n }\r\n this.wasChanged = false;\r\n }, 0, 'setValue');\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.previewMode = this.bool(this.previewMode);\r\n this.isButton = this.bool(this.isButton);\r\n this.immediateUpload = this.bool(this.immediateUpload);\r\n this.preloadFile = this.bool(this.preloadFile);\r\n\r\n this.uploadUrl = this.uploadUrl || this.defaultUploadUrl;\r\n this.progress = $(this.elementRef.nativeElement).find('.progress');\r\n this.progress.progress({ percent: 0 });\r\n this.progress.css('display', 'none');\r\n if (typeof this.previewResolution === 'string') {\r\n let multiply = 1;\r\n if (this.previewResolution.endsWith('K') || this.previewResolution.endsWith('k')) {\r\n multiply = 1024;\r\n }\r\n else if (this.previewResolution.endsWith('M') || this.previewResolution.endsWith('m')) {\r\n multiply = 1024*1024;\r\n }\r\n this.previewResolution = Number.parseInt(this.previewResolution) * multiply;\r\n }\r\n }\r\n\r\n protected onInputElementChange(e: Event) {\r\n if (e?.srcElement && e.srcElement['files'] && e.srcElement['files'][0])\r\n {\r\n this.updateValue(e.srcElement['files'][0]);\r\n }\r\n else\r\n {\r\n super.onInputElementChange(e);\r\n }\r\n }\r\n\r\n public upload(formData?: { [id: string]: any }, headers?: { [id: string]: any }): Promise {\r\n this.headers = headers || this.headers;\r\n this.formData = formData || this.formData;\r\n\r\n return this.uploadFile(this.file);\r\n }\r\n\r\n public uploadByEvent(e: Event) {\r\n this.file = e.srcElement['files'][0];\r\n\r\n if (this.file) {\r\n this.fileName = this.customName ? this.customName(this.file.name) : this.file.name;\r\n this.successfulLoading = this.file.name;\r\n\r\n this.fileSize = core.humanFileSize(this.file.size);\r\n this.progressValue = 0;\r\n\r\n this.immediateUpload && this.uploadFile(this.file);\r\n this.empty = false;\r\n if (this.previewMode || this.preloadFile)\r\n {\r\n var reader = new FileReader();\r\n\r\n reader.onloadend = () => {\r\n if (this.imageSrc !== reader.result) {\r\n this.imageSrc = (reader.result);\r\n this.empty = isEmpty(this.imageSrc) || this.imageSrc === '';\r\n this.updateValue(this.imageSrc);\r\n //this.modelChange.emit(this.imageSrc);\r\n this.wasChanged = true;\r\n }\r\n }\r\n\r\n if (this.file) {\r\n reader.readAsDataURL(this.file);\r\n }\r\n }\r\n } else {\r\n this.successfulLoading = undefined;\r\n this.fileSize = undefined;\r\n this.fileName = undefined;\r\n this.empty = true;\r\n this.progressValue = 0;\r\n }\r\n }\r\n\r\n public clear() {\r\n if (!this.previewMode || this.imageSrc && this.imageSrc !== UssUploadComponent.noImageDefault) {\r\n this.imageSrc = UssUploadComponent.noImageDefault;\r\n this.fileSize = undefined;\r\n this.fileName = undefined;\r\n this.empty = true;\r\n this.wasChanged = true;\r\n //this.modelChange.emit(undefined);\r\n this.updateValue(null);\r\n super.setDataSourceValue(null);\r\n this.inputElement.value = null;\r\n }\r\n }\r\n\r\n uploadFile(file: File): Promise {\r\n let res = Promise.resolve(null);\r\n if (file) {\r\n if (this.beforeUpload && this.beforeUpload(file) || !this.beforeUpload) {\r\n let resolve;\r\n let reject;\r\n res = new Promise((res, rej) => { resolve = res; reject = rej; });\r\n\r\n this.progress.progress({ percent: 0 });\r\n this.progress.css('display', 'block');\r\n\r\n const formData = new FormData();\r\n formData.append('files', file, this.fileName);\r\n formData.append('resolution', this.uploadResolution);\r\n\r\n Enumerable.from(this.formData).forEach(kv => {\r\n kv.value && formData.append(kv.key, kv.value);\r\n });\r\n\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.upload.onprogress = e => this.onFileProgress(e);\r\n xhr.onload = e => {\r\n let res = e;\r\n try {\r\n res = fromJson(e.srcElement['response'] || e.srcElement['responseText'] || '');\r\n if (isArray(res) && res['length'] < 2) {\r\n res = res[0];\r\n }\r\n } catch (e) {} \r\n this.onFileUploaded(res);\r\n resolve(res);\r\n };\r\n xhr.onerror = e => {\r\n this.onFileError(e);\r\n reject(e);\r\n };\r\n\r\n xhr.open('POST', `${UssHttpHelper.baseAddress}/${this.uploadUrl}`, true);\r\n\r\n Enumerable.from(this.headers).forEach(kv => {\r\n kv.value && xhr.setRequestHeader(kv.key, encodeURIComponent(kv.value));\r\n });\r\n\r\n if (core.auth.isLoggedIn) {\r\n xhr.setRequestHeader('Authorization', `Bearer ${core.auth.accessToken}`);\r\n }\r\n\r\n if (translate.currentLang) {\r\n xhr.setRequestHeader('X-Language', translate.currentLang);\r\n }\r\n\r\n xhr.send(formData);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n private onFileProgress(e: ProgressEvent): void {\r\n this.onProgress.emit(e);\r\n\r\n this.progressValue = Math.round(e.loaded / e.total * 100);\r\n this.progress.progress({ percent: this.progressValue });\r\n //this.detectChanges();\r\n }\r\n\r\n private onFileUploaded(e: FileInfo | FileInfo[] | Event): void {\r\n this.progress.progress({ percent: 100 });\r\n delete this.successfulLoading;\r\n delete this.fileSize;\r\n\r\n this.progress.animate({\r\n opacity: 0\r\n }, 2000, () => {\r\n this.progress.css('display', 'none');\r\n this.progress.css('opacity', '1 ');\r\n });\r\n\r\n this.onUpload.emit(e);\r\n\r\n delete this.file;\r\n this.emitChanges();\r\n }\r\n\r\n private onFileError(e: ErrorEvent): void {\r\n delete this.file;\r\n this.progress.progress({ percent: 100 });\r\n\r\n console.error('UssUpload: loading error', e);\r\n this.onError.emit(e);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/upload/upload.component.ts","var __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * @license Angular v4.1.0\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\nimport { Injectable, NgModule, NgZone, RendererFactory2 } from '@angular/core';\nimport { BrowserModule, ɵDomRendererFactory2 } from '@angular/platform-browser';\nimport { AnimationDriver, ɵAnimationEngine, ɵAnimationStyleNormalizer, ɵDomAnimationEngine, ɵNoopAnimationDriver, ɵNoopAnimationEngine, ɵWebAnimationsDriver, ɵWebAnimationsStyleNormalizer, ɵsupportsWebAnimations } from '@angular/animations/browser';\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar AnimationRendererFactory = (function () {\n /**\n * @param {?} delegate\n * @param {?} _engine\n * @param {?} _zone\n */\n function AnimationRendererFactory(delegate, _engine, _zone) {\n this.delegate = delegate;\n this._engine = _engine;\n this._zone = _zone;\n }\n /**\n * @param {?} hostElement\n * @param {?} type\n * @return {?}\n */\n AnimationRendererFactory.prototype.createRenderer = function (hostElement, type) {\n var _this = this;\n var /** @type {?} */ delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation'])\n return delegate;\n var /** @type {?} */ namespaceId = type.id;\n var /** @type {?} */ animationTriggers = (type.data['animation']);\n animationTriggers.forEach(function (trigger) { return _this._engine.registerTrigger(trigger, namespaceify(namespaceId, trigger.name)); });\n return new AnimationRenderer(delegate, this._engine, this._zone, namespaceId);\n };\n return AnimationRendererFactory;\n}());\nAnimationRendererFactory.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nAnimationRendererFactory.ctorParameters = function () { return [\n { type: RendererFactory2, },\n { type: ɵAnimationEngine, },\n { type: NgZone, },\n]; };\nvar AnimationRenderer = (function () {\n /**\n * @param {?} delegate\n * @param {?} _engine\n * @param {?} _zone\n * @param {?} _namespaceId\n */\n function AnimationRenderer(delegate, _engine, _zone, _namespaceId) {\n this.delegate = delegate;\n this._engine = _engine;\n this._zone = _zone;\n this._namespaceId = _namespaceId;\n this.destroyNode = null;\n this._flushPromise = null;\n this.destroyNode = this.delegate.destroyNode ? function (n) { return delegate.destroyNode(n); } : null;\n }\n Object.defineProperty(AnimationRenderer.prototype, \"data\", {\n /**\n * @return {?}\n */\n get: function () { return this.delegate.data; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n AnimationRenderer.prototype.destroy = function () { this.delegate.destroy(); };\n /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n AnimationRenderer.prototype.createElement = function (name, namespace) {\n return this.delegate.createElement(name, namespace);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n AnimationRenderer.prototype.createComment = function (value) { return this.delegate.createComment(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n AnimationRenderer.prototype.createText = function (value) { return this.delegate.createText(value); };\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n AnimationRenderer.prototype.selectRootElement = function (selectorOrNode) {\n return this.delegate.selectRootElement(selectorOrNode);\n };\n /**\n * @param {?} node\n * @return {?}\n */\n AnimationRenderer.prototype.parentNode = function (node) { return this.delegate.parentNode(node); };\n /**\n * @param {?} node\n * @return {?}\n */\n AnimationRenderer.prototype.nextSibling = function (node) { return this.delegate.nextSibling(node); };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n AnimationRenderer.prototype.setAttribute = function (el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n AnimationRenderer.prototype.removeAttribute = function (el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n AnimationRenderer.prototype.addClass = function (el, name) { this.delegate.addClass(el, name); };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n AnimationRenderer.prototype.removeClass = function (el, name) { this.delegate.removeClass(el, name); };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n AnimationRenderer.prototype.setStyle = function (el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n AnimationRenderer.prototype.removeStyle = function (el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n };\n /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n AnimationRenderer.prototype.setValue = function (node, value) { this.delegate.setValue(node, value); };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n AnimationRenderer.prototype.appendChild = function (parent, newChild) {\n var _this = this;\n this._engine.onInsert(newChild, function () { return _this.delegate.appendChild(parent, newChild); });\n this._queueFlush();\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n AnimationRenderer.prototype.insertBefore = function (parent, newChild, refChild) {\n var _this = this;\n this._engine.onInsert(newChild, function () { return _this.delegate.insertBefore(parent, newChild, refChild); });\n this._queueFlush();\n };\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n AnimationRenderer.prototype.removeChild = function (parent, oldChild) {\n var _this = this;\n this._engine.onRemove(oldChild, function () {\n // Note: if an component element has a leave animation, and the component\n // a host leave animation, the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n if (_this.delegate.parentNode(oldChild)) {\n _this.delegate.removeChild(parent, oldChild);\n }\n });\n this._queueFlush();\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n AnimationRenderer.prototype.setProperty = function (el, name, value) {\n if (name.charAt(0) == '@') {\n this._engine.setProperty(el, namespaceify(this._namespaceId, name.substr(1)), value);\n this._queueFlush();\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n };\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n AnimationRenderer.prototype.listen = function (target, eventName, callback) {\n var _this = this;\n if (eventName.charAt(0) == '@') {\n var /** @type {?} */ element = resolveElementFromTarget(target);\n var _a = parseTriggerCallbackName(eventName.substr(1)), name = _a[0], phase = _a[1];\n return this._engine.listen(element, namespaceify(this._namespaceId, name), phase, function (event) {\n var /** @type {?} */ e = (event);\n if (e.triggerName) {\n e.triggerName = deNamespaceify(_this._namespaceId, e.triggerName);\n }\n _this._zone.run(function () { return callback(event); });\n });\n }\n return this.delegate.listen(target, eventName, callback);\n };\n /**\n * @return {?}\n */\n AnimationRenderer.prototype._queueFlush = function () {\n var _this = this;\n if (!this._flushPromise) {\n this._zone.runOutsideAngular(function () {\n _this._flushPromise = Promise.resolve(null).then(function () {\n _this._flushPromise = ((null));\n _this._engine.flush();\n });\n });\n }\n };\n return AnimationRenderer;\n}());\n/**\n * @param {?} target\n * @return {?}\n */\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\n/**\n * @param {?} triggerName\n * @return {?}\n */\nfunction parseTriggerCallbackName(triggerName) {\n var /** @type {?} */ dotIndex = triggerName.indexOf('.');\n var /** @type {?} */ trigger = triggerName.substring(0, dotIndex);\n var /** @type {?} */ phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\n}\n/**\n * @param {?} namespaceId\n * @param {?} value\n * @return {?}\n */\nfunction namespaceify(namespaceId, value) {\n return namespaceId + \"#\" + value;\n}\n/**\n * @param {?} namespaceId\n * @param {?} value\n * @return {?}\n */\nfunction deNamespaceify(namespaceId, value) {\n return value.replace(namespaceId + '#', '');\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar InjectableAnimationEngine = (function (_super) {\n __extends(InjectableAnimationEngine, _super);\n /**\n * @param {?} driver\n * @param {?} normalizer\n */\n function InjectableAnimationEngine(driver, normalizer) {\n return _super.call(this, driver, normalizer) || this;\n }\n return InjectableAnimationEngine;\n}(ɵDomAnimationEngine));\nInjectableAnimationEngine.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nInjectableAnimationEngine.ctorParameters = function () { return [\n { type: AnimationDriver, },\n { type: ɵAnimationStyleNormalizer, },\n]; };\n/**\n * @return {?}\n */\nfunction instantiateSupportedAnimationDriver() {\n if (ɵsupportsWebAnimations()) {\n return new ɵWebAnimationsDriver();\n }\n return new ɵNoopAnimationDriver();\n}\n/**\n * @return {?}\n */\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\n/**\n * @param {?} renderer\n * @param {?} engine\n * @param {?} zone\n * @return {?}\n */\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nvar BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: instantiateSupportedAnimationDriver },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nvar BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: ɵAnimationEngine, useClass: ɵNoopAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@experimental Animation support is experimental.\n */\nvar BrowserAnimationsModule = (function () {\n function BrowserAnimationsModule() {\n }\n return BrowserAnimationsModule;\n}());\nBrowserAnimationsModule.decorators = [\n { type: NgModule, args: [{\n imports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n },] },\n];\n/**\n * @nocollapse\n */\nBrowserAnimationsModule.ctorParameters = function () { return []; };\n/**\n * \\@experimental Animation support is experimental.\n */\nvar NoopAnimationsModule = (function () {\n function NoopAnimationsModule() {\n }\n return NoopAnimationsModule;\n}());\nNoopAnimationsModule.decorators = [\n { type: NgModule, args: [{\n imports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n },] },\n];\n/**\n * @nocollapse\n */\nNoopAnimationsModule.ctorParameters = function () { return []; };\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the animation package.\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BROWSER_ANIMATIONS_PROVIDERS as ɵe, BROWSER_NOOP_ANIMATIONS_PROVIDERS as ɵf, InjectableAnimationEngine as ɵa, instantiateDefaultStyleNormalizer as ɵc, instantiateRendererFactory as ɵd, instantiateSupportedAnimationDriver as ɵb };\n//# sourceMappingURL=animations.es5.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/platform-browser/@angular/platform-browser/animations.es5.js\n// module id = 923\n// module chunks = 1","import { Injectable } from '@angular/core';\r\nimport { ApiMethod, ApiModuleService } from '@core.module';\r\nimport { UssCacheApiService } from '@cache.module';\r\nimport { updateDeviceStatus } from './Telematics.Utils';\r\n\r\n\r\n/**\r\n * Сервис контроллера телематического API\r\n */\r\n@Injectable()\r\n@ApiModuleService('totalapi/Telematics')\r\nexport class UssTelematicsApiService extends UssCacheApiService {\r\n\r\n @ApiMethod({ method: 'GET', route: 'FindDevice/{type}/{devId}', cache: true })\r\n FindDevice(type: TotalApi.DeviceIdentifierTypes, devId: string): Promise {\r\n return this.request({ type: type, devId: devId });\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: 'DeviceModels', cache: true })\r\n GetDeviceModels(): Promise {\r\n return this.request().then(r => r.orderBy(x => x.Code).toArray());\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '{id}' })\r\n async GetDeviceLastStatus(id: string, includeSensors?: boolean): Promise {\r\n return updateDeviceStatus(await this.request({ id, includeSensors }));\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'GetDevicesLastStatus/{includeSensors}', useBody: 'raw' })\r\n async GetDevicesLastStatus(ids: string[], includeSensors?: boolean): Promise {\r\n const res = await this.request({ ids, includeSensors });\r\n res.forEach(x => updateDeviceStatus(x));\r\n return res;\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '{devIdType}/{devId}' })\r\n async GetDeviceIdentifierLastStatus(devIdType: TotalApi.DeviceIdentifierTypes, devId: string): Promise {\r\n return updateDeviceStatus(await this.request({ devIdType, devId }));\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: 'SensorsLastStatus/{devIdType}/{devId}' })\r\n async GetSensorsLastStatus(devIdType: TotalApi.DeviceIdentifierTypes, devId: string): Promise {\r\n return await this.request({ devIdType, devId });\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: 'GetDeviceTtl/{deviceId}', cache: false })\r\n GetDeviceTtl(deviceId: string): Promise {\r\n return this.request({ deviceId });\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: 'GetSensorTtl/{sensorId}', cache: false })\r\n GetSensorTtl(sensorId: string): Promise {\r\n return this.request({ sensorId });\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'RemoveCoordinates' })\r\n async RemoveCoordinates(removeParams: TotalApi.RemoveCoordinatesParams): Promise {\r\n return await this.request(removeParams);\r\n }\r\n\r\n /* по идее этими методами пользоваться не нужно\r\n @ApiMethod({ method: 'POST', route: '' })\r\n WriteCoordinates(data): Promise {\r\n return this.request(data);\r\n }\r\n @ApiMethod({ method: 'POST', route: 'ReadCoordinates' })\r\n async ReadCoordinates(readParams: TotalApi.ReadCoordinatesParams): Promise {\r\n return updateCoordinatePoints(await this.request(readParams));\r\n }\r\n\r\n @ApiMethod({ method: 'POST', route: 'ReadSensorValues' })\r\n async ReadSensorValues(readParams: TotalApi.ReadSensorValuesParams): Promise {\r\n return updateSensorValues(await this.request(readParams));\r\n }\r\n */\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/telematics.module/telematics-api.service.ts","import { LatLng, latLng } from 'leaflet';\r\nimport { isNotEmpty, isEmpty, getDuration, strScan, TO_DEGREES } from '@core.module';\r\nimport { AppMapSettings } from '../../app/pages/map/components/map-settings/map-settings.dialog';\r\n\r\n/** Время в минутах, указывает период после которого остановка считается стоянкой. */\r\nexport const LONG_STOP_PERIOD_MIN = 30;\r\n\r\nexport declare type DeviceIdentifier = {\r\n typeId: TotalApi.DeviceIdentifierTypes;\r\n devId: string;\r\n}\r\n\r\nexport interface Coordinate extends TotalApi.Coordinate {\r\n /** Source CoordinatePoint object */\r\n CoordinatePoint: CoordinatePoint;\r\n /** Coordinate time */\r\n UtcDate: moment.Moment;\r\n /** Coordinate received time */\r\n ReceivedDate?: moment.Moment;\r\n /** LatLng in degrees */\r\n latLng: LatLng;\r\n /** Current velocity in m/sec */\r\n Velocity?: number;\r\n /** Current direction in radians */\r\n Direction?: number;\r\n}\r\n\r\nexport interface CoordinatePoint extends TotalApi.CoordinatePoint {\r\n /** Номер точки в треке. Zero based. */\r\n Index: number;\r\n /** Исходный список координатных точек к которому относится данная точка */\r\n CoordinatePoints?: CoordinatePoints;\r\n /** Координата точки */\r\n Coordinate: Coordinate;\r\n /** Точка является началом участка превышения скорости */\r\n isOverSpeedStart: boolean;\r\n /** Точка является окончанием участка превышения скорости */\r\n isOverSpeedEnd: boolean;\r\n /** Расстояние от начала трека до этой точки, м */\r\n distanceFromStart: number;\r\n /** Прошедшее время от начала трека до этой точки, сек */\r\n timeFromStart: number;\r\n\r\n /** Признак того, что это стоянка */\r\n isLongStop: boolean;\r\n /** Время начала остановки */\r\n stopStartDate: moment.Moment;\r\n /** Время окончания остановки */\r\n stopEndDate: moment.Moment;\r\n /** Длительность остановки, сек */\r\n stopDuration: number;\r\n\r\n /** Группа точек объединённых по одинаковому признаку (точки разрыва, точки превышения скорости) */\r\n $group: CoordinatePoint[];\r\n}\r\n\r\nexport interface CoordinatePoints extends TotalApi.CoordinatePoints {\r\n Points: CoordinatePoint[];\r\n}\r\n\r\nexport interface DeviceStatus extends TotalApi.DeviceStatus {\r\n LastActivityTime: moment.Moment;\r\n LastCoordinate: Coordinate;\r\n}\r\n\r\nexport interface DeviceStatusEx extends TotalApi.DeviceStatusEx {\r\n LastActivityTime: moment.Moment;\r\n LastCoordinate: Coordinate;\r\n}\r\n\r\nexport interface SensorValuePoint extends TotalApi.SensorValuePoint {\r\n Index?: number;\r\n UtcDate: DateTime;\r\n Value: any;\r\n DataType: TotalApi.SensorDataType;\r\n SensorType: App.PredefinedSensorType;\r\n Number: number;\r\n AdditionalInfo: any;\r\n SensorValues?: SensorValues;\r\n // ReSharper disable once InconsistentNaming\r\n DUT?: {\r\n Derivative?: number;\r\n IsRefill?: boolean;\r\n IsConsumption?: boolean;\r\n IsDrain?: boolean;\r\n Value?: number;\r\n DateEnd?: moment.Moment;\r\n DrainValue?: number;\r\n DrainDateEnd?: moment.Moment;\r\n RefillValue?: number;\r\n RefillDateEnd?: moment.Moment;\r\n }\r\n}\r\n\r\nexport interface SensorValues extends TotalApi.SensorValues {\r\n Values: SensorValuePoint[];\r\n}\r\n\r\n/** Признак того, что объект является групповым */\r\nexport function isGroupAddressObject(deviceStatus: TotalApi.DeviceStatusEx) {\r\n const trackingObject = deviceStatus?.$trackingObject?.$source;\r\n const kind = trackingObject?.TrackingObjectType?.Kind;\r\n // если скорость и направление не установлены\r\n return isNotEmpty(kind) ? kind === App.TrackingObjectKind.Group : isEmpty(deviceStatus?.LastCoordinate);\r\n}\r\n\r\n/** Признак того, что объект является адресом */\r\nexport function isAddressObject(deviceStatus: TotalApi.DeviceStatusEx) {\r\n const trackingObject = deviceStatus?.$trackingObject?.$source;\r\n const kind = trackingObject?.TrackingObjectType?.Kind;\r\n return isNotEmpty(kind) ? kind === App.TrackingObjectKind.Address : deviceStatus?.LastCoordinate && isEmpty(deviceStatus.LastCoordinate.Velocity) && isEmpty(deviceStatus.LastCoordinate.Direction);\r\n}\r\n\r\n/** Признак того, что объект неперемещаемый */\r\nexport function isNotMovableObject(deviceStatus: TotalApi.DeviceStatusEx) {\r\n const trackingObject = deviceStatus?.$trackingObject?.$source;\r\n const kind = trackingObject?.TrackingObjectType?.Kind;\r\n // если скорость и направление не установлены\r\n return isNotEmpty(kind) ? kind !== App.TrackingObjectKind.Movable : isEmpty(deviceStatus?.LastCoordinate?.Velocity) && isEmpty(deviceStatus?.LastCoordinate?.Direction);\r\n}\r\n\r\n/** Признак \"Не передаёт координаты (не выходит на связь) более CHECK_INACTIVE_PERIOD_MIN\" (серая иконка) */\r\nexport function isInactiveTransport(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n // если скорость равна нулю - объект стоит и может не передавать координаты\r\n const inactivePeriod = +AppMapSettings.inactivePeriodDuration;\r\n return !(deviceStatus.LastStates & TotalApi.DeviceStates.Emulated)\r\n && (inactivePeriod > 0 && deviceStatus.LastCoordinate?.Velocity > 0 && moment().diff(deviceStatus.LastActivityTime, 'minutes') > inactivePeriod);\r\n}\r\n\r\nexport function isOverSpeed(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !!(deviceStatus.LastStates & TotalApi.DeviceStates.Overspeed);\r\n}\r\n\r\n/** Признак \"Не двигается\" (кружочек с точкой) */\r\nexport function isTransportNotMoved(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return deviceStatus.LastCoordinate.Velocity === 0 /*|| !!(deviceStatus.LastStates & TotalApi.DeviceStates.NoMoved) && deviceStatus.LastCoordinate.Velocity < 3*/;\r\n}\r\n\r\n/** Признак \"Остановился\" (кружочек с паузой) */\r\nexport function isTransportStopped(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !!(deviceStatus.LastStates & TotalApi.DeviceStates.Stopped) && deviceStatus.LastCoordinate.Velocity === 0;\r\n}\r\n\r\n/** Признак \"Длительная остановка\" (квадратик с точкой) */\r\nexport function isTransportLongStopped(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !!(deviceStatus.LastStates & TotalApi.DeviceStates.LongStopped) && deviceStatus.LastCoordinate.Velocity === 0;\r\n}\r\n\r\n/** Признак \"Не передаёт координаты\" (кружочек с крестиком) */\r\nexport function isTransportNoCoords(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !(deviceStatus.LastStates & TotalApi.DeviceStates.Emulated)\r\n && moment().diff(moment(deviceStatus.LastActivityTime), 'minutes') > 10;\r\n// && moment(deviceStatus.LastActivityTime).diff(moment(deviceStatus.LastCoordinate?.UtcDate), 'minutes') > 10;\r\n} \r\n\r\n/** Признак \"Длительно не передаёт координаты\" (квадратик с крестиком) */\r\nexport function isTransportLongNoCoords(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !(deviceStatus.LastStates & TotalApi.DeviceStates.Emulated)\r\n && moment().diff(moment(deviceStatus.LastActivityTime), 'hour') > 2;\r\n //&& moment(deviceStatus.LastActivityTime).diff(moment(deviceStatus.LastCoordinate?.UtcDate), 'hour') > 2;\r\n}\r\n\r\n/** Признак \"Тревожная кнопка\" (квадратик с крестиком) */\r\nexport function isAlarmButtonPressed(deviceStatus: DeviceStatus): boolean {\r\n return !!(deviceStatus.LastStates & TotalApi.DeviceStates.Alarm);\r\n}\r\n\r\n/** Признак \"Транспорт не движется\" (не разворачиваем иконку) */\r\nexport function isTansportNotMoving(deviceStatus: TotalApi.DeviceStatus): boolean {\r\n return !deviceStatus?.LastCoordinate?.Velocity\r\n || isTransportNoCoords(deviceStatus)\r\n || isTransportLongNoCoords(deviceStatus)\r\n// || !!(deviceStatus.LastStates & TotalApi.DeviceStates.NoMoved)\r\n ;\r\n}\r\n\r\n/**\r\n * Return \"true\" if difference between two date more than LONG_STOP_PERIOD_MIN minutes\r\n */\r\nexport function isLongStop(endDate: DateTime, beginDate: DateTime, longStopDuration?: number): boolean {\r\n return getDuration(endDate, beginDate) / 1000 / 60 > (longStopDuration || LONG_STOP_PERIOD_MIN);\r\n}\r\n\r\nexport function isActualCoordinate(coordinate: Coordinate, forcedTrue?: boolean): boolean {\r\n if (forcedTrue) { return true; }\r\n const periodA = moment().subtract(5, 'minute'); // 5 min ago\r\n const periodB = moment().add(5, 'minute'); // in 5 min\r\n return coordinate.Latitude && coordinate.Longitude && coordinate.UtcDate && coordinate.UtcDate.isBetween(periodA, periodB);\r\n}\r\n\r\nexport function getDeviceIdentifier(device: App.TrackingDevice): DeviceIdentifier {\r\n let deviceIdentifier: DeviceIdentifier = null;\r\n\r\n if (device.SerialNumber) {\r\n deviceIdentifier = {\r\n typeId: TotalApi.DeviceIdentifierTypes.OwnId,\r\n devId: device.SerialNumber\r\n }\r\n } else if (device.Imei) {\r\n deviceIdentifier = {\r\n typeId: TotalApi.DeviceIdentifierTypes.Imei,\r\n devId: device.Imei\r\n }\r\n } else if (device.PhoneNumber) {\r\n deviceIdentifier = {\r\n typeId: TotalApi.DeviceIdentifierTypes.PhoneNumber,\r\n devId: device.PhoneNumber\r\n }\r\n } else if (device.Mac) {\r\n deviceIdentifier = {\r\n typeId: TotalApi.DeviceIdentifierTypes.Mac,\r\n devId: device.Mac\r\n }\r\n }\r\n\r\n return deviceIdentifier;\r\n} \r\n\r\nexport function updateDeviceStatus(ds: TotalApi.DeviceStatus): DeviceStatus {\r\n const res = ds;\r\n if (isNotEmpty(res)) {\r\n isNotEmpty(res.LastActivityTime) && !moment.isMoment(res.LastActivityTime) && (res.LastActivityTime = moment(res.LastActivityTime));\r\n updateCoordinate(ds.LastCoordinate);\r\n }\r\n return res;\r\n}\r\n\r\n\r\n\r\nexport function updateCoordinate(c: TotalApi.Coordinate, cp?: CoordinatePoint): Coordinate {\r\n const res = c;\r\n if (isNotEmpty(res)) {\r\n res.CoordinatePoint = cp;\r\n isNotEmpty(res.UtcDate) && !moment.isMoment(res.UtcDate) && (res.UtcDate = moment(res.UtcDate));\r\n res.latLng = latLng((res.Latitude||0) * TO_DEGREES, (res.Longitude||0) * TO_DEGREES);\r\n res.Valid = res.Latitude && res.Longitude && res.UtcDate ? 1: 0;\r\n }\r\n return res;\r\n}\r\n\r\nexport function updateCoordinatePoint(cp: TotalApi.CoordinatePoint, cps?: CoordinatePoints, longStopDuration?: number): CoordinatePoint {\r\n const res = cp;\r\n if (isNotEmpty(res)) {\r\n updateCoordinate(res.Coordinate, res);\r\n if (!res.Coordinate.Valid && cps) {\r\n cps.Points.Remove(res);\r\n } else {\r\n res.CoordinatePoints = cps;\r\n if (res.AdditionalInfo) {\r\n res.isOverSpeedStart = !!res.AdditionalInfo['SF.Sef'];\r\n res.isOverSpeedEnd = res.AdditionalInfo['SF.Sef'] === false;\r\n\r\n /*\r\n res.stopDuration = res.stopEndDate.diff(res.stopStartDate);\r\n res.stopStartDate = moment(res.AdditionalInfo['StF.bd']);\r\n res.stopEndDate = moment(res.AdditionalInfo['StF.ed']);\r\n */\r\n const stopDuration = moment.duration(res.AdditionalInfo['StF.d']);\r\n res.stopDuration = stopDuration.asSeconds();\r\n res.stopStartDate = moment(res.Coordinate.UtcDate);\r\n res.stopEndDate = moment(res.Coordinate.UtcDate).add(stopDuration);\r\n\r\n res.isLongStop = isLongStop(res.stopEndDate, res.stopStartDate, longStopDuration);\r\n }\r\n\r\n if (isNotEmpty(cps)) {\r\n if (isEmpty(res.Index))\r\n res.Index = cps.Points.indexOf(res);\r\n if (res.Index > 0) {\r\n const prior = cps.Points[Math.trunc(res.Index + 0.99) - 1];\r\n res.distanceFromStart = prior.distanceFromStart + res.Coordinate.latLng.distanceTo(prior.Coordinate.latLng);\r\n } else {\r\n res.distanceFromStart = 0;\r\n }\r\n if (isNotEmpty(res.Coordinate.UtcDate)) {\r\n res.timeFromStart = res.Coordinate.UtcDate.diff(cps.Points.first().Coordinate.UtcDate, 'seconds');\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function updateCoordinatePoints(cps: TotalApi.CoordinatePoints): CoordinatePoints {\r\n const res = cps;\r\n if (isNotEmpty(res)) {\r\n if (!res.Points && res.PackedPoints) {\r\n res.Points = unpackCoordinateData(res.PackedPoints);\r\n delete res.PackedPoints;\r\n }\r\n res.Points && res.Points.slice().forEach(cp => updateCoordinatePoint(cp, res));\r\n if (isNotEmpty(res.AdditionalInfo)) {\r\n res.TotalDistance = res.AdditionalInfo['_totalDistance'];\r\n res.TotalStops = res.AdditionalInfo['_totalStops'];\r\n res.MaxSpeed = res.AdditionalInfo['_maxSpeed'];\r\n res.AvgSpeed = res.AdditionalInfo['_avgSpeed'];\r\n }\r\n }\r\n return res;\r\n}\r\n\r\n\r\n\r\nexport function updateSensorValuePoint(svp: TotalApi.SensorValuePoint, svs?: SensorValues): SensorValuePoint {\r\n const res = svp;\r\n if (isNotEmpty(res)) {\r\n res.SensorValues = svs;\r\n isNotEmpty(res.UtcDate) && !moment.isMoment(res.UtcDate) && (res.UtcDate = moment(res.UtcDate));\r\n res.AdditionalInfo = res.AdditionalInfo || {};\r\n const duration = res.AdditionalInfo['DUT.t'];\r\n const drainDuration = res.AdditionalInfo['DUT.-t'];\r\n const refillDuration = res.AdditionalInfo['DUT.+t'];\r\n\r\n res.DUT = {\r\n Derivative: res.AdditionalInfo['DUT.d'],\r\n Value: res.AdditionalInfo['DUT.v'],\r\n DrainValue: res.AdditionalInfo['DUT.-v'],\r\n RefillValue: res.AdditionalInfo['DUT.+v'],\r\n };\r\n let skipInit = false;\r\n if (isNotEmpty(svs)) {\r\n res.Index = svs.Values.indexOf(res);\r\n if (res.Index > 0) {\r\n const prior = svs.Values[res.Index - 1];\r\n if (prior.DUT.DrainDateEnd && prior.DUT.DrainDateEnd.isSameOrAfter(res.UtcDate, 'seconds')) {\r\n res.DUT.DrainValue = prior.DUT.DrainValue;\r\n res.DUT.IsDrain = prior.DUT.IsDrain;\r\n res.DUT.DrainDateEnd = prior.DUT.DrainDateEnd;\r\n\r\n res.DUT.IsConsumption = prior.DUT.IsConsumption;\r\n res.DUT.Value = prior.DUT.Value;\r\n res.DUT.DateEnd = prior.DUT.DateEnd;\r\n //skipInit = true;\r\n skipInit = !duration && !drainDuration && ! refillDuration;\r\n }\r\n else if (prior.DUT.RefillDateEnd && prior.DUT.RefillDateEnd.isSameOrAfter(res.UtcDate, 'seconds')) {\r\n res.DUT.RefillValue = prior.DUT.RefillValue;\r\n res.DUT.IsRefill = prior.DUT.IsRefill;\r\n res.DUT.RefillDateEnd = prior.DUT.RefillDateEnd;\r\n //skipInit = true;\r\n skipInit = !duration && !drainDuration && ! refillDuration;\r\n }\r\n else if (prior.DUT.DateEnd && prior.DUT.DateEnd.isSameOrAfter(res.UtcDate, 'seconds')) {\r\n res.DUT.Value = prior.DUT.Value;\r\n res.DUT.IsConsumption = prior.DUT.IsConsumption;\r\n res.DUT.DateEnd = prior.DUT.DateEnd;\r\n //skipInit = true;\r\n //skipInit = !duration && !drainDuration && ! refillDuration;\r\n }\r\n }\r\n }\r\n\r\n if (!skipInit) {\r\n if (duration) {\r\n //res.DUT.IsRefill = res.DUT.Value > 0;\r\n res.DUT.IsConsumption = res.DUT.Value < 0;\r\n !res.DUT.DateEnd && (res.DUT.DateEnd = moment(res.UtcDate).add(duration, 'seconds'));\r\n }\r\n if (refillDuration/* && !res.DUT.IsRefill*/) {\r\n res.DUT.IsRefill = res.DUT.RefillValue > 0;\r\n !res.DUT.RefillDateEnd && (res.DUT.RefillDateEnd = moment(res.UtcDate).add(refillDuration, 'seconds'));\r\n }\r\n if (drainDuration/* && !res.DUT.DrainValue*/) {\r\n res.DUT.IsDrain = res.DUT.DrainValue < 0;\r\n !res.DUT.DrainDateEnd && (res.DUT.DrainDateEnd = moment(res.UtcDate).add(drainDuration, 'seconds'));\r\n }\r\n }\r\n } \r\n return res;\r\n}\r\n\r\nexport function updateSensorValues(svs: TotalApi.SensorValues): SensorValues {\r\n const res = svs;\r\n if (isNotEmpty(res)) {\r\n\r\n if (!res.Values && res.PackedValues) {\r\n res.Values = unpackSensorData(res.PackedValues);\r\n delete res.PackedValues;\r\n }\r\n\r\n /*\r\n if (res.Values) {\r\n for (let i = 0; i <= res.Values.length - 1; i++) {\r\n const svp = res.Values[i];\r\n updateSensorValuePoint(svp, res);\r\n }\r\n }\r\n */\r\n res.Values && res.Values.slice().forEach(svp => updateSensorValuePoint(svp, res));\r\n /*\r\n if (isNotEmpty(res.AdditionalInfo)) {\r\n res.TotalDistance = res.AdditionalInfo['_totalDistance'];\r\n res.TotalStops = res.AdditionalInfo['_totalStops'];\r\n res.MaxSpeed = res.AdditionalInfo['_maxSpeed'];\r\n res.AvgSpeed = res.AdditionalInfo['_avgSpeed'];\r\n }\r\n */\r\n }\r\n return res;\r\n\r\n}\r\n\r\nexport function updateSensorValuePoints(svp: TotalApi.SensorValuePoint[]): TotalApi.SensorValuePoint[] {\r\n svp && svp.forEach(p => updateSensorValuePoint(p));\r\n return svp;\r\n}\r\n\r\n\r\n/**\r\n * Возвращает индексы точек отрезка в который попадает заданный диапазон.\r\n * @param points Набор данных\r\n * @param startDate Дата/время начала периода\r\n * @param endDate Дата/время конца периода\r\n * @param outerSegment\r\n * Если равно false - точки возращаемого отрезка будут находится внутри указанного диапазона\r\n * Если равно true - точки возращаемого отрезка будут находится снаружи указанного диапазона.\r\n * Если равно null - точки возращаемого отрезка будут находится максимально близко по времени ко времени точки.\r\n */\r\nexport function getSegmentIndexes(points: CoordinatePoint[], startDate: moment.MomentInput, endDate: moment.MomentInput, outerSegment?: boolean): {startIndex: number, endIndex: number}\r\n{\r\n let startIndex = -1;\r\n let endIndex = -1;\r\n if (points.length === 0) return { startIndex, endIndex };\r\n let i = 0;\r\n const sDate = moment(startDate);\r\n const eDate = moment(endDate);\r\n // 1. Найти ближайшее значение к startDate, позже или равное этой даты\r\n while (i < points.length && moment(points[i].Coordinate.UtcDate).isSameOrBefore(sDate)) i++;\r\n\r\n let innerIndex = i;\r\n let outerIndex = i - 1;\r\n if (outerIndex < 0) outerIndex = 0;\r\n if (innerIndex >= points.length) innerIndex = points.length - 1;\r\n\r\n if (outerSegment === true)\r\n {\r\n startIndex = outerIndex;\r\n }\r\n else if (outerSegment === false)\r\n {\r\n startIndex = innerIndex;\r\n }\r\n else\r\n {\r\n const outerSpan = sDate.diff(points[outerIndex].Coordinate.UtcDate);\r\n const innerSpan = points[innerIndex].Coordinate.UtcDate.diff(sDate);\r\n startIndex = outerSpan < innerSpan ? outerIndex : innerIndex;\r\n }\r\n\r\n // 2. Найти ближайшее значение к endDate, раньше или равное этой даты\r\n while (i < points.length && moment(points[i].Coordinate.UtcDate).isBefore(eDate)) i++;\r\n\r\n outerIndex = i;\r\n innerIndex = i - 1;\r\n if (innerIndex < 0) innerIndex = 0;\r\n if (outerIndex >= points.length) outerIndex = points.length - 1;\r\n\r\n if (outerSegment === true)\r\n {\r\n endIndex = outerIndex;\r\n }\r\n else if (outerSegment === false)\r\n {\r\n endIndex = innerIndex;\r\n }\r\n else\r\n {\r\n const outerSpan = points[outerIndex].Coordinate.UtcDate.diff(eDate);\r\n const innerSpan = eDate.diff(points[innerIndex].Coordinate.UtcDate);\r\n endIndex = outerSpan < innerSpan ? outerIndex : innerIndex;\r\n }\r\n\r\n if (startIndex === points.length) startIndex = points.length - 1;\r\n return { startIndex, endIndex };\r\n}\r\n\r\n/**\r\n * Возвращает две точки отрезка в который попадает заданный диапазон.\r\n * @param points Набор данных\r\n * @param startDate Дата/время начала периода\r\n * @param endDate Дата/время конца периода\r\n * @param outerSegment\r\n * Если равно false - точки возращаемого отрезка будут находится внутри указанного диапазона\r\n * Если равно true - точки возращаемого отрезка будут находится снаружи указанного диапазона.\r\n * Если равно null - точки возращаемого отрезка будут находится максимально близко по времени ко времени точки.\r\n */\r\nexport function getSegmentPoints(points: CoordinatePoint[], startDate: moment.MomentInput, endDate: moment.MomentInput, outerSegment?: boolean): {startPoint: CoordinatePoint, endPoint: CoordinatePoint}\r\n{\r\n const {startIndex, endIndex} = getSegmentIndexes(points, startDate, endDate, outerSegment);\r\n return { startPoint: startIndex >= 0 ? points[startIndex] : null, endPoint: endIndex >= 0 ? points[endIndex] : null };\r\n}\r\n\r\n/**\r\n * Возвращает отрезок в который попадает заданный диапазон.\r\n * @param points Набор данных\r\n * @param startDate Дата/время начала периода\r\n * @param endDate Дата/время конца периода\r\n * @param outerSegment\r\n * Если равно false - точки возращаемого отрезка будут находится внутри указанного диапазона\r\n * Если равно true - точки возращаемого отрезка будут находится снаружи указанного диапазона.\r\n * Если равно null - точки возращаемого отрезка будут находится максимально близко по времени ко времени точки.\r\n */\r\nexport function getSegment(points: CoordinatePoint[], startDate: moment.MomentInput, endDate: moment.MomentInput, outerSegment?: boolean): CoordinatePoint[]\r\n{\r\n const {startIndex, endIndex} = getSegmentIndexes(points, startDate, endDate, outerSegment);\r\n let res;\r\n if (startIndex >= 0 && endIndex >= 0)\r\n {\r\n res = points.skip(startIndex).take(endIndex - startIndex + 1).toArray();\r\n }\r\n else\r\n {\r\n res = [];\r\n }\r\n return res;\r\n}\r\n\r\nexport function asInt(s): number {\r\n let res = s === '-' || isEmpty(s)\r\n ? null\r\n : parseInt(s || '0');\r\n if (isNaN(res)) {\r\n res = null;\r\n }\r\n return res;\r\n};\r\n\r\nexport function asFloat(s): number {\r\n let res = s === '-' || isEmpty(s)\r\n ? null\r\n : parseFloat(s || '0');\r\n if (isNaN(res)) {\r\n res = null;\r\n }\r\n return res;\r\n};\r\n\r\n// ReSharper disable once InconsistentNaming\r\nconst BASE_DATE: DateTime = moment('2000-01-01T00:00:00Z');\r\n\r\n/**\r\n * Unpacks the `packedPoints` string back to the list of `ICoordinatePoint`.\r\n */\r\nexport function unpackCoordinateData(packedPoints: string): TotalApi.CoordinatePoint[] {\r\n let res: TotalApi.CoordinatePoint[] = null;\r\n const lines = packedPoints.split('\\n').where(s => !!s).toArray();\r\n if (lines.length > 1)\r\n {\r\n const arr = lines[0].split(',');\r\n const version = arr[0];\r\n const seconds = asInt(arr[1]);\r\n const startDate = isEmpty(seconds) ? null : moment(BASE_DATE).add(seconds, 'seconds');\r\n if (version === '0')\r\n {\r\n res = [];\r\n let cp = undefined;\r\n for (let line of lines) {\r\n if (cp === undefined) {\r\n cp = null;\r\n continue;\r\n }\r\n const prior = cp;\r\n cp = unPackCoordinate(line, prior, startDate);\r\n if (cp)\r\n {\r\n res.push(cp);\r\n }\r\n else\r\n {\r\n cp = prior;\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\n/**\r\n * Производит распаковку данных координаты.\r\n *\r\n * Формат:\r\n * [SB]{utcDate},{receivedDate},{lat},{lon},{dir},{speed},{alt},{sat}[:{pdop},{hdop},{vdop},{tdop},{gdop}][◊{userData}][♦{addInfo}]\r\n * где
\r\n * B - если это точка разрыва (в противном случае ничего нет)\r\n * S - если это точка остановки (в противном случае ничего нет)\r\n * utcDate - разница в секундах между текущим и предыдущим значением (если предыдущего нет - используется )\r\n * receivedDate - разница в секундах между текущим значением и UtcDate (если данных нет - NULL_VALUE)\r\n * lat, lon - разница между текущим и предыдущим значением координат * 10000000 (целочисленное значение) (если данных нет или нулевое значение - `-`)\r\n * dir - разница между текущим и предыдущим значением направления * 100 (целочисленное значение)\r\n * speed - разница между текущим и предыдущим значением скорости * 10 (целочисленное значение)\r\n * alt - разница между текущим и предыдущим значением высоты * 10 (целочисленное значение)\r\n * sat - разница между текущим и предыдущим значением к-ва спутников (если данных нет - NULL_VALUE)\r\n * pdop,hdop,vdop,tdop,gdop - блок дополнительной информации значений * 10, начинается с DOP_DATA_SEPARATOR (если эти значения не установлены - этого блока не будет вообще)\r\n * userData - значения словаря Coordinate.UserData в формате JSON, начинается с USER_DATA_SEPARATOR (если словарь пуст - этого блока не будет вообще)\r\n * addInfo - значения словаря AdditionalInfo в формате JSON, начинается с ADD_INFO_SEPARATOR (если словарь пуст - этого блока не будет вообще)\r\n * если разница равна 0 - она не записывается.\r\n */\r\nexport function unPackCoordinate(line: string, prior: TotalApi.CoordinatePoint, startDate: DateTime = null) {\r\n\r\n // ReSharper disable InconsistentNaming\r\n const NULL_VALUE = '-';\r\n const DOP_DATA_SEPARATOR = ':';\r\n const USER_DATA_SEPARATOR = '◊';\r\n const ADD_INFO_SEPARATOR = '♦';\r\n // ReSharper enable InconsistentNaming\r\n\r\n startDate = startDate || moment(BASE_DATE);\r\n let cp: TotalApi.CoordinatePoint = null;\r\n if (line.length)\r\n {\r\n cp = { Coordinate: { } };\r\n let i = 0;\r\n let isDopSection = false;\r\n let isUserDataSection = false;\r\n let isAddInfoSection = false;\r\n\r\n switch (line[i])\r\n {\r\n case 'S': cp.IsStop = true; i++; break;\r\n case 'B': cp.IsBreak = true; i++; break;\r\n }\r\n\r\n switch (line[i])\r\n {\r\n case 'S': cp.IsStop = true; i++; break;\r\n case 'B': cp.IsBreak = true; i++; break;\r\n }\r\n\r\n let n = 0;\r\n let sep = '\\0';\r\n var separators = [ ',', DOP_DATA_SEPARATOR, USER_DATA_SEPARATOR, ADD_INFO_SEPARATOR ];\r\n\r\n const setDopValue = (s: string) =>\r\n {\r\n const v = asInt(s) / 10.0;\r\n switch (n)\r\n {\r\n case 1: cp.Coordinate.PDOP = v; break;\r\n case 2: cp.Coordinate.HDOP = v; break;\r\n case 3: cp.Coordinate.VDOP = v; break;\r\n case 4: cp.Coordinate.TDOP = v; break;\r\n case 5: cp.Coordinate.GDOP = v; break;\r\n }\r\n }\r\n\r\n const setValue = (s: string) =>\r\n {\r\n const v = asInt(s);\r\n switch (n)\r\n {\r\n case 1: cp.Coordinate.UtcDate = moment(prior?.Coordinate?.UtcDate || startDate).add(v, 'seconds'); break;\r\n case 2: cp.Coordinate.ReceivedDate = moment(cp.Coordinate.UtcDate).add(v, 'seconds'); break;\r\n case 3: cp.Coordinate.Latitude = ((prior?.Coordinate?.Latitude ?? 0)*10000000 + v) / 10000000; break;\r\n case 4: cp.Coordinate.Longitude = ((prior?.Coordinate?.Longitude ?? 0)*10000000 + v) / 10000000; break;\r\n case 5: cp.Coordinate.Direction = ((prior?.Coordinate?.Direction ?? 0)*1000 + v) / 1000; break;\r\n case 6: cp.Coordinate.Velocity = ((prior?.Coordinate?.Velocity ?? 0)*10 + v) / 10; break;\r\n case 7: cp.Coordinate.Altitude = ((prior?.Coordinate?.Altitude ?? 0)*10 + v) / 10; break;\r\n case 8: cp.Coordinate.SatInUse = (prior?.Coordinate.SatInUse ?? 0) + v; break;\r\n }\r\n }\r\n\r\n const finalizeSections = () =>\r\n {\r\n if (isDopSection)\r\n {\r\n while (n++ <= 5)\r\n {\r\n setValue('');\r\n }\r\n }\r\n else if (!isUserDataSection && !isAddInfoSection)\r\n {\r\n while (n++ <= 8)\r\n {\r\n setValue('');\r\n }\r\n }\r\n }\r\n\r\n while (i <= line.length && sep)\r\n {\r\n n++;\r\n //const scanRes = strScan(line, i, separators.join(''));\r\n const scanRes = strScan(line, i, separators);\r\n const val = scanRes.res;\r\n sep = scanRes.separator;\r\n i = scanRes.index;\r\n if (val !== NULL_VALUE)\r\n {\r\n if (isAddInfoSection)\r\n {\r\n //var addInfo = val.FromJson>();\r\n //const addInfo = JSON.parse(val);\r\n const addInfo = val.FromJson();\r\n if (addInfo)\r\n {\r\n for (let prop in addInfo) {\r\n if (Object.prototype.hasOwnProperty.call(addInfo, prop)) {\r\n cp.AdditionalInfo = cp.AdditionalInfo || {};\r\n cp.AdditionalInfo[prop] = addInfo[prop];\r\n }\r\n }\r\n }\r\n }\r\n else if (isUserDataSection)\r\n {\r\n //var userData = val.FromJson>();\r\n const userData = val.FromJson();\r\n if (userData)\r\n {\r\n for (let prop in userData) {\r\n if (Object.prototype.hasOwnProperty.call(userData, prop)) {\r\n cp.Coordinate.UserData = cp.Coordinate.UserData || {};\r\n cp.Coordinate.UserData[prop] = userData[prop];\r\n }\r\n }\r\n }\r\n }\r\n else if (isDopSection)\r\n {\r\n setDopValue(val);\r\n }\r\n else\r\n {\r\n setValue(val);\r\n }\r\n }\r\n if (sep === DOP_DATA_SEPARATOR) { finalizeSections(); isDopSection = true; separators.Remove(DOP_DATA_SEPARATOR); n = 0; isUserDataSection = false; isAddInfoSection = false; }\r\n if (sep === USER_DATA_SEPARATOR) { finalizeSections(); isUserDataSection = true; separators.Remove(','); separators.Remove(DOP_DATA_SEPARATOR); n = 0; isDopSection = false; isAddInfoSection = false; }\r\n if (sep === ADD_INFO_SEPARATOR) { finalizeSections(); isAddInfoSection = true; separators.Remove(','); separators.Remove(DOP_DATA_SEPARATOR); n = 0; isDopSection = false; isUserDataSection = false; }\r\n }\r\n finalizeSections();\r\n }\r\n return cp;\r\n}\r\n\r\n\r\n/**\r\n * Unpacks the `packedValues` string back to the list of `ISensorValuePoint`.\r\n */\r\nexport function unpackSensorData(packedValues: string): SensorValuePoint[] {\r\n let res: SensorValuePoint[] = null;\r\n const lines = packedValues.split('\\n').where(s => !!s).toArray();\r\n if (lines.length > 1)\r\n {\r\n const arr = lines[0].split(',');\r\n\r\n if (arr.length === 4)\r\n {\r\n const version = arr[0];\r\n const seconds = asInt(arr[1]);\r\n const startDate = isEmpty(seconds) ? null : moment(BASE_DATE).add(seconds, 'seconds');\r\n const sensorType = asInt(arr[2]);\r\n const dataType = asInt(arr[3]);\r\n if (version === '0')\r\n {\r\n res = [];\r\n let svp = undefined;\r\n for (let line of lines) {\r\n if (svp === undefined) {\r\n svp = { SensorType: sensorType, DataType: dataType };\r\n continue;\r\n }\r\n const prior = svp;\r\n svp = unPackSensor(line, prior, startDate);\r\n if (svp)\r\n {\r\n res.push(svp);\r\n }\r\n else\r\n {\r\n svp = prior;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\n/**\r\n * Производит распаковку данных сенсора.\r\n *\r\n * Формат:\r\n * {utcDate}[,{value}][:{sensorNumber}][♦{addInfo}]\r\n * где\r\n * utcDate - разница в секундах между текущим и предыдущим значением (если предыдущего нет - используется )\r\n * value - если данных нет - блока {value} нет\r\n * если тип данных `float` (1) разница между предыдущим и текущим значением*1000000 (целочисленное значение), если разницы нет - блока {value} нет\r\n * если тип данных `int` или `long` (`2` или `3`) разница между предыдущим и текущим значением, если разницы нет - блока {value} нет\r\n * если тип данных `bool` или `event` (`4` или `5`) и значение равно `1` - `+`, иначе - блока {value} нет\r\n * в остальных случаях - блока {value} нет\r\n * если значение заканчивается на `3` или более нулей - кол-во нулей заменяется на `e{zero-count}` (например, `1200000` -> 12e5`)\r\n * sensorNumber - номер сенсора (отсутствует, если номер сенсора - 0)\r\n * addInfo - значения словаря AdditionalInfo в формате JSON, начинается с ADD_INFO_SEPARATOR (если словарь пуст - этого блока не будет вообще)\r\n * если разница равна 0 - она не записывается.\r\n */\r\nexport function unPackSensor(line: string, prior: SensorValuePoint, startDate: DateTime = null): SensorValuePoint {\r\n\r\n // ReSharper disable InconsistentNaming\r\n const SENSOR_NUMBER_SEPARATOR = ':';\r\n const ADD_INFO_SEPARATOR = '♦';\r\n // ReSharper enable InconsistentNaming\r\n\r\n startDate = moment(prior?.UtcDate || startDate || BASE_DATE);\r\n\r\n let svp: SensorValuePoint = null;\r\n if (line) {\r\n var arr = line.split(ADD_INFO_SEPARATOR);\r\n var arr1 = arr[0].split(SENSOR_NUMBER_SEPARATOR);\r\n var arr2 = arr1[0].split(',');\r\n\r\n var priorValue = prior?.Value ?? 0;\r\n var dataType = prior?.DataType ?? TotalApi.SensorDataType.Float;\r\n \r\n var seconds = asInt(arr2[0]);\r\n var svalue = arr2.length === 1 ? (dataType === TotalApi.SensorDataType.Bool ? (priorValue ? '1' : '0') : '0') : arr2.length === 2 ? arr2[1] : null;\r\n let value: number = null;\r\n let floatDivider = 1000000.0;\r\n if (svalue?.Contains('e')) {\r\n if (svalue === '+') svalue = '1';\r\n var arr3 = svalue.split('e');\r\n if (arr3.length === 2)\r\n {\r\n var zeroCount = asInt(arr3[1]);\r\n if (zeroCount) {\r\n svalue = arr3[0];\r\n floatDivider = floatDivider / + asInt((`1${Array(zeroCount+1).join('0')}`));\r\n }\r\n }\r\n }\r\n value = asInt(svalue === '*' ? (priorValue ? '0' : '1') : svalue);\r\n var sensorNumber = arr1.length === 1 ? 0 : arr1.length === 2 ? asInt(arr1[1]) : null;\r\n\r\n if (isNotEmpty(seconds) && isNotEmpty(value) && isNotEmpty(sensorNumber))\r\n {\r\n const additionalInfo = arr.length === 2 ? arr[1].fromJson() : null;\r\n svp = {\r\n UtcDate: moment(startDate).add(seconds, 'seconds').format(\"YYYY-MM-DDTHH:mm:ssZ\"), \r\n Value: 0,\r\n DataType: dataType,\r\n SensorType: prior?.SensorType ?? 0,\r\n Number: sensorNumber,\r\n AdditionalInfo: {}\r\n };\r\n\r\n if (additionalInfo)\r\n {\r\n svp.AdditionalInfo = additionalInfo;\r\n }\r\n switch (svp.DataType)\r\n {\r\n case TotalApi.SensorDataType.Float: \r\n svp.Value = priorValue + value/floatDivider; \r\n break;\r\n case TotalApi.SensorDataType.Integer: \r\n case TotalApi.SensorDataType.Long: \r\n svp.Value = priorValue + value; \r\n break;\r\n case TotalApi.SensorDataType.Boolean: \r\n case TotalApi.SensorDataType.Event: \r\n svp.Value = value !== 0; \r\n break;\r\n }\r\n }\r\n }\r\n\r\n return svp;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/telematics.module/Telematics.Utils.ts","import { LONG_STOP_PERIOD_MIN } from '@telematics.module';\r\nimport { getNextItem } from '@core.module';\r\n\r\n/** Время в минутах, указывает период после которого УС считается непередающим координаты с точки зрения клиента.\r\n * Это может быть связано с тем, что не работает телематический сервис или SignalR.\r\n*/\r\nexport const CHECK_INACTIVE_PERIOD_MIN = 6;\r\n\r\n/** Ограничение скорости по умолчанию */\r\nexport const DEFAULT_SPEED_LIMIT = 70;\r\n\r\n/** Время в минутах, указывает период после которого остановка считается стоянкой. */\r\nexport const STOP_DURATION_MIN = 5;\r\n\r\n/** Время в минутах, указывает период после которого остановка считается стоянкой. */\r\nexport let LONG_STOP_DURATION_MIN = 30;\r\n// исправляем непонятный глюк из-за которого значение константы LONG_STOP_PERIOD_MIN равно undefined на момент инициализации модуля\r\nsetTimeout(() => LONG_STOP_DURATION_MIN = LONG_STOP_PERIOD_MIN);\r\n\r\n/** Лимит оборотов холостого хода, об/мин. */\r\nexport const IDLING_LIMIT = 900;\r\n\r\n/** Цвет трека. Если не указан - по умолчанию последовательно из палитры. */\r\nexport const TRACK_COLOR = undefined;\r\n\r\n\r\n/** Ширина трека по умолчанию. Если она не задана в параметрах транспорта. */\r\nexport const DEFAULT_TRACK_WIDTH = 1;\r\n\r\n\r\n\r\n/** Список цветов треков.\r\n * При построении очередного трека будет циклически выбираться цвет из этого списка.\r\n */\r\nexport let TRACK_COLORS = [\r\n '#0050a1',\r\n '#0085a1',\r\n '#00a186',\r\n '#0f56e7',\r\n '#0fa9e7'\r\n];\r\n\r\nexport function getTrackColor(): string {\r\n return getNextItem(TRACK_COLORS);\r\n}\r\n\r\n/*\r\n/** Список фильтров, применяемых к результату запрашиваемого трека #1#\r\nexport let TRACK_FILTERS = [\r\n { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.RosePointsFilter.RosePointsPostFilterParameters', Properties: { Radius: 50, MinPointsCount: 25 } },\r\n { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.BreaksFilter.BreaksPostFilterParameters', Properties: { MinDistance: 3, MaxDistance: 30, AvgSpeed: 10, MaxSpeed: 200 } },\r\n { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.StopsFilter.StopsPostFilterParameters', Properties: { MinSpeed: 3, MinStopDuration: '00:03:00', FilterAction: TotalApi.StopsPostFilterParameters.Action.Default } },\r\n { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.SpeedFilter.SpeedPostFilterParameters', Properties: { MaxSpeed: 50, Tolerance: 5 } },\r\n// { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.SimplificateFilter.SimplificatePostFilterParameters', Properties: { Tolerance: 1e-8 } }\r\n { ClassName: 'TotalApi.Telematics.DataFilters.Coordinates.SimplificateFilter.SimplificatePostFilterParameters', Properties: { Tolerance: 1e-10 } }\r\n];\r\n*/\r\n\r\n/** Список фильтров, применяемых для получения данных о нажатии тревожной кнопки */\r\nexport let ALARM_FILTERS = [\r\n { ClassName: 'TotalApi.Telematics.DataFilters.SensorsData.ThresholdFilter.SensorDataThresholdPostFilterParameters', Properties: { Threshold: 1, PeriodOff: '0:00:20', Condition: 2 } }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/app/common/GlobalSettings.ts","import { AddressSource } from './AddressSource';\r\nimport { Address } from './Address';\r\nimport { latLng } from 'leaflet';\r\n\r\n// ReSharper disable InconsistentNaming\r\n/** Используется для кастомных источников данных, которые не являются результатами поиска geo-сервисов */\r\nexport class AppAddressInfoSource extends AddressSource {\r\n\r\n assignAddress(address?: Address) {\r\n super.assignAddress(address);\r\n if (this.owner && this.source) {\r\n const ll = latLng(this.source);\r\n this.owner.Lat = ll.lat;\r\n this.owner.Lng = ll.lng;\r\n this.owner.Address = this.source.Address;\r\n this.owner.Number = this.source.Number;\r\n this.owner.Details = this.source.Details;\r\n\r\n this.owner.Entrance = this.source.Entrance;\r\n this.owner.EntranceCode = this.source.EntranceCode;\r\n this.owner.Floor = this.source.Floor;\r\n this.owner.FloorNumber = this.source.FloorNumber;\r\n this.owner.Entry = this.source.Entry;\r\n\r\n this.owner.AddressServiceType = this.source.AddressServiceType;\r\n this.owner.CountryCode = this.source.CountryCode;\r\n this.owner.Country = this.source.Country;\r\n this.owner.RegionCode = this.source.RegionCode;\r\n this.owner.Region = this.source.Region;\r\n this.owner.AreaCode = this.source.AreaCode;\r\n this.owner.Area = this.source.Area;\r\n this.owner.Level3Code = this.source.Level3Code;\r\n this.owner.Level3 = this.source.Level3;\r\n this.owner.CityType = this.source.CityType;\r\n this.owner.CityCode = this.source.CityCode;\r\n this.owner.City = this.source.City;\r\n this.owner.District = this.source.District;\r\n this.owner.Street = this.source.Street;\r\n this.owner.HouseNumber = this.source.HouseNumber;\r\n this.owner.Road = this.source.Road;\r\n this.owner.RoadKilometer = this.source.RoadKilometer;\r\n this.owner.PostCode = this.source.PostCode;\r\n this.owner.PoiName = this.source.PoiName;\r\n this.owner.ExtraInfo = this.source.ExtraInfo;\r\n this.owner.BoundingBox = this.source.BoundingBox;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/address/AppAddressInfoSource.ts","import { Marker, MarkerOptions, Icon, LeafletEventHandlerFn } from 'leaflet';\r\nimport { ExtendClass } from '../../core.module/decorators/extend.decorator';\r\nimport { TRotationOrigin, TRotationUnits, UssMapIcon, UssMapIconOptions } from '../map-icons/map-icon';\r\nimport { RotateMarker } from './RotateMarker';\r\n\r\n@ExtendClass(Marker)\r\nexport class MarkerFactory extends RotateMarker {\r\n\r\n static from(m: Marker): MarkerFactory {\r\n return m;\r\n }\r\n\r\n with(setOptions: (options: MarkerOptions) => void): MarkerFactory {\r\n setOptions(this.options);\r\n return this;\r\n }\r\n\r\n withIcon(iconOrOptions: Icon | UssMapIcon | UssMapIconOptions): MarkerFactory {\r\n if (iconOrOptions instanceof Icon) {\r\n this.options.icon = iconOrOptions;\r\n } else {\r\n this.options.icon = UssMapIcon.create(iconOrOptions);\r\n }\r\n return this;\r\n }\r\n\r\n withDraggable(draggable: boolean | LeafletEventHandlerFn = true): MarkerFactory {\r\n this.options.draggable = !!draggable;\r\n this.off('dragend');\r\n if (typeof draggable === 'function')\r\n this.on('dragend', e => draggable(e));\r\n return this;\r\n }\r\n\r\n withClickable(clickable: boolean | LeafletEventHandlerFn = true): MarkerFactory {\r\n this.options.clickable = !!clickable;\r\n if (typeof clickable === 'function')\r\n this.on('click', e => clickable(e));\r\n return this;\r\n }\r\n\r\n withTitle(title: string): MarkerFactory {\r\n this.options.title = title;\r\n return this;\r\n }\r\n\r\n withRotation(angle: number, units?: TRotationUnits, origin?: TRotationOrigin): MarkerFactory {\r\n this.options.rotationAngle = angle;\r\n this.options.rotationUnits = units || this.options.rotationUnits;\r\n this.options.rotationOrigin = origin || this.options.rotationOrigin;\r\n return this;\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/markers/MarkerFactory.ts","import { MarkerOptions, DomUtil, Marker, LeafletEventHandlerFn } from 'leaflet';\r\nimport { TRotationOrigin, TRotationUnits } from '../map-icons/map-icon';\r\nimport { Point } from 'geojson';\r\nimport { ExtendClass, ifNotEmpty } from '@core.module';\r\n\r\nexport interface RotateMarkerOptions extends MarkerOptions {\r\n /** Угол поворота по часовой стрелке в градусах */\r\n rotationAngle?: number;\r\n /** Точка поворота (по умолчанию 'center center' ) */\r\n rotationOrigin?: TRotationOrigin;\r\n /** Единица измерения поворота. (по умочанию deg) */\r\n rotationUnits?: TRotationUnits;\r\n /** Кликабельно или нет. Метод обработки клика. */\r\n clickable?: boolean/* | LeafletEventHandlerFn*/;\r\n}\r\n\r\nMarker.addInitHook(function () {\r\n /*\r\n const iconOptions = this.options.icon && this.options.icon.options;\r\n let iconAnchor = iconOptions && this.options.icon.options.iconAnchor;\r\n if (iconAnchor) {\r\n iconAnchor = (iconAnchor[0] + 'px ' + iconAnchor[1] + 'px');\r\n }\r\n this.options.rotationOrigin = this.options.rotationOrigin || iconAnchor || 'center center';\r\n this.options.rotationAngle = this.options.rotationAngle || 0;\r\n\r\n */\r\n // Ensure marker keeps rotated during dragging\r\n this.on('drag', e => { e.target._applyRotation(); });\r\n});\r\n\r\n// save these original methods before they are overwritten\r\nconst oldIe = (DomUtil.TRANSFORM === 'msTransform');\r\n\r\n@ExtendClass(Marker)\r\nexport class RotateMarker

extends Marker

{\r\n options: RotateMarkerOptions;\r\n protected _icon: HTMLElement;\r\n\r\n private _setPos(pos: Point) {\r\n this['_super__setPos'](pos);\r\n this._applyRotation();\r\n }\r\n\r\n update() {\r\n this['_super_update']();\r\n }\r\n\r\n private _applyRotation() {\r\n if(this.options.rotationAngle) {\r\n this._icon.style[DomUtil.TRANSFORM+'Origin'] = this.options.rotationOrigin || 'center center';\r\n\r\n const units = this.options.rotationUnits || 'deg';\r\n if(oldIe) {\r\n // for IE 9, use the 2D rotation\r\n this._icon.style[DomUtil.TRANSFORM] = `rotate(${this.options.rotationAngle}${units})`;\r\n } else {\r\n // for modern browsers, prefer the 3D accelerated version\r\n this._icon.style[DomUtil.TRANSFORM] += ` rotateZ(${this.options.rotationAngle}${units})`;\r\n }\r\n }\r\n }\r\n\r\n setRotation(angle?: number, units?: TRotationUnits, origin?: TRotationOrigin, noUpdate?: boolean): this {\r\n ifNotEmpty(angle, () => this.options.rotationAngle = angle);\r\n units && (this.options.rotationUnits = units);\r\n origin && (this.options.rotationOrigin = origin);\r\n if (!noUpdate) this['update']();\r\n return this;\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/markers/RotateMarker.ts","export * from './IMapSearchComponent';\r\nexport * from './map.tokens';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/interfaces/index.ts","import { InjectionToken } from '@angular/core';\r\n\r\n/** Тип компонента, который будет обрабатывать поиск на карте */\r\nexport const MAP_SEARCH_COMPONENT_TYPE = new InjectionToken('IMapSearchComponentType');\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/interfaces/map.tokens.ts","import { ViewChild, EventEmitter, Output, ElementRef, Injectable, Directive, Input } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { LeafletDirective } from '@asymmetrik/ngx-leaflet';\r\nimport { DomEvent } from 'leaflet';\r\nimport { Address } from '../../address/Address';\r\nimport { UssSearchControlOptions } from '../../controls/search.control';\r\nimport { APP_ADDRESS_SERVICE_TOKEN, IAppAddressService } from '../../services/IAppAddressService';\r\nimport { Inject, focusElement, AppComponent, AppComponentBase } from '@core.module';\r\nimport { IMapSearchComponent } from '../../interfaces';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport class MapSearchComponentBase extends AppComponentBase implements IMapSearchComponent {\r\n\r\n @Input('settings') public settings: UssSearchControlOptions;\r\n\r\n @Output('addressChange') public addressChange = new EventEmitter

();\r\n\r\n @Input('disabled') disabled: boolean;\r\n \r\n @Inject(APP_ADDRESS_SERVICE_TOKEN) addressService: IAppAddressService;\r\n\r\n public readonly control = new FormControl();\r\n @ViewChild('input') inputRef: ElementRef;\r\n get inputElement(): HTMLInputElement { return this.inputRef?.nativeElement; }\r\n\r\n public leaflet: LeafletDirective;\r\n\r\n public focused: boolean;\r\n\r\n ngOnInit() {\r\n DomEvent.disableClickPropagation(this.nativeElement);\r\n super.ngOnInit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n this.control.setValue('');\r\n if (this.inputElement) {\r\n Observable.fromEvent(this.inputElement, 'keydown').subscribe((e: KeyboardEvent) => this.onKeyDown(e));\r\n Observable.fromEvent(this.inputElement, 'focusin').subscribe(() => this.setFocused(true));\r\n Observable.fromEvent(this.inputElement, 'focusout').subscribe((e: FocusEvent) => this.setFocused(false));\r\n }\r\n }\r\n\r\n getAddress(text: string): Address {\r\n let res = null;\r\n if (typeof text === 'string') {\r\n /*\r\n if (this.settings.useCurrentLocation && text === CurrentPositionAddress.caption) {\r\n res = new CurrentPositionAddress();\r\n } else\r\n */\r\n {\r\n const details = text;\r\n const testCoords = details?.replace(/\\,/g, '.').split(';');\r\n let lat = null;\r\n let lng = null;\r\n if (testCoords?.length > 1) {\r\n lat = +testCoords[0];\r\n lng = +testCoords[1];\r\n }\r\n if (!lat || isNaN(lat) || !lng || isNaN(lng)) {\r\n lat = null;\r\n lng = null;\r\n }\r\n/*\r\n if (this.settings.useTextAddress && (!lat || !lng)) {\r\n res = new TextAddress(details);\r\n } else\r\n*/\r\n if (lat && lng) {\r\n res = new Address([lat, lng]);\r\n res.details = details;\r\n res.address = `${lat};${lng}`;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n updateAddressFromInputElementValue() {\r\n const addr = this.getAddress(this.inputElement?.value || this.control?.value);\r\n this.setAddress(addr);\r\n }\r\n\r\n public onKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Enter' || e.key === 'Tab') {\r\n this.updateAddressFromInputElementValue();\r\n e.preventDefault();\r\n if (e.key === 'Enter') {\r\n this.inputElement.selectionStart = 0;\r\n this.inputElement.selectionEnd = 1000000;\r\n }\r\n }\r\n }\r\n\r\n public _textAddress: string;\r\n\r\n private _address: Address;\r\n public get address(): Address { return this._address; }\r\n public set address(value: Address) {\r\n if (this._address !== value) {\r\n value = value || null;\r\n this._address = value;\r\n this._textAddress = value?.Address || '';\r\n if (this.settings?.leaveSelectedAddress) {\r\n this.inputElement.value = this._textAddress;\r\n }\r\n else {\r\n this.inputElement.value = '';\r\n }\r\n this.addressChange.emit(this._address);\r\n }\r\n }\r\n\r\n public setAddress(address?: Address): string {\r\n let res = '';\r\n if (this.control?.value) {\r\n this.control.setValue('');\r\n } else {\r\n this.control?.updateValueAndValidity();\r\n }\r\n if (address !== '') {\r\n this.address = address;\r\n }\r\n if (this.settings?.leaveSelectedAddress) {\r\n // если хотим не очищать адрес в строке поиска.\r\n // нужно сделать, чтобы подставлялся не весь адрес, а только улица и номер дома\r\n this._textAddress = (address ? address.Address : this._textAddress) || '';\r\n res = this._textAddress;\r\n }\r\n this.markForCheck();\r\n return res;\r\n }\r\n\r\n public clear() {\r\n this.setAddress(null);\r\n }\r\n\r\n public focus() {\r\n focusElement(this.inputElement);\r\n }\r\n\r\n public setFocused(value: boolean) {\r\n this.focused = value;\r\n if (value) {\r\n this.inputElement.selectionStart = 0;\r\n this.inputElement.selectionEnd = 1000000;\r\n }\r\n else if (this.settings.clearOnFocusOut) {\r\n setTimeout(() => this.clear(), 300);\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/components/search/search-base.component.ts","export * from './address.directive';\r\nexport * from './map.directive';\r\nexport * from './map-point';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/directives/index.ts","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { LatLngExpression } from 'leaflet';\r\nimport { isNotEmpty, ApiMethod, ApiService, isArray, AppService } from '@core.module';\r\nimport { UssCacheApiService } from '@cache.module';\r\nimport { Feature, Point, FeatureCollection, LineString, Geometry } from 'geojson';\r\nimport { NominatimResult } from './NominatimResult';\r\nimport { OsmSearchParams, OsmReverseParams } from './OsmSearchParams';\r\nimport { IGeoAddressService } from '../../services/IGeoAddressService';\r\nimport { LeafletHelper } from '../../utils/LeafletHelper';\r\n\r\n@Injectable()\r\n@AppService()\r\n@ApiService('//nominatim.openstreetmap.org')\r\nexport class AppOsmService extends UssCacheApiService implements IGeoAddressService {\r\n\r\n handleSearchResult(r: NominatimResult[] | object): NominatimResult[] {\r\n let res = [];\r\n if (r instanceof Array) {\r\n res = r;\r\n } else if (r) {\r\n for (let propName in r) {\r\n if (Object.prototype.hasOwnProperty.call(r, propName)) {\r\n if (+propName >= 0) {\r\n res.push(r[propName]);\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n\r\n // https://nominatim.openstreetmap.org/details.php?place_id=198736505&format=json&polygon_geojson=1\r\n \r\n /**\r\n * Запрос прямого геокодирования.\r\n * Получение данных об объектах по названию.\r\n */\r\n @ApiMethod({ method: 'GET', route: 'search', cache: 'nominatim' })\r\n search$(params?: OsmSearchParams): Observable {\r\n //\r\n // https://developer.mapquest.com/documentation/open/nominatim-search/search/\r\n // https://nominatim.org/release-docs/develop/api/Search/\r\n // https://nominatim.openstreetmap.org/search?format=json&polygon_geojson=1&accept-language=ua&q=Крим\r\n //\r\n return this.request$(OsmSearchParams.create(params));\r\n }\r\n\r\n /**\r\n * Запрос обратного геокодирования.\r\n * Получение данных об объектах по координатам.\r\n */\r\n @ApiMethod({ method: 'GET', route: 'reverse', cache: 'nominatim' })\r\n reverse$(params?: OsmReverseParams): Observable {\r\n //\r\n // https://developer.mapquest.com/documentation/open/nominatim-search/reverse/\r\n // https://nominatim.org/release-docs/develop/api/Reverse/\r\n // https://nominatim.openstreetmap.org/reverse?osm_type=R&osm_id=72526&format=json&polygon_geojson=1\r\n //\r\n return this.request$(OsmSearchParams.create(params));\r\n }\r\n\r\n /**\r\n * Ищет адреса по названию. Возвращает список адресов, в названии которых встречаются указанные слова в виде подстроки.\r\n * @param query перечень искомых подстрок, разделённых пробелом или запятой.\r\n * @param limit ограничение на кол-во выдаваемых адресов. По умолчанию равно 50.\r\n * @param center Центр поиска. По умолчанию используется значение LeafletHelper.Defaults.center.\r\n * @param searchArea геометрия или boundongBox, внутри которой следует производить поиск адресов.\r\n */\r\n getAddress$(query: string, limit?: number, center?: Point | LatLngExpression | string, searchArea?: Geometry | LatLngExpression | string | { [key: string]: string[] }): Observable;\r\n /**\r\n * Выполняет поиск адреса по координатам (обратное геокодирование).\r\n * Возвращает ближайший к точке адрес или ничего, если адрес не найден.\r\n * @param coordinate точка для координат которой необходимо выполнить поиск адреса.\r\n * @param radius радиус в котором необходимо искать адрес.\r\n */\r\n getAddress$(coordinate: Point | LatLngExpression, radius?: number): Observable;\r\n getAddress$(p1, p2?, p3?, p4?): Observable {\r\n if (p1 && typeof p1 === 'object') {\r\n const coordinate = p1;\r\n const radius = p2;\r\n return this.reverse$(OsmReverseParams.create()\r\n .withCoordinate(coordinate))\r\n .pipe(map(r => isArray(r) ? r[0] : r));\r\n } else {\r\n const query = p1;\r\n const limit = p2;\r\n const center = p3;\r\n const searchArea = p4;\r\n return this.search$(OsmSearchParams.create()\r\n .withViewbox(searchArea || LeafletHelper.Defaults.viewBox)\r\n .withCountryCodes(LeafletHelper.Defaults.searchCountry)\r\n .withBounded()\r\n .withAddressDetails()\r\n .withQuery(query)\r\n .withLimit(limit || 50));\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Получение геометрии по объекту.\r\n * Если объект с указанным id не найден — возвращается пустой обсервер.\r\n */\r\n @ApiMethod({ method: 'GET', route: 'reverse', cache: 'nominatim' })\r\n feature$(id: string, params?: object): Observable {\r\n return this.request$(OsmReverseParams\r\n .create(params)\r\n .withFormat('geojson')\r\n .withPolygon()\r\n .withId(id)).pipe(map(r => {\r\n let res = null;\r\n // ToDo: по хорошему нужно объединить все геометрии в одну GeometryCollection, но похоже, что сложных геометрий в Nominatim'е нет, поэтому пока так\r\n if (isNotEmpty(r.features)) {\r\n res = r.features.firstOrDefault();\r\n }\r\n res = res || '';\r\n return res;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Прокладывает маршрут из одной точки в другую.\r\n * @param origin Точка от которой нужно проложить маршрут\r\n * @param destination Точка куда нужно проложить маршрут\r\n * @param wayPoints Список промежуточных точек, через которые должен пройти маршрут\r\n * @param locks Список промежуточных точек, через которые не должен проходить маршрут\r\n */\r\n getRoute$(origin: Point | LatLngExpression, destination: Point | LatLngExpression,\r\n wayPoints?: (Point | LatLngExpression)[], locks?: (Point | LatLngExpression)[]): Observable {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/osm/osm.service.ts","import { assign, translate } from '@core.module';\r\nimport { Point } from 'geojson';\r\nimport { LatLngExpression, latLng } from 'leaflet';\r\nimport { LeafletHelper } from '../../utils/LeafletHelper';\r\n\r\ndeclare namespace NominatimApi {\r\n export type ResultFormat = 'jsonv2' | 'json' | 'html' | 'xml' | 'geojson' | 'geocodejson';\r\n export type ObjectType = 'N' | 'W' | 'R';\r\n}\r\n\r\nexport class OsmSearchParamsBase {\r\n\r\n constructor(source?: OsmSearchParamsBase | object) {\r\n LeafletHelper.Defaults.apiKey.osm && (this.key = LeafletHelper.Defaults.apiKey.osm);\r\n assign(this, source);\r\n }\r\n\r\n /** The API Key, which is needed to make requests to MapQuest services. */\r\n key?: string;\r\n\r\n /** Specify the output format being called. Must be one of the following, if supplied: html, json, xml */\r\n format: NominatimApi.ResultFormat = 'jsonv2';\r\n\r\n 'accept-language'?: string = translate.currentLang;\r\n\r\n /** Include a breakdown of addresses into separate elements. */\r\n addressdetails: 0 | 1;\r\n\r\n /** Include a breakdown of the address into elements. */\r\n extratags: 0 | 1;\r\n\r\n /** Include additional information in the result if available, e.g. wikipedia link, opening hours. */\r\n namedetails: 0 | 1;\r\n\r\n with(setup: (p: this) => void): this { setup(this); return this; }\r\n withApiKey(key: string): this { key ? this.key = key : delete this.key; return this; }\r\n withFormat(format: NominatimApi.ResultFormat): this { this.format = format; return this; }\r\n withLang(lang: string): this { lang ? this['accept-language'] = lang : delete this['accept-language']; return this; }\r\n withAddressDetails(addressdetails: boolean = true): this { addressdetails ? this.addressdetails = 1 : delete this.addressdetails; return this; }\r\n withExtraTags(extratags: boolean = true): this { extratags ? this.extratags = 1 : delete this.extratags; return this; }\r\n withNameDetails(namedetails: boolean = true): this { namedetails ? this.namedetails = 1 : delete this.namedetails; return this; }\r\n withPolygon(type: 'geojson' | 'kml' | 'svg' | 'text' = 'geojson', threshold?: number): this {\r\n delete this[`polygon_geojson`]; \r\n delete this[`kml`]; \r\n delete this[`polygon_svg`]; \r\n delete this[`polygon_text`];\r\n delete this[`polygon_threshold`]; \r\n if (type) {\r\n this[`polygon_${type}`] = 1; \r\n }\r\n if (threshold) {\r\n this[`polygon_threshold`] = threshold; \r\n }\r\n return this;\r\n }\r\n}\r\n\r\n\r\n\r\nexport class OsmSearchParams extends OsmSearchParamsBase {\r\n\r\n static create(source?: OsmSearchParams | object, q?: string): OsmSearchParams {\r\n let res = (source || {});\r\n if (!(source instanceof OsmSearchParams)) {\r\n res = new OsmSearchParams(source, q);\r\n } else {\r\n res.q = q || res.q;\r\n }\r\n return res;\r\n }\r\n\r\n constructor(source?: OsmSearchParams | object, q?: string) {\r\n super(source);\r\n this.q = q || this.q;\r\n }\r\n\r\n /**\r\n * Query string being searched.\r\n * Search terms are processed left to right and house numbers, where defined, will be used.\r\n * Commas are optional but will improve performance by reducing the complexity of the search.\r\n * Enclosing the query string in [] causes Nominatim to do a facility search.\r\n * For example, q=[pub] returns results where type=pub in OpenStreetMap.\r\n */\r\n q: string;\r\n\r\n /** Preferred area to find search results. viewbox=left,top,right,bottom */\r\n viewbox: string;\r\n\r\n /** Restrict the search results to a bounding box or bounding route. 0 - No, do not restrict results. 1 - Yes, restrict results.*/\r\n bounded: 0 | 1 = 1;\r\n\r\n /** Limits the number of returned results to the integer entered. */\r\n limit: number;\r\n\r\n /**\r\n * Limits the search to a specific country or a list of countries.\r\n * Country codes must be in ISO 3166-1 alpha2. countrycodes=countrycode,countrycode,countrycode...\r\n */\r\n countrycodes: string;\r\n\r\n /** Specify the buffer radius of a route. Acceptable values are between 0 and 1 (in degrees). */\r\n routewidth: number;\r\n\r\n withQuery(q: string): this { this.q = q; return this; }\r\n withViewbox(viewbox: string): this { viewbox ? this.viewbox = viewbox: delete this.viewbox; return this; }\r\n withBounded(bounded: boolean = true): this { bounded ? this.bounded = 1 : delete this.bounded; return this; }\r\n withLimit(limit: number): this { limit ? this.limit = limit: delete this.limit; return this; }\r\n withCountryCodes(countrycodes: string): this { countrycodes ? this.countrycodes = countrycodes : delete this.countrycodes; return this; }\r\n withRouteWidth(routewidth: number): this { routewidth ? this.routewidth = routewidth : delete this.routewidth; return this; }\r\n}\r\n\r\nexport class OsmReverseParams extends OsmSearchParamsBase {\r\n\r\n static create(source?: OsmReverseParams | object, coordinate?: Point | LatLngExpression): OsmReverseParams {\r\n let res = (source || {});\r\n if (!(source instanceof OsmReverseParams)) {\r\n res = new OsmReverseParams(source, coordinate);\r\n } else {\r\n res.withCoordinate(coordinate);\r\n }\r\n return res;\r\n }\r\n\r\n constructor(source?: OsmReverseParams | object, coordinate?: Point | LatLngExpression) {\r\n super(source);\r\n this.withCoordinate(coordinate);\r\n }\r\n\r\n /** The latitude to reverse geocode */\r\n lat: number;\r\n /** The longitude to reverse geocode */\r\n lon: number;\r\n\r\n /** Specify if the feature is a Node, Way, or Relation in OpenStreetMap. N - Node, W - Way, R - Relation */\r\n osm_type: NominatimApi.ObjectType = 'W';\r\n\r\n /** Specify the OpenStreetMap ID# you wish to geocode. */\r\n osm_id: string;\r\n\r\n withId(id: string, type: NominatimApi.ObjectType = 'W'): this {\r\n if (id) {\r\n this.osm_id = id;\r\n this.osm_type = type || 'W'; \r\n } else {\r\n delete this.osm_id;\r\n delete this.osm_type;\r\n }\r\n return this;\r\n }\r\n\r\n withCoordinate(coordinate: Point | LatLngExpression): this {\r\n if (coordinate) {\r\n const ll = latLng(coordinate);\r\n this.lat = ll.lat;\r\n this.lon = ll.lng;\r\n }\r\n return this;\r\n }\r\n}\r\n \r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/osm/OsmSearchParams.ts","export * from './FeatureParams';\r\nexport * from './GeocodeParams';\r\nexport * from './VisicomSearchParams';\r\nexport * from './VisicomApiParams';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/index.ts","import { VisicomSearchParams } from './VisicomSearchParams';\r\nimport { Category } from '../classes/Category';\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class GeocodeParams extends VisicomSearchParams {\r\n\r\n /** Масштаб карты по спецификации TMS. Чем меньше масштаб, тем меньше учитываются координаты, указанные параметром near при расчете релевантности объектов. */\r\n zoom?: number;\r\n\r\n /** Код страны (ua, ru, en). Если не указан параметр country, то объекты в указанной этим параметром стране имеют больший приоритет.*/\r\n boost_country?: string = 'ua';\r\n\r\n static create(source?: GeocodeParams | Category | Category[] | object | string, text?: string): GeocodeParams {\r\n let res = (source || {});\r\n if (!(source instanceof GeocodeParams)) {\r\n res = new GeocodeParams(source, text);\r\n } else {\r\n res.text = text || res.text;\r\n }\r\n return res;\r\n }\r\n\r\n /** Масштаб карты по спецификации TMS. Чем меньше масштаб, тем меньше учитываются координаты, указанные параметром near при расчете релевантности объектов. */\r\n withZoom(zoom?: number): GeocodeParams { this.zoom = zoom; return this; }\r\n\r\n /** Код страны (ua, ru, en). Если не указан параметр country, то объекты в указанной этим параметром стране имеют больший приоритет.*/\r\n withBoostCountry(boost_country: string): GeocodeParams { this.boost_country = boost_country; return this; }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/GeocodeParams.ts","import { assign, ifEmpty, isArray } from '@core.module';\r\nimport { LatLngExpression } from 'leaflet';\r\nimport { Point, Geometry } from 'geojson';\r\nimport { VisicomApiParams } from './VisicomApiParams';\r\nimport { Category } from '../classes/Category';\r\nimport { LeafletHelper } from '../../../utils/LeafletHelper';\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class VisicomSearchParams> extends VisicomApiParams {\r\n\r\n static createParams>(source?: VisicomSearchParams | Category | Category[] | object | string, text?: string): TParams {\r\n let res = (source || {});\r\n if (!(source instanceof VisicomSearchParams)) {\r\n res = new VisicomSearchParams(source, text);\r\n } else {\r\n res.text = text || res.text;\r\n }\r\n return res;\r\n }\r\n\r\n constructor(source?: VisicomSearchParams | Category | Category[] | object | string, text?: string) {\r\n super();\r\n if (typeof source === 'string') {\r\n this.categories = source;\r\n } if (isArray(source)) {\r\n this.categories = (source).join(',');\r\n } else {\r\n assign(this, source);\r\n }\r\n this.categories = this.categories.Trim(' ,');\r\n if (!this.categories) this.categories = undefined;\r\n this.text = text || this.text;\r\n }\r\n\r\n /** Имена категорий через запятую, в этих категориях будет выполняться поиск объектов. */\r\n categories?: Category | string = Category.Address;\r\n\r\n /** Текст, который должен встречаться в описании объекта. */\r\n text?: string;\r\n\r\n /** Слова, которые должны встречаться в описании объекта. */\r\n word_text?: string;\r\n\r\n /** Код страны (ua, ru, en). */\r\n country?: string = 'ua';\r\n\r\n /** Максимальное количество возвращаемых объектов. Максимум 250. */\r\n limit?: number = 50;\r\n\r\n /** Радиус в метрах вокруг местоположения, которое задано параметром near. Максимум 10 000 метров */\r\n radius?: number;\r\n\r\n /**\r\n * Идентификатор объекта или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, отсортированные по удаленности от заданного местоположения.\r\n * Пример:\r\n * 1)POIA1KIGKN\r\n * 2)30.5113,50.4550\r\n */\r\n near?: string;\r\n\r\n /**\r\n * Идентификатор объекта или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, геометрия которых пересекается с геометрией, описанной данным параметром.\r\n * Пример:\r\n * 1)POLYGON ((30.2407 50.3848, 30.6094 50.5011, 30.6537 50.3114, 30.2407 50.3848))\r\n * 2)STL1NWULT\r\n */\r\n intersect?: string;\r\n\r\n /**\r\n * Идентификатор объекта или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, геометрия которых находится внутри геометрии, описанной данным параметром.\r\n * Пример:\r\n * POLYGON ((30.2407 50.3848, 30.6094 50.5011, 30.6537 50.3114, 30.2407 50.3848))\r\n */\r\n contains?: string;\r\n\r\n /** Имена категорий через запятую, в этих категориях будет выполняться поиск объектов. */\r\n withCategories(...categories: Category[]): TParams {\r\n this.categories = categories.join(',').Trim(' ,');\r\n if (!this.categories) this.categories = undefined;\r\n return this;\r\n }\r\n /** Текст, который должен встречаться в описании объекта. */\r\n withText(text: string): this { this.text = text; this.word_text = undefined; return this; }\r\n /** Слова, которые должны встречаться в описании объекта. */\r\n withWordText(word_text: string): this { this.text = undefined; this.word_text = word_text; return this; }\r\n /** Код страны (ua, ru, en). */\r\n withCountry(country: string): this { this.country = country || this.country; return this; }\r\n /** Максимально допустимое кол-во данных в результате. Максимум 250. */\r\n withNoLimit(): this { this.limit = undefined; return this; }\r\n /** Максимальное количество возвращаемых объектов. Максимум 250. */\r\n withLimit(limit: number): this { this.limit = limit; return this; }\r\n\r\n /**\r\n * Идентификатор объекта, точка, позиция, координата или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, отсортированные по удаленности от заданного местоположения и указанным радиусом.\r\n * Пример:\r\n * 1)POIA1KIGKN\r\n * 2)30.5113,50.4550\r\n */\r\n withNear(near: Point | LatLngExpression | string, radius?: number): this {\r\n //delete this.intersect;\r\n //delete this.contains;\r\n this.near = LeafletHelper.toWKT(near);\r\n this.radius = ifEmpty(radius, this.radius);\r\n return this;\r\n }\r\n\r\n /**\r\n * Идентификатор объекта или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, геометрия которых пересекается с геометрией, описанной данным параметром.\r\n * Пример:\r\n * 1)POLYGON ((30.2407 50.3848, 30.6094 50.5011, 30.6537 50.3114, 30.2407 50.3848))\r\n * 2)STL1NWULT\r\n */\r\n withIntersect(intersect?: Geometry | LatLngExpression | string): this {\r\n delete this.contains;\r\n //delete this.near;\r\n this.intersect = LeafletHelper.toWKT(intersect);\r\n return this;\r\n }\r\n\r\n /**\r\n * Идентификатор объекта или геометрия в формате WKT (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html) с количеством вершин не более 250.\r\n * Для точек возможна упрощенная запись в виде lng,lat.\r\n * Запрос возвращает объекты, геометрия которых находится внутри геометрии, описанной данным параметром.\r\n * Пример:\r\n * POLYGON ((30.2407 50.3848, 30.6094 50.5011, 30.6537 50.3114, 30.2407 50.3848))\r\n */\r\n withContains(contains?: Geometry | LatLngExpression | string): this {\r\n delete this.intersect;\r\n //delete this.near;\r\n delete this.radius;\r\n if (typeof contains === 'string' && !isNaN(+contains[0])) {\r\n // в качестве геометрии передали viewBox\r\n this.withViewbox(contains);\r\n } else {\r\n this.contains = LeafletHelper.toWKT(contains);\r\n }\r\n return this;\r\n }\r\n\r\n withViewbox(viewbox: string): this {\r\n if (viewbox) {\r\n //delete this.intersect;\r\n //delete this.near;\r\n //delete this.radius;\r\n // Создаём геометрию (прямоугольник) по данным viewBox\r\n const arr = viewbox.split(',');\r\n const lon1 = +arr[0];\r\n const lat1 = +arr[1];\r\n const lon2 = +arr[2];\r\n const lat2 = +arr[3];\r\n const rect = `POLYGON ((${lon1} ${lat1}, ${lon1} ${lat2}, ${lon2} ${lat2}, ${lon2} ${lat1}, ${lon1} ${lat1}))`;\r\n this.withContains(rect);\r\n }\r\n return this;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/VisicomSearchParams.ts","import { Directive, ChangeDetectorRef, Input, OnInit, OnChanges, ElementRef, Output, EventEmitter, ViewContainerRef, OnDestroy, IterableDiffer, IterableDiffers, KeyValueDiffers, KeyValueDiffer, KeyValueChangeRecord, Inject } from '@angular/core';\r\nimport { LeafletDirective } from '@asymmetrik/ngx-leaflet';\r\nimport * as L from 'leaflet';\r\nimport { GeoJSON, Layer, Marker, LatLng, MapOptions, FeatureGroup, LatLngBounds, LayerGroup, featureGroup, canvas, Canvas, DomEvent, Util, control, Map, LeafletMouseEvent, Control, latLng, Zoom, ControlOptions, LatLngExpression } from 'leaflet';\r\nimport { addControlPlaceholders, LeafletHelper } from '../utils/LeafletHelper';\r\nimport { ComponentPropertiesObserver, uid, isNotEmpty, throttle, loadStyle, Reflection, bool, translate, ifEmpty, debounce, detectChanges } from '@core.module';\r\nimport { MapPoint, TMapPoint } from './map-point';\r\nimport { CanvasIconLayer } from '../markers/CanvasIconLayer';\r\nimport { fullScreen, FullScreenControl, FullScreenControlOptions } from '../controls/fullScreen.control';\r\nimport IEnumerable = linqjs.IEnumerable;\r\nimport { ussSearchControl, UssSearchControlOptions } from '../controls/search.control';\r\nimport { MAP_SEARCH_COMPONENT_TYPE } from '../interfaces/map.tokens';\r\n\r\nimport { StoreSettings } from '@settings.module';\r\nimport { APP_ADDRESS_SERVICE_TOKEN, IAppAddressService } from '../services/IAppAddressService';\r\nimport { Address } from '../address/Address';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\nimport { AddressSource } from '../address';\r\nimport { Feature, Geometry } from 'geojson';\r\nimport { MarkerFactory } from '../markers/MarkerFactory';\r\n\r\nexport type TMarkerChangedArgs = {\r\n marker: Marker,\r\n state: 'add' | 'move' | 'edit' | 'remove';\r\n}\r\n\r\nexport interface UssControlOptions {\r\n /** Порядок добавления */ \r\n order?: number;\r\n hidden?: boolean;\r\n}\r\n\r\n\r\nexport interface MapMarkerParams {\r\n /** Широта, градусы */\r\n lat: number;\r\n /** Долгота, градусы */\r\n lng: number;\r\n\r\n /** Время события. (Может быть не установлено - тогда выбирается точка трека максимально приближенная к указанным координатам). */\r\n dateTime?: DateTime;\r\n\r\n /** Текстовое описание */\r\n title?: string;\r\n /** Цвет маркера */\r\n color?: string;\r\n\r\n /** Цвет трека после маркера (не реализовано) */\r\n trackColor?: string;\r\n\r\n /** Тип маркера\r\n * A/a - set/reset alarm\r\n * D/d - forward/backward direction\r\n */\r\n type?: 'A' | 'a' | 'D' | 'd' | '?' | string;\r\n}\r\n\r\n/** Признак того, что это не стандартный маркер, нанесённый на карту, а маркер, который отображается специальным образом */\r\nexport function isCustomMarker(m: MapMarkerParams) {\r\n return 'ad?'.Contains(m?.type, true);\r\n}\r\n\r\n\r\nexport interface UssLocateControlOptions extends L.Control.LocateOptions, UssControlOptions { }\r\nexport interface UssScaleControlOptions extends Control.ScaleOptions, UssControlOptions { }\r\nexport interface UssFullScreenControlOptions extends FullScreenControlOptions, UssControlOptions { }\r\nexport interface UssMeasureControlOptions extends L.Control.PolylineMeasureOptions, UssControlOptions { }\r\nexport interface UssZoomControlOptions extends Control.ZoomOptions, UssControlOptions { }\r\nexport interface UssLayersControlOptions extends UssControlOptions, ControlOptions { }\r\n\r\nexport interface UssSetMarkerOptionsArgs {\r\n /** Ссылка на директиву карты */\r\n mapDirective: MapDirective;\r\n\r\n /** Координаты маркера */\r\n latLng: LatLng;\r\n\r\n /** Центрировать карту по установленному маркеру */\r\n centerMap?: boolean;\r\n /** Заголовок маркера (в попапе и хинте) */\r\n title?: string;\r\n\r\n /** Радиус в котором следует искать адрес относительно переданных координат */\r\n searchRadius?: number;\r\n\r\n /** Создавать попап по-умолчанию */\r\n defaultPopup?: boolean;\r\n\r\n /** Результирующий маркер. Если не передан - будет создан по умолчанию. */\r\n marker?: Marker;\r\n}\r\n\r\nexport interface UssSetMarkerOptions {\r\n /** Использовать одинарный клик вместо двойного для установки маркера */\r\n useSingleClick: boolean;\r\n /** Если задано - это будет значение this при вызове метода. */\r\n bindTo: any;\r\n /** Дополнительный контекст, передаваемый в качестве параметра в функцию. */ \r\n context: any;\r\n /** Единственный маркер на карте. При попытке установить ещё один - предыдущий маркер уничтожается. */\r\n onlyMarkerOnMap?: boolean;\r\n\r\n /** Радиус в котором следует искать адрес относительно переданных координат */\r\n searchRadius: number;\r\n\r\n /** Вызывается при установке маркера на карте при двойном клике или выборе адреса. Если вернёт `true` - стандартная обработка будет отменена. */\r\n onSetMarker: (e: UssSetMarkerOptionsArgs, context?: any) => boolean|void;\r\n\r\n /** Вызывается после определения адреса по координатам. Может вернуть новый адрес. Если ничего не возвращает - используется переданный. */\r\n onAddressResolved: (address: Address, addressServiceName: string, context?: any) => Address|void;\r\n\r\n /** Маркер можно перемещать по карте. По умалчанию - да (для не внутренних маркеров). */\r\n draggable?: boolean;\r\n\r\n /** Признак внутреннего маркера. Внутренний маркер не добавляется в список обыных маркеров и не появляется в роуте карты по умолчанию. */\r\n internal?: boolean;\r\n}\r\n\r\n/**\r\n * Динамическая загрузка стилей модуля.\r\n * Необходимо добавить в файл webpack.config.js в раздел webpackConfig.entry элемент\r\n * {'maps-styles.css': './src/system/map.module/styles.browser.ts'}\r\n */\r\nloadStyle('maps-styles.css');\r\n\r\n@Directive({\r\n selector: '[leaflet][map]',\r\n exportAs: 'ussMap'\r\n})\r\nexport class MapDirective implements OnInit, OnChanges, OnDestroy {\r\n\r\n /**\r\n * '1_Visicom'\r\n * '2_OSM'\r\n * '3_GoogleStreet'\r\n */\r\n public static DefaultMapLayer: string;\r\n\r\n // ReSharper disable once InconsistentNaming\r\n @Input('map') _map: ((options: MapOptions) => MapOptions) | string;\r\n\r\n get map(): Map { return this.leaflet.map }\r\n\r\n /**\r\n * Параметры зумирования при позиционировании:\r\n * `false`|null|undefined - оставить текущий зум карты,\r\n * `true` - использовать значение zoom.initial из параметров $appSettings\r\n * числовое значение в противном случае\r\n */\r\n @Input('fitZoom') fitZoom: number | string;\r\n\r\n //#region - search.control -\r\n private _searchControl: Control;\r\n private _defSearchControlOptions = {\r\n order: -1,\r\n position: 'topleft',\r\n useMapCenter: true,\r\n autoSetMarker: true,\r\n };\r\n searchControlOptions: UssSearchControlOptions;\r\n\r\n @Input('searchControl')\r\n set _searchControlOptions(value: UssSearchControlOptions | string | boolean) {\r\n if (value && typeof value === 'object')\r\n this.searchControlOptions = _defaultsDeep(value, this._defSearchControlOptions);\r\n else if (!bool(value, true)) this.searchControlOptions = null;\r\n else this.searchControlOptions = this._defSearchControlOptions;\r\n }\r\n //#endregion - search.control -\r\n\r\n //#region - locate.control -\r\n private _locateControl: Control;\r\n private _defLocateControlOptions = {\r\n position: 'centerright'\r\n };\r\n private locateControlOptions: UssLocateControlOptions;\r\n\r\n @Input('locateControl')\r\n set _locateControlOptions(value: boolean | string | UssLocateControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.locateControlOptions = _defaultsDeep(value, this._defLocateControlOptions);\r\n else if (!bool(value, true)) this.locateControlOptions = null;\r\n else this.locateControlOptions = this._defLocateControlOptions;\r\n }\r\n //#endregion - locate.control -\r\n\r\n //#region - scale.control (Масштаб) -\r\n private _scaleControl: Control;\r\n private _defScaleControlOptions = {\r\n order: 0,\r\n position: 'bottomleft',\r\n imperial: false\r\n };\r\n private scaleControlOptions: UssScaleControlOptions = this._defScaleControlOptions;\r\n\r\n @Input('scaleControl')\r\n set _scaleControlOptions(value: boolean | string | UssScaleControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.scaleControlOptions = _defaultsDeep(value, this._defScaleControlOptions);\r\n else if (!bool(value, true)) this.scaleControlOptions = null;\r\n else this.scaleControlOptions = this._defScaleControlOptions;\r\n }\r\n //#endregion - scale.control -\r\n\r\n //#region - fullscreen.control -\r\n private _fullScreenControl: Control;\r\n private _defFullScreenControlOptions = {\r\n order: 10001\r\n };\r\n private fullScreenControlOptions: UssFullScreenControlOptions = this._defFullScreenControlOptions;\r\n\r\n @Input('fullScreenControl')\r\n set _fullScreenControlOptions(value: boolean | string | UssFullScreenControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.fullScreenControlOptions = _defaultsDeep(value, this._defFullScreenControlOptions);\r\n else if (!bool(value, true)) this.fullScreenControlOptions = null;\r\n else this.fullScreenControlOptions = this._defFullScreenControlOptions;\r\n }\r\n //#endregion - fullscreen.control -\r\n\r\n //#region - measure.control -\r\n private _measureControl: Control;\r\n private _defMeasureControlOptions = {\r\n order: 10002,\r\n position: 'topright', // Position to show the control. Possible values are: 'topright', 'topleft', 'bottomright', 'bottomleft'\r\n unit: 'metres', // Show imperial or metric distances. Values: 'metres', 'landmiles', 'nauticalmiles'\r\n measureControlTitleOn: '@LEAFLET.@CONTROL.MEASURE.ON|Включить линейку',\r\n measureControlTitleOff: '@LEAFLET.@CONTROL.MEASURE.OFF|Выключить линейку',\r\n measureControlLabel: '📏', // HTML to place inside the control\r\n measureControlClasses: [], // Classes to apply to the control\r\n backgroundColor: '#8f8', // Background color for control when selected\r\n cursor: 'crosshair', // Cursor type to show when creating measurements\r\n clearMeasurementsOnStop: true, // Clear all the measurements when the control is unselected\r\n showMeasurementsClearControl: false, // Show a control to clear all the measurements\r\n showUnitControl: false, // Show a control to change the units of measurements\r\n };\r\n private measureControlOptions: UssMeasureControlOptions /* = this._defMeasureControlOptions*/;\r\n\r\n @Input('measureControl')\r\n set _measureControlOptions(value: boolean | string | UssMeasureControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.measureControlOptions = _defaultsDeep(value, this._defMeasureControlOptions);\r\n else if (!bool(value, true)) this.measureControlOptions = null;\r\n else this.measureControlOptions = this._defMeasureControlOptions;\r\n }\r\n //#endregion - measure.control -\r\n\r\n //#region - zoom.control -\r\n private _zoomControl: Control;\r\n private _defZoomControlOptions = {\r\n order: 0\r\n };\r\n private zoomControlOptions: UssZoomControlOptions = this._defZoomControlOptions;\r\n\r\n @Input('zoomControl')\r\n set _zoomControlOptions(value: boolean | string | UssZoomControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.zoomControlOptions = _defaultsDeep(value, this._defZoomControlOptions);\r\n else if (!bool(value, true)) this.zoomControlOptions = null;\r\n else this.zoomControlOptions = this._defZoomControlOptions;\r\n }\r\n //#endregion - zoom.control -\r\n\r\n //#region - layers.control -\r\n private _layersControl: Control;\r\n private _defLayersControlOptions = {\r\n order: 10003\r\n };\r\n private layersControlOptions: UssLayersControlOptions = this._defLayersControlOptions;\r\n\r\n @Input('layersControl')\r\n set _layersControlOptions(value: boolean | string | UssLayersControlOptions) {\r\n if (value && typeof value === 'object')\r\n this.layersControlOptions = _defaultsDeep(value, this._defLayersControlOptions);\r\n else if (!bool(value, true)) this.layersControlOptions = null;\r\n else this.layersControlOptions = this._defLayersControlOptions;\r\n }\r\n //#endregion - layers.control -\r\n\r\n mapPoints: MapPoint[] = [];\r\n @Input('points') points: TMapPoint[] = [];\r\n\r\n canvasMapPoints: MapPoint[] = [];\r\n @Input('canvasPoints') canvasPoints: TMapPoint[] = [];\r\n\r\n @Input('setMarkerOnDblClick') setMarkerOnDblClick: boolean = false;\r\n\r\n @Input('setMarkerOptions') setMarkerOptions: UssSetMarkerOptions;\r\n\r\n @Output('onMapReady') onMapReady = new EventEmitter();\r\n\r\n @Output('mapClick') mapClick = new EventEmitter();\r\n\r\n /** Вызывается при добалении или удалении маркера на карту (при удалении параметр равен null) */\r\n @Output('onMarkerChanged') onMarkerChanged = new EventEmitter();\r\n\r\n private mapLayers: Layer[] = [];\r\n private id = uid();\r\n\r\n private _resizeObserver: ResizeObserver;\r\n\r\n private _pointsRenderer: Canvas;\r\n\r\n private _clicked: boolean;\r\n private _clickQueue: (() => void)[] = [];\r\n private _pointsLayer: LayerGroup;\r\n private _canvasIconLayer: CanvasIconLayer;\r\n private _updateCanvasIconLayerTag = `${this.id}:updateCanvasIconLayer`;\r\n\r\n @StoreSettings() defaultLayer: string = MapDirective.DefaultMapLayer;\r\n \r\n /** Карта загружена и проинициализирована */\r\n isMapReady: boolean;\r\n\r\n _observer: ComponentPropertiesObserver;\r\n\r\n constructor(public leaflet: LeafletDirective,\r\n private el: ElementRef,\r\n private changeDetector: ChangeDetectorRef,\r\n public viewContainer: ViewContainerRef,\r\n @Inject(APP_ADDRESS_SERVICE_TOKEN) private addressService: IAppAddressService\r\n ) {\r\n this.el.nativeElement.style.height = '100%';\r\n this.el.nativeElement.style.width = '100%';\r\n\r\n // восстановление выбранного слоя карты\r\n let options = LeafletHelper.getOptions(undefined, this.defaultLayer);\r\n if (typeof this._map === 'function') options = this._map(options);\r\n this.leaflet.options = options;\r\n\r\n this._observer = new ComponentPropertiesObserver(\r\n {\r\n component: this,\r\n propertyNames:\r\n [\r\n 'points',\r\n 'canvasPoints',\r\n 'searchControlOptions',\r\n 'locateControlOptions',\r\n 'scaleControlOptions',\r\n 'fullScreenControlOptions',\r\n 'measureControlOptions',\r\n 'zoomControlOptions',\r\n 'layersControlOptions'\r\n ]\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._resizeObserver?.disconnect();\r\n this._observer?.release();\r\n }\r\n\r\n ngOnChanges(c) {\r\n if (this.map && this.map['$mapDirective']) {\r\n if (c.points) {\r\n //console.log(\"points changed\", changes);\r\n this.updateLayers(true);\r\n this.map.fireEvent('moveend');\r\n this.changeDetector.detectChanges();\r\n this.updateLayers(true);\r\n }\r\n if (c.canvasPoints) {\r\n //console.log(\"canvasPoints changed\", changes);\r\n this.updateCanvasPointLayer(true);\r\n this.map.fireEvent('moveend');\r\n this.changeDetector.detectChanges();\r\n this.updateCanvasPointLayer(true);\r\n }\r\n if (c.searchControlOptions) {\r\n this.initControls();\r\n }\r\n }\r\n }\r\n\r\n get canClick() {\r\n return !this.map['$disableMapClick'];\r\n }\r\n\r\n initControls(forced?: boolean) {\r\n if (forced) {\r\n const map = this.map;\r\n if (!map) return;\r\n\r\n let controlOptions;\r\n\r\n this._zoomControl = this._zoomControl || ((map))['zoomControl'];\r\n\r\n const removeControl = (control: Control, controlOptions: UssControlOptions): Control => {\r\n let res = control;\r\n if (control && (!controlOptions || controlOptions.hidden)) {\r\n map.removeControl(control);\r\n res = null;\r\n }\r\n return res;\r\n }\r\n\r\n const addControl = (source: UssControlOptions, factory: () => Control) => {\r\n if (controlOptions === source) {\r\n const control = factory();\r\n if (control) {\r\n controlOptions.position && control.setPosition(controlOptions.position);\r\n control.addTo(map);\r\n }\r\n }\r\n }\r\n\r\n\r\n this._fullScreenControl = removeControl(this._fullScreenControl, this.fullScreenControlOptions);\r\n this._scaleControl = removeControl(this._scaleControl, this.scaleControlOptions);\r\n this._locateControl = removeControl(this._locateControl, this.locateControlOptions);\r\n this._layersControl = removeControl(this._layersControl, this.layersControlOptions);\r\n this._measureControl = removeControl(this._measureControl, this.measureControlOptions);\r\n this._searchControl = removeControl(this._searchControl, this.searchControlOptions);\r\n this._zoomControl = removeControl(this._zoomControl, this.zoomControlOptions);\r\n\r\n const visibleControls = [\r\n this.fullScreenControlOptions,\r\n this.scaleControlOptions,\r\n this.locateControlOptions,\r\n this.measureControlOptions,\r\n this.searchControlOptions,\r\n this.zoomControlOptions,\r\n this.layersControlOptions,\r\n ];\r\n\r\n for (controlOptions of visibleControls.where(x => !!x && !x.hidden).orderBy(x => ifEmpty(x.order, Number.MAX_VALUE)).toArray()) {\r\n\r\n \r\n addControl(this.fullScreenControlOptions,\r\n () => {\r\n const res = (this._fullScreenControl = this._fullScreenControl || fullScreen(controlOptions));\r\n res.options.titleOn = translate.instant((controlOptions).titleOn);\r\n res.options.titleOff = translate.instant((controlOptions).titleOff);\r\n return res;\r\n });\r\n addControl(this.scaleControlOptions, () => (this._scaleControl = this._scaleControl || control.scale(controlOptions)));\r\n addControl(this.locateControlOptions, () => (this._locateControl = this._locateControl || control.locate(controlOptions)));\r\n addControl(this.measureControlOptions /*3*/,\r\n () => {\r\n if (!this._measureControl) {\r\n this._measureControl = control.polylineMeasure(controlOptions);\r\n map.off('polylinemeasure:toggle');\r\n map.on('polylinemeasure:toggle',\r\n x => {\r\n map['$disableMapClick'] = x['status'] || x['sttus'] // fix bug;\r\n for (let i in map['_layers']) {\r\n const l = map['_layers'][i];\r\n if (l.options && (l.options.interactive || l.options.$interactive)) {\r\n l.fire('polylinemeasure:toggle', x);\r\n }\r\n }\r\n });\r\n }\r\n (this._measureControl.options).measureControlTitleOn = translate.instant((controlOptions).measureControlTitleOn);\r\n (this._measureControl.options).measureControlTitleOff = translate.instant((controlOptions).measureControlTitleOff);\r\n return this._measureControl;\r\n });\r\n addControl(this.searchControlOptions,\r\n () => {\r\n if (!this._searchControl) {\r\n const componentType = Reflection.get(MAP_SEARCH_COMPONENT_TYPE);\r\n if (componentType) {\r\n this._searchControl = ussSearchControl(this, componentType, controlOptions);\r\n }\r\n }\r\n return this._searchControl;\r\n });\r\n addControl(this.zoomControlOptions, () => this._zoomControl);\r\n addControl(this.layersControlOptions,\r\n () => (this._layersControl = this._layersControl ||\r\n control.layers(map.options['$layers'] || LeafletHelper.Defaults.tile)));\r\n }\r\n } else {\r\n debounce(() => this.initControls(true), 100, `${this.id}.initControls`);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.map['$mapDirective'] = this;\r\n this.setMarkerOnDblClick = bool(this.setMarkerOnDblClick, true);\r\n\r\n this._zoomControl = ((this.map))['zoomControl'];\r\n this.map.removeControl(this._zoomControl);\r\n\r\n addControlPlaceholders(this.map);\r\n this.initControls();\r\n\r\n // запись адресного сервиса, который берётся из данных тайла или по умолчанию\r\n this.map['$addressService'] = this.map.options.layers[0]['options']['$addressService'] || LeafletHelper.Defaults.defaultAddressService;\r\n // автоматическое сохранение выбранного слоя карты\r\n this.map.on('baselayerchange',\r\n (e: any) => {\r\n if (e.layer.$id) {\r\n this.defaultLayer = e.layer.$id;\r\n // запись адресного сервиса, который берётся из данных тайла или по умолчанию\r\n this.map['$addressService'] = e.layer.options['$addressService'] || LeafletHelper.Defaults.defaultAddressService;\r\n }\r\n });\r\n\r\n this.map.whenReady(() => this.whenMapReady());\r\n\r\n this.map.on('click',\r\n (e: LeafletMouseEvent) => {\r\n if (this.canClick) {\r\n this._clicked = true;\r\n setTimeout(() => {\r\n try {\r\n if (this._clicked) {\r\n if (this.setMarkerOnDblClick && this.setMarkerOptions?.useSingleClick) {\r\n this.addPointMarker(e.latlng, null, null, true);\r\n }\r\n this.onMapClick(e);\r\n for (let action of this._clickQueue) {\r\n action();\r\n }\r\n }\r\n } finally {\r\n this._clickQueue = [];\r\n this._clicked = false;\r\n }\r\n },\r\n 100);\r\n }\r\n });\r\n\r\n this.map.doubleClickZoom.disable();\r\n if (!(this.setMarkerOptions?.useSingleClick)) {\r\n this.map.on(this.setMarkerOptions?.useSingleClick ? 'click' : 'dblclick',\r\n (e: LeafletMouseEvent) => {\r\n if (this.canClick) {\r\n this._clicked = false;\r\n if (this.setMarkerOnDblClick) {\r\n this.addPointMarker(e.latlng, null, null, true);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleClick(action: () => void) {\r\n if (this.canClick) {\r\n this._clickQueue.push(action);\r\n }\r\n }\r\n\r\n /** Получает адрес по координатам, используя текущий адресный сервис */\r\n async resolveAddress(latLng: LatLngExpression, searchRadius: number): Promise
{\r\n const addressServiceName = this.map['$addressService'];\r\n let res = await this.addressService.get$(latLng, addressServiceName, ifEmpty(searchRadius, 100)).toPromise();\r\n if (res?.Source instanceof AddressSource) {\r\n await res.Source.assignParentPropertiesAsync();\r\n }\r\n if (res) {\r\n res.center = latLng;\r\n }\r\n if (typeof this.setMarkerOptions?.onAddressResolved === 'function') {\r\n const fn = (isNotEmpty(this.setMarkerOptions.bindTo) ? this.setMarkerOptions.onAddressResolved.bind(this.setMarkerOptions.bindTo) : this.setMarkerOptions.onAddressResolved);\r\n res = fn(res, addressServiceName, this.setMarkerOptions.context) || res;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n /** Добавляет простой маркер на карту. */\r\n addPointMarker(latlng: L.LatLngExpression | MapMarkerParams, centerMap?: boolean, title?: string, defaultPopup?: boolean, setMarkerOptionsOrInternal?: UssSetMarkerOptions | boolean) {\r\n\r\n const setMarkerOptions = (setMarkerOptionsOrInternal && typeof setMarkerOptionsOrInternal === 'object') ? setMarkerOptionsOrInternal : this.setMarkerOptions;\r\n const internal = (typeof setMarkerOptionsOrInternal === 'boolean' ? setMarkerOptionsOrInternal : setMarkerOptions?.draggable) ?? false;\r\n const draggable = setMarkerOptions?.draggable ?? !internal;\r\n\r\n if (setMarkerOptions?.onlyMarkerOnMap) {\r\n this.map.eachLayer(l => l['$dblClickMarker'] && l.remove());\r\n }\r\n let ll = latLng(latlng);\r\n let res: Marker = null;\r\n let searchRadius = setMarkerOptions?.searchRadius;\r\n title = title || (latlng as MapMarkerParams).title;\r\n\r\n\r\n if (typeof setMarkerOptions?.onSetMarker === 'function') {\r\n const e = {\r\n mapDirective: this,\r\n latLng: ll,\r\n centerMap,\r\n title,\r\n searchRadius,\r\n defaultPopup\r\n };\r\n const fn = (isNotEmpty(setMarkerOptions.bindTo) ? setMarkerOptions.onSetMarker.bind(setMarkerOptions.bindTo) : setMarkerOptions.onSetMarker);\r\n if (fn(e, setMarkerOptions.context)) return null;\r\n res = e.marker;\r\n centerMap = e.centerMap;\r\n title = e.title;\r\n defaultPopup = e.defaultPopup;\r\n searchRadius = e.searchRadius;\r\n ll = e.latLng;\r\n }\r\n\r\n if (!res) {\r\n res = LeafletHelper.createMarker(ll);\r\n if (draggable) {\r\n res = (res as MarkerFactory).withDraggable(ev => {\r\n if (!res['title']) {\r\n delete res['address'];\r\n LeafletHelper.setTitle(res, `${ev.target._latlng.lat};${ev.target._latlng.lng}`);\r\n // попытка получить адрес по координатам\r\n this.resolveAddress(ev.target._latlng, searchRadius).then(a => {\r\n if (a.Address) {\r\n LeafletHelper.setTitle(res, a.Address);\r\n res['address'] = a.Address;\r\n }\r\n });\r\n }\r\n this.onMarkerChanged.emit({marker: res, state: 'move'});\r\n });\r\n }\r\n }\r\n if (!res) return res;\r\n res['$internal'] = !!internal;\r\n res.once('remove', () => this.onMarkerChanged.emit({marker: res, state: 'remove'}));\r\n res.once('add',\r\n () => {\r\n if (centerMap) {\r\n // отцентрировать карту на объекте\r\n this.fitTo(ll);\r\n }\r\n this.onMarkerChanged.emit({marker: res, state: 'add'});\r\n });\r\n if (title) {\r\n LeafletHelper.setTitle(res, title);\r\n res['title'] = title;\r\n if (typeof this.setMarkerOptions?.onAddressResolved === 'function') {\r\n // получить адрес по координатам\r\n this.resolveAddress(ll, searchRadius);\r\n }\r\n } else {\r\n // установка координат в качестве заголовка\r\n delete res['address'];\r\n LeafletHelper.setTitle(res, `${ll.lat};${ll.lng}`);\r\n // попытка получить адрес по координатам\r\n this.resolveAddress(ll, searchRadius).then(a => {\r\n if (a.Address) {\r\n LeafletHelper.setTitle(res, a.Address);\r\n res['address'] = a.Address;\r\n }\r\n });\r\n }\r\n if (defaultPopup) {\r\n res.bindPopup(() => {\r\n const popupDiv = document.createElement('div');\r\n const titleDiv = document.createElement('div');\r\n titleDiv.style.color = 'white';\r\n const coord = `${res['_latlng'].lat};${res['_latlng'].lng}`;\r\n titleDiv.innerHTML = `\r\n
\r\n ${title || translate.instant('@LEAFLET.COORDINATE|Координата')}\r\n
\r\n
alert('OK'))\">\r\n ${coord}\r\n
`;\r\n const closeButtonDiv = document.createElement('div');\r\n closeButtonDiv.style.fontSize = '120%';\r\n closeButtonDiv.style.display = 'flex';\r\n closeButtonDiv.style.justifyContent = 'center';\r\n closeButtonDiv.style.columnGap = '8px';\r\n closeButtonDiv.style.marginTop = '0.5em';\r\n\r\n const closeAllButton = document.createElement('button');\r\n closeAllButton.innerText = translate.instant('@LEAFLET.REMOVE_ALL_MARKERS|Убрать все');\r\n closeAllButton.style.color = 'red';\r\n closeAllButton.onclick = () => {\r\n this.removeMarkers();\r\n };\r\n closeButtonDiv.appendChild(closeAllButton);\r\n\r\n const closeButton = document.createElement('button');\r\n closeButton.innerText = translate.instant('@LEAFLET.REMOVE_MARKER|Убрать маркер');\r\n closeButton.onclick = () => this.map.removeLayer(res);\r\n closeButtonDiv.appendChild(closeButton);\r\n\r\n popupDiv.appendChild(titleDiv);\r\n popupDiv.appendChild(closeButtonDiv);\r\n const titleEl = titleDiv.querySelector('.title>b') as HTMLElement;\r\n if (titleEl) {\r\n (res['title'] || res['address']) && (titleEl.innerText = res['title'] || res['address']);\r\n titleEl.onclick = () => {\r\n const r = prompt(translate.instant('@LEAFLET.SET_MARKER_TITLE|Заголовок'), titleEl.innerText);\r\n if (r) {\r\n title = r;\r\n titleEl.innerText = r;\r\n res['title'] = r;\r\n LeafletHelper.setTitle(res, r);\r\n this.onMarkerChanged.emit({marker: res, state: 'edit'});\r\n }\r\n };\r\n }\r\n return popupDiv;\r\n });\r\n }\r\n res.addTo(this.map);\r\n return res;\r\n }\r\n\r\n /**\r\n * Возвращает список маркеров на карте.\r\n * @param internal - `true` - возвращает внутренние маркеры. Иначе - не внутренние (установленные на карте по двойному клику).\r\n */\r\n getMarkers(internal: boolean = false): MapMarkerParams[] {\r\n const res = [];\r\n for (let key in this.map['_layers']) {\r\n const layer = this.map['_layers'][key];\r\n if (layer['$internal'] === !!internal) {\r\n const ll = layer.getLatLng();\r\n res.push({\r\n lat: ll.lat,\r\n lng: ll.lng,\r\n title: layer['title']\r\n });\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /** Удаляет с карты маркеры.\r\n * @param internal - `true` - удаляет внутренние маркеры. Иначе - не внутренние (установленные на карте по двойному клику).\r\n */\r\n removeMarkers(internal: boolean = false) {\r\n let emitEvent = false;\r\n for (let key in this.map['_layers']) {\r\n const layer = this.map['_layers'][key];\r\n if (layer['$internal'] === !!internal) {\r\n this.map.removeLayer(layer);\r\n emitEvent = true;\r\n }\r\n }\r\n emitEvent && this.onMarkerChanged.emit(null);\r\n }\r\n\r\n onMapClick(e) {\r\n if (this.canClick) {\r\n this.mapClick.emit(e);\r\n }\r\n }\r\n\r\n whenMapReady() {\r\n this.map['$isReady'] = true;\r\n const pointsPane = this.map.createPane('pointsPane');\r\n pointsPane.style.zIndex = '648';\r\n\r\n this._pointsRenderer = canvas({ pane: 'pointsPane' });\r\n this._pointsRenderer['_initContainer']();\r\n this._pointsRenderer['_container'].style.pointerEvents = 'none';\r\n DomEvent.on(this.map['_container'],\r\n 'mousemove',\r\n Util.throttle(this._pointsRenderer['_onMouseMove'], 32, this._pointsRenderer),\r\n this._pointsRenderer);\r\n\r\n this.map.on('zoomend', () => this.map.eachLayer(l => l.fire('zoomend')));\r\n this.map.eachLayer(l => l.fire('zoomend'));\r\n\r\n this.updateLayers();\r\n this.updateCanvasPointLayer();\r\n this.leaflet.onResize();\r\n this._resizeObserver = new ResizeObserver(() => this.leaflet.onResize());\r\n this._resizeObserver.observe(this.el.nativeElement);\r\n\r\n\r\n /*\r\n this.map.once('resize', () => {\r\n this.isMapReady = true;\r\n this.onMapReady.emit(this.map);\r\n });\r\n */\r\n\r\n setTimeout(() => {\r\n this.isMapReady = true;\r\n this.onMapReady.emit(this.map);\r\n });\r\n\r\n this.redrawCanvasPointLayer();\r\n }\r\n\r\n /** отцентрировать карту по главным точкам */\r\n fitToPoints(points: MapPoint[], forced?: boolean, extraLayers?: Layer[] | IEnumerable) {\r\n let fitLayers = points\r\n .where(x => forced && x.fitToPoint !== false || x.fitToPoint === true)\r\n .selectMany(x => [x.marker /*, (x).geometryLayer*/])\r\n .union(extraLayers || [])\r\n .where(x => isNotEmpty(x))\r\n .toArray();\r\n if (fitLayers.length > 0) {\r\n this.fitTo(fitLayers);\r\n } else {\r\n // если таких нет - то по всем доступным\r\n fitLayers = points\r\n .where(x => x.fitToPoint !== false)\r\n .selectMany(x => [x.marker /*, (x).geometryLayer*/])\r\n .union(extraLayers || [])\r\n .where(x => isNotEmpty(x))\r\n .toArray();\r\n if (fitLayers.length > 0) {\r\n this.fitTo(fitLayers);\r\n }\r\n }\r\n }\r\n\r\n updateLayers(updateMapPoints?: boolean, forced?: boolean) {\r\n if (forced) {\r\n if (updateMapPoints) {\r\n if (this.points) {\r\n this.mapPoints = this.points.select(x => MapPoint.create(x)).where(x => !!(x.lat && x.lng)).toArray();\r\n } else {\r\n this.mapPoints = [];\r\n }\r\n }\r\n\r\n if (!this.map['$isReady']) return;\r\n this._pointsLayer = this._pointsLayer || featureGroup().addTo(this.map);\r\n const currentLayers: Layer[] = this.mapPoints\r\n .selectMany(x => {\r\n /*\r\n x.doGeometryResolve = (p) => {\r\n this.updateLayers();\r\n this.geometryResolve.emit(p);\r\n };\r\n */\r\n /*\r\n x.doAddressResolve = (p) => {\r\n this.addressResolve.emit(p);\r\n };\r\n */\r\n x.redraw = () => {\r\n if (x.fitToPoint) {\r\n throttle(() => {\r\n if (x.fitToPoint) {\r\n this.fitToPoints(this.mapPoints);\r\n }\r\n },\r\n 0,\r\n this._updateCanvasIconLayerTag);\r\n }\r\n };\r\n return [x.marker /*, (x).geometryLayer*/];\r\n })\r\n .where(x => isNotEmpty(x))\r\n .toArray();\r\n\r\n // удалить ненужные\r\n for (let l of this.mapLayers.toArray()) {\r\n if (!currentLayers.contains(l)) {\r\n //this.map.removeLayer(l);\r\n this._pointsLayer.removeLayer(l);\r\n this.mapLayers.Remove(l);\r\n }\r\n }\r\n // добавить новые\r\n for (let l of currentLayers) {\r\n if (!this.mapLayers.contains(l)) {\r\n //this.map.addLayer(l);\r\n //l['options'].pane = 'pointsPane';\r\n l['options'].renderer = this._pointsRenderer;\r\n this._pointsLayer.addLayer(l);\r\n this.mapLayers.push(l);\r\n }\r\n }\r\n this._pointsLayer.setZIndex(649);\r\n // отцентрировать карту по главным точкам\r\n // this.fitToPoints(this.mapPoints);\r\n }\r\n else {\r\n debounce(() => this.updateLayers(updateMapPoints, true), 100, `${this.id}.${!!updateMapPoints}:updateLayers`);\r\n }\r\n }\r\n /**\r\n * Перерисовка Canvas-слоя.\r\n * Следует вызывать при изменении свойств объектов этого слоя (координат, цвета, ориентации и т.д.)\r\n */\r\n public redrawCanvasPointLayer() {\r\n this._canvasIconLayer?.redraw();\r\n debounce(() => this._canvasIconLayer?.redraw(), 1000, this._updateCanvasIconLayerTag);\r\n }\r\n\r\n updateCanvasPointLayer(updateCanvasPoints?: boolean) {\r\n if (updateCanvasPoints) {\r\n if (this.canvasPoints) {\r\n this.canvasMapPoints = this.canvasPoints\r\n .select(x => MapPoint.create(x))\r\n .where(x => !!(x.lat && x.lng))\r\n .toArray();\r\n } else {\r\n this.canvasMapPoints = [];\r\n }\r\n }\r\n\r\n if (!this.map['$isReady']) return;\r\n\r\n this._canvasIconLayer?.clear();\r\n if (this.canvasMapPoints.length > 0) {\r\n this._canvasIconLayer = this._canvasIconLayer || new CanvasIconLayer({ pane: 'pointsPane' }).addTo(this.map);\r\n (this._canvasIconLayer).addMarkers(this.canvasMapPoints.select(x => {\r\n x.isCustomIconDrawing = true;\r\n x.redraw = () => {\r\n if (x.fitToPoint) {\r\n throttle(() => {\r\n if (x.fitToPoint) {\r\n this.fitToPoints(this.canvasMapPoints);\r\n }\r\n (this._canvasIconLayer).redraw();\r\n },\r\n 0,\r\n this._updateCanvasIconLayerTag);\r\n }\r\n };\r\n return x.marker;\r\n }).toArray());\r\n }\r\n // отцентрировать карту по главным точкам\r\n// this.fitToPoints(this.mapPoints);\r\n }\r\n\r\n detectChanges() {\r\n detectChanges(this.changeDetector);\r\n }\r\n\r\n// export type LatLngExpression = LatLng | LatLngLiteral | LatLngTuple;\r\n\r\n fitTo(x: Layer | Layer[] | FeatureGroup | LatLngBounds | LatLngExpression, fitZoom?: number) {\r\n LeafletHelper.fitTo(x, this.map, fitZoom || +this.fitZoom);\r\n this.redrawCanvasPointLayer();\r\n }\r\n\r\n /**\r\n * Создание маркера по координатам\r\n */\r\n createMarker(point: LatLng | MapPoint, fitToMarker: boolean = false): Marker {\r\n let res = null;\r\n const p = MapPoint.create(point);\r\n if (p) {\r\n res = p.marker;\r\n fitToMarker && res.once('add', () => {\r\n // отцентрировать карту на объекте\r\n this.fitTo(res);\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Получение геометрии объекта из адреса\r\n */\r\n async createGeometryAsync(addr: Address | AddressSource | LatLng): Promise {\r\n let res = null;\r\n let geometry = (addr instanceof Address) ? addr.Source : addr;\r\n if (geometry instanceof AddressSource) {\r\n if (geometry.source) {\r\n if (!geometry.source.geometry) {\r\n const id = geometry.getSourceId();\r\n if (id) {\r\n res = this.createGeometry((await this.addressService.feature$(id, this.leaflet.map['$addressService']).toPromise()));\r\n } \r\n } else {\r\n res = this.createGeometry(geometry.source.geometry);\r\n }\r\n }\r\n }\r\n else if (addr instanceof LatLng) {\r\n // ????\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Получение геометрии объекта\r\n */\r\n createGeometry(geometry: Feature | Geometry | string): Feature {\r\n let res = null;\r\n if (typeof geometry === 'string') {\r\n geometry = LeafletHelper.fromWKT(geometry);\r\n }\r\n if (!LeafletHelper.isFeature(geometry)) {\r\n geometry = { geometry: geometry, type: 'Feature' };\r\n }\r\n const featureGeometry = geometry;\r\n if (featureGeometry.geometry && featureGeometry.geometry.type !== 'Point') {\r\n res = featureGeometry;\r\n }\r\n return res;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/directives/map.directive.ts","import { SettlementClass, Category, VisicomFeature, AdmCountryProperties, AdrAddressProperties, AdmLevel1Properties, AdmLevel2Properties, AdmLevel3Properties, AdmSettlementProperties, AdmDistrictProperties, PoiProperties, AdrStreetProperties } from '.';\r\nimport { Address, AddressSource, KnownAddressSource } from '../../../address';\r\nimport { isNotEmpty, Reflection } from '@core.module';\r\nimport { LatLngLiteral } from 'leaflet';\r\nimport { LeafletHelper } from '../../../utils/LeafletHelper';\r\nimport { VisicomUtils } from './VisicomUtils';\r\nimport { AppVisicomService } from '../visicom.service';\r\nimport { GeocodeParams } from '../params/GeocodeParams';\r\n\r\n// ReSharper disable InconsistentNaming\r\n@KnownAddressSource()\r\nexport class VisicomAddressSource extends AddressSource {\r\n\r\n static getSource(address: Address, source: VisicomFeature | App.AddressServiceType, action?: (s: AddressSource) => void): AddressSource {\r\n let res = null;\r\n if (source instanceof VisicomAddressSource) {\r\n res = source;\r\n } else if (source === App.AddressServiceType.Visicom || source && typeof source === 'object' && LeafletHelper.isFeature(source) && isNotEmpty(source.geo_centroid)) {\r\n res = new VisicomAddressSource(address, typeof source === 'object' ? source : null);\r\n }\r\n if (res && action) action(res);\r\n return res;\r\n }\r\n\r\n setCenter(p: LatLngLiteral) {\r\n if (this.source && this.source.geo_centroid) {\r\n this.source.geo_centroid.coordinates = p ? [p.lng, p.lat] : null;\r\n }\r\n } \r\n\r\n assignAddress(address?: Address) {\r\n super.assignAddress(address);\r\n this.assignAddressFromFeature(this.owner, this.source);\r\n }\r\n\r\n private assignAddressFromFeature(address: Address, feature: VisicomFeature) {\r\n if (!address || !feature) return;\r\n address.BoundingBox = (feature.bbox || feature.geometry?.bbox)?.join(',');\r\n if (feature.geo_centroid.coordinates) {\r\n address.center = feature.geo_centroid.coordinates;\r\n } else {\r\n address.center = null;\r\n }\r\n if (feature.properties) {\r\n // парсинг\r\n switch (feature.properties['categories']) {\r\n /** cтрана */\r\n case Category.Country:\r\n const c = feature.properties;\r\n address.CountryCode = c.country_code || ''; // ua\r\n address.Country = c.name || ''; // Україна\r\n break;\r\n /** область */\r\n case Category.Region:\r\n const r = feature.properties;\r\n address.CountryCode = r.country_code || ''; // ua\r\n address.Country = r.country || ''; // Україна\r\n\r\n address.RegionCode = r.gov_id; // UA23000000000064947\r\n address.Region = r.name || ''; // Запорізька область\r\n break;\r\n /** областной район */\r\n case Category.Area:\r\n const ar = feature.properties;\r\n address.CountryCode = ar.country_code || ''; // ua\r\n address.Country = ar.country || ''; // Україна\r\n\r\n address.RegionCode = ar.level1_id || ''; // UA23000000000064947\r\n address.Region = ar.level1 || ''; // Запорізька область\r\n\r\n address.AreaCode = ar.gov_id; // UA23060000000070350\r\n address.Area = ar.name || ''; // Запорізький район\r\n break;\r\n /** Третий уровень административно-территориального деления страны */\r\n case Category.Level3:\r\n const l3 = feature.properties;\r\n address.CountryCode = l3.country_code || ''; // ua\r\n address.Country = l3.country || ''; // Україна\r\n\r\n address.RegionCode = l3.level1_id || ''; // UA23000000000064947\r\n address.Region = l3.level1 || ''; // Запорізька область\r\n\r\n address.AreaCode = l3.level2_id || ''; // UA23060000000070350\r\n address.Area = l3.level2 || ''; // Запорізький район\r\n\r\n address.Level3Code = l3.gov_id;\r\n address.Level3 = l3.name || ''; // Запорізька міська громада\r\n break;\r\n /** Населенные пункты */\r\n case Category.Settlement:\r\n const s = feature.properties;\r\n address.CountryCode = s.country_code || ''; // ua\r\n address.Country = s.country || ''; // Україна\r\n\r\n address.RegionCode = s.level1_id || ''; \r\n address.Region = s.level1 || ''; // Запорізька область\r\n address.AreaCode = s.level2_id || ''; \r\n address.Area = s.level2 || ''; // Запорізький район (отсутствует для областного центра)\r\n address.Level3Code = s.level3_id || ''; \r\n address.Level3 = s.level3 || ''; // Запорізька міська громада (отсутствует для областного центра)\r\n\r\n address.CityCode = s.gov_id; // UA23060070010069526\r\n address.CityType = VisicomUtils.getCityType(s); // місто \r\n address.City = `${s.type || ''}\\xa0${s.name || ''}`.trim(); // місто Запоріжжя (получить точное название города можно после символа   - \\xa0)\r\n\r\n // очистка полей дублирующих данные - Visicom эти данные обычно не возвращает\r\n if (s.class === SettlementClass.Capital || s.class === SettlementClass.CapitalRegion) {\r\n address.Region = '';\r\n address.Area = '';\r\n address.Level3 = '';\r\n }\r\n if (s.class === SettlementClass.CapitalArea) {\r\n address.Area = '';\r\n address.Level3 = '';\r\n }\r\n if (s.class === SettlementClass.CapitalLevel3) {\r\n address.Level3 = '';\r\n }\r\n\r\n break;\r\n /** Районы города */\r\n case Category.District:\r\n const d = feature.properties;\r\n address.CountryCode = d.country_code || ''; // ua\r\n address.Country = d.country || ''; // Україна\r\n\r\n address.RegionCode = d.level1_id || '';\r\n address.Region = d.level1 || ''; // Запорізька область\r\n address.AreaCode = d.level2_id || ''; \r\n address.Area = d.level2 || ''; // Запорізький район (отсутствует для областного центра)\r\n address.Level3Code = d.level3_id || '';\r\n address.Level3 = d.level3 || ''; // Запорізька міська громада (отсутствует для областного центра)\r\n\r\n address.CityType = VisicomUtils.getCityType(d); // місто \r\n address.City = `${d.settlement_type || ''}\\xa0${d.settlement || ''}`.trim(); // місто Запоріжжя (получить точное название города можно после символа   - \\xa0)\r\n\r\n // очистка полей дублирующих данные - Visicom эти данные обычно не возвращает\r\n if (d.settlement_class === SettlementClass.Capital || d.settlement_class === SettlementClass.CapitalRegion) {\r\n address.Region = '';\r\n address.Area = '';\r\n address.Level3 = '';\r\n }\r\n if (d.settlement_class === SettlementClass.CapitalArea) {\r\n address.Area = '';\r\n address.Level3 = '';\r\n }\r\n if (d.settlement_class === SettlementClass.CapitalLevel3) {\r\n address.Level3 = '';\r\n }\r\n\r\n address.District = `${d.name || ''}\\xa0${d.type || ''}`.trim(); // Соборний район (получить точное название района можно после символа   - \\xa0)\r\n break;\r\n /** Улицы */\r\n case Category.Street:\r\n const st = feature.properties;\r\n address.CountryCode = st.country_code || ''; // ua\r\n address.Country = st.country || ''; // Україна\r\n\r\n address.CityType = VisicomUtils.getCityType(st); // місто \r\n address.City = `${st.settlement_type || ''}\\xa0${st.settlement || ''}`.trim(); // місто Запоріжжя (получить точное название города можно после символа   - \\xa0)\r\n\r\n address.District = st.zone ? `${st.zone}\\xa0р-н` : ''; // Соборний район (получить точное название района можно после символа   - \\xa0)\r\n address.Street = `${st.type || ''}\\xa0${st.name || ''}`.trim(); // просп. Соборний (получить точное название улиы можно после символа   - \\xa0)\r\n break;\r\n /** Адреса */\r\n case Category.Address:\r\n const a = feature.properties;\r\n address.CountryCode = a.country_code || ''; // ua\r\n address.Country = a.country || ''; // Україна\r\n\r\n address.CityType = VisicomUtils.getCityType(a); // місто \r\n address.City = `${a.settlement_type || ''}\\xa0${a.settlement || ''}`.trim(); // місто Запоріжжя (получить точное название города можно после символа   - \\xa0)\r\n\r\n address.District = a.zone ? `${a.zone}\\xa0р-н` : ''; // Соборний район (получить точное название района можно после символа   - \\xa0)\r\n address.Street = `${a.street_type || ''}\\xa0${a.street || ''}`.trim(); // просп. Соборний (получить точное название улиы можно после символа   - \\xa0)\r\n\r\n address.HouseNumber = a.name; // 1a\r\n address.PostCode = a.postal_code; // 69069\r\n break;\r\n default:\r\n /** Точки интереса POI */\r\n if (feature.properties['categories'].startsWith('poi_')) {\r\n const p = feature.properties;\r\n address.CountryCode = p.country_code || ''; // ua\r\n address.PoiName = p.vitrine || p.name || '';\r\n address.Street = p.address || '';\r\n address.ExtraInfo = p.address_info ? `(${p.address_info})` : '';\r\n }\r\n }\r\n }\r\n\r\n address.Address = address.displayAddress(false, true);\r\n }\r\n\r\n /** Заполняет незаполненные поля адреса */\r\n async assignParentPropertiesAsync() {\r\n if (!this.owner.Lat && !this.owner.Lng) return;\r\n const addressService = Reflection.get(AppVisicomService);\r\n if (!addressService) return;\r\n // получить адрес\r\n const p = GeocodeParams.create()\r\n .withCategories(Category.Address, Category.Street, Category.District, Category.Settlement, Category.Level3, Category.Area, Category.Region, Category.Country)\r\n .withIntersect(this.owner);\r\n const res = await addressService.geocode$(p).toPromise();\r\n for (let feature of res) {\r\n const address = new Address();\r\n this.assignAddressFromFeature(address, feature);\r\n\r\n this.owner.Number = address.Number || this.owner.Number;\r\n this.owner.CountryCode = address.CountryCode || this.owner.CountryCode;\r\n this.owner.Country = address.Country || this.owner.Country;\r\n this.owner.RegionCode = address.RegionCode || this.owner.RegionCode;\r\n this.owner.Region = address.Region || this.owner.Region;\r\n this.owner.AreaCode = address.AreaCode || this.owner.AreaCode;\r\n this.owner.Area = address.Area || this.owner.Area;\r\n this.owner.Level3Code = address.Level3Code || this.owner.Level3Code;\r\n this.owner.Level3 = address.Level3 || this.owner.Level3;\r\n this.owner.CityType = address.CityType || this.owner.CityType;\r\n this.owner.CityCode = address.CityCode || this.owner.CityCode;\r\n this.owner.City = address.City || this.owner.City;\r\n this.owner.District = address.District || this.owner.District;\r\n this.owner.Street = address.Street || this.owner.Street;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/classes/VisicomAddressSource.ts","import './system';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system.browser.ts","import { OnInit, ViewContainerRef, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { Router, Params } from '@angular/router';\r\nimport { ifEmpty, isEmpty, isArray, durationToString, clone, merge } from './utils';\r\nimport { Duration } from 'moment';\r\nimport { AppComponentBase } from './app.component';\r\nimport { Inject } from './decorators';\r\nimport { ussRouter } from './interfaces';\r\n\r\nexport class AppPage extends AppComponentBase implements OnInit, OnDestroy {\r\n\r\n @Inject(Location) public location: Location;\r\n @Inject(Router) public router: Router;\r\n @Inject(ActivatedRoute) public activatedRoute: ActivatedRoute;\r\n\r\n currentRoute: string;\r\n isActive: boolean;\r\n\r\n constructor(vc: ViewContainerRef) {\r\n super(vc);\r\n this.currentRoute = this.getCurrentLocation();\r\n this.router.events.takeUntil(this.destroyed$).subscribe(e => {\r\n if (e instanceof NavigationEnd) {\r\n if (e.url === this.currentRoute) {\r\n if (!this.isActive) {\r\n this.isActive = true;\r\n this.onActivated();\r\n }\r\n } else if (this.isActive) {\r\n this.isActive = false;\r\n this.onDeactivated();\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this.onDeactivated();\r\n }\r\n }\r\n\r\n /**\r\n * Вызывается при активации страницы нижнего уровня.\r\n * Вызов происходит до применения параметров роута страницы.\r\n * (Сейчас для страницы, содержащей дочерние подстраницы, вызов этого метода работает некорректно)\r\n */\r\n onActivated() {\r\n// console.log('++ Activate: ', this.currentRoute, this);\r\n }\r\n\r\n /**\r\n * Вызывается при деактивации страницы нижнего уровня.\r\n * (Сейчас для страницы, содержащей дочерние подстраницы, вызов этого метода работает некорректно)\r\n */\r\n onDeactivated() {\r\n// console.log('-- Deactivate: ', this.currentRoute, this);\r\n }\r\n\r\n private _queryParams: { [name: string]: any } = {};\r\n public get queryParams(): { [name: string]: any } { return this._queryParams; }\r\n public set queryParams(value: { [name: string]: any }) { this.setQueryParams(value) }\r\n\r\n private _params = {};\r\n applyQueryParams(p: { [index: string]: any }): void {}\r\n\r\n applyParams(p: { [index: string]: any }): void { }\r\n\r\n applyRouteParams(p: { [name: string]: string }): void {}\r\n\r\n getQueryParam(name: string, defaultValue?: T): T {\r\n return ifEmpty(this._queryParams[name], defaultValue);\r\n }\r\n\r\n setQueryParam(name: string, value: any, defaultValue?: any): void {\r\n if (typeof value === 'boolean') {\r\n defaultValue = !!ifEmpty(defaultValue, false);\r\n }\r\n else if (typeof value === 'number') {\r\n defaultValue = parseInt(ifEmpty(defaultValue, 0).toString());\r\n }\r\n else if (typeof value === 'string') {\r\n defaultValue = ifEmpty(defaultValue, '');\r\n }\r\n else if (value && typeof value === 'object') {\r\n defaultValue = ifEmpty(defaultValue, null);\r\n if (value instanceof Date || moment.isMoment(value)) {\r\n value = moment(value).toISOString();\r\n defaultValue = moment(defaultValue).toISOString();\r\n }\r\n else if (moment.isDuration(value)) {\r\n value = durationToString(value);\r\n defaultValue = durationToString(defaultValue);\r\n }\r\n else if (isArray(value) && value['length'] === 0) {\r\n value = null;\r\n }\r\n }\r\n if (isEmpty(value) || value === defaultValue) {\r\n delete this._queryParams[name];\r\n } else {\r\n this._queryParams[name] = value;\r\n }\r\n this.debounce(() => this.setQueryParams(this._queryParams), 0, 'setQueryParams');\r\n }\r\n\r\n public getCurrentLocation(withParams?: { [name: string]: any } | boolean, asBase64?: boolean): string {\r\n const p = withParams === true ? this._queryParams : withParams !== false ? withParams: {};\r\n return ussRouter.getCurrentLocation(p, asBase64);\r\n }\r\n\r\n setQueryParams(p: { [name: string]: any }, asBase64?: boolean): void {\r\n p = p || {};\r\n this._queryParams = clone(p);\r\n const url = this.getCurrentLocation(p, asBase64);\r\n this.location.replaceState(url);\r\n }\r\n\r\n appendQueryParams(p?: { [name: string]: any }, asBase64?: boolean): void {\r\n p = merge(this.queryParams, p || {});\r\n this.setQueryParams(p, asBase64);\r\n }\r\n\r\n doApplyParams(p?: { [name: string]: any }) {\r\n this.debounce(() => {\r\n p = p || this._params;\r\n //console.log('AllParams: ', p);\r\n this.applyParams(p);\r\n this._params = {};\r\n }, 0, 'setParams');\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.activatedRoute) {\r\n this.activatedRoute.queryParams.takeUntil(this.destroyed$).subscribe(p => {\r\n //console.log('QueryParams: ', p);\r\n try {\r\n const names = Object.getOwnPropertyNames(p);\r\n if (names.length === 1 && names[0] === '_') {\r\n p = JSON.parse(atob(p['_']));\r\n }\r\n this._queryParams = clone(p);\r\n this.applyQueryParams(this._queryParams);\r\n this._params = Object.assign(this._params, p);\r\n } catch (e) {\r\n\r\n }\r\n this.doApplyParams();\r\n });\r\n this.activatedRoute.params.takeUntil(this.destroyed$).subscribe(p => {\r\n //console.log('RouteParams: ', p);\r\n try {\r\n this.applyRouteParams(p);\r\n this._params = Object.assign(this._params, p);\r\n } catch (e) {\r\n\r\n }\r\n this.doApplyParams();\r\n });\r\n }\r\n super.ngOnInit();\r\n }\r\n\r\n public goBack(returnUrl?: string) : boolean | Promise {\r\n return ussRouter.goBack(returnUrl);\r\n }\r\n\r\n public go(url: string, returnUrl: Params | boolean | string = false, addToUri: boolean | 'base64' = true) : boolean | Promise {\r\n return ussRouter.go(url, returnUrl, addToUri);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/app.page.ts","import * as jexl from 'jexl';\r\n\r\nexport interface IJexlExpressionTree {\r\n type: 'BinaryExpression' | 'UnaryExpression' | 'FunctionCall' | 'Literal' | 'Identifier' | 'string';\r\n left?: IJexlExpressionTree;\r\n right?: IJexlExpressionTree;\r\n pool?: 'functions' | string;\r\n name?: string;\r\n args?: IJexlExpressionTree[];\r\n operator?: '+' | '-' | '*' | '/' | string;\r\n value?: any;\r\n}\r\n\r\nexport abstract class JexlExpression {\r\n evalSync: (context: Object) => any;\r\n compile: () => void;\r\n _exprStr: string;\r\n _ast: IJexlExpressionTree;\r\n}\r\n\r\nexport class Expression {\r\n private expr?: JexlExpression;\r\n constructor(expr: string) {\r\n if (expr) {\r\n this.expr = jexl.createExpression(expr);\r\n this.expr.compile();\r\n }\r\n }\r\n\r\n evaluate(context?: object, defValue?: any): any {\r\n return this.expr && context ? this.expr.evalSync(context) : (defValue ?? context?.toString());\r\n }\r\n}\r\nexport class parser {\r\n\r\n static parse(expr: string): Expression { return new Expression(expr) }\r\n static evaluate(expr: string | null | undefined, context?: object, defValue?: any): any {\r\n return expr && context ? jexl.evalSync(expr, context) : (defValue ?? context?.toString());\r\n }\r\n\r\n /**\r\n * Возвращает список полей, входящих в формулу выражения.\r\n */\r\n static extractParsedFields(expression?: string): string[] {\r\n const fields = [];\r\n if (expression) {\r\n const expr = jexl.createExpression(expression);\r\n expr.compile();\r\n checkNode(expr._ast);\r\n }\r\n return fields.distinct().toArray();\r\n\r\n\r\n function checkNode(node: IJexlExpressionTree) {\r\n if (node) {\r\n if (node.type === 'Identifier') {\r\n fields.push(node.value);\r\n }\r\n else {\r\n \tnode.left && checkNode(node.left);\r\n \tnode.right && checkNode(node.right);\r\n if (node.args) {\r\n for (let arg of node.args) {\r\n\t\t\t\t\t\t\tcheckNode(arg);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\njexl.addFunction('iif', (cond, a, b) => cond ? a : b);\r\njexl.addFunction('not', cond => !cond);\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/parser.ts","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar Expression = require('./Expression');\n\nvar _require = require('./grammar'),\n getGrammar = _require.getGrammar;\n/**\n * Jexl is the Javascript Expression Language, capable of parsing and\n * evaluating basic to complex expression strings, combined with advanced\n * xpath-like drilldown into native Javascript objects.\n * @constructor\n */\n\n\nvar Jexl = /*#__PURE__*/function () {\n function Jexl() {\n (0, _classCallCheck2.default)(this, Jexl);\n // Allow expr to be called outside of the jexl context\n this.expr = this.expr.bind(this);\n this._grammar = getGrammar();\n }\n /**\n * Adds a binary operator to Jexl at the specified precedence. The higher the\n * precedence, the earlier the operator is applied in the order of operations.\n * For example, * has a higher precedence than +, because multiplication comes\n * before division.\n *\n * Please see grammar.js for a listing of all default operators and their\n * precedence values in order to choose the appropriate precedence for the\n * new operator.\n * @param {string} operator The operator string to be added\n * @param {number} precedence The operator's precedence\n * @param {function} fn A function to run to calculate the result. The function\n * will be called with two arguments: left and right, denoting the values\n * on either side of the operator. It should return either the resulting\n * value, or a Promise that resolves with the resulting value.\n * @param {boolean} [manualEval] If true, the `left` and `right` arguments\n * will be wrapped in objects with an `eval` function. Calling\n * left.eval() or right.eval() will return a promise that resolves to\n * that operand's actual value. This is useful to conditionally evaluate\n * operands.\n */\n\n\n (0, _createClass2.default)(Jexl, [{\n key: \"addBinaryOp\",\n value: function addBinaryOp(operator, precedence, fn, manualEval) {\n this._addGrammarElement(operator, (0, _defineProperty2.default)({\n type: 'binaryOp',\n precedence: precedence\n }, manualEval ? 'evalOnDemand' : 'eval', fn));\n }\n /**\n * Adds or replaces an expression function in this Jexl instance.\n * @param {string} name The name of the expression function, as it will be\n * used within Jexl expressions\n * @param {function} fn The javascript function to be executed when this\n * expression function is invoked. It will be provided with each argument\n * supplied in the expression, in the same order.\n */\n\n }, {\n key: \"addFunction\",\n value: function addFunction(name, fn) {\n this._grammar.functions[name] = fn;\n }\n /**\n * Syntactic sugar for calling {@link #addFunction} repeatedly. This function\n * accepts a map of one or more expression function names to their javascript\n * function counterpart.\n * @param {{}} map A map of expression function names to javascript functions\n */\n\n }, {\n key: \"addFunctions\",\n value: function addFunctions(map) {\n for (var key in map) {\n this._grammar.functions[key] = map[key];\n }\n }\n /**\n * Adds a unary operator to Jexl. Unary operators are currently only supported\n * on the left side of the value on which it will operate.\n * @param {string} operator The operator string to be added\n * @param {function} fn A function to run to calculate the result. The function\n * will be called with one argument: the literal value to the right of the\n * operator. It should return either the resulting value, or a Promise\n * that resolves with the resulting value.\n */\n\n }, {\n key: \"addUnaryOp\",\n value: function addUnaryOp(operator, fn) {\n this._addGrammarElement(operator, {\n type: 'unaryOp',\n weight: Infinity,\n eval: fn\n });\n }\n /**\n * Adds or replaces a transform function in this Jexl instance.\n * @param {string} name The name of the transform function, as it will be used\n * within Jexl expressions\n * @param {function} fn The function to be executed when this transform is\n * invoked. It will be provided with at least one argument:\n * - {*} value: The value to be transformed\n * - {...*} args: The arguments for this transform\n */\n\n }, {\n key: \"addTransform\",\n value: function addTransform(name, fn) {\n this._grammar.transforms[name] = fn;\n }\n /**\n * Syntactic sugar for calling {@link #addTransform} repeatedly. This function\n * accepts a map of one or more transform names to their transform function.\n * @param {{}} map A map of transform names to transform functions\n */\n\n }, {\n key: \"addTransforms\",\n value: function addTransforms(map) {\n for (var key in map) {\n this._grammar.transforms[key] = map[key];\n }\n }\n /**\n * Creates an Expression object from the given Jexl expression string, and\n * immediately compiles it. The returned Expression object can then be\n * evaluated multiple times with new contexts, without generating any\n * additional string processing overhead.\n * @param {string} expression The Jexl expression to be compiled\n * @returns {Expression} The compiled Expression object\n */\n\n }, {\n key: \"compile\",\n value: function compile(expression) {\n var exprObj = this.createExpression(expression);\n return exprObj.compile();\n }\n /**\n * Constructs an Expression object from a Jexl expression string.\n * @param {string} expression The Jexl expression to be wrapped in an\n * Expression object\n * @returns {Expression} The Expression object representing the given string\n */\n\n }, {\n key: \"createExpression\",\n value: function createExpression(expression) {\n return new Expression(this._grammar, expression);\n }\n /**\n * Retrieves a previously set expression function.\n * @param {string} name The name of the expression function\n * @returns {function} The expression function\n */\n\n }, {\n key: \"getFunction\",\n value: function getFunction(name) {\n return this._grammar.functions[name];\n }\n /**\n * Retrieves a previously set transform function.\n * @param {string} name The name of the transform function\n * @returns {function} The transform function\n */\n\n }, {\n key: \"getTransform\",\n value: function getTransform(name) {\n return this._grammar.transforms[name];\n }\n /**\n * Asynchronously evaluates a Jexl string within an optional context.\n * @param {string} expression The Jexl expression to be evaluated\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {Promise<*>} resolves with the result of the evaluation.\n */\n\n }, {\n key: \"eval\",\n value: function _eval(expression) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var exprObj = this.createExpression(expression);\n return exprObj.eval(context);\n }\n /**\n * Synchronously evaluates a Jexl string within an optional context.\n * @param {string} expression The Jexl expression to be evaluated\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {*} the result of the evaluation.\n * @throws {*} on error\n */\n\n }, {\n key: \"evalSync\",\n value: function evalSync(expression) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var exprObj = this.createExpression(expression);\n return exprObj.evalSync(context);\n }\n /**\n * A JavaScript template literal to allow expressions to be defined by the\n * syntax: expr`40 + 2`\n * @param {Array} strs\n * @param {...any} args\n */\n\n }, {\n key: \"expr\",\n value: function expr(strs) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var exprStr = strs.reduce(function (acc, str, idx) {\n var arg = idx < args.length ? args[idx] : '';\n acc += str + arg;\n return acc;\n }, '');\n return this.createExpression(exprStr);\n }\n /**\n * Removes a binary or unary operator from the Jexl grammar.\n * @param {string} operator The operator string to be removed\n */\n\n }, {\n key: \"removeOp\",\n value: function removeOp(operator) {\n if (this._grammar.elements[operator] && (this._grammar.elements[operator].type === 'binaryOp' || this._grammar.elements[operator].type === 'unaryOp')) {\n delete this._grammar.elements[operator];\n }\n }\n /**\n * Adds an element to the grammar map used by this Jexl instance.\n * @param {string} str The key string to be added\n * @param {{type: }} obj A map of configuration options for this\n * grammar element\n * @private\n */\n\n }, {\n key: \"_addGrammarElement\",\n value: function _addGrammarElement(str, obj) {\n this._grammar.elements[str] = obj;\n }\n }]);\n return Jexl;\n}();\n\nmodule.exports = new Jexl();\nmodule.exports.Jexl = Jexl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/Jexl.js\n// module id = 2037\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/defineProperty.js\n// module id = 2038\n// module chunks = 1","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toPrimitive.js\n// module id = 2039\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar Evaluator = require('./evaluator/Evaluator');\n\nvar Lexer = require('./Lexer');\n\nvar Parser = require('./parser/Parser');\n\nvar PromiseSync = require('./PromiseSync');\n\nvar Expression = /*#__PURE__*/function () {\n function Expression(grammar, exprStr) {\n (0, _classCallCheck2.default)(this, Expression);\n this._grammar = grammar;\n this._exprStr = exprStr;\n this._ast = null;\n }\n /**\n * Forces a compilation of the expression string that this Expression object\n * was constructed with. This function can be called multiple times; useful\n * if the language elements of the associated Jexl instance change.\n * @returns {Expression} this Expression instance, for convenience\n */\n\n\n (0, _createClass2.default)(Expression, [{\n key: \"compile\",\n value: function compile() {\n var lexer = new Lexer(this._grammar);\n var parser = new Parser(this._grammar);\n var tokens = lexer.tokenize(this._exprStr);\n parser.addTokens(tokens);\n this._ast = parser.complete();\n return this;\n }\n /**\n * Asynchronously evaluates the expression within an optional context.\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {Promise<*>} resolves with the result of the evaluation.\n */\n\n }, {\n key: \"eval\",\n value: function _eval() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return this._eval(context, Promise);\n }\n /**\n * Synchronously evaluates the expression within an optional context.\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {*} the result of the evaluation.\n * @throws {*} on error\n */\n\n }, {\n key: \"evalSync\",\n value: function evalSync() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var res = this._eval(context, PromiseSync);\n\n if (res.error) throw res.error;\n return res.value;\n }\n }, {\n key: \"_eval\",\n value: function _eval(context, promise) {\n var _this = this;\n\n return promise.resolve().then(function () {\n var ast = _this._getAst();\n\n var evaluator = new Evaluator(_this._grammar, context, undefined, promise);\n return evaluator.eval(ast);\n });\n }\n }, {\n key: \"_getAst\",\n value: function _getAst() {\n if (!this._ast) this.compile();\n return this._ast;\n }\n }]);\n return Expression;\n}();\n\nmodule.exports = Expression;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/Expression.js\n// module id = 2040\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar handlers = require('./handlers');\n/**\n * The Evaluator takes a Jexl expression tree as generated by the\n * {@link Parser} and calculates its value within a given context. The\n * collection of transforms, context, and a relative context to be used as the\n * root for relative identifiers, are all specific to an Evaluator instance.\n * When any of these things change, a new instance is required. However, a\n * single instance can be used to simultaneously evaluate many different\n * expressions, and does not have to be reinstantiated for each.\n * @param {{}} grammar A grammar object against which to evaluate the expression\n * tree\n * @param {{}} [context] A map of variable keys to their values. This will be\n * accessed to resolve the value of each non-relative identifier. Any\n * Promise values will be passed to the expression as their resolved\n * value.\n * @param {{}|Array<{}|Array>} [relativeContext] A map or array to be accessed\n * to resolve the value of a relative identifier.\n * @param {function} promise A constructor for the Promise class to be used;\n * probably either Promise or PromiseSync.\n */\n\n\nvar Evaluator = /*#__PURE__*/function () {\n function Evaluator(grammar, context, relativeContext) {\n var promise = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Promise;\n (0, _classCallCheck2.default)(this, Evaluator);\n this._grammar = grammar;\n this._context = context || {};\n this._relContext = relativeContext || this._context;\n this.Promise = promise;\n }\n /**\n * Evaluates an expression tree within the configured context.\n * @param {{}} ast An expression tree object\n * @returns {Promise<*>} resolves with the resulting value of the expression.\n */\n\n\n (0, _createClass2.default)(Evaluator, [{\n key: \"eval\",\n value: function _eval(ast) {\n var _this = this;\n\n return this.Promise.resolve().then(function () {\n return handlers[ast.type].call(_this, ast);\n });\n }\n /**\n * Simultaneously evaluates each expression within an array, and delivers the\n * response as an array with the resulting values at the same indexes as their\n * originating expressions.\n * @param {Array} arr An array of expression strings to be evaluated\n * @returns {Promise>} resolves with the result array\n */\n\n }, {\n key: \"evalArray\",\n value: function evalArray(arr) {\n var _this2 = this;\n\n return this.Promise.all(arr.map(function (elem) {\n return _this2.eval(elem);\n }));\n }\n /**\n * Simultaneously evaluates each expression within a map, and delivers the\n * response as a map with the same keys, but with the evaluated result for each\n * as their value.\n * @param {{}} map A map of expression names to expression trees to be\n * evaluated\n * @returns {Promise<{}>} resolves with the result map.\n */\n\n }, {\n key: \"evalMap\",\n value: function evalMap(map) {\n var _this3 = this;\n\n var keys = Object.keys(map);\n var result = {};\n var asts = keys.map(function (key) {\n return _this3.eval(map[key]);\n });\n return this.Promise.all(asts).then(function (vals) {\n vals.forEach(function (val, idx) {\n result[keys[idx]] = val;\n });\n return result;\n });\n }\n /**\n * Applies a filter expression with relative identifier elements to a subject.\n * The intent is for the subject to be an array of subjects that will be\n * individually used as the relative context against the provided expression\n * tree. Only the elements whose expressions result in a truthy value will be\n * included in the resulting array.\n *\n * If the subject is not an array of values, it will be converted to a single-\n * element array before running the filter.\n * @param {*} subject The value to be filtered usually an array. If this value is\n * not an array, it will be converted to an array with this value as the\n * only element.\n * @param {{}} expr The expression tree to run against each subject. If the\n * tree evaluates to a truthy result, then the value will be included in\n * the returned array otherwise, it will be eliminated.\n * @returns {Promise} resolves with an array of values that passed the\n * expression filter.\n * @private\n */\n\n }, {\n key: \"_filterRelative\",\n value: function _filterRelative(subject, expr) {\n var _this4 = this;\n\n var promises = [];\n\n if (!Array.isArray(subject)) {\n subject = subject === undefined ? [] : [subject];\n }\n\n subject.forEach(function (elem) {\n var evalInst = new Evaluator(_this4._grammar, _this4._context, elem, _this4.Promise);\n promises.push(evalInst.eval(expr));\n });\n return this.Promise.all(promises).then(function (values) {\n var results = [];\n values.forEach(function (value, idx) {\n if (value) {\n results.push(subject[idx]);\n }\n });\n return results;\n });\n }\n /**\n * Applies a static filter expression to a subject value. If the filter\n * expression evaluates to boolean true, the subject is returned if false,\n * undefined.\n *\n * For any other resulting value of the expression, this function will attempt\n * to respond with the property at that name or index of the subject.\n * @param {*} subject The value to be filtered. Usually an Array (for which\n * the expression would generally resolve to a numeric index) or an\n * Object (for which the expression would generally resolve to a string\n * indicating a property name)\n * @param {{}} expr The expression tree to run against the subject\n * @returns {Promise<*>} resolves with the value of the drill-down.\n * @private\n */\n\n }, {\n key: \"_filterStatic\",\n value: function _filterStatic(subject, expr) {\n return this.eval(expr).then(function (res) {\n if (typeof res === 'boolean') {\n return res ? subject : undefined;\n }\n\n return subject[res];\n });\n }\n }]);\n return Evaluator;\n}();\n\nmodule.exports = Evaluator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/evaluator/Evaluator.js\n// module id = 2041\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar poolNames = {\n functions: 'Jexl Function',\n transforms: 'Transform'\n};\n/**\n * Evaluates an ArrayLiteral by returning its value, with each element\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise.<[]>} resolves to a map contained evaluated values.\n * @private\n */\n\nexports.ArrayLiteral = function (ast) {\n return this.evalArray(ast.value);\n};\n/**\n * Evaluates a BinaryExpression node by running the Grammar's evaluator for\n * the given operator. Note that binary expressions support two types of\n * evaluators: `eval` is called with the left and right operands pre-evaluated.\n * `evalOnDemand`, if it exists, will be called with the left and right operands\n * each individually wrapped in an object with an \"eval\" function that returns\n * a promise with the resulting value. This allows the binary expression to\n * evaluate the operands conditionally.\n * @param {{type: 'BinaryExpression', operator: , left: {},\n * right: {}}} ast An expression tree with a BinaryExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the BinaryExpression.\n * @private\n */\n\n\nexports.BinaryExpression = function (ast) {\n var _this = this;\n\n var grammarOp = this._grammar.elements[ast.operator];\n\n if (grammarOp.evalOnDemand) {\n var wrap = function wrap(subAst) {\n return {\n eval: function _eval() {\n return _this.eval(subAst);\n }\n };\n };\n\n return grammarOp.evalOnDemand(wrap(ast.left), wrap(ast.right));\n }\n\n return this.Promise.all([this.eval(ast.left), this.eval(ast.right)]).then(function (arr) {\n return grammarOp.eval(arr[0], arr[1]);\n });\n};\n/**\n * Evaluates a ConditionalExpression node by first evaluating its test branch,\n * and resolving with the consequent branch if the test is truthy, or the\n * alternate branch if it is not. If there is no consequent branch, the test\n * result will be used instead.\n * @param {{type: 'ConditionalExpression', test: {}, consequent: {},\n * alternate: {}}} ast An expression tree with a ConditionalExpression as\n * the top node\n * @private\n */\n\n\nexports.ConditionalExpression = function (ast) {\n var _this2 = this;\n\n return this.eval(ast.test).then(function (res) {\n if (res) {\n if (ast.consequent) {\n return _this2.eval(ast.consequent);\n }\n\n return res;\n }\n\n return _this2.eval(ast.alternate);\n });\n};\n/**\n * Evaluates a FilterExpression by applying it to the subject value.\n * @param {{type: 'FilterExpression', relative: , expr: {},\n * subject: {}}} ast An expression tree with a FilterExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the FilterExpression.\n * @private\n */\n\n\nexports.FilterExpression = function (ast) {\n var _this3 = this;\n\n return this.eval(ast.subject).then(function (subject) {\n if (ast.relative) {\n return _this3._filterRelative(subject, ast.expr);\n }\n\n return _this3._filterStatic(subject, ast.expr);\n });\n};\n/**\n * Evaluates an Identifier by either stemming from the evaluated 'from'\n * expression tree or accessing the context provided when this Evaluator was\n * constructed.\n * @param {{type: 'Identifier', value: , [from]: {}}} ast An expression\n * tree with an Identifier as the top node\n * @returns {Promise<*>|*} either the identifier's value, or a Promise that\n * will resolve with the identifier's value.\n * @private\n */\n\n\nexports.Identifier = function (ast) {\n if (!ast.from) {\n return ast.relative ? this._relContext[ast.value] : this._context[ast.value];\n }\n\n return this.eval(ast.from).then(function (context) {\n if (context === undefined || context === null) {\n return undefined;\n }\n\n if (Array.isArray(context)) {\n context = context[0];\n }\n\n return context[ast.value];\n });\n};\n/**\n * Evaluates a Literal by returning its value property.\n * @param {{type: 'Literal', value: }} ast An expression\n * tree with a Literal as its only node\n * @returns {string|number|boolean} The value of the Literal node\n * @private\n */\n\n\nexports.Literal = function (ast) {\n return ast.value;\n};\n/**\n * Evaluates an ObjectLiteral by returning its value, with each key\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise<{}>} resolves to a map contained evaluated values.\n * @private\n */\n\n\nexports.ObjectLiteral = function (ast) {\n return this.evalMap(ast.value);\n};\n/**\n * Evaluates a FunctionCall node by applying the supplied arguments to a\n * function defined in one of the grammar's function pools.\n * @param {{type: 'FunctionCall', name: }} ast An\n * expression tree with a FunctionCall as the top node\n * @returns {Promise<*>|*} the value of the function call, or a Promise that\n * will resolve with the resulting value.\n * @private\n */\n\n\nexports.FunctionCall = function (ast) {\n var poolName = poolNames[ast.pool];\n\n if (!poolName) {\n throw new Error(\"Corrupt AST: Pool '\".concat(ast.pool, \"' not found\"));\n }\n\n var pool = this._grammar[ast.pool];\n var func = pool[ast.name];\n\n if (!func) {\n throw new Error(\"\".concat(poolName, \" \").concat(ast.name, \" is not defined.\"));\n }\n\n return this.evalArray(ast.args || []).then(function (args) {\n return func.apply(void 0, (0, _toConsumableArray2.default)(args));\n });\n};\n/**\n * Evaluates a Unary expression by passing the right side through the\n * operator's eval function.\n * @param {{type: 'UnaryExpression', operator: , right: {}}} ast An\n * expression tree with a UnaryExpression as the top node\n * @returns {Promise<*>} resolves with the value of the UnaryExpression.\n * @constructor\n */\n\n\nexports.UnaryExpression = function (ast) {\n var _this4 = this;\n\n return this.eval(ast.right).then(function (right) {\n return _this4._grammar.elements[ast.operator].eval(right);\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/evaluator/handlers.js\n// module id = 2042\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toConsumableArray.js\n// module id = 2043\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n// module id = 2044\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/iterableToArray.js\n// module id = 2045\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n// module id = 2046\n// module chunks = 1","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;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n// module id = 2047\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar numericRegex = /^-?(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)$/;\nvar identRegex = /^[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][a-zA-Zа-яА-Я0-9_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*$/;\nvar escEscRegex = /\\\\\\\\/;\nvar whitespaceRegex = /^\\s*$/;\nvar preOpRegexElems = [// Strings\n\"'(?:(?:\\\\\\\\')|[^'])*'\", '\"(?:(?:\\\\\\\\\")|[^\"])*\"', // Whitespace\n'\\\\s+', // Booleans\n'\\\\btrue\\\\b', '\\\\bfalse\\\\b'];\nvar postOpRegexElems = [// Identifiers\n\"[a-zA-Z\\u0430-\\u044F\\u0410-\\u042F_\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\\\$][a-zA-Z0-9\\u0430-\\u044F\\u0410-\\u042F_\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\\\$]*\", // Numerics (without negative symbol)\n'(?:(?:[0-9]*\\\\.[0-9]+)|[0-9]+)'];\nvar minusNegatesAfter = ['binaryOp', 'unaryOp', 'openParen', 'openBracket', 'question', 'colon'];\n/**\n * Lexer is a collection of stateless, statically-accessed functions for the\n * lexical parsing of a Jexl string. Its responsibility is to identify the\n * \"parts of speech\" of a Jexl expression, and tokenize and label each, but\n * to do only the most minimal syntax checking; the only errors the Lexer\n * should be concerned with are if it's unable to identify the utility of\n * any of its tokens. Errors stemming from these tokens not being in a\n * sensible configuration should be left for the Parser to handle.\n * @type {{}}\n */\n\nvar Lexer = /*#__PURE__*/function () {\n function Lexer(grammar) {\n (0, _classCallCheck2.default)(this, Lexer);\n this._grammar = grammar;\n }\n /**\n * Splits a Jexl expression string into an array of expression elements.\n * @param {string} str A Jexl expression string\n * @returns {Array} An array of substrings defining the functional\n * elements of the expression.\n */\n\n\n (0, _createClass2.default)(Lexer, [{\n key: \"getElements\",\n value: function getElements(str) {\n var regex = this._getSplitRegex();\n\n return str.split(regex).filter(function (elem) {\n // Remove empty strings\n return elem;\n });\n }\n /**\n * Converts an array of expression elements into an array of tokens. Note that\n * the resulting array may not equal the element array in length, as any\n * elements that consist only of whitespace get appended to the previous\n * token's \"raw\" property. For the structure of a token object, please see\n * {@link Lexer#tokenize}.\n * @param {Array} elements An array of Jexl expression elements to be\n * converted to tokens\n * @returns {Array<{type, value, raw}>} an array of token objects.\n */\n\n }, {\n key: \"getTokens\",\n value: function getTokens(elements) {\n var tokens = [];\n var negate = false;\n\n for (var i = 0; i < elements.length; i++) {\n if (this._isWhitespace(elements[i])) {\n if (tokens.length) {\n tokens[tokens.length - 1].raw += elements[i];\n }\n } else if (elements[i] === '-' && this._isNegative(tokens)) {\n negate = true;\n } else {\n if (negate) {\n elements[i] = '-' + elements[i];\n negate = false;\n }\n\n tokens.push(this._createToken(elements[i]));\n }\n } // Catch a - at the end of the string. Let the parser handle that issue.\n\n\n if (negate) {\n tokens.push(this._createToken('-'));\n }\n\n return tokens;\n }\n /**\n * Converts a Jexl string into an array of tokens. Each token is an object\n * in the following format:\n *\n * {\n * type: ,\n * [name]: ,\n * value: ,\n * raw: \n * }\n *\n * Type is one of the following:\n *\n * literal, identifier, binaryOp, unaryOp\n *\n * OR, if the token is a control character its type is the name of the element\n * defined in the Grammar.\n *\n * Name appears only if the token is a control string found in\n * {@link grammar#elements}, and is set to the name of the element.\n *\n * Value is the value of the token in the correct type (boolean or numeric as\n * appropriate). Raw is the string representation of this value taken directly\n * from the expression string, including any trailing spaces.\n * @param {string} str The Jexl string to be tokenized\n * @returns {Array<{type, value, raw}>} an array of token objects.\n * @throws {Error} if the provided string contains an invalid token.\n */\n\n }, {\n key: \"tokenize\",\n value: function tokenize(str) {\n var elements = this.getElements(str);\n return this.getTokens(elements);\n }\n /**\n * Creates a new token object from an element of a Jexl string. See\n * {@link Lexer#tokenize} for a description of the token object.\n * @param {string} element The element from which a token should be made\n * @returns {{value: number|boolean|string, [name]: string, type: string,\n * raw: string}} a token object describing the provided element.\n * @throws {Error} if the provided string is not a valid expression element.\n * @private\n */\n\n }, {\n key: \"_createToken\",\n value: function _createToken(element) {\n var token = {\n type: 'literal',\n value: element,\n raw: element\n };\n\n if (element[0] === '\"' || element[0] === \"'\") {\n token.value = this._unquote(element);\n } else if (element.match(numericRegex)) {\n token.value = parseFloat(element);\n } else if (element === 'true' || element === 'false') {\n token.value = element === 'true';\n } else if (this._grammar.elements[element]) {\n token.type = this._grammar.elements[element].type;\n } else if (element.match(identRegex)) {\n token.type = 'identifier';\n } else {\n throw new Error(\"Invalid expression token: \".concat(element));\n }\n\n return token;\n }\n /**\n * Escapes a string so that it can be treated as a string literal within a\n * regular expression.\n * @param {string} str The string to be escaped\n * @returns {string} the RegExp-escaped string.\n * @see https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions\n * @private\n */\n\n }, {\n key: \"_escapeRegExp\",\n value: function _escapeRegExp(str) {\n str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n if (str.match(identRegex)) {\n str = '\\\\b' + str + '\\\\b';\n }\n\n return str;\n }\n /**\n * Gets a RegEx object appropriate for splitting a Jexl string into its core\n * elements.\n * @returns {RegExp} An element-splitting RegExp object\n * @private\n */\n\n }, {\n key: \"_getSplitRegex\",\n value: function _getSplitRegex() {\n var _this = this;\n\n if (!this._splitRegex) {\n // Sort by most characters to least, then regex escape each\n var elemArray = Object.keys(this._grammar.elements).sort(function (a, b) {\n return b.length - a.length;\n }).map(function (elem) {\n return _this._escapeRegExp(elem);\n }, this);\n this._splitRegex = new RegExp('(' + [preOpRegexElems.join('|'), elemArray.join('|'), postOpRegexElems.join('|')].join('|') + ')');\n }\n\n return this._splitRegex;\n }\n /**\n * Determines whether the addition of a '-' token should be interpreted as a\n * negative symbol for an upcoming number, given an array of tokens already\n * processed.\n * @param {Array} tokens An array of tokens already processed\n * @returns {boolean} true if adding a '-' should be considered a negative\n * symbol; false otherwise\n * @private\n */\n\n }, {\n key: \"_isNegative\",\n value: function _isNegative(tokens) {\n if (!tokens.length) return true;\n return minusNegatesAfter.some(function (type) {\n return type === tokens[tokens.length - 1].type;\n });\n }\n /**\n * A utility function to determine if a string consists of only space\n * characters.\n * @param {string} str A string to be tested\n * @returns {boolean} true if the string is empty or consists of only spaces;\n * false otherwise.\n * @private\n */\n\n }, {\n key: \"_isWhitespace\",\n value: function _isWhitespace(str) {\n return !!str.match(whitespaceRegex);\n }\n /**\n * Removes the beginning and trailing quotes from a string, unescapes any\n * escaped quotes on its interior, and unescapes any escaped escape\n * characters. Note that this function is not defensive; it assumes that the\n * provided string is not empty, and that its first and last characters are\n * actually quotes.\n * @param {string} str A string whose first and last characters are quotes\n * @returns {string} a string with the surrounding quotes stripped and escapes\n * properly processed.\n * @private\n */\n\n }, {\n key: \"_unquote\",\n value: function _unquote(str) {\n var quote = str[0];\n var escQuoteRegex = new RegExp('\\\\\\\\' + quote, 'g');\n return str.substr(1, str.length - 2).replace(escQuoteRegex, quote).replace(escEscRegex, '\\\\');\n }\n }]);\n return Lexer;\n}();\n\nmodule.exports = Lexer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/Lexer.js\n// module id = 2048\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar handlers = require('./handlers');\n\nvar states = require('./states').states;\n/**\n * The Parser is a state machine that converts tokens from the {@link Lexer}\n * into an Abstract Syntax Tree (AST), capable of being evaluated in any\n * context by the {@link Evaluator}. The Parser expects that all tokens\n * provided to it are legal and typed properly according to the grammar, but\n * accepts that the tokens may still be in an invalid order or in some other\n * unparsable configuration that requires it to throw an Error.\n * @param {{}} grammar The grammar object to use to parse Jexl strings\n * @param {string} [prefix] A string prefix to prepend to the expression string\n * for error messaging purposes. This is useful for when a new Parser is\n * instantiated to parse an subexpression, as the parent Parser's\n * expression string thus far can be passed for a more user-friendly\n * error message.\n * @param {{}} [stopMap] A mapping of token types to any truthy value. When the\n * token type is encountered, the parser will return the mapped value\n * instead of boolean false.\n */\n\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(grammar, prefix, stopMap) {\n (0, _classCallCheck2.default)(this, Parser);\n this._grammar = grammar;\n this._state = 'expectOperand';\n this._tree = null;\n this._exprStr = prefix || '';\n this._relative = false;\n this._stopMap = stopMap || {};\n }\n /**\n * Processes a new token into the AST and manages the transitions of the state\n * machine.\n * @param {{type: }} token A token object, as provided by the\n * {@link Lexer#tokenize} function.\n * @throws {Error} if a token is added when the Parser has been marked as\n * complete by {@link #complete}, or if an unexpected token type is added.\n * @returns {boolean|*} the stopState value if this parser encountered a token\n * in the stopState mapb false if tokens can continue.\n */\n\n\n (0, _createClass2.default)(Parser, [{\n key: \"addToken\",\n value: function addToken(token) {\n if (this._state === 'complete') {\n throw new Error('Cannot add a new token to a completed Parser');\n }\n\n var state = states[this._state];\n var startExpr = this._exprStr;\n this._exprStr += token.raw;\n\n if (state.subHandler) {\n if (!this._subParser) {\n this._startSubExpression(startExpr);\n }\n\n var stopState = this._subParser.addToken(token);\n\n if (stopState) {\n this._endSubExpression();\n\n if (this._parentStop) return stopState;\n this._state = stopState;\n }\n } else if (state.tokenTypes[token.type]) {\n var typeOpts = state.tokenTypes[token.type];\n var handleFunc = handlers[token.type];\n\n if (typeOpts.handler) {\n handleFunc = typeOpts.handler;\n }\n\n if (handleFunc) {\n handleFunc.call(this, token);\n }\n\n if (typeOpts.toState) {\n this._state = typeOpts.toState;\n }\n } else if (this._stopMap[token.type]) {\n return this._stopMap[token.type];\n } else {\n throw new Error(\"Token \".concat(token.raw, \" (\").concat(token.type, \") unexpected in expression: \").concat(this._exprStr));\n }\n\n return false;\n }\n /**\n * Processes an array of tokens iteratively through the {@link #addToken}\n * function.\n * @param {Array<{type: }>} tokens An array of tokens, as provided by\n * the {@link Lexer#tokenize} function.\n */\n\n }, {\n key: \"addTokens\",\n value: function addTokens(tokens) {\n tokens.forEach(this.addToken, this);\n }\n /**\n * Marks this Parser instance as completed and retrieves the full AST.\n * @returns {{}|null} a full expression tree, ready for evaluation by the\n * {@link Evaluator#eval} function, or null if no tokens were passed to\n * the parser before complete was called\n * @throws {Error} if the parser is not in a state where it's legal to end\n * the expression, indicating that the expression is incomplete\n */\n\n }, {\n key: \"complete\",\n value: function complete() {\n if (this._cursor && !states[this._state].completable) {\n throw new Error(\"Unexpected end of expression: \".concat(this._exprStr));\n }\n\n if (this._subParser) {\n this._endSubExpression();\n }\n\n this._state = 'complete';\n return this._cursor ? this._tree : null;\n }\n /**\n * Indicates whether the expression tree contains a relative path identifier.\n * @returns {boolean} true if a relative identifier exists false otherwise.\n */\n\n }, {\n key: \"isRelative\",\n value: function isRelative() {\n return this._relative;\n }\n /**\n * Ends a subexpression by completing the subParser and passing its result\n * to the subHandler configured in the current state.\n * @private\n */\n\n }, {\n key: \"_endSubExpression\",\n value: function _endSubExpression() {\n states[this._state].subHandler.call(this, this._subParser.complete());\n\n this._subParser = null;\n }\n /**\n * Places a new tree node at the current position of the cursor (to the 'right'\n * property) and then advances the cursor to the new node. This function also\n * handles setting the parent of the new node.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n\n }, {\n key: \"_placeAtCursor\",\n value: function _placeAtCursor(node) {\n if (!this._cursor) {\n this._tree = node;\n } else {\n this._cursor.right = node;\n\n this._setParent(node, this._cursor);\n }\n\n this._cursor = node;\n }\n /**\n * Places a tree node before the current position of the cursor, replacing\n * the node that the cursor currently points to. This should only be called in\n * cases where the cursor is known to exist, and the provided node already\n * contains a pointer to what's at the cursor currently.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n\n }, {\n key: \"_placeBeforeCursor\",\n value: function _placeBeforeCursor(node) {\n this._cursor = this._cursor._parent;\n\n this._placeAtCursor(node);\n }\n /**\n * Sets the parent of a node by creating a non-enumerable _parent property\n * that points to the supplied parent argument.\n * @param {{type: }} node A node of the AST on which to set a new\n * parent\n * @param {{type: }} parent An existing node of the AST to serve as the\n * parent of the new node\n * @private\n */\n\n }, {\n key: \"_setParent\",\n value: function _setParent(node, parent) {\n Object.defineProperty(node, '_parent', {\n value: parent,\n writable: true\n });\n }\n /**\n * Prepares the Parser to accept a subexpression by (re)instantiating the\n * subParser.\n * @param {string} [exprStr] The expression string to prefix to the new Parser\n * @private\n */\n\n }, {\n key: \"_startSubExpression\",\n value: function _startSubExpression(exprStr) {\n var endStates = states[this._state].endStates;\n\n if (!endStates) {\n this._parentStop = true;\n endStates = this._stopMap;\n }\n\n this._subParser = new Parser(this._grammar, exprStr, endStates);\n }\n }]);\n return Parser;\n}();\n\nmodule.exports = Parser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/parser/Parser.js\n// module id = 2049\n// module chunks = 1","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar h = require('./handlers');\n/**\n * A mapping of all states in the finite state machine to a set of instructions\n * for handling or transitioning into other states. Each state can be handled\n * in one of two schemes: a tokenType map, or a subHandler.\n *\n * Standard expression elements are handled through the tokenType object. This\n * is an object map of all legal token types to encounter in this state (and\n * any unexpected token types will generate a thrown error) to an options\n * object that defines how they're handled. The available options are:\n *\n * {string} toState: The name of the state to which to transition\n * immediately after handling this token\n * {string} handler: The handler function to call when this token type is\n * encountered in this state. If omitted, the default handler\n * matching the token's \"type\" property will be called. If the handler\n * function does not exist, no call will be made and no error will be\n * generated. This is useful for tokens whose sole purpose is to\n * transition to other states.\n *\n * States that consume a subexpression should define a subHandler, the\n * function to be called with an expression tree argument when the\n * subexpression is complete. Completeness is determined through the\n * endStates object, which maps tokens on which an expression should end to the\n * state to which to transition once the subHandler function has been called.\n *\n * Additionally, any state in which it is legal to mark the AST as completed\n * should have a 'completable' property set to boolean true. Attempting to\n * call {@link Parser#complete} in any state without this property will result\n * in a thrown Error.\n *\n * @type {{}}\n */\n\n\nexports.states = {\n expectOperand: {\n tokenTypes: {\n literal: {\n toState: 'expectBinOp'\n },\n identifier: {\n toState: 'identifier'\n },\n unaryOp: {},\n openParen: {\n toState: 'subExpression'\n },\n openCurl: {\n toState: 'expectObjKey',\n handler: h.objStart\n },\n dot: {\n toState: 'traverse'\n },\n openBracket: {\n toState: 'arrayVal',\n handler: h.arrayStart\n }\n }\n },\n expectBinOp: {\n tokenTypes: {\n binaryOp: {\n toState: 'expectOperand'\n },\n pipe: {\n toState: 'expectTransform'\n },\n dot: {\n toState: 'traverse'\n },\n question: {\n toState: 'ternaryMid',\n handler: h.ternaryStart\n }\n },\n completable: true\n },\n expectTransform: {\n tokenTypes: {\n identifier: {\n toState: 'postTransform',\n handler: h.transform\n }\n }\n },\n expectObjKey: {\n tokenTypes: {\n identifier: {\n toState: 'expectKeyValSep',\n handler: h.objKey\n },\n closeCurl: {\n toState: 'expectBinOp'\n }\n }\n },\n expectKeyValSep: {\n tokenTypes: {\n colon: {\n toState: 'objVal'\n }\n }\n },\n postTransform: {\n tokenTypes: {\n openParen: {\n toState: 'argVal'\n },\n binaryOp: {\n toState: 'expectOperand'\n },\n dot: {\n toState: 'traverse'\n },\n openBracket: {\n toState: 'filter'\n },\n pipe: {\n toState: 'expectTransform'\n }\n },\n completable: true\n },\n postArgs: {\n tokenTypes: {\n binaryOp: {\n toState: 'expectOperand'\n },\n dot: {\n toState: 'traverse'\n },\n openBracket: {\n toState: 'filter'\n },\n pipe: {\n toState: 'expectTransform'\n }\n },\n completable: true\n },\n identifier: {\n tokenTypes: {\n binaryOp: {\n toState: 'expectOperand'\n },\n dot: {\n toState: 'traverse'\n },\n openBracket: {\n toState: 'filter'\n },\n openParen: {\n toState: 'argVal',\n handler: h.functionCall\n },\n pipe: {\n toState: 'expectTransform'\n },\n question: {\n toState: 'ternaryMid',\n handler: h.ternaryStart\n }\n },\n completable: true\n },\n traverse: {\n tokenTypes: {\n identifier: {\n toState: 'identifier'\n }\n }\n },\n filter: {\n subHandler: h.filter,\n endStates: {\n closeBracket: 'identifier'\n }\n },\n subExpression: {\n subHandler: h.subExpression,\n endStates: {\n closeParen: 'expectBinOp'\n }\n },\n argVal: {\n subHandler: h.argVal,\n endStates: {\n comma: 'argVal',\n closeParen: 'postArgs'\n }\n },\n objVal: {\n subHandler: h.objVal,\n endStates: {\n comma: 'expectObjKey',\n closeCurl: 'expectBinOp'\n }\n },\n arrayVal: {\n subHandler: h.arrayVal,\n endStates: {\n comma: 'arrayVal',\n closeBracket: 'expectBinOp'\n }\n },\n ternaryMid: {\n subHandler: h.ternaryMid,\n endStates: {\n colon: 'ternaryEnd'\n }\n },\n ternaryEnd: {\n subHandler: h.ternaryEnd,\n completable: true\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/parser/states.js\n// module id = 2050\n// module chunks = 1","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\nvar PromiseSync = /*#__PURE__*/function () {\n function PromiseSync(fn) {\n (0, _classCallCheck2.default)(this, PromiseSync);\n fn(this._resolve.bind(this), this._reject.bind(this));\n }\n\n (0, _createClass2.default)(PromiseSync, [{\n key: \"catch\",\n value: function _catch(rejected) {\n if (this.error) {\n try {\n this._resolve(rejected(this.error));\n } catch (e) {\n this._reject(e);\n }\n }\n\n return this;\n }\n }, {\n key: \"then\",\n value: function then(resolved, rejected) {\n if (!this.error) {\n try {\n this._resolve(resolved(this.value));\n } catch (e) {\n this._reject(e);\n }\n }\n\n if (rejected) this.catch(rejected);\n return this;\n }\n }, {\n key: \"_reject\",\n value: function _reject(error) {\n this.value = undefined;\n this.error = error;\n }\n }, {\n key: \"_resolve\",\n value: function _resolve(val) {\n if (val instanceof PromiseSync) {\n if (val.error) {\n this._reject(val.error);\n } else {\n this._resolve(val.value);\n }\n } else {\n this.value = val;\n this.error = undefined;\n }\n }\n }]);\n return PromiseSync;\n}();\n\nPromiseSync.all = function (vals) {\n return new PromiseSync(function (resolve) {\n var resolved = vals.map(function (val) {\n while (val instanceof PromiseSync) {\n if (val.error) throw Error(val.error);\n val = val.value;\n }\n\n return val;\n });\n resolve(resolved);\n });\n};\n\nPromiseSync.resolve = function (val) {\n return new PromiseSync(function (resolve) {\n return resolve(val);\n });\n};\n\nPromiseSync.reject = function (error) {\n return new PromiseSync(function (resolve, reject) {\n return reject(error);\n });\n};\n\nmodule.exports = PromiseSync;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/PromiseSync.js\n// module id = 2051\n// module chunks = 1","\"use strict\";\n\n/*\n * Jexl\n * Copyright 2020 Tom Shawver\n */\n\n/* eslint eqeqeq:0 */\nexports.getGrammar = function () {\n return {\n /**\n * A map of all expression elements to their properties. Note that changes\n * here may require changes in the Lexer or Parser.\n * @type {{}}\n */\n elements: {\n '.': {\n type: 'dot'\n },\n '[': {\n type: 'openBracket'\n },\n ']': {\n type: 'closeBracket'\n },\n '|': {\n type: 'pipe'\n },\n '{': {\n type: 'openCurl'\n },\n '}': {\n type: 'closeCurl'\n },\n ':': {\n type: 'colon'\n },\n ',': {\n type: 'comma'\n },\n '(': {\n type: 'openParen'\n },\n ')': {\n type: 'closeParen'\n },\n '?': {\n type: 'question'\n },\n '+': {\n type: 'binaryOp',\n precedence: 30,\n eval: function _eval(left, right) {\n return left + right;\n }\n },\n '-': {\n type: 'binaryOp',\n precedence: 30,\n eval: function _eval(left, right) {\n return left - right;\n }\n },\n '*': {\n type: 'binaryOp',\n precedence: 40,\n eval: function _eval(left, right) {\n return left * right;\n }\n },\n '/': {\n type: 'binaryOp',\n precedence: 40,\n eval: function _eval(left, right) {\n return left / right;\n }\n },\n '//': {\n type: 'binaryOp',\n precedence: 40,\n eval: function _eval(left, right) {\n return Math.floor(left / right);\n }\n },\n '%': {\n type: 'binaryOp',\n precedence: 50,\n eval: function _eval(left, right) {\n return left % right;\n }\n },\n '^': {\n type: 'binaryOp',\n precedence: 50,\n eval: function _eval(left, right) {\n return Math.pow(left, right);\n }\n },\n '==': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left == right;\n }\n },\n '!=': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left != right;\n }\n },\n '>': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left > right;\n }\n },\n '>=': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left >= right;\n }\n },\n '<': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left < right;\n }\n },\n '<=': {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n return left <= right;\n }\n },\n '&&': {\n type: 'binaryOp',\n precedence: 10,\n evalOnDemand: function evalOnDemand(left, right) {\n return left.eval().then(function (leftVal) {\n if (!leftVal) return leftVal;\n return right.eval();\n });\n }\n },\n '||': {\n type: 'binaryOp',\n precedence: 10,\n evalOnDemand: function evalOnDemand(left, right) {\n return left.eval().then(function (leftVal) {\n if (leftVal) return leftVal;\n return right.eval();\n });\n }\n },\n in: {\n type: 'binaryOp',\n precedence: 20,\n eval: function _eval(left, right) {\n if (typeof right === 'string') {\n return right.indexOf(left) !== -1;\n }\n\n if (Array.isArray(right)) {\n return right.some(function (elem) {\n return elem === left;\n });\n }\n\n return false;\n }\n },\n '!': {\n type: 'unaryOp',\n precedence: Infinity,\n eval: function _eval(right) {\n return !right;\n }\n }\n },\n\n /**\n * A map of function names to javascript functions. A Jexl function\n * takes zero ore more arguemnts:\n *\n * - {*} ...args: A variable number of arguments passed to this function.\n * All of these are pre-evaluated to their actual values before calling\n * the function.\n *\n * The Jexl function should return either the transformed value, or\n * a Promises/A+ Promise object that resolves with the value and rejects\n * or throws only when an unrecoverable error occurs. Functions should\n * generally return undefined when they don't make sense to be used on the\n * given value type, rather than throw/reject. An error is only\n * appropriate when the function would normally return a value, but\n * cannot due to some other failure.\n */\n functions: {},\n\n /**\n * A map of transform names to transform functions. A transform function\n * takes one ore more arguemnts:\n *\n * - {*} val: A value to be transformed\n * - {*} ...args: A variable number of arguments passed to this transform.\n * All of these are pre-evaluated to their actual values before calling\n * the function.\n *\n * The transform function should return either the transformed value, or\n * a Promises/A+ Promise object that resolves with the value and rejects\n * or throws only when an unrecoverable error occurs. Transforms should\n * generally return undefined when they don't make sense to be used on the\n * given value type, rather than throw/reject. An error is only\n * appropriate when the transform would normally return a value, but\n * cannot due to some other failure.\n */\n transforms: {}\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jexl/dist/grammar.js\n// module id = 2052\n// module chunks = 1","import { IterableChangeRecord, IterableDiffer, IterableDiffers, KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, NgZone, OnChanges, SimpleChange, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Reflection } from './Reflection';\r\n\r\ntype TComponent = OnChanges;\r\n\r\n/** Информация об отслеживаемом свойстве компонента */\r\ninterface IPropertyInfo {\r\n /** отслеживаемый объект */\r\n source: object;\r\n /** наименование свойства компонента, связанного с отслеживаемым объектом. Может быть пустым, если используетя простое отслеживание (без компонента) */\r\n propertyName?: string;\r\n /** наименования свойств отслеживаемого объекта, которые должны отслеживаться. Если не установлено - отслеживаются все свойства */\r\n subPropertyNames?: string[];\r\n /** differ для отслеживаемого объекта */\r\n differ?: KeyValueDiffer | IterableDiffer\r\n};\r\n\r\n/** Описатель отслеживаемых свойств компонента */\r\nexport interface IComponentProperties {\r\n /** Экземпляр компонента */\r\n component: TComponent;\r\n /** Список названий отслеживаемых свойств. После двоеточия, через запятую, можно указать наименования свойств отслеживаемого объекта, которые должны отслеживаться. */\r\n propertyNames: string[];\r\n}\r\n\r\n\r\n/**\r\n * Служит для отслеживания изменений свойств объектов-параметров компонентов.\r\n * Если компоненту в качестве @Input-параметра будет указан объект, то изменения значений его свойств не будут обнаружены и метод ngOnChange вызываться не будет.\r\n * Данный объект выполняет отслеживание изменений и вызов метода ngOnChange в случае факта изменения.\r\n * ВАЖНО: Отслеживаются только простые свойства (не имеющие геттеров)\r\n */\r\nexport class ComponentPropertiesObserver {\r\n\r\n private component: TComponent;\r\n private differ: KeyValueDiffer;\r\n private differUnsub: Subscription;\r\n\r\n private differsProps: KeyValueDiffers;\r\n private differsArrays: IterableDiffers;\r\n\r\n private properties: IPropertyInfo[];\r\n\r\n constructor(src: IComponentProperties | object, throttleTime: number = 100) {\r\n if (src) {\r\n let sourceInfo = src;\r\n this.component = sourceInfo.component;\r\n this.differsProps = Reflection.get(KeyValueDiffers);\r\n this.differsArrays = Reflection.get(IterableDiffers);\r\n if (this.differsProps && this.differsArrays) {\r\n const zone = Reflection.get(NgZone);\r\n if (typeof this.component === 'object' && Array.isArray(sourceInfo.propertyNames)) {\r\n this.differ = this.differsProps.find(this.component).create();\r\n this.properties = sourceInfo.propertyNames\r\n .select(propertyName => {\r\n let res = null;\r\n propertyName = propertyName?.trim();\r\n if (propertyName) {\r\n const arr = propertyName.split(':');\r\n propertyName = arr[0].trim();\r\n let subPropertyNames = arr[1] ? arr[1].trim().split(',').select(x => x.trim()).where(x => !!x).toArray() : null;\r\n if (subPropertyNames?.length === 0) subPropertyNames = null;\r\n const source = this.component[propertyName];\r\n res = {\r\n source,\r\n propertyName,\r\n subPropertyNames,\r\n differ: Array.isArray(source)\r\n ? this.differsArrays.find(source).create()\r\n : source && typeof source === 'object'\r\n ? this.differsProps.find(source).create()\r\n : null\r\n };\r\n }\r\n return res;\r\n })\r\n .where(x => !!x)\r\n .toArray();\r\n } else if (sourceInfo && typeof sourceInfo === 'object') {\r\n this.properties = [{\r\n source: sourceInfo,\r\n propertyName: null,\r\n differ: Array.isArray(sourceInfo)\r\n ? this.differsArrays.find(sourceInfo).create()\r\n : this.differsProps.find(sourceInfo).create()\r\n }];\r\n }\r\n this.differUnsub = zone.onMicrotaskEmpty.throttleTime(throttleTime).subscribe(() => this.detectChanges());\r\n }\r\n }\r\n }\r\n\r\n release() {\r\n this.differUnsub?.unsubscribe();\r\n this.differUnsub = null;\r\n }\r\n\r\n detectChanges() {\r\n const componentChanges = this.differ ? this.differ.diff(this.component) : null;\r\n const simpleChanges = {};\r\n if (componentChanges) {\r\n componentChanges.forEachChangedItem(item => this.onComponentChanges(item));\r\n componentChanges.forEachAddedItem(item => this.onComponentChanges(item));\r\n componentChanges.forEachRemovedItem(item => this.onComponentChanges(item));\r\n }\r\n for (let p of this.properties.where(p => !!p.differ).toArray()) {\r\n const prop = p;\r\n const propChanges = prop.differ ? prop.differ.diff(this.component[prop.propertyName]) : null;\r\n if (propChanges) {\r\n propChanges.forEachAddedItem(item => this.onPropertyChanges(prop, item, simpleChanges));\r\n propChanges.forEachRemovedItem(item => this.onPropertyChanges(prop, item, simpleChanges));\r\n const kvChanges = >propChanges;\r\n if (typeof kvChanges.forEachChangedItem === 'function') {\r\n kvChanges.forEachChangedItem(item => this.onPropertyChanges(prop, item, simpleChanges));\r\n }\r\n }\r\n }\r\n if (Object.getOwnPropertyNames(simpleChanges).length > 0) {\r\n this.component.ngOnChanges(simpleChanges);\r\n }\r\n }\r\n\r\n /** Вызывается при изменении отслеживаемых свойств компонента */\r\n onComponentChanges(v: KeyValueChangeRecord) {\r\n const prop = this.properties.firstOrDefault(p => p.propertyName === v.key);\r\n if (prop) {\r\n //console.log(' + Component Changes: ', v.key, v.currentValue);\r\n // значение свойства обновилось - необходимо обновить differ\r\n prop.source = this.component[prop.propertyName];\r\n prop.differ = Array.isArray(prop.source)\r\n ? this.differsArrays.find(prop.source).create()\r\n : prop.source && typeof prop.source === 'object'\r\n ? this.differsProps.find(prop.source).create()\r\n : null\r\n // необходимо послать уведомления об изменении значений ???\r\n }\r\n }\r\n\r\n /** Вызывается при изменении полей отслеживаемых свойств компонента */\r\n onPropertyChanges(prop: IPropertyInfo, v: KeyValueChangeRecord | IterableChangeRecord, simpleChanges: SimpleChanges): SimpleChanges {\r\n const key = (>v).key;\r\n if (!prop.subPropertyNames || key && prop.subPropertyNames.contains(key)) {\r\n //console.log(' +++ Component Property Changes: ', prop.propertyName, v);\r\n if (typeof this.component?.ngOnChanges === 'function') {\r\n simpleChanges = simpleChanges || { };\r\n simpleChanges[prop.propertyName] = new SimpleChange(null, prop.source, false);\r\n if (key) {\r\n // это изменение свойств объекта\r\n const kvValue = >v;\r\n simpleChanges[`${prop.propertyName}.${key}`] = new SimpleChange(kvValue.previousValue, kvValue.currentValue, false);\r\n } else {\r\n // это изменение состава элементов массива\r\n // ничего делать не нужно\r\n }\r\n }\r\n }\r\n return simpleChanges;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/ComponentPropertiesObserver.ts","import { isEmpty, isArray } from './utils';\r\nimport { FormGroup, FormControl, AbstractControl } from '@angular/forms';\r\nimport {translate} from '../interfaces/core-translate.service';\r\nimport { ViewContainerRef } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { clone, toJson } from './Json';\r\n\r\nexport class FormHelper {\r\n\r\n static getPathValue(form: FormGroup, path: string): any {\r\n if (!(form instanceof FormGroup) || !path) return form;\r\n if (form.controls[path] instanceof AbstractControl) return form.controls[path].value;\r\n const arr = path.split('.');\r\n let key = '';\r\n for (let i = 0; i < arr.length; i++) {\r\n key = i === 0 ? arr[0] : (key + '.' + arr[i]);\r\n if (form.controls[key] instanceof FormGroup) {\r\n path = path.substring(path.indexOf('.') + 1);\r\n return FormHelper.getPathValue(form.controls[key] as FormGroup, path);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n static setPathValue(form: FormGroup, path: string, value: any): void {\r\n if (form instanceof FormGroup && path) {\r\n if (!path.includes('.')) {\r\n form.controls[path] = value;\r\n } else {\r\n const arr = path.split('.');\r\n let key = '';\r\n for (let i = 0; i < arr.length; i++) {\r\n key = i === 0 ? arr[0] : (key + '.' + arr[i]);\r\n if (form.controls[key] instanceof FormGroup)\r\n {\r\n path = path.substring(path.indexOf('.') + 1);\r\n FormHelper.setPathValue(form.controls[key] as FormGroup, path, value);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n static removePrivateProps(value: object, preserveEmptyProps?: boolean) {\r\n for (let name of Object.getOwnPropertyNames(value)) {\r\n if (name.includes('.') || name.startsWith('$') || name.startsWith('_') || (!preserveEmptyProps && isEmpty(value[name]))) {\r\n delete value[name];\r\n }\r\n else if (value[name] && typeof value[name] === 'object' && !moment.isMoment(value[name]) && !isArray(value[name])) {\r\n this.removePrivateProps(value[name]);\r\n }\r\n }\r\n }\r\n\r\n static getModel(form: FormGroup, preservePrivateProps?: boolean, preserveEmptyProps?: boolean): TModel {\r\n const res = clone(form.getRawValue());\r\n if (!preservePrivateProps) {\r\n this.removePrivateProps(res, preserveEmptyProps);\r\n }\r\n return res;\r\n }\r\n\r\n static setFormControl(form: FormGroup, name: string, value: object) {\r\n let control = form.controls[name];\r\n if (!control) {\r\n control = typeof value !== 'object' || moment.isMoment(value) || isArray(value) || isEmpty(value) ? new FormControl() : new FormGroup({});\r\n form.addControl(name, control);\r\n }\r\n\r\n if (control instanceof FormGroup) {\r\n for (let prop of Object.getOwnPropertyNames(value)) {\r\n this.setFormControl(control, prop, value[prop]);\r\n }\r\n } else {\r\n control.setValue(value);\r\n control.markAsUntouched();\r\n control.markAsPristine();\r\n }\r\n }\r\n\r\n static setModel(form: FormGroup, value: TModel) {\r\n for (let prop of Object.getOwnPropertyNames(value)) {\r\n this.setFormControl(form, prop, value[prop]);\r\n }\r\n/*\r\n for (let prop of Object.getOwnPropertyNames(form.controls)) {\r\n this.setFormControl(form, prop, value[prop]);\r\n }\r\n*/\r\n form.markAsUntouched();\r\n form.markAsPristine();\r\n form['$invalidForm'] = false;\r\n }\r\n\r\n static validatorMessages(control: AbstractControl, l10NPrefix: string = '@FORMS.VALIDATORS'): string[] {\r\n if (!control || !control.errors) {\r\n return undefined;\r\n }\r\n const errors: string[] = [];\r\n const config = {\r\n required: (l10NPrefix ? `${l10NPrefix}.REQUIRED|`: '') + 'Field is required',\r\n requiredTrue: (l10NPrefix ? `${l10NPrefix}.REQUIRED_TRUE|`: '') + 'Value should be true',\r\n email: (l10NPrefix ? `${l10NPrefix}.EMAIL|`: '') + 'Field should contain e-mail',\r\n pattern: (l10NPrefix ? `${l10NPrefix}.PATTERN|`: '') + 'Field does not match to pattern'\r\n };\r\n\r\n if (control.errors.hasOwnProperty('custom')) {\r\n config['custom'] = (typeof control.errors['custom'] === 'string' && control.errors['custom'].length) \r\n ? control.errors['custom'] \r\n : (l10NPrefix ? `${l10NPrefix}.CUSTOM|`: '') + 'Does not match to format';\r\n }\r\n\r\n if (control.errors.hasOwnProperty('minlength')) {\r\n config['minlength'] = l10NPrefix ? `${l10NPrefix}.MIN_LENGTH|Minimum length {{requiredLength}}, but actual one is {{actualLength}}`: `Minimum length ${control.errors['minlength'].requiredLength}`;\r\n }\r\n if (control.errors.hasOwnProperty('maxlength')) {\r\n config['maxlength'] = l10NPrefix ? `${l10NPrefix}.MAX_LENGTH|Maximum length {{requiredLength}}, but actual one is {{actualLength}}`: `Maximum length ${control.errors['maxlength'].requiredLength}`;\r\n }\r\n if (control.errors.hasOwnProperty('min')) {\r\n config['min'] = l10NPrefix ? `${l10NPrefix}.MIN|Minimum value {{min}}, but actual one is {{actual}}`: `Minimum value ${control.errors['min'].min}`;\r\n }\r\n if (control.errors.hasOwnProperty('max')) {\r\n config['max'] = l10NPrefix ? `${l10NPrefix}.MAX|Maximum value {{max}}, but actual one is {{actual}}`: `Maximum value ${control.errors['max'].max}`;\r\n }\r\n\r\n Object.keys(control.errors).forEach((error: string) => {\r\n let err = config[error];\r\n if (err) {\r\n if (l10NPrefix) {\r\n err = translate.instant(err, control.errors[error]);\r\n }\r\n errors.push(err);\r\n }\r\n });\r\n\r\n if (errors.length === 0) {\r\n errors.push(toJson(control.errors));\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n static getRootForm(viewContainer: ViewContainerRef): FormGroup {\r\n let res = null;\r\n // Hack: works in Angular 6. May be changed in future versions of Angular.\r\n/* не работает с *ngIf\r\n if (viewContainer.injector['view'] && viewContainer.injector['view']['context']) {\r\n const parent = viewContainer.injector['view']['context'];\r\n*/\r\n// не работает в Angular-9\r\n/*\r\n if (viewContainer.injector['view'] && viewContainer.injector['view']['component']) {\r\n const parent = viewContainer.injector['view']['component'];\r\n*/\r\n if (viewContainer['$component'] && viewContainer['$component'].parentComponent) {\r\n const parent = viewContainer['$component'].parentComponent;\r\n for (let propName of Object.getOwnPropertyNames(parent)) {\r\n // будем искать только свойства, которые начинаются с form*\r\n if (propName.startsWith('form') && parent[propName] instanceof FormGroup) {\r\n res = parent[propName];\r\n break;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/FormHelper.ts","export * from './js.net.array';\r\nexport * from './js.net.function';\r\nexport * from './js.net.md5';\r\nexport * from './js.net.path';\r\nexport * from './js.net.string';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.extensions.ts","export namespace JsNetArray {\r\n\r\n if (typeof Array.prototype['Clone'] != 'function') {\r\n Array.prototype['Clone'] = function() {\r\n return this.slice(0);\r\n };\r\n }\r\n\r\n if (typeof Array.prototype.clone != 'function') {\r\n Array.prototype.clone = function() {\r\n return this.slice(0);\r\n };\r\n }\r\n\r\n /** \r\n Syntax:\r\n array.Add(index, value1, value2, [subValue1, subValue2, ..., subValueN], ..., valueN) \r\n */\r\n if (typeof Array.prototype.Add != 'function') {\r\n Array.prototype.Add = function () {\r\n var index = this.length;\r\n arguments.length > 0\r\n && this.splice.apply(this, [index, 0].concat([].shift.call(arguments)))\r\n && this.Add.apply(this, arguments);\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.AddRange != 'function') {\r\n Array.prototype.AddRange = function () {\r\n this.Add.apply(this, arguments);\r\n return this;\r\n };\r\n }\r\n\r\n /** \r\n Syntax:\r\n array.Insert(index, value1, value2, [subValue1, subValue2, ..., subValueN], ..., valueN) \r\n */\r\n if (typeof Array.prototype.Insert != 'function') {\r\n Array.prototype.Insert = function (index) {\r\n index = Math.min(index, this.length);\r\n arguments[0] = index;\r\n arguments.length > 1\r\n && this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))\r\n && this.Insert.apply(this, arguments);\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.InsertRange != 'function') {\r\n Array.prototype.InsertRange = function () {\r\n this.Insert.apply(this, arguments);\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.Contains != 'function') {\r\n Array.prototype.Contains = function (element) {\r\n return this.indexOf(element) >= 0;\r\n };\r\n }\r\n if (typeof Array.prototype.Clear != 'function') {\r\n Array.prototype.Clear = function () {\r\n this.splice(0, this.length);\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.RemoveAt != 'function') {\r\n Array.prototype.RemoveAt = function (index, count) {\r\n if (index >= 0) {\r\n if (count == undefined) count = 1;\r\n this.splice(index, count);\r\n }\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.RemoveRange != 'function') {\r\n Array.prototype.RemoveRange = function (index, count) {\r\n return this.RemoveAt(index, count);\r\n };\r\n }\r\n if (typeof Array.prototype.Remove != 'function') {\r\n Array.prototype.Remove = function () {\r\n if (arguments.length === 1 && typeof arguments[0] === 'function') {\r\n for (let index = this.length - 1; index >= 0; index--) {\r\n const el = this[index];\r\n if (arguments[0](el))\r\n this.RemoveAt(index);\r\n }\r\n } else {\r\n for (let i = 0; i < arguments.length; i++) {\r\n const element = arguments[i];\r\n const idx = this.indexOf(element);\r\n this.RemoveAt(idx);\r\n }\r\n }\r\n return this;\r\n };\r\n }\r\n if (typeof Array.prototype.GetRange != 'function') {\r\n Array.prototype.GetRange = function (index, count) {\r\n if (index == undefined)\r\n index = 0;\r\n else\r\n index = Math.min(Math.max(index, 0), this.length - 1);\r\n\r\n if (count == undefined)\r\n count = this.length - index;\r\n else\r\n count = Math.min(count, this.length - index);\r\n\r\n if (index < 0 || count <= 0) return [];\r\n\r\n return this.slice(index, index + count);\r\n };\r\n }\r\n\r\n/*\r\n function _indexOf(testArray, element, index, count, fromTheEnd) {\r\n if (index == undefined)\r\n index = fromTheEnd ? testArray.length - 1 : 0;\r\n else\r\n index = Math.min(Math.max(index, 0), testArray.length - 1);\r\n\r\n if (count != undefined)\r\n testArray = testArray.GetRange(0, fromTheEnd ? index - count + 1 : index + count);\r\n\r\n return fromTheEnd \r\n ? testArray.lastIndexOf(element, index)\r\n : testArray.indexOf(element, index);\r\n }\r\n*/\r\n\r\n if (typeof Array.prototype.IndexOf != 'function') {\r\n Array.prototype.IndexOf = function (element, index, count) {\r\n if (index == undefined)\r\n index = 0;\r\n else\r\n index = Math.min(Math.max(index, 0), this.length - 1);\r\n\r\n var testArray = this;\r\n\r\n if (count != undefined)\r\n testArray = this.GetRange(0, index + count);\r\n\r\n return testArray.indexOf(element, index);\r\n };\r\n }\r\n\r\n if (typeof Array.prototype.LastIndexOf != 'function') {\r\n Array.prototype.LastIndexOf = function (element, index, count) {\r\n if (index == undefined)\r\n index = this.length - 1;\r\n else\r\n index = Math.min(Math.max(index, 0), this.length - 1);\r\n\r\n var testArray = this;\r\n\r\n if (count != undefined) {\r\n testArray = this.GetRange(index - count + 1, this.length);\r\n index = count - 1;\r\n }\r\n \r\n\r\n return testArray.lastIndexOf(element, index);\r\n };\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.array.ts","export namespace JsNetFunction {\r\n if (typeof Function.prototype.getBody !== 'function') {\r\n Function.prototype.getBody = function() {\r\n // Get content between first { and last }\r\n const m = this.toString().match(/\\{([\\s\\S]*)\\}/m)[1];\r\n // Strip comments\r\n return m.replace(/^\\s*\\/\\/.*$/mg, '');\r\n };\r\n }\r\n\r\n if (typeof Function.prototype.isEmpty !== 'function') {\r\n Function.prototype.isEmpty = function() {\r\n return (this.getBody() || '').trim() === '';\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.function.ts","export namespace JsNetPath {\r\n\r\n if (typeof String.prototype.ExtractDirectory != 'function') {\r\n String.prototype.ExtractDirectory = function (separator) {\r\n separator = separator || '/';\r\n var path = this.split(separator);\r\n path.length--;\r\n path = path.join(separator);\r\n return path;\r\n };\r\n }\r\n\r\n if (typeof String.prototype.ExtractFileName != 'function') {\r\n String.prototype.ExtractFileName = function (separator) {\r\n separator = separator || '/';\r\n var path = this.split(separator);\r\n path = path[path.length - 1];\r\n return path;\r\n };\r\n }\r\n\r\n /**\r\n Extracts file name without extension from path.\r\n for 'fileName.ext' -> returns 'fileName'\r\n for 'fileName.' -> returns 'fileName'\r\n for 'fileName.name1.name2.ext' -> returns 'fileName.name1.name2'\r\n */\r\n if (typeof String.prototype.ExtractOnlyFileName != 'function') {\r\n String.prototype.ExtractOnlyFileName = function (separator) {\r\n var res = this.ExtractFileName(separator);\r\n var path = res.split('.');\r\n if (path.length > 1) {\r\n path.length--;\r\n res = path.join('.');\r\n }\r\n return res;\r\n };\r\n }\r\n\r\n /**\r\n Extracts file extension from path.\r\n for 'fileName.ext' -> returns 'ext'\r\n for 'fileName.' -> returns ''\r\n for 'fileName' -> returns undefined\r\n */\r\n if (typeof String.prototype.ExtractFileExt != 'function') {\r\n String.prototype.ExtractFileExt = function (separator) {\r\n var res = this.ExtractFileName(separator);\r\n var path = res.split('.');\r\n if (path.length > 1) {\r\n res = path[path.length - 1];\r\n } else {\r\n res = undefined;\r\n }\r\n return res;\r\n };\r\n }\r\n\r\n /**\r\n Changes file extension from path.\r\n for 'fileName.ext' { '' -> returns 'fileName'\r\n for 'fileName.ext' { '.newExt' or 'newExt' -> returns 'fileName.newExt'\r\n for 'fileName.' { '.newExt' or 'newExt' -> returns 'fileName.newExt'\r\n for 'fileName' { '.newExt' or 'newExt' -> returns 'fileName.newExt'\r\n */\r\n if (typeof String.prototype.ChangeFileExt != 'function') {\r\n String.prototype.ChangeFileExt = function (newExt, separator) {\r\n newExt = newExt || \"\";\r\n if (newExt !== \"\" && newExt[0] !== '.')\r\n newExt = '.' + newExt;\r\n var oldExt = this.ExtractFileExt(separator);\r\n if (oldExt === undefined)\r\n oldExt = '';\r\n else\r\n oldExt = '.' + oldExt;\r\n var res = this.substr(0, this.length - oldExt.length) + newExt;\r\n return res;\r\n };\r\n }\r\n\r\n\r\n\r\n if (typeof String.prototype.ExpandPath != 'function') {\r\n String.prototype.ExpandPath = function (basePath, separator) {\r\n if (this.StartsWith(/https?:\\/\\//i)) {\r\n return this;\r\n }\r\n separator = separator || '/';\r\n var path = this;\r\n if (!basePath) {\r\n if (path.StartsWith(separator)) {\r\n //basePath = window.location.appFolder;\r\n basePath = window.location.origin;\r\n } else {\r\n basePath = window.location.href;\r\n // Do the assumption if href is not ends with separator and the last part of the path contains an extension - \r\n // it's href to file name and we have to extract its folder.\r\n if (!basePath.EndsWith('/') && basePath.ExtractFileName().includes('.'))\r\n basePath = basePath.ExtractDirectory();\r\n }\r\n }\r\n if (path.StartsWith(separator)) {\r\n path = path.substr(1, path.length - 1);\r\n basePath = window.location.origin;\r\n }\r\n\r\n if (!basePath.EndsWith(separator))\r\n basePath = basePath + separator;\r\n return basePath + path;\r\n };\r\n }\r\n\r\n\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.path.ts","import { fromJson } from './Json';\r\n\r\nexport namespace JsNetString {\r\n\r\n // ReSharper disable NativeTypePrototypeExtending\r\n\r\n //////////////////////////// private section /////////////////////////////////\r\n RegExp.escape = text => text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n\r\n RegExp.rebuild = (regexp, options) => {\r\n var source = regexp.source || '';\r\n options = options || {};\r\n var flags = '';\r\n if (options.startsWith && !source.StartsWith('^')) source = '^' + source;\r\n if (options.endsWith && !source.EndsWith('$')) source = source + '$';\r\n\r\n if (options.ignoreCase === undefined && regexp.ignoreCase || options.ignoreCase !== undefined && options.ignoreCase) flags = 'i';\r\n if (options.global === undefined && regexp.global || options.global !== undefined && options.global) flags = 'g';\r\n if (options.multiline === undefined && regexp.multiline || options.multiline !== undefined && options.multiline) flags = 'm';\r\n return new RegExp(source, flags);\r\n };\r\n\r\n const defaultTrimChars = ' \\0\\xA0\\r\\n\\t';\r\n\r\n// ReSharper disable InconsistentNaming\r\n function trim(s: string, charlist?: string) {\r\n return trimRight(trimLeft(s, charlist), charlist);\r\n }\r\n\r\n function trimLeft(s, charlist) {\r\n if (charlist === undefined)\r\n charlist = defaultTrimChars;\r\n // converts array object to string\r\n if (charlist instanceof Array)\r\n charlist = charlist.join('');\r\n return s?.replace(new RegExp('^[' + RegExp.escape(charlist) + ']+'), '');\r\n }\r\n\r\n function trimRight(s, charlist) {\r\n if (charlist === undefined)\r\n charlist = defaultTrimChars;\r\n // converts array object to string\r\n if (charlist instanceof Array)\r\n charlist = charlist.join('');\r\n return s?.replace(new RegExp('[' + RegExp.escape(charlist) + ']+$'), '');\r\n }\r\n\r\n function appendText(s: string, text: string, separator: string): string {\r\n if (!s) return text || '';\r\n if (!text) return s || '';\r\n return s + separator + text;\r\n }\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n\r\n if (typeof String.prototype.AppendText != 'function') {\r\n String.prototype.AppendText = function (text, separator) {\r\n return appendText(this, text, separator);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.IsEqual != 'function') {\r\n String.prototype.IsEqual = function (strOrRegexp, caseInsensitive) {\r\n if (strOrRegexp instanceof RegExp) {\r\n const regexp = RegExp.rebuild(strOrRegexp, { startsWith: true, endsWith: true, ignoreCase: caseInsensitive });\r\n return this.search(regexp) >= 0;\r\n } else {\r\n if (caseInsensitive) {\r\n return this.toLocaleLowerCase() === strOrRegexp?.toLocaleLowerCase();\r\n } else {\r\n return this === strOrRegexp;\r\n }\r\n }\r\n };\r\n }\r\n\r\n if (typeof String.prototype.StartsWith != 'function') {\r\n String.prototype.StartsWith = function (strOrRegexp, caseInsensitive) {\r\n if (strOrRegexp instanceof RegExp) {\r\n const regexp = RegExp.rebuild(strOrRegexp, { startsWith: true, ignoreCase: caseInsensitive });\r\n return this.search(regexp) >= 0;\r\n } else {\r\n if (strOrRegexp === '') return true;\r\n return this.slice(0, strOrRegexp?.length).IsEqual(strOrRegexp, caseInsensitive);\r\n }\r\n };\r\n }\r\n\r\n if (typeof String.prototype.EndsWith != 'function') {\r\n String.prototype.EndsWith = function (strOrRegexp, caseInsensitive) {\r\n if (!strOrRegexp) return false;\r\n if (strOrRegexp instanceof RegExp) {\r\n const regexp = RegExp.rebuild(strOrRegexp, { endsWith: true, ignoreCase: caseInsensitive });\r\n return this.search(regexp) >= 0;\r\n } else {\r\n if (strOrRegexp === '') return true;\r\n return (this.slice(0, -strOrRegexp?.length) + strOrRegexp).IsEqual(this, caseInsensitive);\r\n }\r\n };\r\n }\r\n\r\n if (typeof String.prototype.Contains != 'function') {\r\n String.prototype.Contains = function (strOrRegexp, caseInsensitive) {\r\n if (strOrRegexp instanceof RegExp) {\r\n const regexp = RegExp.rebuild(strOrRegexp, { ignoreCase: caseInsensitive });\r\n return this.search(regexp) >= 0;\r\n } else {\r\n if (caseInsensitive)\r\n return this.toLowerCase().indexOf(strOrRegexp?.toLowerCase()) >= 0;\r\n else\r\n return this.indexOf(strOrRegexp) >= 0;\r\n }\r\n };\r\n }\r\n\r\n if (typeof String.prototype.Trim != 'function') {\r\n String.prototype.Trim = function (chars) {\r\n return trim(this, chars);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.TrimStart != 'function') {\r\n String.prototype.TrimStart = function (chars) {\r\n return trimLeft(this, chars);\r\n };\r\n }\r\n if (typeof String.prototype.TrimLeft != 'function') {\r\n String.prototype.TrimLeft = function (chars) {\r\n return trimLeft(this, chars);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.TrimEnd != 'function') {\r\n String.prototype.TrimEnd = function (chars) {\r\n return trimRight(this, chars);\r\n };\r\n }\r\n if (typeof String.prototype.TrimRight != 'function') {\r\n String.prototype.TrimRight = function (chars) {\r\n return trimRight(this, chars);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.RegexIndexOf != 'function') {\r\n String.prototype.RegexIndexOf = function (regex, startPos) {\r\n var indexOf = this.substring(startPos || 0).search(regex);\r\n return (indexOf >= 0) ? (indexOf + (startPos || 0)) : indexOf;\r\n };\r\n }\r\n\r\n if (typeof String.prototype.RegexLastIndexOf != 'function') {\r\n String.prototype.RegexLastIndexOf = function(regex, startPos)\r\n {\r\n regex = (regex.global) ? regex : new RegExp(regex.source || regex, 'g' + (regex.ignoreCase ? 'i' : '') + (regex.multiLine ? 'm' : ''));\r\n if (typeof (startPos) == 'undefined') {\r\n startPos = this.length;\r\n } else if (startPos < 0) {\r\n startPos = 0;\r\n }\r\n var stringToWorkWith = this.substring(0, startPos + 1);\r\n var lastIndexOf = -1;\r\n var nextStop = 0;\r\n var result;\r\n while ((result = regex.exec(stringToWorkWith)) != null) {\r\n lastIndexOf = result.index;\r\n regex.lastIndex = ++nextStop;\r\n }\r\n return lastIndexOf;\r\n };\r\n }\r\n\r\n if (typeof String.prototype.IndexOf != 'function') {\r\n String.prototype.IndexOf = function (regexOrString, startPos, count) {\r\n if (count <= 0) return -1;\r\n if (startPos == undefined)\r\n startPos = 0;\r\n else\r\n startPos = Math.min(Math.max(startPos, 0), this.length - 1);\r\n\r\n var testString = this;\r\n\r\n if (count != undefined)\r\n testString = this.slice(0, startPos + count);\r\n\r\n if (typeof regexOrString == 'string')\r\n return testString.indexOf(regexOrString, startPos);\r\n else\r\n return testString.RegexIndexOf(regexOrString, startPos);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.LastIndexOf != 'function') {\r\n String.prototype.LastIndexOf = function (regexOrString, startPos, count) {\r\n if (count <= 0) return -1;\r\n\r\n if (startPos == undefined)\r\n startPos = this.length - 1;\r\n else\r\n startPos = Math.min(Math.max(startPos, 0), this.length - 1);\r\n\r\n var testString = this;\r\n\r\n if (count != undefined) {\r\n testString = this.slice(startPos - count + 1, this.length);\r\n startPos = count - 1;\r\n }\r\n \r\n\r\n if (typeof regexOrString == 'string')\r\n return testString.lastIndexOf(regexOrString, startPos);\r\n else\r\n return testString.RegexLastIndexOf(regexOrString, startPos);\r\n };\r\n }\r\n\r\n if (typeof String.prototype.FromJson != 'function') {\r\n String.prototype.FromJson = function (defValue) {\r\n try {\r\n var jsonString = trim(this);\r\n if (jsonString === '') return defValue;\r\n if (jsonString[0] !== '{' && jsonString[jsonString.length - 1] !== '}'\r\n && jsonString[0] !== '[' && jsonString[jsonString.length - 1] !== ']') {\r\n jsonString = '{' + jsonString + '}';\r\n }\r\n //return eval(`(${jsonString})`);\r\n return new Function(`return (${jsonString})`)();\r\n\r\n } catch (e) {\r\n return defValue;\r\n }\r\n };\r\n }\r\n\r\n if (typeof String.prototype.escapeHTML != 'function') {\r\n String.prototype.escapeHTML = function () {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n const div = document.createElement('div');\r\n const text = document.createTextNode(this);\r\n div.appendChild(text);\r\n return div.innerHTML;\r\n };\r\n }\r\n\r\n if (typeof String.prototype.unescapeHTML != 'function') {\r\n String.prototype.unescapeHTML = function () {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n const div = document.createElement('div');\r\n div.innerHTML = this;\r\n return div.innerText;\r\n };\r\n }\r\n if (typeof String.prototype.fromJson != 'function') {\r\n String.prototype.fromJson = function () {\r\n return fromJson(this);\r\n };\r\n }\r\n if (typeof String.prototype.camelize != 'function') {\r\n String.prototype.camelize = function () {\r\n return this.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (letter, index) => {\r\n return index === 0 ? letter.toLowerCase() : letter.toUpperCase();\r\n }).replace(/\\s+/g, '');\r\n };\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/js.net.string.ts","import {TypedEventEmitter} from './TypedEventEmitter';\r\n\r\nexport declare type TObservableEventType = ObservableEventType.Add |\r\n ObservableEventType.AddRange |\r\n ObservableEventType.CollectionChanged |\r\n ObservableEventType.Remove |\r\n ObservableEventType.Update;\r\n\r\nexport enum ObservableEventType {\r\n Add = 'add',\r\n AddRange = 'addRange',\r\n Remove = 'remove',\r\n Update = 'update',\r\n CollectionChanged = 'collectionChanged'\r\n}\r\n\r\nexport interface IObservableCollection {\r\n sourceData: Array;\r\n on(event: TObservableEventType): TypedEventEmitter>;\r\n add(newItem: T): T;\r\n addOrUpdate(item: T): T;\r\n addOrRemove(item: T): T;\r\n addRange(newItems: Array): Array;\r\n update(item: T, prop?: string): T;\r\n remove(item: T | string | number | ((T) => boolean)): void;\r\n clear(): void;\r\n count(): number;\r\n find(value: any, prop?: string | ((item: T) => string)): Array> | ISearchResult;\r\n dispose(): void;\r\n}\r\n \r\nexport interface ISearchResult {\r\n index: number;\r\n object: T;\r\n}\r\n\r\nexport interface IValuedEvent {\r\n event: ObservableEventType;\r\n items: Array;\r\n}\r\n\r\n/**\r\n* Observeable collection service as evented array\r\n**/\r\nexport class ObservableCollection implements IObservableCollection, Iterable {\r\n\r\n private _uniqueProperty: string | ((item: T) => string) = 'Id';\r\n\r\n private readonly _items = new Array();\r\n\r\n private _add = new TypedEventEmitter();\r\n private _addRange = new TypedEventEmitter>();\r\n private _remove = new TypedEventEmitter();\r\n private _update = new TypedEventEmitter();\r\n private _collectionChanged = new TypedEventEmitter>();\r\n\r\n constructor(items?: Array, uniqueProperty?: string | ((item: T) => string)) {\r\n if(items)\r\n this._items = items;\r\n\r\n if (uniqueProperty) {\r\n if (typeof uniqueProperty === 'string' && this._items.length > 0 && this._items.any(x => !x.hasOwnProperty(uniqueProperty)))\r\n throw new Error('Unique key is not present in all of collection items');\r\n\r\n this._uniqueProperty = uniqueProperty;\r\n }\r\n }\r\n\r\n throttleTime(throttleTime: number): this {\r\n this._add.setThrottleTime(throttleTime);\r\n this._addRange.setThrottleTime(throttleTime);\r\n this._remove.setThrottleTime(throttleTime);\r\n this._update.setThrottleTime(throttleTime);\r\n this._collectionChanged.setThrottleTime(throttleTime);\r\n return this;\r\n }\r\n\r\n debounceTime(debounceTime: number): this {\r\n this._add.setDebounceTime(debounceTime);\r\n this._addRange.setDebounceTime(debounceTime);\r\n this._remove.setDebounceTime(debounceTime);\r\n this._update.setDebounceTime(debounceTime);\r\n this._collectionChanged.setDebounceTime(debounceTime);\r\n return this;\r\n }\r\n\r\n\r\n [Symbol.iterator](): Iterator {\r\n return this._items[Symbol.iterator]();\r\n }\r\n get sourceData(): Array {\r\n return this._items;\r\n }\r\n \r\n on(event: TObservableEventType): TypedEventEmitter> {\r\n return this['_' + event];\r\n }\r\n\r\n add(newItem: T): T {\r\n this._items.push(newItem);\r\n this._add.emit(newItem);\r\n this._collectionChanged.emit({event: ObservableEventType.Add, items: this._items});\r\n \r\n return newItem;\r\n }\r\n\r\n addOrUpdate(item: T): T {\r\n if (!this._uniqueProperty)\r\n throw new Error('Unique property should be set');\r\n\r\n const obj = this.find(item);\r\n\r\n if (obj) {\r\n return this.update(item);\r\n } else {\r\n return this.add(item);\r\n }\r\n }\r\n\r\n addOrRemove(item: T): T {\r\n if (!this._uniqueProperty) throw new Error('Unique property should be set');\r\n const obj = this.find(item);\r\n if (obj) {\r\n this.remove(item);\r\n\r\n return null;\r\n } else {\r\n return this.add(item);\r\n }\r\n }\r\n\r\n addRange(newItems: Array): Array {\r\n for (let i = 0; i < newItems.length; i++) {\r\n this._items.push(newItems[i]);\r\n }\r\n\r\n this._addRange.emit(newItems);\r\n this._collectionChanged.emit({event: ObservableEventType.AddRange, items: this._items});\r\n \r\n return newItems;\r\n }\r\n\r\n /**\r\n * Updates the object. Object is searched by property name\r\n * @param prop Property used for object searching\r\n * @param item Object to be updated\r\n * @returns {} Updated object\r\n */\r\n update(item: T, prop?: string): T {\r\n const p = prop || this._uniqueProperty;\r\n if (!p) throw new Error('Unique property should be set');\r\n const obj = this.find(item, p);\r\n\r\n if (obj) {\r\n const index = obj[0].index;\r\n\r\n const value = this._items[index];\r\n for (let x of Object.getOwnPropertyNames(value)) {\r\n item[x] && (value[x] = item[x]);\r\n }\r\n\r\n this._update.emit(value);\r\n this._collectionChanged.emit({event: ObservableEventType.Update, items: this._items});\r\n\r\n return value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n updateExact(originalItem: T, overridingItem: T): T {\r\n const index = this._items.indexOf(originalItem);\r\n\r\n if (index === -1)\r\n return null;\r\n\r\n this._items[index] = overridingItem;\r\n\r\n this._update.emit(this._items[index]);\r\n this._collectionChanged.emit({event: ObservableEventType.Update, items: this._items});\r\n \r\n return overridingItem;\r\n }\r\n\r\n remove(item: T | string | number | ((T) => boolean)): void {\r\n if (typeof item === \"object\") {\r\n let index = -1;\r\n const fi = this.find(item);\r\n\r\n if (fi) {\r\n if (fi instanceof Array)\r\n index = fi[0].index;\r\n else\r\n index = fi.index;\r\n }\r\n\r\n if (index > -1) {\r\n this._remove.emit(this._items[index]);\r\n this._collectionChanged.emit({event: ObservableEventType.Remove, items: this._items});\r\n\r\n this._items.splice(index, 1);\r\n }\r\n } else {\r\n if (typeof item !== \"function\") {\r\n var key = item;\r\n\r\n if (typeof this._uniqueProperty === 'string')\r\n item = x => x[this._uniqueProperty] === key;\r\n else\r\n item = x => (this._uniqueProperty)(x) === key;\r\n }\r\n\r\n const foundItems = this._items.where(item).toArray();\r\n for (let i = 0; i < foundItems.length; i++) {\r\n this.remove(foundItems[i]);\r\n }\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.sourceData.length = 0;\r\n }\r\n\r\n find(item: T, prop?: string | ((item: T) => string)): Array> | ISearchResult {\r\n const result = [];\r\n\r\n if (!prop && !this._uniqueProperty) {\r\n const index = this._items.indexOf(item);\r\n if (index === -1)\r\n return null;\r\n else\r\n return {\r\n object: this._items[index],\r\n index: index\r\n };\r\n } else {\r\n var p: any = prop || this._uniqueProperty;\r\n\r\n let val: any | string;\r\n let selector: (item: T) => any;\r\n\r\n if (typeof p === \"string\") {\r\n val = item[p];\r\n selector = (item: T) => item[p];\r\n } else {\r\n val = (<((item: T) => string)>this._uniqueProperty)(item);\r\n selector = (item: T) => (<((item: T) => string)>p)(item);\r\n }\r\n\r\n for (let i = 0; i < this._items.length; i++) {\r\n if (selector(this._items[i]) === val) {\r\n result.push({\r\n index: i,\r\n object: this._items[i]\r\n });\r\n }\r\n } \r\n }\r\n \r\n return result.length > 0 ? result : null;\r\n }\r\n\r\n findAll(value: any, prop?: string | ((item: T) => string)): Array> | ISearchResult {\r\n const result = [];\r\n\r\n if (!prop && !this._uniqueProperty) {\r\n const index = this._items.indexOf(value);\r\n if (index === -1)\r\n return null;\r\n else\r\n return {\r\n object: this._items[index],\r\n index: index\r\n };\r\n } else {\r\n var p = prop || this._uniqueProperty;\r\n\r\n let selector: (item: T) => any;\r\n\r\n if (typeof p === \"string\") {\r\n selector = (item: T) => item[p];\r\n } else {\r\n selector = (item: T) => (p)(item);\r\n }\r\n\r\n for (let i = 0; i < this._items.length; i++) {\r\n if (selector(this._items[i]) === value) {\r\n result.push({\r\n index: i,\r\n object: this._items[i]\r\n });\r\n }\r\n }\r\n }\r\n\r\n return result.length > 0 ? result : null;\r\n }\r\n\r\n count(): number {\r\n return this._items.length;\r\n }\r\n\r\n dispose() {\r\n this._add.unsubscribe();\r\n this._addRange.unsubscribe();\r\n this._update.unsubscribe();\r\n this._remove.unsubscribe();\r\n this._collectionChanged.unsubscribe();\r\n this._items.Clear();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/ObservableCollection.ts","import { fromJson, toJson } from './Json';\r\n\r\nexport declare type TDefValue = T | (() => T);\r\nexport declare type TDefValueAsync = T | (() => T) | Promise | (() => Promise);\r\n\r\nexport interface IStorage {\r\n get(key: string, defValue?: TDefValue): T;\r\n getAsync(key: string, defValue?: TDefValueAsync): Promise;\r\n set(key: string, value: T);\r\n removeKey(key: string);\r\n removeAll();\r\n}\r\n\r\nexport class MemoryStorage implements IStorage {\r\n\r\n protected _data: { [key: string]: any } = {};\r\n\r\n protected getDefValue(defValue: TDefValue): T {\r\n if (typeof defValue === 'function') {\r\n return (defValue)();\r\n } else {\r\n return defValue;\r\n }\r\n }\r\n protected getDefValueAsync(defValue: TDefValueAsync): Promise {\r\n let r;\r\n if (typeof defValue === 'function') {\r\n r = (defValue)();\r\n } else {\r\n r = defValue;\r\n }\r\n if (r instanceof Promise) {\r\n return r;\r\n } else {\r\n return Promise.resolve(r);\r\n }\r\n }\r\n\r\n get1(key: string, defValue?: TDefValue): T {\r\n let res;\r\n if (key in this._data) {\r\n res = this._data[key];\r\n } else {\r\n res = this.getDefValue(defValue);\r\n this._data[key] = res;\r\n }\r\n return res;\r\n }\r\n\r\n get(key: string, defValue?: TDefValue): T {\r\n let res;\r\n if (key in this._data) {\r\n res = this._data[key];\r\n } else {\r\n res = this.getDefValue(defValue);\r\n this._data[key] = res;\r\n }\r\n return res;\r\n }\r\n\r\n getAsync(key: string, defValue?: TDefValueAsync): Promise {\r\n if (key in this._data) {\r\n return Promise.resolve(this._data[key]);\r\n } else {\r\n const defVal = this.getDefValueAsync(defValue);\r\n defVal.then(r => this._data[key] = r);\r\n return defVal;\r\n }\r\n }\r\n\r\n set(key: string, value: T): Promise {\r\n this._data[key] = value;\r\n return Promise.resolve();\r\n }\r\n\r\n removeKey(key: string): Promise {\r\n delete this._data[key];\r\n return Promise.resolve();\r\n }\r\n\r\n removeAll(): Promise {\r\n this._data = {};\r\n return Promise.resolve();\r\n }\r\n}\r\n\r\nexport class BrowserStorage extends MemoryStorage {\r\n\r\n constructor(public storage: Storage, public globalPrefix: string ) { super() }\r\n\r\n get(key: string, defValue?: TDefValue): any {\r\n const readDefValue = () => {\r\n let r = fromJson(this.storage.getItem(`${this.globalPrefix}: ${key}`));\r\n if (r === undefined)\r\n r = this.getDefValue(defValue);\r\n return r;\r\n }\r\n const res = super.get(key, readDefValue);\r\n return res;\r\n }\r\n set(key: string, value: any): Promise {\r\n super.set(key, value);\r\n this.storage.setItem(`${this.globalPrefix}: ${key}`, toJson(value));\r\n return Promise.resolve();\r\n }\r\n removeKey(key: string): Promise {\r\n super.removeKey(key);\r\n this.storage.removeItem(`${this.globalPrefix}: ${key}`);\r\n return Promise.resolve();\r\n }\r\n removeAll(): Promise {\r\n super.removeAll();\r\n for (let i = this.storage.length - 1; i >= 0; i--) {\r\n const key = this.storage.key(i);\r\n if (key.startsWith(`${this.globalPrefix}: `)) {\r\n this.storage.removeItem(key);\r\n }\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\n\r\nexport class LocalStorage extends BrowserStorage { constructor(globalPrefix: string) { super(window.localStorage, globalPrefix) } }\r\nexport class SessionStorage extends BrowserStorage { constructor(globalPrefix: string) { super(window.sessionStorage, globalPrefix) } }\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/Storage.ts","export class StringBuilder {\r\n\r\n result: string = '';\r\n suffix: string;\r\n\r\n static make(s: string | Record, template?: string): string {\r\n let res = '';\r\n if (s) {\r\n res = template;\r\n if (typeof s === 'object') {\r\n if (template) {\r\n let hasValue = false;\r\n for (let name of Object.getOwnPropertyNames(s)) {\r\n if (template.Contains(`{{${name}}}`)) {\r\n res = '';\r\n const value = s[name];\r\n if (value) {\r\n hasValue = true;\r\n template = template.replace(new RegExp(`{{${name}}}`, 'g'), value);\r\n }\r\n }\r\n }\r\n if (hasValue) {\r\n res = template;\r\n }\r\n }\r\n } else {\r\n res = s;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n constructor(source?: string) {\r\n this.result = source || '';\r\n }\r\n\r\n append(s: string | Record, template?: string, suffix: string = ', ', prefix: string = ''): StringBuilder {\r\n suffix = suffix ?? '';\r\n prefix = prefix ?? '';\r\n s = StringBuilder.make(s, template);\r\n if (s) {\r\n if (this.result) {\r\n this.result += prefix ? prefix : this.suffix;\r\n }\r\n this.result += s;\r\n this.suffix = suffix;\r\n }\r\n return this;\r\n }\r\n\r\n toString() {\r\n return this.result;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/StringBuilder.ts","import { ChangeDetectorRef, EventEmitter, Type } from '@angular/core';\r\nimport { isEmpty, ifEmpty, uid, debounce, clearDebounce } from './utils';\r\nimport { OnVisibleInScrollDirective } from '../directives/onVisibleInScroll.directive';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Интерфейс, описывающий дополнительные поля элементов списка */\r\nexport interface IFramedListItem {\r\n /** Идентификатор объекта (служит для корректной работы св-ва trackBy) */\r\n Id: string;\r\n /** Ссылка на сервис */\r\n $service: UssFramedListService;\r\n /** признак того, что элемент выделен в списке */\r\n $checked?: boolean;\r\n /** дополнительный класс элемента в списке */\r\n $class?: string;\r\n /** Исходный элемент */\r\n $source?: TItem;\r\n\r\n /** Наименование элемента. Отображается в первой строке списка по умолчанию. */\r\n $name?: string;\r\n /** Описание элемента. Отображается во второй строке списка по умолчанию. */\r\n $description?: string;\r\n}\r\n\r\n\r\nclass FramedListItem implements IFramedListItem {\r\n /** Идентификатор объекта (служит для корректной работы св-ва trackBy) */\r\n Id: string;\r\n /** Ссылка на сервис */\r\n $service: UssFramedListService;\r\n /** Исходный элемент */\r\n $source?: T;\r\n /** признак того, что элемент выделен в списке */\r\n get $checked(): boolean {\r\n return this.$service.selectedIds.contains(this.Id) ? !this.$service.reverseSelectionMode : this.$service.reverseSelectionMode;\r\n }\r\n set $checked(value: boolean) {\r\n this.$service.toggleSelection(this.Id, value);\r\n }\r\n\r\n /** Наименование элемента. Отображается в первой строке списка по умолчанию. */\r\n $name?: string;\r\n /** Описание элемента. Отображается во второй строке списка по умолчанию. */\r\n $description?: string;\r\n\r\n constructor(service: UssFramedListService, source: T) {\r\n this.$service = service;\r\n this.$source = source;\r\n if (source) {\r\n this.$name = source['Name'];\r\n this.$description = source['Description'] || source['Note'];\r\n }\r\n this.Id = service.getKeyValue(source);\r\n }\r\n}\r\n\r\nexport interface IUssLoaderItem extends IFramedListItem {\r\n $top?: number; // с какого элемента следует загрузить данные\r\n $pageSize?: number; // размер страницы данных\r\n}\r\n\r\n/** Сервис для получения постраничных данных для UssFramedList */\r\nexport class UssFramedListService {\r\n\r\n id = uid();\r\n\r\n /** Ссылка на обработчик списка */\r\n list: UssFramedList;\r\n\r\n /** Дополнительные параметры, передаваемые в метод сервиса updateTrackingObjectsInfo */ \r\n extraParams: { [name: string]: any };\r\n\r\n /**\r\n * Метод вызывается для кастомной загрузки страницы.\r\n * @param top номер элемента начала загрузки. (Начиная с 1).\r\n * @param count количество загружаемых элементов.\r\n */\r\n onLoadPage: (top: number, count: number, appendSubscriptions?: boolean) => Promise;\r\n\r\n /** Метод вызывается для кастомного проебразования элемента в его идентификатор. */\r\n onGetKeyValue: (item: T) => string;\r\n\r\n /** Список идентификаторов выделенных объектов */\r\n readonly selectedIds: string[] = [];\r\n\r\n /** Если равно `true` - то список `checkedItemIds` - указывает идентификаторы НЕ выделенных элемнтов при допущении, что все выделены. */\r\n reverseSelectionMode: boolean = false;\r\n\r\n /** Событие, вызываемое при изменении состояния выделения в списке. */\r\n selectionChanged = new EventEmitter();\r\n\r\n\r\n /**\r\n * Возвращает ключевое значение (идентификатор) объекта.\r\n */\r\n getKeyValue(item: T): string {\r\n return this.onGetKeyValue\r\n ? this.onGetKeyValue(item)\r\n : isEmpty(item) ? null : (item && typeof item === 'object' ? (item['Id'] || item.toString()) : (item).toString());\r\n }\r\n\r\n /**\r\n * Возвращает объект по его ключевому значению (идентификатору).\r\n */\r\n getObjectByKey(key: string, defValue?: T): Promise {\r\n if (defValue === undefined) defValue = key;\r\n let res = defValue;\r\n if (this.list) {\r\n res = this.list.frame.where(x => x.Id === key).select(x => x.$source).firstOrDefault() || defValue;\r\n }\r\n return Promise.resolve(res);\r\n }\r\n\r\n /** Должно быть перекрыто в классе наследнике */\r\n loadPageAsync(top: number, count: number, appendSubscriptions?: boolean): Promise {\r\n return this.onLoadPage\r\n ? this.onLoadPage(top, count, appendSubscriptions)\r\n : Promise.resolve([]);\r\n }\r\n\r\n /** Загрузка данных с начала списка */\r\n reload(): void {\r\n this.list && this.list.load();\r\n }\r\n\r\n\r\n /** Обновление текущего фрейма */\r\n refresh(): Promise {\r\n return this.list && this.list.refreshAsync();\r\n }\r\n\r\n get allUnchecked(): boolean {\r\n return this.selectedIds.length === 0 && !this.reverseSelectionMode;\r\n }\r\n\r\n /** Признак полного выделения/невыделения\r\n * Возвращает `true` - если всё выделено (путём сброса списка выделенных элементов и установки `reverseSelectionMode` в `true`)\r\n * Возвращает `false` - если всё не выделено (путём сброса списка выделенных элементов и установки `reverseSelectionMode` в `false`)\r\n * Иначе возвращает `undefined`.\r\n */\r\n get allChecked(): boolean {\r\n return this.selectedIds.length > 0 ? undefined : this.reverseSelectionMode;\r\n }\r\n set allChecked(value: boolean) {\r\n if (this.allChecked !== !!value) {\r\n this.toggleSelection(value);\r\n }\r\n }\r\n\r\n /** Возвращает `true`, если объект с указанным идентификатором выбран в списке. */\r\n isChecked(id: string): boolean {\r\n let res = this.allChecked;\r\n if (isEmpty(res)) {\r\n res = this.selectedIds.contains(id) ? !this.reverseSelectionMode : this.reverseSelectionMode;\r\n }\r\n return res;\r\n }\r\n\r\n setSelection(selectionIds: string[], reverseSelectionMode?: boolean): void {\r\n if (!selectionIds || selectionIds.length === 0 && this.selectedIds.length === 0 && !!this.reverseSelectionMode === !!reverseSelectionMode) return;\r\n this.selectedIds.Clear();\r\n this.selectedIds.AddRange(selectionIds);\r\n this.reverseSelectionMode = reverseSelectionMode;\r\n this.emitSelectionChanged();\r\n }\r\n\r\n /**\r\n * Устанавливает/сбрасывает/переключает состояние выделения отдельного элемента или всех элементов.\r\n * @param id если указан - идентификатор выделенного элемента. Иначе действие применяется ко всем элементам. \r\n * @param state если не указано - производится изменение состояния (переключение). Иначе - явная установка состояния.\r\n */\r\n toggleSelection(state: boolean | void, id?: string | void): void;\r\n toggleSelection(id: string | void, state?: boolean | void): void;\r\n toggleSelection(p1, p2?): void {\r\n let id = undefined;\r\n let state = undefined;\r\n if (typeof p1 === 'string') {\r\n id = p1;\r\n state = !!p2;\r\n }\r\n else if (typeof p1 === 'boolean') {\r\n id = p2;\r\n state = p1;\r\n }\r\n let checkChanged = true;\r\n let checkState = undefined;\r\n if (isEmpty(id)) {\r\n if (isEmpty(state)) {\r\n this.reverseSelectionMode = !this.reverseSelectionMode;\r\n } else {\r\n if (this.allChecked !== !!state) {\r\n this.selectedIds.Clear();\r\n this.reverseSelectionMode = !!state;\r\n } else {\r\n checkChanged = false;\r\n }\r\n }\r\n } else if (typeof id === 'string') {\r\n if (isEmpty(state)) {\r\n if (this.selectedIds.contains(id)) {\r\n this.selectedIds.Remove(id);\r\n checkState = this.reverseSelectionMode;\r\n } else {\r\n this.selectedIds.Add(id);\r\n checkState = !this.reverseSelectionMode;\r\n }\r\n } else {\r\n if (!this.selectedIds.contains(id) && (this.reverseSelectionMode ? !state : state)) {\r\n this.selectedIds.Add(id);\r\n checkState = !this.reverseSelectionMode;\r\n } else if (this.selectedIds.contains(id) && (this.reverseSelectionMode ? state : !state)) {\r\n this.selectedIds.Remove(id);\r\n checkState = this.reverseSelectionMode;\r\n } else {\r\n checkChanged = false;\r\n }\r\n }\r\n }\r\n if (checkChanged) {\r\n this.emitSelectionChanged(id, checkState);\r\n }\r\n }\r\n\r\n /** Проверяет, все ли пункты выделены, если все данные полностью загружены. В этом случеа - переключаем список в режим `allChecked`.*/\r\n updateAllChecked() {\r\n // если все данные полностью загружены\r\n if (isEmpty(this.allChecked) && this.list && !this.list.upLoader && !this.list.downLoader) {\r\n // если все пункты выделены или ни один пункт не выделен при полностью загруженном списке\r\n if (this.list.frame.length === this.selectedIds.length && !this.list.frame.select(x => x.Id).except(this.selectedIds).any()) {\r\n this.selectedIds.Clear();\r\n this.reverseSelectionMode = !this.reverseSelectionMode && this.list.frame.length > 0;\r\n }\r\n }\r\n }\r\n\r\n emitSelectionChanged(id?: string, state?: boolean) {\r\n this.updateAllChecked();\r\n this.selectionChanged.emit({ service: this, id: id, selected: state });\r\n }\r\n\r\n /** Подписка на получение всех выделенных объектов. В случае полного выделения может занимать продолжительное время, поэтому реализовано в виде подписки. */\r\n observeSelectedItems(): Observable {\r\n return Observable.create(observer => {\r\n if (this.allChecked === false) {\r\n // ничего не выделено\r\n observer.complete();\r\n }\r\n if (!this.allChecked && !this.reverseSelectionMode) {\r\n // явное выделение - всё что выделено есть в списке\r\n const selectedIds = this.selectedIds.toArray();\r\n let count = selectedIds.length;\r\n selectedIds.forEach(id => this.getObjectByKey(id).then(x => {\r\n x && observer.next(x);\r\n if (--count === 0) {\r\n observer.complete();\r\n }\r\n }));\r\n } else {\r\n // для получения выделенных элементов нужно получить все\r\n const allItemsPromise = (this.list && !this.list.loading && !this.list.upLoader && !this.list.downLoader)\r\n ? Promise.resolve(this.list.frame.select(x => x.$source).toArray()) // все элементы есть в списке - будем использовать его\r\n : this.loadPageAsync(null, null).then(res => res.toArray());\r\n allItemsPromise.then(res => {\r\n if (!this.allChecked) {\r\n res = res.where(x => !this.selectedIds.contains(x.Id)).toArray();\r\n }\r\n res.forEach(x => observer.next(x));\r\n observer.complete();\r\n });\r\n }\r\n\r\n });\r\n }\r\n\r\n createFramedListItem(source: T): IFramedListItem {\r\n return new FramedListItem(this, source);\r\n }\r\n}\r\n\r\nexport interface UssFramedListSelectionEvent {\r\n /** Ссылка на обработчик списка */\r\n service: UssFramedListService;\r\n /** Если установлен - идентификатор отдельного элемента, состояние выделения которого изменилось */\r\n id?: string;\r\n /** Если установлен - новое состояние выделения отдельного элемента */\r\n selected?: boolean;\r\n}\r\n\r\n/** Сервисный класс, обеспечивающий корректную подгрузку данных для постраничного отображения */\r\nexport class UssFramedList = UssFramedListService> {\r\n\r\n private _frameService: TService;\r\n get frameService(): TService { return this._frameService }\r\n set frameService(value: TService) {\r\n this._frameService = value;\r\n this._frameService.list = this;\r\n }\r\n\r\n upLoader?: IUssLoaderItem;\r\n frame: IFramedListItem[] = [];\r\n downLoader?: IUssLoaderItem;\r\n loading: boolean;\r\n reloading: boolean = true;\r\n\r\n frameLoaded = new EventEmitter[] | false>();\r\n\r\n /**\r\n /* Конструктор по умолчанию.\r\n * @param changeDetector ссылка на changeDetector компонента скроллбокса\r\n * @param frameSize размер фрейма данных - должен быть больше кол-ва данных, видимых в списке\r\n */\r\n constructor(public changeDetector: ChangeDetectorRef, frameService: TService | Type, public frameSize: number = 50) {\r\n this.frameSize = frameSize || 10;\r\n if (frameService) {\r\n // ReSharper disable once InconsistentNaming\r\n this.frameService = frameService instanceof UssFramedListService ? frameService : new frameService();\r\n }\r\n this.init();\r\n }\r\n\r\n /** Вызывается до начала инициализации объекта и начальной загрузки данных */\r\n protected init() {\r\n }\r\n\r\n /**\r\n * Может быть вызвана для ручной инициализации объекта.\r\n * Usage:\r\n * const loader = new UssFramedList(changeDetector).setup(x => x.pageSize = 100).load();\r\n */\r\n public setup(action: ((self: this) => void)): this {\r\n action(this);\r\n return this;\r\n }\r\n\r\n public getKeyValue(item: T): string {\r\n const res = this.frameService.getKeyValue(item);\r\n return ifEmpty(res, isEmpty(item) ? null : item.toString());\r\n }\r\n\r\n protected async loadPageAsync(top: number, count: number, appendSubscriptions?: boolean): Promise[]> {\r\n return (await this.frameService.loadPageAsync(top, count, appendSubscriptions)).select(x => this.frameService.createFramedListItem(x)).toArray();\r\n }\r\n\r\n /** Загрузка данных с начала списка */\r\n private async reloadAsync(): Promise {\r\n this.reloading = true;\r\n delete this.upLoader;\r\n this.frame = [];\r\n delete this.downLoader;\r\n this.frameService = this.frameService || new UssFramedListService();\r\n const allChecked = this.frameService.allChecked;\r\n if (allChecked) {\r\n this.frameService.toggleSelection(false);\r\n }\r\n await this.loadAsync(1, true);\r\n if (allChecked) {\r\n this.frameService.toggleSelection(true);\r\n }\r\n }\r\n\r\n /** Обновление текущего фрейма */\r\n refreshAsync(): Promise {\r\n this.frameService = this.frameService || new UssFramedListService();\r\n let start = 1;\r\n if (this.upLoader) {\r\n start = this.upLoader.$top + this.upLoader.$pageSize;\r\n }\r\n return this.loadAsync(start);\r\n }\r\n\r\n private id = uid();\r\n\r\n load(forced?: boolean): this {\r\n if (forced) {\r\n this.reloadAsync();\r\n } else {\r\n debounce(() => this.load(true), 500, `UssFramedList:${this.id}`);\r\n }\r\n return this;\r\n }\r\n\r\n refresh(): this {\r\n this.refreshAsync();\r\n return this;\r\n }\r\n\r\n protected async loadAsync(top: number = 1, loadDown?: boolean, count?: number, appendSubscriptions?: boolean): Promise {\r\n clearDebounce(`UssFramedList:${this.id}`);\r\n this.emitLoaded(true);\r\n count = count || this.frameSize;\r\n if (isEmpty(loadDown)) {\r\n // признак того, что нужно обновить текущий фрейм\r\n count = Math.max(count, this.frame.length);\r\n }\r\n const packet = await this.loadPageAsync(top, count, appendSubscriptions);\r\n if (isEmpty(loadDown)) {\r\n // признак того, что нужно обновить текущий фрейм\r\n const oldFrame = this.frame;\r\n //this.frame.Clear();\r\n //this.frame.AddRange(packet);\r\n this.frame = packet;\r\n // для всех элементов, которые есть в oldFrame восстановить доп значения\r\n for (let i = 0; i < oldFrame.length; i++) {\r\n const oldItem = oldFrame[i];\r\n const idx = Enumerable.from(this.frame).indexOf((x:any) => x.Id === oldItem.Id);\r\n if (idx >= 0) {\r\n oldItem.$source = this.frame[idx].$source;\r\n this.frame[idx] = oldItem;\r\n }\r\n }\r\n this.downLoader = packet.length > 0 ? { Id: '$downLoader', $service: this.frameService, $top: top + packet.length, $pageSize: this.frameSize } : null;\r\n this.emitLoaded(false);\r\n }\r\n else {\r\n packet.Remove(t => {\r\n const idx = Enumerable.from(this.frame).indexOf((x: any) => x.Id === t.Id);\r\n const res = idx >= 0;\r\n if (res) {\r\n this.frame[idx].$source = t.$source;\r\n }\r\n return res;\r\n });\r\n if (loadDown) {\r\n this.downLoader = packet.length > 0 ? { Id: '$downLoader', $service: this.frameService, $top: top + packet.length, $pageSize: this.frameSize } : null;\r\n this.frame.AddRange(packet);\r\n if (this.frame.length > this.frameSize * 2) {\r\n this.upLoader = { Id: '$upLoader', $service: this.frameService, $top: top - this.frameSize * 2, $pageSize: this.frameSize };\r\n this.frame.splice(0, this.frame.length - this.frameSize * 2);\r\n }\r\n this.emitLoaded(false);\r\n }\r\n else {\r\n this.upLoader.$pageSize = null;\r\n this.upLoader.$top = top - this.frameSize;\r\n if (this.upLoader.$top <= 0) delete this.upLoader;\r\n if (this.frame.length + packet.length > this.frameSize * 2) {\r\n this.downLoader = { Id: '$downLoader', $service: this.frameService, $top: top + this.frameSize * 2, $pageSize: this.frameSize };\r\n this.frame.splice(this.frameSize * 2 - packet.length, this.frame.length + packet.length - this.frameSize * 2);\r\n }\r\n const loader = { Id: null, $service: null, $top: this.frame.length, $pageSize: packet.length };\r\n this.frame.AddRange(packet);\r\n this.frame.Insert(0, loader);\r\n }\r\n }\r\n }\r\n\r\n protected onLoad(e: OnVisibleInScrollDirective, loader: IUssLoaderItem) {\r\n const direction = loader === this.upLoader ? false : loader === this.downLoader ? true : null;\r\n if (isEmpty(direction)) {\r\n if (this.upLoader && this.upLoader.$top > 0) {\r\n this.upLoader.$pageSize = this.frameSize;\r\n }\r\n const loadData = this.frame.slice(loader.$top + 1, loader.$top + 1 + loader.$pageSize);\r\n this.frame.splice(loader.$top + 1, loader.$pageSize);\r\n this.frame.Insert(0, loadData);\r\n this.detectChanges();\r\n e.elementRef.nativeElement.scrollIntoView(true);\r\n this.frame.Remove(loader);\r\n this.emitLoaded(false);\r\n }\r\n else if (e.isVisible && !this.loading && loader && loader.$pageSize) {\r\n //console.log('Loading: ', direction);\r\n this.loadAsync(loader.$top, direction, loader.$pageSize, true).then(() => e.isVisible = false);\r\n }\r\n }\r\n\r\n protected emitLoaded(loading: boolean) {\r\n this.loading = loading;\r\n if (loading) {\r\n this.frameLoaded.emit(false);\r\n } else {\r\n //console.log(this.upLoader, this.frame, this.downLoader);\r\n this.reloading = false;\r\n this.frameLoaded.emit(this.frame);\r\n }\r\n this.detectChanges();\r\n }\r\n\r\n detectChanges() {\r\n this.changeDetector && !(this.changeDetector).destroyed && this.changeDetector.detectChanges();\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/utils/UssFramedList.ts","import { Component } from '@angular/core';\r\nimport { isNotEmpty } from '../utils/utils';\r\n\r\n/**\r\n * I DON'T KNOW WHY THIS DECORATOR WAS CREATED.\r\n */\r\nexport function CustomComponent(annotation?: any) {\r\n return function (target: Function) {\r\n annotation = annotation || {};\r\n annotation.selector = annotation.selector || ((parentSelector) => { return 'uss-' + parentSelector; });\r\n\r\n const parentTarget = Object.getPrototypeOf(target.prototype).constructor;\r\n const parentAnnotations = Reflect.getMetadata('annotations', parentTarget);\r\n\r\n var parentAnnotation = parentAnnotations[0];\r\n Object.keys(parentAnnotation).forEach(key => {\r\n if (isNotEmpty(parentAnnotation[key])) {\r\n if(typeof annotation[key] === 'function'){\r\n annotation[key] = annotation[key].call(this, parentAnnotation[key]);\r\n } else if (!isNotEmpty(annotation[key])){\r\n annotation[key] = parentAnnotation[key];\r\n }\r\n }\r\n });\r\n \r\n const metadata = new Component(annotation);\r\n Reflect.defineMetadata('annotations', [ metadata ], target);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/custom-component.decorator.ts","import * as ng from '@angular/core';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport {debug} from '../interfaces/core-messages.service';\r\n\r\n/**\r\n * Injects DI into class fields.\r\n * Works the same as correspondent decorator in Angular2 in constructor.\r\n * Inheritance is supported.\r\n */\r\nexport function Inject(token: ng.Type | any) {\r\n return (target: any, propertyKey: string) => {\r\n const descriptor = { configurable: true, enumerable: true };\r\n // Replacing get and set\r\n const originalGet = function () { return this.__inject_values ? this.__inject_values[propertyKey] : undefined };\r\n const originalSet = function (v) {\r\n this.__inject_values = this.__inject_values || {};\r\n this.__inject_values[propertyKey] = v;\r\n };\r\n descriptor.get = function() {\r\n let result = originalGet.call(this);\r\n if (result === undefined) {\r\n let injector = Reflection;\r\n if (this.viewContainer) {\r\n injector = this.viewContainer.injector;\r\n } else if (this.injector && typeof this.injector.get === 'function') {\r\n injector = this.injector;\r\n } else if (this.viewContainer && this.viewContainer.injector && typeof this.viewContainer.injector.get === 'function') {\r\n injector = this.viewContainer.injector;\r\n } else if (this.viewContainerRef && this.viewContainerRef.injector && typeof this.viewContainerRef.injector.get === 'function') {\r\n injector = this.viewContainerRef.injector;\r\n }\r\n try {\r\n result = injector.get(token, injector === Reflection ? undefined : Reflection);\r\n if (result === Reflection) {\r\n result = Reflection.get(token);\r\n }\r\n } catch (e) {\r\n debug(e);\r\n } \r\n originalSet.call(this, result);\r\n }\r\n return result;\r\n }\r\n // Updating new property or updating descriptor\r\n Object.defineProperty(target, propertyKey, descriptor);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/inject.decorator.ts","import { SimpleChanges, SimpleChange, EventEmitter } from '@angular/core';\r\nimport * as Utils from '../utils/utils';\r\n\r\n\r\n// ReSharper disable once Class\r\n/**\r\n * Field changes, which name is passed as parameter, will automatically fire ngOnChanges method if it exists.\r\n * And also sends notification by eventEmitter.\r\n * For saving values creates and uses field with name __nc_values.\r\n * If propertyKey not set - all fields will be marked.\r\n */\r\nexport function extendForPropertyChanges(target: any, propertyKey?: string | string[], eventEmitter?: EventEmitter | ((ch: SimpleChanges) => void)): EventEmitter {\r\n if (!target) return undefined;\r\n const isClassPrototype = !(target instanceof target.constructor);\r\n if (!isClassPrototype) {\r\n // Adding eventEmitter is not permitted for class prototypes\r\n target.__nc_values = target.__nc_values || {};\r\n if (!eventEmitter) {\r\n if (!(target.__nc_values['$notifyChanges.emmiter'] instanceof EventEmitter)) {\r\n target.__nc_values['$notifyChanges.emmiter'] = new EventEmitter();\r\n }\r\n eventEmitter = target.__nc_values['$notifyChanges.emmiter'];\r\n } else {\r\n target.__nc_values['$notifyChanges.emmiter'] = eventEmitter;\r\n }\r\n }\r\n if (!propertyKey) {\r\n propertyKey = [];\r\n for (let propName of Object.getOwnPropertyNames(target)) {\r\n if (propName !== '__nc_values') {\r\n (propertyKey).push(propName);\r\n }\r\n }\r\n }\r\n if (Utils.isArray(propertyKey)) {\r\n for (let propName of propertyKey) {\r\n extendForPropertyChanges(target, propName, eventEmitter);\r\n }\r\n if (eventEmitter instanceof EventEmitter) {\r\n setTimeout(() => (eventEmitter).emit({}));\r\n }\r\n } else if (typeof propertyKey === 'string') {\r\n const prevDescriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};\r\n const descriptor = { configurable: true, enumerable: true };\r\n const currentValue = prevDescriptor.value;\r\n if (target.__nc_values && prevDescriptor.value !== undefined) {\r\n target.__nc_values[propertyKey] = currentValue;\r\n }\r\n // Replacing get and set\r\n const originalGet = prevDescriptor.get || function () { return this.__nc_values ? this.__nc_values[propertyKey] : currentValue };\r\n const originalSet = prevDescriptor.set || function (v) {\r\n this.__nc_values = this.__nc_values || {};\r\n this.__nc_values[propertyKey] = v;\r\n };\r\n descriptor.get = originalGet;\r\n\r\n descriptor.set = function (v: any) {\r\n // Warning, if set id defined by function, \r\n // then this - current class instance,\r\n // if by lambda then this - Window!!!\r\n const oldValue = this[propertyKey];\r\n if (v !== oldValue) {\r\n originalSet.call(this, v);\r\n\r\n const changes = { };\r\n changes[propertyKey] = new SimpleChange(oldValue, v, false); // for angular 4.0.0\r\n const emitter = this.__nc_values['$notifyChanges.emmiter'];\r\n if (emitter instanceof EventEmitter) {\r\n setTimeout(() => emitter.emit(changes));\r\n } else if (typeof emitter === 'function') {\r\n setTimeout(() => emitter(changes));\r\n }\r\n else if (typeof target.ngOnChanges === 'function') {\r\n this.ngOnChanges(changes);\r\n }\r\n }\r\n };\r\n // Updating new property or updating descriptor\r\n Object.defineProperty(target, propertyKey, descriptor);\r\n }\r\n return >eventEmitter;\r\n}\r\n\r\n/**\r\n * Changing fields marked by this decorator will be automatically fire ngOnChanges, if it exists.\r\n * And also sends notification by eventEmitter.\r\n * For saving values creates and uses field with name __nc_values.\r\n * If propertyKey not set - all fields will be marked.\r\n */\r\nexport const NotifyChanges = () => (target, propertyKey) => { extendForPropertyChanges(target, propertyKey); };\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/notify-changes.decorator.ts","import { EventEmitter } from '@angular/core';\r\nimport { toJson } from '../utils/Json';\r\nimport * as Utils from '../utils/utils';\r\nimport isEmpty = Utils.isEmpty;\r\n\r\nexport interface IMethodInfo {\r\n Name: string;\r\n DateTime: Date;\r\n Arguments: any[];\r\n Result: any;\r\n}\r\n\r\nexport function logMethod(target, key, descriptor, emitter?: EventEmitter) {\r\n\r\n // save a reference to the original method this way we keep the values currently in the\r\n // descriptor and don't overwrite what another decorator might have done to the descriptor.\r\n if (descriptor === undefined) {\r\n descriptor = Object.getOwnPropertyDescriptor(target, key);\r\n }\r\n var originalMethod = descriptor.value;\r\n\r\n //editing the descriptor/value parameter\r\n descriptor.value = function () {\r\n const args = [];\r\n for (let i = 0; i < arguments.length; i++) {\r\n args[i - 0] = arguments[i];\r\n }\r\n const a = args.map(a => toJson(a)).join();\r\n // note usage of originalMethod here\r\n const dt = new Date();\r\n const result = originalMethod.apply(this, args);\r\n const r = toJson(result);\r\n //console.log('Call: ' + key + '(' + a + ') => ' + r);\r\n !isEmpty(emitter) && emitter.emit({\r\n Name: key,\r\n DateTime: dt,\r\n Arguments: args,\r\n Result: result\r\n });\r\n return result;\r\n };\r\n\r\n // return edited descriptor as opposed to overwriting the descriptor\r\n return descriptor;\r\n}\r\n\r\nexport const LogMethod = (emitter?: EventEmitter) => (target, propertyKey, descriptor) => { logMethod(target, propertyKey, descriptor, emitter); };\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/decorators/log-method.decorator.ts","import { Type, EventEmitter, ComponentRef, Injectable } from '@angular/core';\r\nimport { SetupSignleton } from './setup-singleton.decorator';\r\nimport { DIALOGS_SERVICE_TOKEN } from './core-interface.tokens';\r\nimport { Params } from './core-router.service';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface DialogParams extends Params {\r\n /** Признак модального окна */\r\n $isModal?: boolean;\r\n /** По умолчанию параметры, передаваемые в диалог клонируются. Установка этого параметра приводит к тому,\r\n * что параметр будет передан по ссылке (не будет склонирован).\r\n */\r\n $byRef?: boolean;\r\n};\r\n\r\nexport interface IDialog {\r\n internalClose(componentRef?: ComponentRef);\r\n show();\r\n}\r\n\r\nexport interface IUssDialog {\r\n result?: Promise;\r\n onClose?: EventEmitter;\r\n onShow?: EventEmitter;\r\n data?: DialogParams;\r\n afterClosed?: Observable;\r\n close(closeResult?: any | boolean);\r\n}\r\n\r\nexport interface IDialogParams {\r\n resizable?: boolean;\r\n width?: number;\r\n height?: number;\r\n minWidth?: number;\r\n minHeight?: number;\r\n maxWidth?: number;\r\n maxHeight?: number;\r\n}\r\n\r\nexport interface IUssDialogsService {\r\n /**\r\n * Создание всплывающего диалога от semantic.ui на основании типа компонента.\r\n * @param component тип компонента, который будет отображён во всплывающем диалоге.\r\n * @param parameters параметры, передаваемые в компонент, как если бы компонент имплементировал интерфейс TParams.\r\n * Дополнительно можно передать параметры открытия всплывающего диалога в специальном поле $dialog.\r\n */\r\n show(component: Type, parameters?: DialogParams): IUssDialog;\r\n /**\r\n * Создание модального всплывающего диалога от semantic.ui на основании типа компонента.\r\n * @param component тип компонента, который будет отображён во всплывающем диалоге.\r\n * @param parameters параметры, передаваемые в компонент, как если бы компонент имплементировал интерфейс TParams.\r\n * Дополнительно можно передать параметры открытия всплывающего диалога в специальном поле $dialog.\r\n */\r\n showModal(component: Type, parameters?: DialogParams): IUssDialog;\r\n\r\n /**\r\n * Вывод информационного сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Information) \r\n */\r\n info(text: string, header?: string, params?: IDialogParams): Promise;\r\n /**\r\n * Вывод тревожного сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Alert) \r\n */\r\n alert(text: string, header?: string, params?: IDialogParams): Promise;\r\n /**\r\n * Вывод предупреждающего сообщения во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Warning) \r\n */\r\n warning(text: string, header?: string, params?: IDialogParams): Promise;\r\n /**\r\n * Вывод сообщения об ошибке во всплывающем диалоге от semantic.ui.\r\n * @param text текст сообщения (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Error) \r\n */\r\n error(text: string, header?: string, params?: IDialogParams): Promise;\r\n /**\r\n * Вывод подтверждающего вопроса вида Да/Нет и вызывает промис только если ответили Да\r\n * @param text текст вопроса (поддерживается HTML-разметка).\r\n * @param header заголовок сообщения (по умолчанию - Confirmation)\r\n */\r\n confirm(text: string, header?: string, params?: IDialogParams): Promise;\r\n /**\r\n * Вывод вопроса вида Да/Нет[/Отмена] и вызывает промис только если ответили Да или Нет\r\n * @param text текст вопроса (поддерживается HTML-разметка).\r\n * @param showCancelButton показывать или не показывать кнопку CANCEL.\r\n * Если сюда передать значение 1, то будет вызван промис и при нажатии кнопки CANCEL со значением undefined.\r\n * @param header заголовок сообщения (по умолчанию - Confirmation)\r\n */\r\n ask(text: string, showCancelButton?: boolean | 1, header?: string, params?: IDialogParams): Promise;\r\n/*\r\n\r\n prompt(text: string, header?: string, value?: string, addParams?: IPopupDialogOptions): Promise;\r\n*/\r\n}\r\n\r\n@Injectable()\r\nexport class DefaultDialogsService implements IUssDialogsService {\r\n show(component: Type, parameters?: DialogParams): IUssDialog { throw new Error('Not implemented'); }\r\n showModal(component: Type, parameters?: DialogParams): IUssDialog { throw new Error('Not implemented'); }\r\n info(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n alert(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n warning(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n error(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n confirm(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n ask(text: string, showCancelButton?: boolean, header?: string): Promise { throw new Error('Not implemented'); }\r\n}\r\n\r\nclass CoreDialogsService implements IUssDialogsService {\r\n show(component: Type, parameters?: DialogParams): IUssDialog { throw new Error('Not implemented'); }\r\n showModal(component: Type, parameters?: DialogParams): IUssDialog { throw new Error('Not implemented'); }\r\n info(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n alert(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n warning(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n error(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n confirm(text: string, header?: string): Promise { throw new Error('Not implemented'); }\r\n ask(text: string, showCancelButton?: boolean, header?: string): Promise { throw new Error('Not implemented'); }\r\n\r\n @SetupSignleton(DIALOGS_SERVICE_TOKEN, DefaultDialogsService) static instance: IUssDialogsService;\r\n}\r\n\r\nexport const dialog: IUssDialogsService = new CoreDialogsService();\r\n\r\nexport function show(component: Type, parameters?: DialogParams): IUssDialog { return dialog.show(component, parameters); }\r\nexport function showModal(component: Type, parameters?: DialogParams): IUssDialog { return dialog.showModal(component, parameters); }\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-dialogs.service.ts","import { SetupSignleton } from './setup-singleton.decorator';\r\nimport { LOAD_RESOLVER_TOKEN } from './core-interface.tokens';\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Type, InjectionToken, Injectable } from '@angular/core';\r\nimport { Reflection } from '../utils/Reflection';\r\nimport { Observable } from 'rxjs';\r\nimport { AppBase } from '../app.base';\r\n\r\n/**\r\n * Adds a service to `resolvers` array.\r\n * Then this service will be executed by DefaultLoadResolverService.\r\n */\r\nexport function AppPageResolver(type?: Type | InjectionToken) {\r\n return target => {\r\n type = type || target;\r\n type['$target'] = target;\r\n if (!RESOLVERS.includes(type)) {\r\n RESOLVERS.push(type);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * List of all services marked by @AppPageResolver decorator.\r\n */\r\nconst RESOLVERS: (Type | InjectionToken)[] = [];\r\n\r\n\r\nexport interface IUssLoadResolver extends Resolve {\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any;\r\n}\r\n\r\n@Injectable()\r\nexport class DefaultLoadResolverService implements IUssLoadResolver {\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any {\r\n const resolverPromises = RESOLVERS\r\n .select(t => {\r\n let res = Reflection.get(t, null);\r\n if (!res) {\r\n if ('instance' in t && typeof t['instance'] === 'object') {\r\n res = t['instance'];\r\n }\r\n else if (!(t instanceof InjectionToken)) {\r\n res = new t();\r\n } else {\r\n res = null;\r\n }\r\n }\r\n if (t['$target']) {\r\n const target = t['$target'];\r\n if (target.prototype instanceof AppBase && target !== route.component) {\r\n res = null;\r\n }\r\n } else {\r\n if (res instanceof AppBase && res.constructor !== route.component) {\r\n res = null;\r\n }\r\n }\r\n return res && typeof res['resolve'] === 'function' ? res : null;\r\n })\r\n .where(x => x !== null)\r\n .select(x => {\r\n let res = x.resolve(route, state);\r\n if (res instanceof Observable)\r\n res = res.toPromise();\r\n else if (!(res instanceof Promise)) {\r\n res = null;\r\n }\r\n return res;\r\n })\r\n .where(x => x !== null)\r\n .toArray();\r\n return Promise.all(resolverPromises);\r\n }\r\n}\r\n\r\nexport class CoreLoadResolverService implements IUssLoadResolver {\r\n resolve(): Promise { throw new Error('Not implemented'); }\r\n @SetupSignleton(LOAD_RESOLVER_TOKEN, DefaultLoadResolverService) static instance: DefaultLoadResolverService;\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/interfaces/core-resolver.service.ts","export * from './factory.component';\r\nexport * from './layout/layout.component';\r\nexport * from './time-ago.component';\r\nexport * from './tooltip/tooltip.component';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/components/index.ts","import { Component, ViewContainerRef, ComponentFactoryResolver, ComponentRef, Type, Injector, ComponentFactory, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Subscribable } from 'rxjs/Observable';\r\nimport { detectChanges, isNotEmpty } from '../utils/utils';\r\nimport { CoreComponent } from '../internals';\r\n\r\n@Component({ selector: 'uss-component-factory', template: '' })\r\n@CoreComponent()\r\nexport class UssComponentFactory {\r\n constructor(private viewContainer: ViewContainerRef, private resolver: ComponentFactoryResolver) { }\r\n ngOnInit() {\r\n ((this.viewContainer.element.nativeElement)).style.display = 'none';\r\n }\r\n\r\n private _cache: { [name: string]: ComponentRef } = {};\r\n\r\n resolveComponentFactory(component: Type): ComponentFactory {\r\n return this.resolver.resolveComponentFactory(component);\r\n }\r\n\r\n /**\r\n * Создаёт экземпляр компонента для последующей вставки его в другой контейнер.\r\n * Компонент создаётся в невидимом контейнере, что предотвращает его отображение до того момента,\r\n * как он будет вставлен в нужный контейнер.\r\n * @param component тип создаваемого компонента\r\n * @param cache если не установлено - каждый раз будет создаваться новый экземпляр.\r\n * В противном случае строка указывает ключ в кеше уже созданных компонентов.\r\n * Если указано значение `true` - ключом будет считаться название компонента.\r\n */\r\n createComponentRef(component: Type, cache?: string | boolean, injector?: Injector): ComponentRef {\r\n let res: ComponentRef = null;\r\n if (cache !== false) {\r\n if (isNotEmpty(cache)) {\r\n if (typeof cache !== 'boolean') {\r\n cache = `${component.name}:${cache}`;\r\n } else {\r\n cache = component.name;\r\n }\r\n res = this._cache[cache];\r\n }\r\n }\r\n if (!res) {\r\n res = this.viewContainer.createComponent(this.resolveComponentFactory(component), undefined, injector);\r\n ((this.viewContainer.element.nativeElement)).appendChild(res.location.nativeElement);\r\n if (cache) {\r\n this._cache[cache] = res; \r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Создаёт экземпляр компонента и вставляет его в другой контейнер.\r\n * Компонент создаётся в невидимом контейнере, что предотвращает его отображение до того момента,\r\n * как он будет вставлен в нужный контейнер.\r\n * Если при создании компонента возникает ошибка detectChanges - необходимо создавать его в таймауте или\r\n * воспользоваться методом insertComponentRef$()\r\n * @param component тип создаваемого компонента\r\n * @param cache если не установлено - каждый раз будет создаваться новый экземпляр.\r\n * В противном случае строка указывает ключ в кеше уже созданных компонентов.\r\n * Если указано значение `true` - ключом будет считаться название компонента.\r\n */\r\n insertComponentRef(component: Type, parent: ViewContainerRef | ElementRef | HTMLElement, injector?: Injector): ComponentRef {\r\n const componentRef = this.createComponentRef(component, false, injector);\r\n componentRef && detectChanges(componentRef.changeDetectorRef);\r\n let parentElement: HTMLElement = null;\r\n if (parent && componentRef && componentRef.location && componentRef.location && componentRef.location.nativeElement) {\r\n if (parent['element'] && parent['element']['nativeElement'] instanceof HTMLElement) {\r\n // ViewContainerRef\r\n parentElement = parent['element']['nativeElement'];\r\n } else if (parent['nativeElement'] instanceof HTMLElement) {\r\n // ElementRef\r\n parentElement = parent['nativeElement'];\r\n } else if (parent instanceof HTMLElement) {\r\n // HTMLElement\r\n parentElement = parent;\r\n }\r\n }\r\n if (parentElement) {\r\n let componentElement = componentRef.location.nativeElement;\r\n if (componentElement.nodeName === 'NG-COMPONENT') {\r\n componentElement = componentElement.children.length === 1 ? componentElement.children[0] : null;\r\n }\r\n componentElement && parentElement.appendChild(componentElement);\r\n }\r\n return componentRef;\r\n }\r\n\r\n /**\r\n * Создаёт экземпляр компонента и вставляет его в другой контейнер в таймауте для предотвращения ошибки detectChanges.\r\n * Компонент создаётся в невидимом контейнере, что предотвращает его отображение до того момента,\r\n * как он будет вставлен в нужный контейнер.\r\n * @param component тип создаваемого компонента\r\n * @param cache если не установлено - каждый раз будет создаваться новый экземпляр.\r\n * В противном случае строка указывает ключ в кеше уже созданных компонентов.\r\n * Если указано значение `true` - ключом будет считаться название компонента.\r\n */\r\n insertComponentRef$(component: Type, parent: ViewContainerRef | ElementRef | HTMLElement, injector?: Injector): Subscribable> {\r\n const res = new Subject>();\r\n setTimeout(() => {\r\n const cr = this.insertComponentRef(component, parent, injector);\r\n res.next(cr);\r\n res.complete();\r\n });\r\n return res;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/components/factory.component.ts","import { ChangeDetectionStrategy, Component, Directive, AfterViewInit, OnDestroy, OnChanges, Input, Output, ViewChild, EventEmitter, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\nimport { CoreComponent } from '../../internals';\r\nimport { bool, ifEmpty, isEmpty, isNotEmpty } from '../../utils/utils';\r\nimport { AppComponentBase } from '../../app.component';\r\n\r\n/* Описание поведения при явной установке значений:\r\n * overflow, scrollable, scrollableX, scrollableY\r\n * -----------------------------------------------------------------------------------------------------------------------------------------------\r\n * false, *, *, * - выступающий контент по X и Y будет обрезан\r\n *\r\n * true/-, true, *, * - выступающий контент будет скроллироваться по X и по Y (равносильно scrollableX = true, scrollableY = true)\r\n * true/-, false, true, true - выступающий контент будет скроллироваться по X и по Y (равносильно scrollable = true)\r\n * true/-, false, true, false - выступающий контент будет скроллироваться по X, и будет обрезан по Y\r\n * true/-, false, false, true - выступающий контент будет будет обрезан по X, и будет скроллироваться по Y\r\n * true/-, false, false, false - выступающий контент будет будет показан по X и по Y\r\n * ================================================================================================================================================\r\n * Значения по умолчанию (если никакой параметр не задан):\r\n * \r\n * overflow, scrollable, scrollableX, scrollableY\r\n * CONTENT : true, false, false, true - скроллируется по Y, обрезается по X\r\n * TOP,BOTTOM: true, false, false, false - показывается по X и Y \r\n * LEFT,RIGHT: true, false, false, true - скроллируется по Y, обрезается по X\r\n * \r\n * если overflow не задан, а один из параметров scrollable задан - overlow устанавливается в true):\r\n */\r\ninterface IAreaSettings {\r\n /** Тип области. */\r\n name?: 'left' | 'right' | 'top' | 'bottom';\r\n /** Размер области (ширина или высота) в пикселях. Обязательное значение, если значения параметров scollable, scrollable-x, scrollable-y или overflow установлены в true. */\r\n size?: number | string;\r\n /** Минимально допустимый размер области. Применим если значение параметра resizable установлено в true. */\r\n minSize?: number;\r\n /** Максимально допустимый размер области. Применим если значение параметра resizable установлено в true. */\r\n maxSize?: number;\r\n /** Признак того, что область может быть растянута мышкой в рантайме. */\r\n resizable?: boolean;\r\n /** Признак того, что область может быть скрыта/раскрыта одним кликом мышки. */\r\n closable?: boolean;\r\n /** Признак того, что область невидима. */\r\n hidden?: boolean;\r\n /** Признак того, что область скрыта. */\r\n closed?: boolean;\r\n /** Признак скроллируемости контента внутри области. В случае установленного значения в true необходимо обязательно указать значение параметра size. */\r\n scrollable?: boolean;\r\n /** Признак горизонтальной скроллируемости контента внутри области. В случае установленного значения в true необходимо обязательно указать значение параметра size. */\r\n scrollableX?: boolean;\r\n /** Признак вертикальной скроллируемости контента внутри области. В случае установленного значения в true необходимо обязательно указать значение параметра size. */\r\n scrollableY?: boolean;\r\n /** Признак того, что делать с выступающим контент области (обрезать или скроллить).\r\n * Если значение явно установлено в `false`- признаки скроллируемости игнорируются и выступающий контент будет обрезан.\r\n * Если значение явно установлено в `true` - то выступающий контент будет показан или будет скроллироваться в зависимости от признаков скроллируемости.\r\n * Если значение не установлено - то выступающий контент будет обрезан или будет скроллироваться в зависимости от признаков скроллируемости.\r\n */\r\n overflow?: boolean;\r\n /** Значение этого параметра будет установлено в значение класса области контента. */\r\n contentClass?: string;\r\n /** Цвет фона области */\r\n backgroundColor?: string;\r\n \r\n /** Контент области (заполняется автоматически) */\r\n // ReSharper disable InconsistentNaming\r\n _content?: HTMLElement;\r\n /** Элемент для сплиттера (заполняется автоматически) */\r\n _element?: HTMLElement;\r\n /** Значение класса для области контента, заданного явно в разметке (заполняется автоматически) */\r\n _layoutContentClass?: string;\r\n // ReSharper restore InconsistentNaming\r\n\r\n /** Устанавливается на основании значений `scrollable`, `scrollableX` и `overflow`. Непосредственно отображается в html. */\r\n overflowX?: string;\r\n /** Устанавливается на основании значений `scrollable`, `scrollableY` и `overflow`. Непосредственно отображается в html. */\r\n overflowY?: string;\r\n}\r\n\r\ninterface IAreasSettings {\r\n left: IAreaSettings;\r\n right: IAreaSettings;\r\n top: IAreaSettings;\r\n bottom: IAreaSettings;\r\n}\r\n\r\n@Directive({ selector: 'content-area' }) export class UssLayoutContentArea {}\r\n@Directive({ selector: 'top-area' }) export class UssLayoutTopArea {}\r\n@Directive({ selector: 'bottom-area' }) export class UssLayoutBottomArea {}\r\n@Directive({ selector: 'left-area' }) export class UssLayoutLeftArea {}\r\n@Directive({ selector: 'right-area' }) export class UssLayoutRightArea {}\r\n\r\n\r\n@Component({\r\n selector: 'uss-layout',\r\n template: require('./layout.component.html'),\r\n styles: [require('./layout.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n@CoreComponent()\r\nexport class UssGridLayoutComponent extends AppComponentBase implements IAreaSettings, AfterViewInit, OnChanges, OnDestroy {\r\n \r\n /** Устанавливается на основании значений `scrollable`, `scrollableX` и `overflow`. Непосредственно отображается в html. */\r\n overflowX?: string;\r\n /** Устанавливается на основании значений `scrollable`, `scrollableY` и `overflow`. Непосредственно отображается в html. */\r\n overflowY?: string;\r\n\r\n settings: IAreasSettings = {\r\n left: { name: 'left', scrollableY: true },\r\n right: { name: 'right', scrollableY: true },\r\n top: { name: 'top', overflow: true },\r\n bottom: { name: 'bottom', overflow: true }\r\n };\r\n\r\n @Input('left') set left(val: IAreaSettings) { _merge(this.settings.left, val); this.assignAreaSettings(this.settings.left); }\r\n @Input('right') set right(val: IAreaSettings) { _merge(this.settings.right, val); this.assignAreaSettings(this.settings.right); }\r\n @Input('top') set top(val: IAreaSettings) { _merge(this.settings.top, val); this.assignAreaSettings(this.settings.top); }\r\n @Input('bottom') set bottom(val: IAreaSettings) { _merge(this.settings.bottom, val); this.assignAreaSettings(this.settings.bottom); }\r\n\r\n @Input('scrollable') scrollable: boolean;\r\n @Input('scrollable-x') scrollableX: boolean = false;\r\n @Input('scrollable-y') scrollableY: boolean = true;\r\n @Input('overflow') overflow: boolean;\r\n @Input('background-color') backgroundColor: string;\r\n @Input('contentClass') contentClass?: string;\r\n\r\n /** Вызывается при изменении размера области */\r\n @Output('resize') onResize = new EventEmitter<{containerType: string, container: HTMLElement}>();\r\n\r\n @ViewChild('topArea') topArea: ElementRef;\r\n @ViewChild('leftArea') leftArea: ElementRef;\r\n @ViewChild('rightArea') rightArea: ElementRef;\r\n @ViewChild('bottomArea') bottomArea: ElementRef;\r\n @ViewChild('contentArea') contentArea: ElementRef;\r\n\r\n private _resizeObserver1: ResizeObserver;\r\n private _resizeObserver2: ResizeObserver;\r\n private _resizeObserver3: ResizeObserver;\r\n private _resizeObserver4: ResizeObserver;\r\n private _resizeObserver5: ResizeObserver;\r\n\r\n constructor(vc: ViewContainerRef, private sanitizer: DomSanitizer) {\r\n super(vc);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._resizeObserver1?.disconnect();\r\n this._resizeObserver2?.disconnect();\r\n this._resizeObserver3?.disconnect();\r\n this._resizeObserver4?.disconnect();\r\n this._resizeObserver5?.disconnect();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (this.ngAfterViewInitCalled) {\r\n if (changes.contentClass) {\r\n this.assignAreaContent(this, this.contentArea);\r\n }\r\n if (changes.scrollable || changes.scrollableX || changes.scrollableY || changes.overflow) {\r\n this.assignAreaSettings(this, this);\r\n }\r\n if (changes.left) {\r\n this.assignAreaContent(this.settings.left, this.leftArea);\r\n }\r\n if (changes.right) {\r\n this.assignAreaContent(this.settings.right, this.rightArea);\r\n }\r\n if (changes.top) {\r\n this.assignAreaContent(this.settings.top, this.topArea);\r\n }\r\n if (changes.bottom) {\r\n this.assignAreaContent(this.settings.bottom, this.bottomArea);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.assignAreaSettings(this.settings.left);\r\n this.assignAreaSettings(this.settings.right);\r\n this.assignAreaSettings(this.settings.top);\r\n this.assignAreaSettings(this.settings.bottom);\r\n this.assignAreaSettings(this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n this.assignAreaContent(this.settings.left, this.leftArea);\r\n this.assignAreaContent(this.settings.right, this.rightArea);\r\n this.assignAreaContent(this.settings.top, this.topArea);\r\n this.assignAreaContent(this.settings.bottom, this.bottomArea);\r\n this.assignAreaContent(this, this.contentArea);\r\n\r\n if (ResizeObserver) {\r\n (this)._element && (this._resizeObserver1 = new ResizeObserver(() => this.emitResize('content', (this)._element))).observe((this)._element);\r\n this.settings.left._element && (this._resizeObserver2 = new ResizeObserver(() => this.emitResize('left', this.settings.left._element))).observe(this.settings.left._element);\r\n this.settings.right._element && (this._resizeObserver3 = new ResizeObserver(() => this.emitResize('right', this.settings.right._element))).observe(this.settings.right._element);\r\n this.settings.top._element && (this._resizeObserver4 = new ResizeObserver(() => this.emitResize('top', this.settings.top._element))).observe(this.settings.top._element);\r\n this.settings.bottom._element && (this._resizeObserver5 = new ResizeObserver(() => this.emitResize('bottom', this.settings.bottom._element))).observe(this.settings.bottom._element);\r\n }\r\n\r\n this.markForCheck();\r\n }\r\n\r\n assignAreaSettings(settings: IAreaSettings, val?: IAreaSettings) {\r\n val = val || settings;\r\n settings.closable = bool(val.closable, bool(settings.closable));\r\n settings.size = ifEmpty(val.size, settings.size);\r\n settings.minSize = ifEmpty(val.minSize, settings.minSize);\r\n settings.maxSize = ifEmpty(val.maxSize, settings.maxSize);\r\n settings.resizable = bool(val.resizable, bool(settings.resizable));\r\n\r\n // если параметр overflow не задан\r\n let overflow = val.overflow;\r\n let scrollable = val.scrollable;\r\n\r\n let scrollableX = val.scrollableX;\r\n let scrollableY = val.scrollableY;\r\n if (isEmpty(overflow)) {\r\n // но один из параметров scrollable* задан\r\n if (isNotEmpty(scrollable) || isNotEmpty(scrollableX) || isNotEmpty(scrollableY)) {\r\n overflow = true;\r\n } else {\r\n // ни один из параметров не указан\r\n if (val.name === 'top' || val.name === 'bottom') {\r\n // для верхнего и нижнего контента - обрезаем контент\r\n overflow = false;\r\n } else {\r\n // для левого, правого и центрального контента - скроллируем контент по Y\r\n overflow = true;\r\n scrollableY = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n overflow = bool(overflow);\r\n if (!overflow) {\r\n scrollable = false;\r\n scrollableX = false;\r\n scrollableY = false;\r\n }\r\n else {\r\n if (isNotEmpty(scrollable)) {\r\n scrollable = bool(scrollable);\r\n scrollableX = scrollable;\r\n scrollableY = scrollable;\r\n }\r\n else {\r\n scrollableX = bool(scrollableX);\r\n scrollableY = bool(scrollableY);\r\n scrollable = scrollableX && scrollableY;\r\n }\r\n }\r\n settings.contentClass = ifEmpty(val.contentClass, settings.contentClass) || '';\r\n settings.hidden = bool(val.hidden, settings.hidden);\r\n settings.backgroundColor = ifEmpty(val.backgroundColor, settings.backgroundColor);\r\n\r\n const nonScrollableOverflow = overflow === true && !scrollableX && !scrollableY && !scrollable ? 'visible' : 'hidden';\r\n settings.overflowX = overflow !== false && (scrollableX || scrollable) ? 'auto' : nonScrollableOverflow;\r\n settings.overflowY = overflow !== false && (scrollableY || scrollable) ? 'auto' : nonScrollableOverflow;\r\n }\r\n\r\n emitResize(containerType: 'left' | 'right' | 'top' | 'bottom' | 'content', container: HTMLElement) {\r\n this.debounce(() => {\r\n this.onResize.emit({ containerType, container, toString: () => containerType });\r\n }, 1, `resize: ${containerType}`);\r\n }\r\n\r\n assignAreaContent(settings: IAreaSettings, areaElementRef: ElementRef) {\r\n settings._element = areaElementRef.nativeElement;\r\n if (settings._element) {\r\n settings._content = (settings._element).children[0];\r\n if (settings._content) {\r\n if (isEmpty(settings._layoutContentClass)) {\r\n settings._layoutContentClass = settings._content.className || '';\r\n }\r\n const contentClass = `${settings._layoutContentClass} ${settings.contentClass||''}`.trim();\r\n if (contentClass) {\r\n settings._content.className = contentClass;\r\n } else {\r\n settings._content.removeAttribute('class');\r\n }\r\n } else {\r\n // данной области нет - удалим контейнер, чтобы не засорять разметку (сплиттер удалиться автоматически директивой *ngIf)\r\n settings._element.remove();\r\n }\r\n }\r\n }\r\n\r\n onRenderCompleted() {\r\n super.onRenderCompleted();\r\n this.detectChanges();\r\n }\r\n\r\n public isLeftVisible(splitter?: boolean) { return !this.isRenderCompleted ? false : this.settings.left._content && !this.settings.left.hidden && (!splitter || this.settings.left.resizable || this.settings.left.closable || (!splitter && this.settings.left.size)); }\r\n public isRightVisible(splitter?: boolean) { return !this.isRenderCompleted ? false : this.settings.right._content && !this.settings.right.hidden && (!splitter || this.settings.right.resizable || this.settings.right.closable || (!splitter && this.settings.right.size)); }\r\n public isTopVisible(splitter?: boolean) { return !this.isRenderCompleted ? false : this.settings.top._content && !this.settings.top.hidden && (!splitter || this.settings.top.resizable || this.settings.top.closable || (!splitter && this.settings.top.size)); }\r\n public isBottomVisible(splitter?: boolean) { return !this.isRenderCompleted ? false : this.settings.bottom._content && !this.settings.bottom.hidden && (!splitter || this.settings.bottom.resizable || this.settings.bottom.closable || (!splitter && this.settings.bottom.size)); }\r\n\r\n public get colCount() { return 1 + (this.isLeftVisible(true) ? 2 : this.isLeftVisible() ? 1 : 0) + (this.isRightVisible(true) ? 2 : this.isRightVisible() ? 1 : 0) + 1; }\r\n public get rowCount() { return 1 + (this.isTopVisible(true) ? 2 : this.isTopVisible() ? 1 : 0) + (this.isBottomVisible(true) ? 2 : this.isBottomVisible() ? 1 : 0) + 1; }\r\n\r\n\r\n\r\n public gridArea(areaName: 'top'|'bottom'|'right'|'left'|'content', splitter?: boolean) {\r\n let res = undefined;\r\n switch (areaName) {\r\n case 'top':\r\n res = `${(splitter ? 2 : 1)} / 1 / auto / ${this.colCount}`;\r\n break;\r\n case 'left':\r\n res = `${(this.isTopVisible(true) ? 3 : this.isTopVisible() ? 2 : 1)} / ${(splitter ? 2 : 1)} / auto / auto`;\r\n break;\r\n case 'content':\r\n res = `${(this.isTopVisible(true) ? 3 : this.isTopVisible() ? 2 : 1)} / ${(this.isLeftVisible(true) ? 3 : this.isLeftVisible() ? 2 : 1)} / auto / auto`;\r\n break;\r\n case 'right':\r\n res = `${(this.isTopVisible(true) ? 3 : this.isTopVisible() ? 2 : 1)} / ${(this.isLeftVisible(true) ? 3 : this.isLeftVisible() ? 2 : 1) + (splitter || !this.isRightVisible(true) ? 1 : 2)} / auto / auto`;\r\n break;\r\n case 'bottom':\r\n res = `${(this.isTopVisible(true) ? 3 : this.isTopVisible() ? 2 : 1) + (splitter || !this.isBottomVisible(true) ? 1 : 2)} / 1 / auto / ${this.colCount}`;\r\n break;\r\n }\r\n return this.sanitizer.bypassSecurityTrustStyle(res);\r\n }\r\n\r\n public calcGridTemplate(s: IAreaSettings) {\r\n return s._content && !s.hidden ? `auto${(s.resizable || s.closable || s.size ? ' auto' : '')}` : '';\r\n }\r\n\r\n public get gridTemplateRows() {\r\n return this.isRenderCompleted ? `${this.calcGridTemplate(this.settings.top)} 1fr ${this.calcGridTemplate(this.settings.bottom)}` : `1fr`;\r\n }\r\n\r\n public get gridTemplateColumns() {\r\n return this.isRenderCompleted ? `${this.calcGridTemplate(this.settings.left)} 1fr ${this.calcGridTemplate(this.settings.right)}` : `1fr`;\r\n }\r\n\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/components/layout/layout.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/core.module/components/layout/layout.component.html\n// module id = 2073\n// module chunks = 1","module.exports = \".uss-layout {\\n display: inline; }\\n .uss-layout .grid-area {\\n display: grid;\\n height: 100%;\\n width: 100%; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/core.module/components/layout/layout.component.scss\n// module id = 2074\n// module chunks = 1","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'uss-time-ago',\r\n template: '{{date | ussFormat:format}}',\r\n styles: ['span {cursor: default}'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UssTimeAgoComponent {\r\n @Input('date') date: moment.MomentInput;\r\n @Input('tooltipFormat') tooltipFormat: string;\r\n @Input('format') format: string = 'L LT';\r\n\r\n ngOnInit() {\r\n this.tooltipFormat = this.tooltipFormat || this.format;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/components/time-ago.component.ts","module.exports = \"
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/core.module/components/tooltip/tooltip.component.html\n// module id = 2076\n// module chunks = 1","module.exports = \".tooltip {\\n font-size: .9rem !important;\\n line-height: 1.35em !important;\\n color: var(--text-color, rgba(60, 60, 60, 0.9));\\n background-color: var(--hint-color, #ffffff);\\n border: 1px solid #3C3C3C;\\n padding: .5em;\\n z-index: 1000000;\\n position: fixed;\\n max-width: max(80vw, 800px);\\n opacity: 0;\\n visibility: hidden;\\n transition: opacity 0.3s, visibility 0s linear 0.3s;\\n pointer-events: auto; }\\n .tooltip.visible {\\n opacity: 1;\\n visibility: visible;\\n transition-delay: 0s;\\n pointer-events: none; }\\n .tooltip.y-bottom {\\n margin-top: 6px; }\\n .tooltip.y-top {\\n margin-bottom: 6px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/core.module/components/tooltip/tooltip.component.scss\n// module id = 2077\n// module chunks = 1","export * from './autofocus.directive';\r\nexport * from './content-title.directive';\r\nexport * from './css-var.directive';\r\nexport * from './highlight.directive';\r\nexport * from './href.directive';\r\nexport * from './mask.directive';\r\nexport * from './ngAttr.directive';\r\nexport * from './onResize.directive';\r\nexport * from './onVisibleInScroll.directive';\r\nexport * from './screen-layout.directive';\r\nexport * from './splitter.directive';\r\nexport * from './svg-icon.directive';\r\nexport * from './title.directive';\r\nexport * from './tooltip.directive';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/index.ts","import { Directive, Input, Injectable, ViewContainerRef } from '@angular/core';\r\nimport { AppDirective } from '../app.directive';\r\nimport { CoreComponent } from '../internals';\r\nimport { focusElement } from '../utils/utils';\r\n\r\n/** Устанавливает автоматически фокус на элементе, если фокус может быть установлен */\r\n@Injectable()\r\n@Directive({\r\n selector: '[autofocus]'\r\n})\r\n@CoreComponent()\r\nexport class AutofocusDirective extends AppDirective\r\n{\r\n @Input() autofocus: boolean;\r\n\r\n constructor(viewContainer: ViewContainerRef) {\r\n super(viewContainer);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n if (this.bool(this.autofocus)) {\r\n //Otherwise Angular throws error: Expression has changed after it was checked.\r\n //For SSR (server side rendering) this is not safe. Use: https://github.com/angular/angular/issues/15008#issuecomment-285141070)\r\n focusElement(this.nativeElement);\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/autofocus.directive.ts","import { Directive, Input, ElementRef, OnDestroy, OnChanges } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\n\r\n/**\r\n * Копирует innerText элемента в его title.\r\n */\r\n@Directive({\r\n selector: '[content-title]'\r\n})\r\n@CoreComponent()\r\nexport class ContentTitleDirective implements OnDestroy, OnChanges {\r\n\r\n @Input('content-title') contentTitle: string;\r\n\r\n observer: MutationObserver;\r\n\r\n constructor(private el: ElementRef) {\r\n this.el.nativeElement.title = this.normalizeTitle(this.contentTitle || this.el.nativeElement.innerText);\r\n this.observer = new MutationObserver(() => this.ngOnChanges());\r\n this.observer.observe(el.nativeElement, { characterData: true, childList: true, subtree: true });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.observer?.disconnect();\r\n }\r\n\r\n ngOnChanges(v?) {\r\n if (!v || v.contentTitle) {\r\n this.el.nativeElement.title = this.normalizeTitle(this.contentTitle || this.el.nativeElement.innerText);\r\n }\r\n }\r\n\r\n\r\n normalizeTitle(s?: string) {\r\n return typeof s === 'string' ? s?.trim() : '';\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/content-title.directive.ts","import { Directive, Input, ElementRef, OnDestroy, OnChanges } from '@angular/core';\r\n\r\n/**\r\n * Устанавливает значение css-переменной для элемента.\r\n * Пример:\r\n *
\r\n */\r\n@Directive({\r\n selector: '[ngCssVar]'\r\n})\r\nexport class CssVarDirective implements OnChanges {\r\n\r\n @Input('ngCssVar') cssVar: Record;\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n ngOnChanges(v?) {\r\n if (v.cssVar) {\r\n this.setCssVar(v.cssVar.previousValue, false);\r\n this.setCssVar(v.cssVar.currentValue, true);\r\n }\r\n }\r\n\r\n setCssVar(v?: Record, set?: boolean) {\r\n if (v) {\r\n for (let name in v) {\r\n if (Object.prototype.hasOwnProperty.call(v, name)) {\r\n if (set) {\r\n this.el.nativeElement.style.setProperty(`--${name}`, v[name]);\r\n } else {\r\n this.el.nativeElement.style.removeProperty(`--${name}`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/css-var.directive.ts","import * as ng from '@angular/core';\r\nimport { ViewContainerRef } from '@angular/core';\r\nimport { AppDirective } from '../app.directive';\r\nimport { CoreComponent } from '../internals';\r\nimport { bool, createStyle, ifEmpty } from '../utils/utils';\r\n\r\n/** При изменении значения (контента) элемента на котором установлена эта директива\r\n * на указанное время устанавливается класс, заданный в параметре `animateClass`.\r\n */\r\n@ng.Directive({\r\n selector: '[ussHighlight]'\r\n})\r\n@CoreComponent()\r\nexport class UssHighlightDirective extends AppDirective implements ng.OnChanges {\r\n /** Отслеживаемое значение */\r\n @ng.Input('ussHighlight') value: any;\r\n\r\n /** Стиль анимации */\r\n @ng.Input('animateClass') animateClass: string = 'animate';\r\n\r\n /** Задержка анимации при запуске */\r\n @ng.Input('animateDelay') animateDelay: number = 2000;\r\n\r\n /** Длительность анимации */\r\n @ng.Input('animateDuration') animateDuration: number = 1000;\r\n\r\n /** Только устанавливает класс - контент элемента не меняется */\r\n @ng.Input('noContent') noContent: boolean = false;\r\n\r\n /** Что будет выводится вместо пустого значения */\r\n @ng.Input('emptyValue') emptyValue: string = '\\xA0';\r\n\r\n private _activateHighlight: boolean;\r\n\r\n constructor(viewContainer: ViewContainerRef, public elementRef: ng.ElementRef, public renderer: ng.Renderer2, public changeDetector: ng.ChangeDetectorRef) {\r\n super(viewContainer);\r\n if (renderer && typeof renderer['delegate']?.addClass === 'function') {\r\n this.renderer = renderer['delegate'];\r\n }\r\n if (this.renderer) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'background-highlight');\r\n }\r\n createStyle(`\r\n/* Подсветка директивы background-highlight */\r\n.background-highlight, [background-highlight] {\r\n padding: 1px 3px;\r\n border-radius: 5px;\r\n margin: -1px -3px;\r\n}\r\n .background-highlight.animate, [background-highlight].animate {\r\n background-color: rgba(255,200,79,0.8);\r\n color: rgb(34,34,34) !important;\r\n transition: background 500ms ease-in-out;\r\n }\r\n`);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.animateDelay && changes.animateDelay.firstChange || changes.value.firstChange) {\r\n if (this.animateDelay <= 0) {\r\n this._activateHighlight = true;\r\n } else {\r\n this.animateDelay && setTimeout(() => this._activateHighlight = true, this.animateDelay);\r\n }\r\n }\r\n if (changes.value) {\r\n if (!bool(this.noContent)) {\r\n this.elementRef.nativeElement.innerHTML = ifEmpty(this.value, this.emptyValue);\r\n }\r\n if (this.renderer && this._activateHighlight) {\r\n this.renderer.addClass(this.elementRef.nativeElement, this.animateClass);\r\n this.debounce(() => {\r\n this.renderer.removeClass(this.elementRef.nativeElement, this.animateClass);\r\n }, this.animateDuration, 'changedValue');\r\n }\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/highlight.directive.ts","import { Directive, Input, HostListener, Injectable, ElementRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { CoreComponent } from '../internals';\r\n\r\n/**\r\n * Эмулирует клик по элементу таким образом, чтобы это не вызывало перезагрузку страницы.\r\n * Ничего делать в исходных кодах не нужно, достаточно добавить директиву к модулю приложения.\r\n */\r\n@Injectable()\r\n@Directive({\r\n selector: 'a[href], a[click]:not[href]'\r\n})\r\n@CoreComponent()\r\nexport class HrefDirective {\r\n @Input('href') href: string = '';\r\n\r\n constructor(private router: Router, private el: ElementRef) {\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(e: Event) {\r\n this.href = this.href || '';\r\n if (!this.href || this.href === '#' || (this.href && this.href.length === 0)) {\r\n e.preventDefault();\r\n } else {\r\n if (!this.href.StartsWith(/(https?:)?\\/\\//, true)) {\r\n this.href && this.router.navigateByUrl(this.href);\r\n } else {\r\n this.href && window.open(this.href, '_blank');\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/href.directive.ts","import { Directive, Injector, Input, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { valueToFormat, unmaskValue } from '../utils/mask';\r\nimport { CoreComponent } from '../internals';\r\n\r\n@Directive({\r\n selector: '[appMask]',\r\n})\r\n@CoreComponent()\r\nexport class MaskDirective implements OnInit {\r\n\r\n @Input()\r\n appMask: string;\r\n\r\n private control: NgControl;\r\n private _lastMaskedValue = '';\r\n\r\n constructor(private injector: Injector) {}\r\n\r\n ngOnInit() {\r\n this.control = this.injector.get(NgControl);\r\n\r\n if (!this.control || !this.control.valueAccessor) {\r\n return;\r\n }\r\n\r\n const originalWriteVal = this.control.valueAccessor.writeValue.bind(this.control.valueAccessor);\r\n this.control.valueAccessor.writeValue = (val: any) => originalWriteVal(this._maskValue(val));\r\n\r\n const originalChange = (this.control.valueAccessor)['onChange'].bind(this.control.valueAccessor);\r\n this.control.valueAccessor.registerOnChange((val: any) => originalChange(this._unmaskValue(val)));\r\n\r\n this._setVal(this._maskValue(this.control.value));\r\n }\r\n\r\n private _maskValue(val: string): string {\r\n if (!this.appMask || val === this._lastMaskedValue) {\r\n return val;\r\n }\r\n\r\n val = val || '';\r\n\r\n const maskedVal = this._lastMaskedValue =\r\n valueToFormat(\r\n val,\r\n this.appMask,\r\n this._lastMaskedValue.length > val.length,\r\n this._lastMaskedValue);\r\n\r\n return maskedVal;\r\n }\r\n\r\n private _unmaskValue(val: string): string {\r\n val = val || '';\r\n const maskedVal = this._maskValue(val);\r\n const unmaskedVal = unmaskValue(maskedVal);\r\n\r\n if (maskedVal !== val) {\r\n this._setVal(maskedVal);\r\n }\r\n\r\n return maskedVal ? unmaskedVal : '';\r\n }\r\n\r\n private _setVal(val: string) {\r\n if (this.control.control) {\r\n this.control.control.setValue(val, { emitEvent: false });\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/mask.directive.ts","import { Directive, Input, ElementRef, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { isNotEmpty, isArray } from '../utils/utils';\r\n\r\n/**\r\n * Установка значения атрибута элемента.\r\n * Использование такое же как и для ngClass.\r\n */\r\n@Directive({\r\n selector: '[ngAttr]'\r\n})\r\n@CoreComponent()\r\nexport class NgAttrDirective implements OnChanges {\r\n\r\n @Input('ngAttr') ngAttr: any;\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n ngOnChanges(v: SimpleChanges) {\r\n if (v['ngAttr']) {\r\n\r\n if (v['ngAttr'].previousValue) {\r\n for (let attr in this.ngAttr) {\r\n if (attr === '___') {\r\n const attrs = this.el.nativeElement.getAttribute(attr)?.split(',') || [];\r\n for (let attrName of attrs) {\r\n attrName && this.el.nativeElement.removeAttribute(attrName);\r\n }\r\n } else {\r\n attr && this.el.nativeElement.removeAttribute(attr);\r\n }\r\n }\r\n }\r\n\r\n if (v['ngAttr'].currentValue) {\r\n for (let attr in this.ngAttr) {\r\n let value = this.ngAttr[attr];\r\n if (isNotEmpty(value) && value !== false) {\r\n if (attr === '$') {\r\n if (value) {\r\n if (isArray(value)) {\r\n value = value.join(',');\r\n }\r\n this.el.nativeElement.setAttribute('___', value);\r\n for (let attrName of value.split(',')) {\r\n attrName && this.el.nativeElement.setAttribute(attrName, '');\r\n }\r\n }\r\n } else {\r\n this.el.nativeElement.setAttribute(attr, value === true ? '' : value);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/ngAttr.directive.ts","import { Directive, Input, Output, EventEmitter, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { uid } from '../utils/utils';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\n\r\n\r\n@Directive({\r\n selector: '[onResize]',\r\n exportAs: 'onResize'\r\n})\r\n@CoreComponent()\r\nexport class OnResizeDirective implements OnDestroy, OnInit {\r\n /** Событие, которые вызывается когда размеры элемента меняются */\r\n @Output('onResize') onResize = new EventEmitter();\r\n\r\n private _resizeObserver: ResizeObserver;\r\n\r\n uid: string = uid();\r\n\r\n public left: number;\r\n public top: number;\r\n public width: number;\r\n public height: number;\r\n\r\n\r\n constructor(public elementRef: ElementRef) { }\r\n\r\n ngOnInit() {\r\n this._resizeObserver = new ResizeObserver(() => this.doResize());\r\n this._resizeObserver.observe(this.elementRef.nativeElement);\r\n this.doResize();\r\n }\r\n\r\n doResize() {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n this.left = rect.left;\r\n this.top = rect.top;\r\n this.width = rect.width;\r\n this.height = rect.height;\r\n this.onResize.emit(rect);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._resizeObserver?.disconnect();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/onResize.directive.ts","import { Directive, Input, Output, EventEmitter, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { fromEvent } from 'rxjs/observable/fromEvent';\r\nimport { ISubscription } from 'rxjs/Subscription';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\nimport { uid, isScrolledIntoView, bool, debounce } from '../utils/utils';\r\nimport { CoreComponent } from '../internals';\r\n\r\n\r\n@Directive({\r\n selector: '[onVisibleInScroll]'\r\n})\r\n@CoreComponent()\r\nexport class OnVisibleInScrollDirective implements OnDestroy, OnInit {\r\n /** Событие, которые вызывается когда видимость элемента меняется в результате прокрутки */\r\n @Output('onVisibleInScroll') onVisibleInScroll = new EventEmitter();\r\n /** Время задержки перед генерацией события */\r\n @Input('vis-debounceTime') debounceTime = 100;\r\n /** Если `true` событие вызовется только при полной видимости элемента */\r\n @Input('vis-checkExactlyComplete') checkExactlyComplete = false;\r\n /** Элемен-контейнер, в котором происходит прокрутка. Если не задан - непосредственно родительский элемент. */\r\n @Input('vis-scrollParent') scrollParent: HTMLElement | Window | string;\r\n /** Дополнительный контекст, передаваемый в собитии */\r\n @Input('vis-context') context: any;\r\n\r\n private _subscribe: ISubscription;\r\n private _subscribe1: ISubscription;\r\n private _resizeObserver: ResizeObserver;\r\n\r\n hashCode: string = uid();\r\n isVisible: boolean;\r\n\r\n get scrollPosition(): number {\r\n return (this.scrollParent).scrollTop;\r\n }\r\n set scrollPosition(value: number) {\r\n (this.scrollParent).scrollTop = value;\r\n }\r\n\r\n constructor(public elementRef: ElementRef) { }\r\n\r\n checkVisibility() {\r\n const isVisible = isScrolledIntoView(this.elementRef.nativeElement, !bool(this.checkExactlyComplete), this.scrollParent);\r\n //console.log(this.elementRef.nativeElement, this.hashCode, ': checkVisibility: ', this.isVisible, '<-', isVisible);\r\n if (this.isVisible !== isVisible) {\r\n this.isVisible = isVisible;\r\n this.onVisibleInScroll.emit(this);\r\n debounce(() => this.checkVisibility(), +this.debounceTime, `${this.hashCode}:checkVisibility`);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (typeof this.scrollParent === 'string') {\r\n this.scrollParent = this.scrollParent === '' ? window : document.querySelector(this.scrollParent);\r\n }\r\n else {\r\n this.scrollParent = this.scrollParent === null ? window : this.scrollParent || this.elementRef.nativeElement.parentElement;\r\n }\r\n this._subscribe = fromEvent(this.scrollParent, 'scroll').startWith(1).debounceTime(+this.debounceTime).subscribe(() => this.checkVisibility());\r\n if (this.scrollParent instanceof HTMLElement) {\r\n this._resizeObserver = new ResizeObserver(() => debounce(() => this.checkVisibility(), +this.debounceTime, `${this.hashCode}:checkVisibility`));\r\n this._resizeObserver.observe(this.scrollParent);\r\n }\r\n else {\r\n this._subscribe1 = fromEvent(this.scrollParent, 'resize').debounceTime(+this.debounceTime).subscribe(() => this.checkVisibility());\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._resizeObserver?.disconnect();\r\n this._subscribe?.unsubscribe();\r\n this._subscribe1?.unsubscribe();\r\n this._subscribe = null;\r\n this._subscribe1 = null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/onVisibleInScroll.directive.ts","import { Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreComponent } from '../internals';\r\nimport { isDesktopView, isMobileView, isPortraitView, isTabletView, onWindowResize } from '../utils/WindowUtils';\r\n\r\nexport const MOBILE_CLASS = 'mobile';\r\nexport const NOT_MOBILE_CLASS = 'not-mobile';\r\nexport const TABLET_CLASS = 'tablet';\r\nexport const DESKTOP_CLASS = 'desktop';\r\nexport const PORTRAIT_CLASS = 'portrait';\r\nexport const LANDSCAPE_CLASS = 'landscape';\r\n\r\n/** Устанавливает классы, соответствующие текущему лейауту для указанного елемента */\r\nexport function setScreenLayoutStyles(element: Element, renderer?: Renderer2): void {\r\n const removeClass = (className) => renderer ? renderer.removeClass(element, className) : element.classList.remove(className);\r\n const addClass = (className) => renderer ? renderer.addClass(element, className) : element.classList.add(className);\r\n\r\n removeClass(MOBILE_CLASS);\r\n removeClass(NOT_MOBILE_CLASS);\r\n removeClass(TABLET_CLASS);\r\n removeClass(DESKTOP_CLASS);\r\n removeClass(PORTRAIT_CLASS);\r\n removeClass(LANDSCAPE_CLASS);\r\n\r\n if (isMobileView()) {\r\n addClass(MOBILE_CLASS);\r\n } else {\r\n addClass(NOT_MOBILE_CLASS);\r\n if (isTabletView()) {\r\n addClass(TABLET_CLASS);\r\n } else if (isDesktopView()) {\r\n addClass(DESKTOP_CLASS);\r\n }\r\n }\r\n\r\n if (isPortraitView()) {\r\n addClass(PORTRAIT_CLASS);\r\n } else {\r\n addClass(LANDSCAPE_CLASS);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Данная директива устанавливает у элемента значение класса .desktop|.tablet|.mobile|.not-mobile + .portrait+.landscape\r\n */\r\n@Directive({selector: '[uss-screen-layout]'})\r\n@CoreComponent()\r\nexport class UssScreenLayoutDirective implements OnDestroy {\r\n\r\n private _sub: Subscription;\r\n\r\n constructor(public elementRef: ElementRef, public renderer: Renderer2) {\r\n this._sub = onWindowResize.subscribe(() => this.setupStyles());\r\n this.setupStyles();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._sub?.unsubscribe();\r\n }\r\n\r\n setupStyles(): void {\r\n setScreenLayoutStyles(this.elementRef.nativeElement, this.renderer);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/screen-layout.directive.ts","import { Directive, Input, Injectable, ViewContainerRef } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { AppDirective } from '../app.directive';\r\nimport { createStyle, toCssSize, toUpperCamelCase } from '../utils/utils';\r\n\r\n/** Параметры сплиттера */\r\nexport interface SplitterOptions {\r\n name?: 'left'|'right'|'top'|'bottom';\r\n sizeName?: 'width' | 'height';\r\n\r\n /** Секцию сплиттера можно закрыть, нажав на кнопку в середине сплиттера */\r\n closable?: boolean;\r\n /** Размер секции сплиттера можно изменить */\r\n resizable?: boolean;\r\n /** Начальный размер секции сплиттера */\r\n size?: string | number;\r\n /** Минимальный размер секции сплиттера */\r\n minSize?: string | number;\r\n /** Максимальный размер секции сплиттера */\r\n maxSize?: string | number;\r\n /** Элемент, являющийся секцией сплиттера. По умолчанию - это находящийся рядом элемент (если равен 'self' - это элемент к которому применена директива) */\r\n element?: Element | string;\r\n}\r\n\r\n/**\r\n * Директива задающая сплиттер/ресайзер между элементами.\r\n * Из-за того, что элемент сплиттера вставляется в тот элемент к которому применяется директива сплиттер не будет виден, если у этого\r\n * элемента стоит overflow: hidden или overflow: auto.\r\n * Поэтому необходимо применять сплиттер к элементу, являющимся основным контентом (за счёт которого будут изменяться размеры остальных элементов).\r\n * Пример:\r\n *
\r\n
...
\r\n\r\n
\r\n ...............\r\n
\r\n\r\n
...
\r\n
\r\n */\r\n@Injectable()\r\n@Directive({\r\n selector: '[leftSplitter],[rightSplitter],[topSplitter],[bottomSplitter]'\r\n})\r\n@CoreComponent()\r\nexport class SplitterDirective extends AppDirective {\r\n\r\n @Input('leftSplitter') leftSplitter: SplitterOptions;\r\n @Input('rightSplitter') rightSplitter: SplitterOptions;\r\n @Input('topSplitter') topSplitter: SplitterOptions;\r\n @Input('bottomSplitter') bottomSplitter: SplitterOptions;\r\n\r\n constructor(viewContainer: ViewContainerRef) {\r\n super(viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n createStyle(`\r\n.uss-splitter-separator.uss-splitter-left, .uss-splitter-separator.uss-splitter-right {\r\n position: absolute;\r\n width: 0.57em;\r\n top: 0;\r\n bottom: 0;\r\n}\r\n.uss-splitter-separator.uss-splitter-left {\r\n left: -0.57em;\r\n}\r\n.uss-splitter-separator.uss-splitter-right {\r\n right: -0.57em;\r\n}\r\n\r\n.uss-splitter-separator.uss-splitter-top, .uss-splitter-separator.uss-splitter-bottom {\r\n position: absolute;\r\n height: 0.57em;\r\n left: 0;\r\n right: 0;\r\n}\r\n.uss-splitter-separator.uss-splitter-top {\r\n top: -0.57em;\r\n}\r\n.uss-splitter-separator.uss-splitter-bottom {\r\n bottom: -0.57em;\r\n}\r\n\r\n\r\n\r\n.uss-splitter-separator.uss-splitter-left.uss-splitter-resizable, .uss-splitter-separator.uss-splitter-right.uss-splitter-resizable {\r\n cursor: col-resize;\r\n}\r\n\r\n.uss-splitter-separator.uss-splitter-top.uss-splitter-resizable, .uss-splitter-separator.uss-splitter-bottom.uss-splitter-resizable {\r\n cursor: row-resize;\r\n}\r\n\r\n.uss-splitter-separator button:active {\r\n background: #e1e5ea;\r\n}\r\n.uss-splitter-separator button:hover {\r\n background: #fff;\r\n}\r\n\r\n.uss-splitter-separator button {\r\n position: absolute;\r\n border-radius: 2px;\r\n background-color: #fff;\r\n padding: 0;\r\n margin: 0;\r\n border: 0;\r\n cursor: pointer;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\r\n z-index: 100;\r\n outline: none;\r\n}\r\n\r\n.uss-splitter-separator.uss-splitter-left button, .uss-splitter-separator.uss-splitter-right button {\r\n top: calc(50% - 50px/2);\r\n width: 0.57em !important;\r\n height: 50px !important;\r\n flex-direction: column;\r\n}\r\n.uss-splitter-separator.uss-splitter-top button, .uss-splitter-separator.uss-splitter-bottom button {\r\n left: calc(50% - 50px/2);\r\n width: 50px !important;\r\n height: 0.57em !important;\r\n flex-direction: row;\r\n}\r\n\r\n.uss-splitter-separator button .dote {\r\n width: 2px;\r\n height: 2px;\r\n border-radius: 50%;\r\n background: gray;\r\n}\r\n.uss-splitter-separator.uss-splitter-left button .dote, .uss-splitter-separator.uss-splitter-right button .dote {\r\n margin-bottom: 2px;\r\n}\r\n.uss-splitter-separator.uss-splitter-left button .dote:last-child, .uss-splitter-separator.uss-splitter-right button .dote:last-child {\r\n margin-bottom: 0;\r\n}\r\n.uss-splitter-separator.uss-splitter-top button .dote, .uss-splitter-separator.uss-splitter-bottom button .dote {\r\n margin-right: 2px;\r\n}\r\n.uss-splitter-separator.uss-splitter-top button .dote:last-child, .uss-splitter-separator.uss-splitter-bottom button .dote:last-child {\r\n margin-right: 0;\r\n}\r\n\r\n`);\r\n this.initSplitter('left');\r\n this.initSplitter('right');\r\n this.initSplitter('top');\r\n this.initSplitter('bottom');\r\n }\r\n\r\n initSplitter(name: 'left'|'right'|'top'|'bottom') {\r\n if (this[`${name}Splitter`] === '') this[`${name}Splitter`] = {closable: name === 'left' || name === 'right', resizable: name === 'left' || name === 'right'};\r\n const options = this[`${name}Splitter`];\r\n if (options) {\r\n options.name = name;\r\n options.sizeName = name === 'left' || name === 'right' ? 'width' : 'height';\r\n if (!options.element) {\r\n options.element = ((name === 'left' || name === 'top') ? this.nativeElement.previousElementSibling : this.nativeElement.nextElementSibling) || this.nativeElement;\r\n }\r\n else if (options.element === 'self') {\r\n options.element = this.nativeElement;\r\n }\r\n const splitter = this.renderer.createElement('div');\r\n this.renderer.addClass(splitter, 'uss-splitter-separator');\r\n this.renderer.addClass(splitter, `uss-splitter-${name}`);\r\n if (options.resizable) {\r\n this.renderer.addClass(splitter, 'uss-splitter-resizable');\r\n splitter.onpointerdown = e => {\r\n if (e.target === splitter) {\r\n splitter.onpointermove = e => this.separatorMouseMove(e, options);\r\n splitter.setPointerCapture(e.pointerId);\r\n this.separatorMouseDown(e, options);\r\n }\r\n }\r\n splitter.onpointerup = e => {\r\n splitter.onpointermove = null;\r\n splitter.releasePointerCapture(e.pointerId);\r\n }\r\n }\r\n if (options.closable) {\r\n const splitterButton = this.renderer.createElement('button');\r\n this.renderer.setAttribute(splitterButton, 'type', 'button');\r\n splitterButton.innerHTML = '
';\r\n this.renderer.appendChild(splitter, splitterButton);\r\n splitterButton.onclick = () => this.clickCloseButton(options);\r\n }\r\n this.renderer.appendChild(this.nativeElement, splitter);\r\n this.renderer.setStyle(this.nativeElement, 'position', 'relative');\r\n this.renderer.setStyle(this.nativeElement, `margin-${name}`, '0.57em');\r\n if (options.size) {\r\n this.setSize(options, options.size);\r\n }\r\n if (options.minSize) {\r\n this.renderer.setStyle(options.element, `min-${options.sizeName}`, toCssSize(options.minSize));\r\n }\r\n if (options.maxSize) {\r\n this.renderer.setStyle(options.element, `max-${options.sizeName}`, toCssSize(options.maxSize));\r\n }\r\n options.size = options.element[`offset${toUpperCamelCase(options.sizeName)}`];\r\n }\r\n }\r\n\r\n getSize(options: SplitterOptions|any) {\r\n return options.element.style.getPropertyValue(options.sizeName);\r\n }\r\n\r\n setSize(options: SplitterOptions|any, value: number | string) {\r\n this.renderer.setStyle(options.element, options.sizeName, toCssSize(value));\r\n }\r\n\r\n clickCloseButton(options: SplitterOptions | any) {\r\n if (!options.closable) return;\r\n if (options._priorSize !== undefined) {\r\n if (options.minSize) {\r\n this.renderer.setStyle(options.element, `min-${options.sizeName}`, toCssSize(options.minSize));\r\n }\r\n this.setSize(options, options._priorSize);\r\n this.renderer.setStyle(options.element, 'overflow', options._priorOverflow);\r\n this.renderer.setStyle(options.element, 'overflow-x', options._priorOverflowX);\r\n this.renderer.setStyle(options.element, 'overflow-y', options._priorOverflowY);\r\n options._priorSize = undefined;\r\n options._priorOverflow = undefined;\r\n options._priorOverflowX = undefined;\r\n options._priorOverflowY = undefined;\r\n } else {\r\n options._priorSize = this.getSize(options);\r\n options._priorOverflow = options.element.style.getPropertyValue('overflow');\r\n options._priorOverflowX = options.element.style.getPropertyValue('overflow-x');\r\n options._priorOverflowY = options.element.style.getPropertyValue('overflow-y');\r\n this.setSize(options, '0');\r\n if (!options.minSize) {\r\n this.renderer.setStyle(options.element, 'overflow', 'hidden');\r\n this.renderer.setStyle(options.element, 'overflow-x', 'hidden');\r\n this.renderer.setStyle(options.element, 'overflow-y', 'hidden');\r\n } else {\r\n this.renderer.setStyle(options.element, `min-${options.sizeName}`, 0);\r\n }\r\n }\r\n }\r\n\r\n\r\n separatorMouseDown(event: MouseEvent, options: SplitterOptions | any): void {\r\n if (!options.resizable) return;\r\n options._px = event.clientX;\r\n options._py = event.clientY;\r\n options._resizer = (offsetX: number, offsetY: number) => {\r\n if (options.name === 'left') options.size = options.element.offsetWidth + offsetX;\r\n else if (options.name === 'right') options.size = options.element.offsetWidth - offsetX;\r\n else if (options.name === 'top') options.size = options.element.offsetHeight + offsetY;\r\n else if (options.name === 'bottom') options.size = options.element.offsetHeight - offsetY;\r\n if (options.size < 20) options.size = 20;\r\n //console.log('setSize: ', options.size)\r\n this.setSize(options, options.size);\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n separatorMouseMove(event: MouseEvent, options: SplitterOptions | any): void {\r\n const offsetX = event.clientX - options._px;\r\n const offsetY = event.clientY - options._py;\r\n options._resizer(offsetX, offsetY);\r\n options._px = event.clientX;\r\n options._py = event.clientY;\r\n options._priorSize = undefined;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/splitter.directive.ts","import * as ng from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { bool, createStyle } from '../utils';\r\n\r\n@ng.Directive({\r\n selector: '.uss-svg-icon, [uss-svg-icon]'\r\n})\r\n@CoreComponent()\r\nexport class UssSvgIconDirective implements ng.AfterViewInit, ng.OnChanges {\r\n\r\n /**\r\n * Иконка для отрисовки.\r\n * Для isSvgSprite = true - это должна быть SVG-иконки, описанная в приложении.\r\n * Иначе это можект быть любой источник, включая кодирование data:image.\r\n * Если название начинается с префикса `fa-` - иконка будет взята из папки /assets/system/svg/fa (убирается префикс `fa-`, добавляется расширение `.svg`) (только для isSvgSprite = false).\r\n * Если название начинается с префикса `sys-` - иконка будет взята из папки /assets/system/svg (убирается префикс `fa-`, добавляется расширение `.svg`) (только для isSvgSprite = false).\r\n * Если название начинается с префикса `$map/` - иконка будет взята из папки /assets/map (убирается префикс, добавляется расширение `.svg`).\r\n * Если название начинается с префикса `${subDir}/` - иконка будет взята из папки /assets/{subDir} (убирается префикс, добавляется расширение `.svg`) - не работает режим isSvgSprite.\r\n * Если название НЕ начинается с `/`, `data:image/`, `http://`, `https://` - иконка будет взята из папки /assets/app/svg (добавляется расширение `.svg`) (только для isSvgSprite = false).\r\n */\r\n @ng.Input('uss-svg-icon') icon: string;\r\n\r\n /**\r\n * Позволяет явно задать цвет иконки.\r\n * Работает только если isSvgSprite = false или иконка - это SVG без явно указанного fill.\r\n */ \r\n @ng.Input('icon-color') iconColor = '';\r\n\r\n @ng.Input() class: string;\r\n @ng.Input() alias: string;\r\n\r\n /**\r\n * Если установлено в true - используется механизм отрисовки из svg-sprit'а, что позволяет использовать цвета, заданные в иконке,\r\n * но использовать можно только SVG-иконки, описанные в приложении.\r\n * В противном случае используется механизм CSS mask-image. Это позволяет отрисовать иконку одним, явно заданным цветом и использовать любые источники данных.\r\n */\r\n @ng.Input('svg-sprite') isSvgSprite = false;\r\n\r\n @ng.Input('transform') transform: string;\r\n\r\n /** Используется только если isMulticolor = true */\r\n @ng.Input() viewBox: string;\r\n\r\n private _transformElement: HTMLElement;\r\n\r\n constructor(protected readonly hostElementRef: ng.ElementRef, private readonly viewContainer: ng.ViewContainerRef, private readonly renderer: ng.Renderer2) {\r\n createStyle(`\r\ni[uss-svg-icon] {\r\n text-transform: none !important;\r\n}\r\n`);\r\n }\r\n\r\n ngOnChanges(c) {\r\n if (c.icon && this._transformElement) {\r\n this.initIcon();\r\n }\r\n this.setupTransformElement(c.transform, c.iconColor);\r\n }\r\n\r\n private setupTransformElement(setupTransform: boolean = true, setupColor: boolean = true) {\r\n if (this._transformElement) {\r\n if (setupTransform) {\r\n if (this.transform) {\r\n this._transformElement.style.transform = this.transform;\r\n } else {\r\n this._transformElement.style.transform = undefined;\r\n }\r\n }\r\n\r\n if (setupColor) {\r\n this._transformElement.setAttribute('fill', this.iconColor);\r\n }\r\n }\r\n }\r\n\r\n protected initIcon() {\r\n const name = this.icon || this.hostElementRef.nativeElement.innerText;\r\n const icon = this.alias ? `${this.alias}/${name}` : name;\r\n const viewBox = this.viewBox ? `viewBox='${this.viewBox}'` : '';\r\n this.applyIcon(icon, viewBox);\r\n }\r\n\r\n protected applyIcon(icon: string, viewBox: string = '') {\r\n if (icon) {\r\n const isSystem = icon.startsWith('fa-') || icon.startsWith('sys-');\r\n const isSubDir = icon.startsWith('$');\r\n const isMap = icon.startsWith('$map/');\r\n if (isMap) {\r\n isMap && (icon = icon.substring('$map/'.length));\r\n } else {\r\n isSubDir && (icon = icon.substring('$'.length));\r\n }\r\n\r\n let icoClass = icon;\r\n if (icoClass.startsWith('fa-')) {\r\n icoClass = icoClass.substring(3);\r\n icon = `fa/${icoClass}`;\r\n }\r\n else if (icoClass.startsWith('sys-')) {\r\n icon = icon.substring(4);\r\n }\r\n icoClass = icoClass.replace('/', '_');\r\n this.class = this.class || '';\r\n let contentHtml = '';\r\n let uri = '';\r\n try {\r\n if (bool(this.isSvgSprite)) {\r\n uri = isMap\r\n ? `../../../system/map.module/assets/svg/${icon}.svg`\r\n : `../../../${isSystem ? 'system/components.module' : 'app'}/assets/svg/${icon}.svg`;\r\n const ico = isMap\r\n ? require(`../../../system/map.module/assets/svg/${icon}.svg`)\r\n : require(`../../../${isSystem ? 'system/components.module' : 'app'}/assets/svg/${icon}.svg`);\r\n //const ico = require(`${uri}`);\r\n if (ico && ico.default) {\r\n const x = ico.default;\r\n contentHtml = ``;\r\n }\r\n } else {\r\n const isApp = !icon.startsWith('/') && !icon.StartsWith('http://', true) && !icon.StartsWith('https://', true) && !icon.startsWith('data:image/');\r\n if (isMap) {\r\n uri = `/assets/map/${icon}.svg`;\r\n }\r\n else if (isSubDir) {\r\n uri = `/assets/${icon}.svg`;\r\n }\r\n else if (isSystem) {\r\n uri = `/assets/system/svg/${icon}.svg`;\r\n } else if (isApp) {\r\n uri = `/assets/app/svg/${icon}.svg`;\r\n } else {\r\n uri = icon;\r\n }\r\n const cssIcon = `url('${uri}')`;\r\n contentHtml = `\r\n`;\r\n }\r\n this.hostElementRef.nativeElement.innerHTML = `${contentHtml}`;\r\n this._transformElement = this.hostElementRef.nativeElement.querySelector('svg');\r\n this.setupTransformElement();\r\n } catch (e) {\r\n }\r\n if (!contentHtml) {\r\n this.hostElementRef.nativeElement.innerHTML = '';\r\n console.warn(`SVG not foung at path: ${uri}`);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initIcon();\r\n //const name = this.icon || this.hostElementRef.nativeElement.innerText;\r\n //const icon = this.alias ? `${this.alias}/${name}` : name;\r\n //const viewBox = this.viewBox ? `viewBox='${this.viewBox}'` : '';\r\n //this.applyIcon(icon, viewBox);\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/svg-icon.directive.ts","var map = {\n\t\"./FireHydrant.svg\": 866,\n\t\"./accident.svg\": 867,\n\t\"./areaPoint.svg\": 868,\n\t\"./caller-shadow.svg\": 869,\n\t\"./caller.svg\": 870,\n\t\"./camera.svg\": 871,\n\t\"./car-crush.svg\": 872,\n\t\"./car-moving.svg\": 873,\n\t\"./car-no-shadow.svg\": 874,\n\t\"./car-nocoords-long.svg\": 875,\n\t\"./car-nocoords.svg\": 876,\n\t\"./car-notmoved.svg\": 877,\n\t\"./car-stopped-long.svg\": 878,\n\t\"./car-stopped.svg\": 879,\n\t\"./car.svg\": 880,\n\t\"./car1.svg\": 881,\n\t\"./emergency.svg\": 882,\n\t\"./fire.svg\": 883,\n\t\"./flag-shadow.svg\": 884,\n\t\"./flag.svg\": 885,\n\t\"./flame.svg\": 886,\n\t\"./group-house.svg\": 887,\n\t\"./house.svg\": 888,\n\t\"./information.svg\": 889,\n\t\"./point.svg\": 890,\n\t\"./star.svg\": 891\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2091;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/map.module/assets/svg ^\\.\\/.*\\.svg$\n// module id = 2091\n// module chunks = 1","var map = {\n\t\"./app/assets/fonts/mapfont.svg\": 2093,\n\t\"./app/assets/images/metrix-logo-icon.svg\": 2094,\n\t\"./app/assets/images/metrix-logo.svg\": 2095,\n\t\"./app/assets/svg/accessGroup.svg\": 2096,\n\t\"./app/assets/svg/alert.svg\": 2097,\n\t\"./app/assets/svg/applicationRole.svg\": 2098,\n\t\"./app/assets/svg/applicationUser.svg\": 2099,\n\t\"./app/assets/svg/authHistory.svg\": 2100,\n\t\"./app/assets/svg/check.svg\": 2101,\n\t\"./app/assets/svg/connectedClient.svg\": 2102,\n\t\"./app/assets/svg/dataFilterSet.svg\": 2103,\n\t\"./app/assets/svg/db-alert-btn.svg\": 2104,\n\t\"./app/assets/svg/db-alert-overspeed.svg\": 2105,\n\t\"./app/assets/svg/db-antena.svg\": 2106,\n\t\"./app/assets/svg/db-low-battery-charge.svg\": 2107,\n\t\"./app/assets/svg/db-low-power.svg\": 2108,\n\t\"./app/assets/svg/db-no-gps.svg\": 2109,\n\t\"./app/assets/svg/db-no-power-moment.svg\": 2110,\n\t\"./app/assets/svg/db-power-excess.svg\": 2111,\n\t\"./app/assets/svg/db-restart-gps.svg\": 2112,\n\t\"./app/assets/svg/db-sim-error.svg\": 2113,\n\t\"./app/assets/svg/exit.svg\": 2114,\n\t\"./app/assets/svg/fa-arrow.svg\": 2115,\n\t\"./app/assets/svg/icon-alarm.svg\": 2116,\n\t\"./app/assets/svg/icon-arrow-down.svg\": 2117,\n\t\"./app/assets/svg/icon-battery-charge-10.svg\": 2118,\n\t\"./app/assets/svg/icon-calendar.svg\": 2119,\n\t\"./app/assets/svg/icon-gps.svg\": 2120,\n\t\"./app/assets/svg/icon-level-oil.svg\": 2121,\n\t\"./app/assets/svg/icon-refresh.svg\": 2122,\n\t\"./app/assets/svg/icon-remove.svg\": 2123,\n\t\"./app/assets/svg/icon-start.svg\": 2124,\n\t\"./app/assets/svg/item.svg\": 2125,\n\t\"./app/assets/svg/menu-close.svg\": 2126,\n\t\"./app/assets/svg/menu-icon.svg\": 2127,\n\t\"./app/assets/svg/operationLog.svg\": 2128,\n\t\"./app/assets/svg/predefinedSensorType/pst-accel-x.svg\": 2129,\n\t\"./app/assets/svg/predefinedSensorType/pst-accel-y.svg\": 2130,\n\t\"./app/assets/svg/predefinedSensorType/pst-accel-z.svg\": 2131,\n\t\"./app/assets/svg/predefinedSensorType/pst-accel.svg\": 2132,\n\t\"./app/assets/svg/predefinedSensorType/pst-alarm-antenna-short-circuit.svg\": 2133,\n\t\"./app/assets/svg/predefinedSensorType/pst-alarm-button.svg\": 2134,\n\t\"./app/assets/svg/predefinedSensorType/pst-alarm-power-excess.svg\": 2135,\n\t\"./app/assets/svg/predefinedSensorType/pst-alarm-restart-gps.svg\": 2136,\n\t\"./app/assets/svg/predefinedSensorType/pst-alarm-sim.svg\": 2137,\n\t\"./app/assets/svg/predefinedSensorType/pst-charge-level.svg\": 2138,\n\t\"./app/assets/svg/predefinedSensorType/pst-default.svg\": 2139,\n\t\"./app/assets/svg/predefinedSensorType/pst-dut.svg\": 2140,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-charge.svg\": 2141,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-gprs.svg\": 2142,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-gps.svg\": 2143,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-gsm.svg\": 2144,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-ignition.svg\": 2145,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-power.svg\": 2146,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-sim.svg\": 2147,\n\t\"./app/assets/svg/predefinedSensorType/pst-flag-tahometr.svg\": 2148,\n\t\"./app/assets/svg/predefinedSensorType/pst-gsm-signal.svg\": 2149,\n\t\"./app/assets/svg/predefinedSensorType/pst-power.svg\": 2150,\n\t\"./app/assets/svg/predefinedSensorType/pst-satt-count.svg\": 2151,\n\t\"./app/assets/svg/predefinedSensorType/pst-start.svg\": 2152,\n\t\"./app/assets/svg/predefinedSensorType/pst-temperature.svg\": 2153,\n\t\"./app/assets/svg/predefinedSensorType/pst-turnover-engine.svg\": 2154,\n\t\"./app/assets/svg/predefinedSensorType/pst-velocity.svg\": 2155,\n\t\"./app/assets/svg/report.svg\": 2156,\n\t\"./app/assets/svg/reports/areas-report.svg\": 2157,\n\t\"./app/assets/svg/reports/fuel-level-report.svg\": 2158,\n\t\"./app/assets/svg/reports/idling-report.svg\": 2159,\n\t\"./app/assets/svg/reports/route-progress-report.svg\": 2160,\n\t\"./app/assets/svg/reports/sensors-chart.svg\": 2161,\n\t\"./app/assets/svg/reports/traffic-report.svg\": 2162,\n\t\"./app/assets/svg/route.svg\": 2163,\n\t\"./app/assets/svg/scheduler.svg\": 2164,\n\t\"./app/assets/svg/sensor-false.svg\": 2165,\n\t\"./app/assets/svg/sensor-true.svg\": 2166,\n\t\"./app/assets/svg/sensor.svg\": 2167,\n\t\"./app/assets/svg/sensorDataType/bool.svg\": 2168,\n\t\"./app/assets/svg/sensorDataType/event.svg\": 2169,\n\t\"./app/assets/svg/sensorDataType/float.svg\": 2170,\n\t\"./app/assets/svg/sensorDataType/integer.svg\": 2171,\n\t\"./app/assets/svg/sensorType.svg\": 2172,\n\t\"./app/assets/svg/statusBad.svg\": 2173,\n\t\"./app/assets/svg/statusEquipped.svg\": 2174,\n\t\"./app/assets/svg/statusFixing.svg\": 2175,\n\t\"./app/assets/svg/statusNew.svg\": 2176,\n\t\"./app/assets/svg/statusNotEquipped.svg\": 2177,\n\t\"./app/assets/svg/statusRemoved.svg\": 2178,\n\t\"./app/assets/svg/statusSet.svg\": 2179,\n\t\"./app/assets/svg/statusTested.svg\": 2180,\n\t\"./app/assets/svg/tag.svg\": 2181,\n\t\"./app/assets/svg/telematicsModelInternal.svg\": 2182,\n\t\"./app/assets/svg/telematicsModelTemplate.svg\": 2183,\n\t\"./app/assets/svg/testModel.svg\": 2184,\n\t\"./app/assets/svg/trackingDevice.svg\": 2185,\n\t\"./app/assets/svg/trackingObject.svg\": 2186,\n\t\"./app/assets/svg/trackingObjectSetting.svg\": 2187,\n\t\"./app/assets/svg/trackingObjectType.svg\": 2188,\n\t\"./app/assets/svg/user.svg\": 2189,\n\t\"./app/assets/svg/userProfile.svg\": 2190,\n\t\"./app/assets/svg/zone.svg\": 2191,\n\t\"./gortrans.module/assets/svg/bus.svg\": 2192,\n\t\"./gortrans.module/assets/svg/routetaxi.svg\": 2193,\n\t\"./gortrans.module/assets/svg/tram.svg\": 2194,\n\t\"./gortrans.module/assets/svg/trolleybus.svg\": 2195,\n\t\"./system/components.module/assets/svg/close-button.svg\": 2196,\n\t\"./system/components.module/assets/svg/fa/add-file.svg\": 2197,\n\t\"./system/components.module/assets/svg/fa/angle-down.svg\": 2198,\n\t\"./system/components.module/assets/svg/fa/angle-up.svg\": 2199,\n\t\"./system/components.module/assets/svg/fa/arrow.svg\": 2200,\n\t\"./system/components.module/assets/svg/fa/bell.svg\": 2201,\n\t\"./system/components.module/assets/svg/fa/calendar-plus-o.svg\": 2202,\n\t\"./system/components.module/assets/svg/fa/calendar.svg\": 2203,\n\t\"./system/components.module/assets/svg/fa/charge.svg\": 2204,\n\t\"./system/components.module/assets/svg/fa/check-circle.svg\": 2205,\n\t\"./system/components.module/assets/svg/fa/check-double.svg\": 2206,\n\t\"./system/components.module/assets/svg/fa/check-square.svg\": 2207,\n\t\"./system/components.module/assets/svg/fa/check.svg\": 2208,\n\t\"./system/components.module/assets/svg/fa/chevron-left.svg\": 2209,\n\t\"./system/components.module/assets/svg/fa/chevron-right.svg\": 2210,\n\t\"./system/components.module/assets/svg/fa/clock-o.svg\": 2211,\n\t\"./system/components.module/assets/svg/fa/clock.svg\": 2212,\n\t\"./system/components.module/assets/svg/fa/cog.svg\": 2213,\n\t\"./system/components.module/assets/svg/fa/copy.svg\": 2214,\n\t\"./system/components.module/assets/svg/fa/download.svg\": 2215,\n\t\"./system/components.module/assets/svg/fa/edit.svg\": 2216,\n\t\"./system/components.module/assets/svg/fa/eye-slash.svg\": 2217,\n\t\"./system/components.module/assets/svg/fa/eye.svg\": 2218,\n\t\"./system/components.module/assets/svg/fa/filter-reset.svg\": 2219,\n\t\"./system/components.module/assets/svg/fa/filter.svg\": 2220,\n\t\"./system/components.module/assets/svg/fa/fire-alt-solid.svg\": 2221,\n\t\"./system/components.module/assets/svg/fa/fire.svg\": 2222,\n\t\"./system/components.module/assets/svg/fa/gps.svg\": 2223,\n\t\"./system/components.module/assets/svg/fa/low-battery-charge.svg\": 2224,\n\t\"./system/components.module/assets/svg/fa/map.svg\": 2225,\n\t\"./system/components.module/assets/svg/fa/minus.svg\": 2226,\n\t\"./system/components.module/assets/svg/fa/pause-circle.svg\": 2227,\n\t\"./system/components.module/assets/svg/fa/pause.svg\": 2228,\n\t\"./system/components.module/assets/svg/fa/play-circle.svg\": 2229,\n\t\"./system/components.module/assets/svg/fa/play.svg\": 2230,\n\t\"./system/components.module/assets/svg/fa/plug.svg\": 2231,\n\t\"./system/components.module/assets/svg/fa/plus.svg\": 2232,\n\t\"./system/components.module/assets/svg/fa/power-off.svg\": 2233,\n\t\"./system/components.module/assets/svg/fa/print.svg\": 2234,\n\t\"./system/components.module/assets/svg/fa/refresh.svg\": 2235,\n\t\"./system/components.module/assets/svg/fa/report-download.svg\": 2236,\n\t\"./system/components.module/assets/svg/fa/rotate-left-solid.svg\": 2237,\n\t\"./system/components.module/assets/svg/fa/signal.svg\": 2238,\n\t\"./system/components.module/assets/svg/fa/stop.svg\": 2239,\n\t\"./system/components.module/assets/svg/fa/tag.svg\": 2240,\n\t\"./system/components.module/assets/svg/fa/tags.svg\": 2241,\n\t\"./system/components.module/assets/svg/fa/toolbar.svg\": 2242,\n\t\"./system/components.module/assets/svg/fa/trash-alt.svg\": 2243,\n\t\"./system/components.module/assets/svg/fa/trash-o.svg\": 2244,\n\t\"./system/components.module/assets/svg/fa/trash.svg\": 2245,\n\t\"./system/components.module/assets/svg/fa/upload.svg\": 2246,\n\t\"./system/components.module/assets/svg/fa/user-lock.svg\": 2247,\n\t\"./system/components.module/assets/svg/fa/users-cog.svg\": 2248,\n\t\"./system/components.module/assets/svg/fa/zoom-minus.svg\": 2249,\n\t\"./system/components.module/assets/svg/fa/zoom-plus.svg\": 2250,\n\t\"./system/components.module/assets/svg/fa/zoom100.svg\": 2251,\n\t\"./system/components.module/assets/svg/fullscreen_1.svg\": 2252,\n\t\"./system/components.module/assets/svg/fullscreen_2.svg\": 2253,\n\t\"./system/components.module/assets/svg/photo-camera.svg\": 2254,\n\t\"./system/map.module/assets/svg/FireHydrant.svg\": 866,\n\t\"./system/map.module/assets/svg/accident.svg\": 867,\n\t\"./system/map.module/assets/svg/areaPoint.svg\": 868,\n\t\"./system/map.module/assets/svg/caller-shadow.svg\": 869,\n\t\"./system/map.module/assets/svg/caller.svg\": 870,\n\t\"./system/map.module/assets/svg/camera.svg\": 871,\n\t\"./system/map.module/assets/svg/car-crush.svg\": 872,\n\t\"./system/map.module/assets/svg/car-moving.svg\": 873,\n\t\"./system/map.module/assets/svg/car-no-shadow.svg\": 874,\n\t\"./system/map.module/assets/svg/car-nocoords-long.svg\": 875,\n\t\"./system/map.module/assets/svg/car-nocoords.svg\": 876,\n\t\"./system/map.module/assets/svg/car-notmoved.svg\": 877,\n\t\"./system/map.module/assets/svg/car-stopped-long.svg\": 878,\n\t\"./system/map.module/assets/svg/car-stopped.svg\": 879,\n\t\"./system/map.module/assets/svg/car.svg\": 880,\n\t\"./system/map.module/assets/svg/car1.svg\": 881,\n\t\"./system/map.module/assets/svg/emergency.svg\": 882,\n\t\"./system/map.module/assets/svg/fire.svg\": 883,\n\t\"./system/map.module/assets/svg/flag-shadow.svg\": 884,\n\t\"./system/map.module/assets/svg/flag.svg\": 885,\n\t\"./system/map.module/assets/svg/flame.svg\": 886,\n\t\"./system/map.module/assets/svg/group-house.svg\": 887,\n\t\"./system/map.module/assets/svg/house.svg\": 888,\n\t\"./system/map.module/assets/svg/information.svg\": 889,\n\t\"./system/map.module/assets/svg/point.svg\": 890,\n\t\"./system/map.module/assets/svg/star.svg\": 891\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2092;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src ^\\.\\/.*\\.svg$\n// module id = 2092\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEdseXBodGVyPC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0ibWFwZm9udCIgaG9yaXotYWR2LXg9IjAiPjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMDI0IiBhc2NlbnQ9IjEwMjQiIGRlc2NlbnQ9IjAiIGZvbnQtZmFtaWx5PSJtYXBmb250IiBmb250LXdlaWdodD0ibm9ybWFsIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAvPjxnbHlwaCB1bmljb2RlPSImI3gwMDQxOyIgZD0iTTI1MS41LDEwMjRNNTQ5LjAwMSw5MjcuNzRDNTQ5LjAwMSw5MjcuNzQsNzczLjIzNCwzOTcuNjA1LDc3My4yMzQsMzk3LjYwNUM3NzMuMjM0LDM5Ny42MDUsNTQ5LjAwMSw0NjYuNTcyLDU0OS4wMDEsNDY2LjU3MkM1NDkuMDAxLDQ2Ni41NzIsMzI0Ljc4MSwzOTcuNjA1LDMyNC43ODEsMzk3LjYwNUMzMjQuNzgxLDM5Ny42MDUsNTQ5LjAwMSw5MjcuNzQsNTQ5LjAwMSw5MjcuNzRNNTQ5LjAwMSw1MzEuMDUyQzU0OS4wMDEsNTMxLjA1Miw2NjMuODk3LDQ5NS43MDUsNjYzLjg5Nyw0OTUuNzA1QzY2My44OTcsNDk1LjcwNSw1NDkuMDAxLDc2Ny4zMzYsNTQ5LjAwMSw3NjcuMzM2QzU0OS4wMDEsNzY3LjMzNiw0MzQuMTU0LDQ5NS43MDUsNDM0LjE1NCw0OTUuNzA1QzQzNC4xNTQsNDk1LjcwNSw1NDkuMDAxLDUzMS4wNTIsNTQ5LjAwMSw1MzEuMDUyTTI1MS41LDEwMjRNMzM4LjU0OSwzNTQuMTU4QzMzOC41NDksMzU0LjE1OCw1NDguOTY2LDQxNS42MSw1NDguOTY2LDQxNS42MUM1NDguOTY2LDQxNS42MSw3NTkuNDE4LDM1NC4xNTgsNzU5LjQxOCwzNTQuMTU4Qzc1OS40MTgsMzU0LjE1OCw3NTkuNDU0LDI2My40NjcsNzU5LjQ1NCwyNjMuNDY3Qzc1OS40NTQsMjYzLjQ2Nyw2ODguNDExLDI4NC4yMDksNjg4LjQxMSwyODQuMjA5QzY4OC40MTEsMjg0LjIwOSw1NDguOTksMCw1NDguOTksMEM1NDguOTksMCw0MDkuNTkyLDI4NC4yMDksNDA5LjU5MiwyODQuMjA5QzQwOS41OTIsMjg0LjIwOSwzMzguNTQ5LDI2My40NjcsMzM4LjU0OSwyNjMuNDY3QzMzOC41NDksMjYzLjQ2NywzMzguNTQ5LDM1NC4xNTgsMzM4LjU0OSwzNTQuMTU4IiBjbGFzcz0iaWNvbi1tYXJrZXIiLz48L2ZvbnQ+PC9kZWZzPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/fonts/mapfont.svg\n// module id = 2093\n// module chunks = 1","module.exports = __webpack_public_path__ + \"b301d7b8c918b0c349bc818759908dcd.svg\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/images/metrix-logo-icon.svg\n// module id = 2094\n// module chunks = 1","module.exports = __webpack_public_path__ + \"91f31eca43dd1d0253533b21b8543506.svg\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/images/metrix-logo.svg\n// module id = 2095\n// module chunks = 1","export default {\n id: \"accessGroup-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#accessGroup-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/accessGroup.svg\n// module id = 2096\n// module chunks = 1","export default {\n id: \"alert-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#alert-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/alert.svg\n// module id = 2097\n// module chunks = 1","export default {\n id: \"applicationRole-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#applicationRole-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/applicationRole.svg\n// module id = 2098\n// module chunks = 1","export default {\n id: \"applicationUser-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#applicationUser-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/applicationUser.svg\n// module id = 2099\n// module chunks = 1","export default {\n id: \"authHistory-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#authHistory-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/authHistory.svg\n// module id = 2100\n// module chunks = 1","export default {\n id: \"check-usage\",\n viewBox: \"0 0 22 22\",\n url: __webpack_public_path__ + \"svg-sprite.svg#check-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/check.svg\n// module id = 2101\n// module chunks = 1","export default {\n id: \"connectedClient-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#connectedClient-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/connectedClient.svg\n// module id = 2102\n// module chunks = 1","export default {\n id: \"dataFilterSet-usage\",\n viewBox: \"0 0 25 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#dataFilterSet-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/dataFilterSet.svg\n// module id = 2103\n// module chunks = 1","export default {\n id: \"db-alert-btn-usage\",\n viewBox: \"0 0 66 66\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-alert-btn-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-alert-btn.svg\n// module id = 2104\n// module chunks = 1","export default {\n id: \"db-alert-overspeed-usage\",\n viewBox: \"0 0 70 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-alert-overspeed-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-alert-overspeed.svg\n// module id = 2105\n// module chunks = 1","export default {\n id: \"db-antena-usage\",\n viewBox: \"0 0 70 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-antena-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-antena.svg\n// module id = 2106\n// module chunks = 1","export default {\n id: \"db-low-battery-charge-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-low-battery-charge-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-low-battery-charge.svg\n// module id = 2107\n// module chunks = 1","export default {\n id: \"db-low-power-usage\",\n viewBox: \"0 0 70 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-low-power-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-low-power.svg\n// module id = 2108\n// module chunks = 1","export default {\n id: \"db-no-gps-usage\",\n viewBox: \"0 0 56 56\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-no-gps-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-no-gps.svg\n// module id = 2109\n// module chunks = 1","export default {\n id: \"db-no-power-moment-usage\",\n viewBox: \"0 0 56 56\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-no-power-moment-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-no-power-moment.svg\n// module id = 2110\n// module chunks = 1","export default {\n id: \"db-power-excess-usage\",\n viewBox: \"0 0 70 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-power-excess-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-power-excess.svg\n// module id = 2111\n// module chunks = 1","export default {\n id: \"db-restart-gps-usage\",\n viewBox: \"0 0 70 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-restart-gps-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-restart-gps.svg\n// module id = 2112\n// module chunks = 1","export default {\n id: \"db-sim-error-usage\",\n viewBox: \"0 0 50 70\",\n url: __webpack_public_path__ + \"svg-sprite.svg#db-sim-error-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/db-sim-error.svg\n// module id = 2113\n// module chunks = 1","export default {\n id: \"exit-usage\",\n viewBox: \"0 0 16 17\",\n url: __webpack_public_path__ + \"svg-sprite.svg#exit-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/exit.svg\n// module id = 2114\n// module chunks = 1","export default {\n id: \"fa-arrow-usage\",\n viewBox: \"0 0 240.823 240.823\",\n url: __webpack_public_path__ + \"svg-sprite.svg#fa-arrow-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/fa-arrow.svg\n// module id = 2115\n// module chunks = 1","export default {\n id: \"icon-alarm-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-alarm-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-alarm.svg\n// module id = 2116\n// module chunks = 1","export default {\n id: \"icon-arrow-down-usage\",\n viewBox: \"0 0 20 20\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-arrow-down-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-arrow-down.svg\n// module id = 2117\n// module chunks = 1","export default {\n id: \"icon-battery-charge-10-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-battery-charge-10-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-battery-charge-10.svg\n// module id = 2118\n// module chunks = 1","export default {\n id: \"icon-calendar-usage\",\n viewBox: \"0 0 20 20\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-calendar-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-calendar.svg\n// module id = 2119\n// module chunks = 1","export default {\n id: \"icon-gps-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-gps-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-gps.svg\n// module id = 2120\n// module chunks = 1","export default {\n id: \"icon-level-oil-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-level-oil-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-level-oil.svg\n// module id = 2121\n// module chunks = 1","export default {\n id: \"icon-refresh-usage\",\n viewBox: \"0 0 18 18\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-refresh-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-refresh.svg\n// module id = 2122\n// module chunks = 1","export default {\n id: \"icon-remove-usage\",\n viewBox: \"0 0 14 14\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-remove-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-remove.svg\n// module id = 2123\n// module chunks = 1","export default {\n id: \"icon-start-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#icon-start-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/icon-start.svg\n// module id = 2124\n// module chunks = 1","export default {\n id: \"item-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#item-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/item.svg\n// module id = 2125\n// module chunks = 1","export default {\n id: \"menu-close-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#menu-close-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/menu-close.svg\n// module id = 2126\n// module chunks = 1","export default {\n id: \"menu-icon-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#menu-icon-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/menu-icon.svg\n// module id = 2127\n// module chunks = 1","export default {\n id: \"operationLog-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#operationLog-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/operationLog.svg\n// module id = 2128\n// module chunks = 1","export default {\n id: \"pst-accel-x-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-accel-x-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-accel-x.svg\n// module id = 2129\n// module chunks = 1","export default {\n id: \"pst-accel-y-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-accel-y-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-accel-y.svg\n// module id = 2130\n// module chunks = 1","export default {\n id: \"pst-accel-z-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-accel-z-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-accel-z.svg\n// module id = 2131\n// module chunks = 1","export default {\n id: \"pst-accel-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-accel-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-accel.svg\n// module id = 2132\n// module chunks = 1","export default {\n id: \"pst-alarm-antenna-short-circuit-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-alarm-antenna-short-circuit-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-alarm-antenna-short-circuit.svg\n// module id = 2133\n// module chunks = 1","export default {\n id: \"pst-alarm-button-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-alarm-button-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-alarm-button.svg\n// module id = 2134\n// module chunks = 1","export default {\n id: \"pst-alarm-power-excess-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-alarm-power-excess-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-alarm-power-excess.svg\n// module id = 2135\n// module chunks = 1","export default {\n id: \"pst-alarm-restart-gps-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-alarm-restart-gps-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-alarm-restart-gps.svg\n// module id = 2136\n// module chunks = 1","export default {\n id: \"pst-alarm-sim-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-alarm-sim-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-alarm-sim.svg\n// module id = 2137\n// module chunks = 1","export default {\n id: \"pst-charge-level-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-charge-level-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-charge-level.svg\n// module id = 2138\n// module chunks = 1","export default {\n id: \"pst-default-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-default-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-default.svg\n// module id = 2139\n// module chunks = 1","export default {\n id: \"pst-dut-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-dut-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-dut.svg\n// module id = 2140\n// module chunks = 1","export default {\n id: \"pst-flag-charge-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-charge-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-charge.svg\n// module id = 2141\n// module chunks = 1","export default {\n id: \"pst-flag-gprs-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-gprs-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-gprs.svg\n// module id = 2142\n// module chunks = 1","export default {\n id: \"pst-flag-gps-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-gps-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-gps.svg\n// module id = 2143\n// module chunks = 1","export default {\n id: \"pst-flag-gsm-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-gsm-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-gsm.svg\n// module id = 2144\n// module chunks = 1","export default {\n id: \"pst-flag-ignition-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-ignition-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-ignition.svg\n// module id = 2145\n// module chunks = 1","export default {\n id: \"pst-flag-power-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-power-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-power.svg\n// module id = 2146\n// module chunks = 1","export default {\n id: \"pst-flag-sim-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-sim-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-sim.svg\n// module id = 2147\n// module chunks = 1","export default {\n id: \"pst-flag-tahometr-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-flag-tahometr-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-flag-tahometr.svg\n// module id = 2148\n// module chunks = 1","export default {\n id: \"pst-gsm-signal-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-gsm-signal-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-gsm-signal.svg\n// module id = 2149\n// module chunks = 1","export default {\n id: \"pst-power-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-power-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-power.svg\n// module id = 2150\n// module chunks = 1","export default {\n id: \"pst-satt-count-usage\",\n viewBox: \"0 0 219.641 219.641\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-satt-count-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-satt-count.svg\n// module id = 2151\n// module chunks = 1","export default {\n id: \"pst-start-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-start-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-start.svg\n// module id = 2152\n// module chunks = 1","export default {\n id: \"pst-temperature-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-temperature-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-temperature.svg\n// module id = 2153\n// module chunks = 1","export default {\n id: \"pst-turnover-engine-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-turnover-engine-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-turnover-engine.svg\n// module id = 2154\n// module chunks = 1","export default {\n id: \"pst-velocity-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#pst-velocity-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/predefinedSensorType/pst-velocity.svg\n// module id = 2155\n// module chunks = 1","export default {\n id: \"report-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/report.svg\n// module id = 2156\n// module chunks = 1","export default {\n id: \"areas-report-usage\",\n viewBox: \"0 0 22 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#areas-report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/areas-report.svg\n// module id = 2157\n// module chunks = 1","export default {\n id: \"fuel-level-report-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#fuel-level-report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/fuel-level-report.svg\n// module id = 2158\n// module chunks = 1","export default {\n id: \"idling-report-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#idling-report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/idling-report.svg\n// module id = 2159\n// module chunks = 1","export default {\n id: \"route-progress-report-usage\",\n viewBox: \"0 0 22 18\",\n url: __webpack_public_path__ + \"svg-sprite.svg#route-progress-report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/route-progress-report.svg\n// module id = 2160\n// module chunks = 1","export default {\n id: \"sensors-chart-usage\",\n viewBox: \"0 0 18 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#sensors-chart-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/sensors-chart.svg\n// module id = 2161\n// module chunks = 1","export default {\n id: \"traffic-report-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#traffic-report-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/reports/traffic-report.svg\n// module id = 2162\n// module chunks = 1","export default {\n id: \"route-usage\",\n viewBox: \"0 0 25 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#route-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/route.svg\n// module id = 2163\n// module chunks = 1","export default {\n id: \"scheduler-usage\",\n viewBox: \"0 0 25 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#scheduler-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/scheduler.svg\n// module id = 2164\n// module chunks = 1","export default {\n id: \"sensor-false-usage\",\n viewBox: \"0 0 32 32\",\n url: __webpack_public_path__ + \"svg-sprite.svg#sensor-false-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensor-false.svg\n// module id = 2165\n// module chunks = 1","export default {\n id: \"sensor-true-usage\",\n viewBox: \"0 0 32 32\",\n url: __webpack_public_path__ + \"svg-sprite.svg#sensor-true-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensor-true.svg\n// module id = 2166\n// module chunks = 1","export default {\n id: \"sensor-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#sensor-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensor.svg\n// module id = 2167\n// module chunks = 1","export default {\n id: \"bool-usage\",\n viewBox: \"0 0 19 19\",\n url: __webpack_public_path__ + \"svg-sprite.svg#bool-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensorDataType/bool.svg\n// module id = 2168\n// module chunks = 1","export default {\n id: \"event-usage\",\n viewBox: \"0 0 24 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#event-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensorDataType/event.svg\n// module id = 2169\n// module chunks = 1","export default {\n id: \"float-usage\",\n viewBox: \"0 0 18 18\",\n url: __webpack_public_path__ + \"svg-sprite.svg#float-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensorDataType/float.svg\n// module id = 2170\n// module chunks = 1","export default {\n id: \"integer-usage\",\n viewBox: \"0 0 19 19\",\n url: __webpack_public_path__ + \"svg-sprite.svg#integer-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensorDataType/integer.svg\n// module id = 2171\n// module chunks = 1","export default {\n id: \"sensorType-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#sensorType-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/sensorType.svg\n// module id = 2172\n// module chunks = 1","export default {\n id: \"statusBad-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusBad-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusBad.svg\n// module id = 2173\n// module chunks = 1","export default {\n id: \"statusEquipped-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusEquipped-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusEquipped.svg\n// module id = 2174\n// module chunks = 1","export default {\n id: \"statusFixing-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusFixing-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusFixing.svg\n// module id = 2175\n// module chunks = 1","export default {\n id: \"statusNew-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusNew-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusNew.svg\n// module id = 2176\n// module chunks = 1","export default {\n id: \"statusNotEquipped-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusNotEquipped-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusNotEquipped.svg\n// module id = 2177\n// module chunks = 1","export default {\n id: \"statusRemoved-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusRemoved-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusRemoved.svg\n// module id = 2178\n// module chunks = 1","export default {\n id: \"statusSet-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusSet-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusSet.svg\n// module id = 2179\n// module chunks = 1","export default {\n id: \"statusTested-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#statusTested-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/statusTested.svg\n// module id = 2180\n// module chunks = 1","export default {\n id: \"tag-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#tag-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/tag.svg\n// module id = 2181\n// module chunks = 1","export default {\n id: \"telematicsModelInternal-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#telematicsModelInternal-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/telematicsModelInternal.svg\n// module id = 2182\n// module chunks = 1","export default {\n id: \"telematicsModelTemplate-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#telematicsModelTemplate-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/telematicsModelTemplate.svg\n// module id = 2183\n// module chunks = 1","export default {\n id: \"testModel-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#testModel-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/testModel.svg\n// module id = 2184\n// module chunks = 1","export default {\n id: \"trackingDevice-usage\",\n viewBox: \"0 0 200 200\",\n url: __webpack_public_path__ + \"svg-sprite.svg#trackingDevice-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/trackingDevice.svg\n// module id = 2185\n// module chunks = 1","export default {\n id: \"trackingObject-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#trackingObject-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/trackingObject.svg\n// module id = 2186\n// module chunks = 1","export default {\n id: \"trackingObjectSetting-usage\",\n viewBox: \"0 0 349.8 349.8\",\n url: __webpack_public_path__ + \"svg-sprite.svg#trackingObjectSetting-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/trackingObjectSetting.svg\n// module id = 2187\n// module chunks = 1","export default {\n id: \"trackingObjectType-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#trackingObjectType-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/trackingObjectType.svg\n// module id = 2188\n// module chunks = 1","export default {\n id: \"user-usage\",\n viewBox: \"0 0 349.75 349.75\",\n url: __webpack_public_path__ + \"svg-sprite.svg#user-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/user.svg\n// module id = 2189\n// module chunks = 1","export default {\n id: \"userProfile-usage\",\n viewBox: \"0 0 16 17\",\n url: __webpack_public_path__ + \"svg-sprite.svg#userProfile-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/userProfile.svg\n// module id = 2190\n// module chunks = 1","export default {\n id: \"zone-usage\",\n viewBox: \"0 0 25 24\",\n url: __webpack_public_path__ + \"svg-sprite.svg#zone-usage\",\n toString: function () {\n return this.url;\n }\n }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/assets/svg/zone.svg\n// module id = 2191\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTYuODU2NjkgMi41ODA3NUM1LjM3MzE1IDIuNTgwNzUgNC4xNzA1MSAzLjc4MzQgNC4xNzA1MSA1LjI2Njk0VjIwLjkwMzZDNC4xNzA1MSAyMS41Mjk3IDQuNDI3NjMgMjIuMDk1OSA0Ljg0MjA1IDIyLjUwMjJWMjQuMDc2NUM0Ljg0MjA1IDI0LjgxODIgNS40NDMzOCAyNS40MTk2IDYuMTg1MTUgMjUuNDE5Nkg3Ljk3NTkzQzguNzE3NyAyNS40MTk2IDkuMzE5MDMgMjQuODE4MiA5LjMxOTAzIDI0LjA3NjVWMjMuMzc3NkM5LjMxOTAzIDIzLjI5NjcgOS4zMTAyMyAyMy4yMTc5IDkuMjkzNTUgMjMuMTQySDE4LjcwNjRDMTguNjg5NyAyMy4yMTc5IDE4LjY4MDkgMjMuMjk2NyAxOC42ODA5IDIzLjM3NzZWMjQuMDc2NUMxOC42ODA5IDI0LjgxODIgMTkuMjgyMyAyNS40MTk2IDIwLjAyNCAyNS40MTk2SDIxLjgxNDhDMjIuNTU2NiAyNS40MTk2IDIzLjE1NzkgMjQuODE4MiAyMy4xNTc5IDI0LjA3NjVWMjIuNTAyMUMyMy41NzIzIDIyLjA5NTkgMjMuODI5NSAyMS41Mjk3IDIzLjgyOTUgMjAuOTAzNlY1LjI2Njk0QzIzLjgyOTUgMy43ODM0IDIyLjYyNjggMi41ODA3NSAyMS4xNDMzIDIuNTgwNzVINi44NTY2OVpNOS42ODI5NSAzLjk2ODg1QzkuMTg4NDMgMy45Njg4NSA4Ljc4NzU1IDQuMzY5NzMgOC43ODc1NSA0Ljg2NDI1QzguNzg3NTUgNS4zNTg3NiA5LjE4ODQzIDUuNzU5NjQgOS42ODI5NSA1Ljc1OTY0SDE4LjE4OTJDMTguNjgzNyA1Ljc1OTY0IDE5LjA4NDYgNS4zNTg3NiAxOS4wODQ2IDQuODY0MjVDMTkuMDg0NiA0LjM2OTczIDE4LjY4MzcgMy45Njg4NSAxOC4xODkyIDMuOTY4ODVIOS42ODI5NVpNOS40NTkxIDE5LjI5MjZDOS40NTkxIDIwLjE1OCA4Ljc1NzU1IDIwLjg1OTUgNy44OTIxNiAyMC44NTk1QzcuMDI2NzYgMjAuODU5NSA2LjMyNTIxIDIwLjE1OCA2LjMyNTIxIDE5LjI5MjZDNi4zMjUyMSAxOC40MjcyIDcuMDI2NzYgMTcuNzI1NiA3Ljg5MjE2IDE3LjcyNTZDOC43NTc1NSAxNy43MjU2IDkuNDU5MSAxOC40MjcyIDkuNDU5MSAxOS4yOTI2Wk0yMS41NDY5IDE5LjI5MjZDMjEuNTQ2OSAyMC4xNTggMjAuODQ1NCAyMC44NTk1IDE5Ljk4IDIwLjg1OTVDMTkuMTE0NiAyMC44NTk1IDE4LjQxMyAyMC4xNTggMTguNDEzIDE5LjI5MjZDMTguNDEzIDE4LjQyNzIgMTkuMTE0NiAxNy43MjU2IDE5Ljk4IDE3LjcyNTZDMjAuODQ1NCAxNy43MjU2IDIxLjU0NjkgMTguNDI3MiAyMS41NDY5IDE5LjI5MjZaTTYuMzI1MjEgOC4zNDgyQzYuMzI1MjEgNy42MDY0MyA2LjkyNjU0IDcuMDA1MTEgNy42NjgzMSA3LjAwNTExSDIwLjIwMzhDMjAuOTQ1NiA3LjAwNTExIDIxLjU0NjkgNy42MDY0MyAyMS41NDY5IDguMzQ4MlYxNC42MTZDMjEuNTQ2OSAxNS4zNTc3IDIwLjk0NTYgMTUuOTU5MSAyMC4yMDM4IDE1Ljk1OTFINy42NjgzMUM2LjkyNjU0IDE1Ljk1OTEgNi4zMjUyMSAxNS4zNTc3IDYuMzI1MjEgMTQuNjE2VjguMzQ4MlpNMjUuNjY2NiAxMi40MzUxQzI1LjY2NjYgMTIuOTI5NiAyNS4yNjU4IDEzLjMzMDUgMjQuNzcxMyAxMy4zMzA1SDI0LjI3NzJMMjQuMjc3MiA3Ljk1OTE3SDI0Ljc3MTNDMjUuMjY1OCA3Ljk1OTE3IDI1LjY2NjYgOC4zNjAwNSAyNS42NjY2IDguODU0NTZWMTIuNDM1MVpNMi4zMzMzMSA4Ljg1NDU3QzIuMzMzMzEgOC4zNjAwNiAyLjczNDE5IDcuOTU5MTggMy4yMjg3MSA3Ljk1OTE4SDMuNzIyOFYxMy4zMzA1SDMuMjI4NzFDMi43MzQxOSAxMy4zMzA1IDIuMzMzMzEgMTIuOTI5NiAyLjMzMzMxIDEyLjQzNTFWOC44NTQ1N1oiLz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gortrans.module/assets/svg/bus.svg\n// module id = 2192\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzEiIHZpZXdCb3g9IjAgMCAzMSAzMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNDk3NiA1LjkxMzQ5QzkuMDM2MSA1LjkxMzQ5IDcuODUxMjkgNy4wOTgzIDcuODUxMjkgOC41NTk4M0w1Ljg1MTI5IDIzLjk2NDVDNS44NTEyOSAyNC4xODY3IDUuODUxMzEgMjQuMjQ4OCA1Ljg1MTEzIDI0LjMxMDlDNS44NTA4MSAyNC40MjEzIDUuODQ5ODggMjQuNTMxNyA1Ljg0NzE4IDI1LjUzOTRWMjcuMDkwM0M1Ljg0NzE4IDI3LjgyMTEgNi40Mzk1OSAyOC40MTM1IDcuMTcwMzUgMjguNDEzNUg4LjkzNDU4QzkuNjY1MzQgMjguNDEzNSAxMC4yNTc3IDI3LjgyMTEgMTAuMjU3NyAyNy4wOTAzVjI2LjQwMThDMTAuMjU3NyAyNi4zMjIyIDEwLjI0OTEgMjYuMjQ0NSAxMC4yMzI2IDI2LjE2OThMMjAuODMzMiAyNi4xNjk4QzIwLjgxNjcgMjYuMjQ0NSAyMC44MDgxIDI2LjMyMjIgMjAuODA4MSAyNi40MDE4VjI3LjA5MDNDMjAuODA4MSAyNy44MjExIDIxLjQwMDUgMjguNDEzNSAyMi4xMzEyIDI4LjQxMzVIMjMuODk1NEMyNC42MjYyIDI4LjQxMzUgMjUuMjE4NiAyNy44MjExIDI1LjIxODYgMjcuMDkwM1YyNS41Mzk0VjIzLjk2NDVMMjMuMjE4NiA4LjU1OTgzQzIzLjIxODYgNy4wOTgzIDIyLjAzMzggNS45MTM0OSAyMC41NzIzIDUuOTEzNDlIMTAuNDk3NlpNMTEuMDYxNCAyMS4zNzc0QzExLjA2MTQgMjIuMjMgMTAuMzcwMyAyMi45MjExIDkuNTE3NzQgMjIuOTIxMUM4LjY2NTE4IDIyLjkyMTEgNy45NzQwNCAyMi4yMyA3Ljk3NDA0IDIxLjM3NzRDNy45NzQwNCAyMC41MjQ4IDguNjY1MTggMTkuODMzNyA5LjUxNzc0IDE5LjgzMzdDMTAuMzcwMyAxOS44MzM3IDExLjA2MTQgMjAuNTI0OCAxMS4wNjE0IDIxLjM3NzRaTTIyLjk2OTkgMjEuMzc3NEMyMi45Njk5IDIyLjIzIDIyLjI3ODggMjIuOTIxMSAyMS40MjYzIDIyLjkyMTFDMjAuNTczNyAyMi45MjExIDE5Ljg4MjYgMjIuMjMgMTkuODgyNiAyMS4zNzc0QzE5Ljg4MjYgMjAuNTI0OCAyMC41NzM3IDE5LjgzMzcgMjEuNDI2MyAxOS44MzM3QzIyLjI3ODggMTkuODMzNyAyMi45Njk5IDIwLjUyNDggMjIuOTY5OSAyMS4zNzc0Wk04Ljk3NDA0IDExLjU5NTRDOC45NzQwNCAxMC44NjQ2IDkuNTY2NDQgMTAuMjcyMiAxMC4yOTcyIDEwLjI3MjJIMjAuNjQ2OEMyMS4zNzc1IDEwLjI3MjIgMjEuOTY5OSAxMC44NjQ2IDIxLjk2OTkgMTEuNTk1NEwyMi40MjI2IDE1LjYzMDVDMjIuNDIyNiAxNi4zNjEzIDIxLjgzMDIgMTYuOTUzNyAyMS4wOTk0IDE2Ljk1MzdIOS44NDk3OUM5LjExOTAyIDE2Ljk1MzcgOC41MjY2MiAxNi4zNjEzIDguNTI2NjIgMTUuNjMwNUw4Ljk3NDA0IDExLjU5NTRaTTI2LjEyNTEgMTUuNzA0OEMyNi4xODc0IDE2LjE4OCAyNS44NDYxIDE2LjYzMDEgMjUuMzYyOSAxNi42OTI0TDI0Ljg4MDIgMTYuNzU0NkwyNC4yMDQxIDExLjUwNjNMMjQuNjg2OCAxMS40NDQxQzI1LjE3IDExLjM4MTkgMjUuNjEyMiAxMS43MjMxIDI1LjY3NDQgMTIuMjA2M0wyNi4xMjUxIDE1LjcwNDhaTTUuMzk2NTUgMTIuMjA2MkM1LjQ1OTI1IDExLjcyMzEgNS45MDE3NCAxMS4zODIzIDYuMzg0ODYgMTEuNDQ1TDYuODY3NTggMTEuNTA3Nkw2LjE4NjUxIDE2Ljc1NTJMNS43MDM4IDE2LjY5MjZDNS4yMjA2NyAxNi42Mjk5IDQuODc5ODUgMTYuMTg3NCA0Ljk0MjU1IDE1LjcwNDNMNS4zOTY1NSAxMi4yMDYyWiIgZmlsbD0id2hpdGUiLz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gortrans.module/assets/svg/routetaxi.svg\n// module id = 2193\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAxOCAyNSIgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTguNTMxNTUgMC44MzMzMTNIOS4yOTA2OFYwLjgzNjM5OEMxMC42NDQyIDAuODM2NDc4IDExLjc3MzEgMC44NzUzNTMgMTIuNjEzNCAxLjEwMDQyQzEzLjA0MTEgMS4yMTQ5NiAxMy40MjM1IDEuMzg0NzQgMTMuNzMwNSAxLjY0NTYyQzE0LjA0NDIgMS45MTIyMyAxNC4yNTY0IDIuMjU0ODYgMTQuMzY3NiAyLjY3MjgyQzE0LjQzMzQgMi45MjAyNyAxNC4yODYyIDMuMTc0MjIgMTQuMDM4NyAzLjI0MDAzQzEzLjc5MTMgMy4zMDU4NCAxMy41MzczIDMuMTU4NTkgMTMuNDcxNSAyLjkxMTE0QzEzLjQwNjIgMi42NjU0NSAxMy4yOTE5IDIuNDg5NzUgMTMuMTMwMSAyLjM1MjE4QzEyLjk2MTQgMi4yMDg4OCAxMi43MTkxIDIuMDg4NjMgMTIuMzczNSAxLjk5NjA5QzEyLjExOTUgMS45MjgwNyAxMS44MjYgMS44Nzg4OSAxMS40OTAzIDEuODQzOEwxMS4xNDU1IDQuMDk4MDNDMTQuNzM4NCA0LjU5NTQ0IDE2LjM4NjMgNi4yNzA1NCAxNi45MTQyIDYuOTQyMDhDMTYuOTQwMyA2Ljk3NTIzIDE2Ljk1MzMgNi45OTE4MSAxNi45ODQ4IDcuMDQ1MDlDMTcuMDM0MSA3LjEyODY4IDE3LjA5MjMgNy4yOTY4NSAxNy4xMDUyIDcuMzkzMDRDMTcuMTEzNCA3LjQ1NDM2IDE3LjExMzQgNy40OTMyMiAxNy4xMTM0IDcuNTcwOTJWMTYuNTQ5M0MxNy4xMTM0IDE3LjkzIDE3LjExMzQgMTguNjIwNCAxNi45MzE5IDE5LjE3OUMxNi41NjUgMjAuMzA4MiAxNS42Nzk3IDIxLjE5MzUgMTQuNTUwNSAyMS41NjA0QzE0LjQ5MjQgMjEuNTc5MiAxNC40MzI5IDIxLjU5NjIgMTQuMzcxMiAyMS42MTEzTDE2LjQ3NzMgMjMuMzQ1MUMxNi42NzQ5IDIzLjUwNzggMTYuNzAzMyAyMy44IDE2LjU0MDUgMjMuOTk3N0MxNi4zNzc4IDI0LjE5NTQgMTYuMDg1NiAyNC4yMjM3IDE1Ljg4NzkgMjQuMDYwOUwxMy4xMzA2IDIxLjc5MUMxMy4xMDk4IDIxLjc3MzkgMTMuMDkwOCAyMS43NTUzIDEzLjA3MzggMjEuNzM1NUMxMi43NTAzIDIxLjc0MTkgMTIuMzcyNSAyMS43NDE5IDExLjkyMDggMjEuNzQxOUg2LjA3OTE5QzUuNjgxMjEgMjEuNzQxOSA1LjM0MDU4IDIxLjc0MTkgNS4wNDM5NCAyMS43Mzc1QzUuMDI3MzQgMjEuNzU2NiA1LjAwODk3IDIxLjc3NDUgNC45ODg4NCAyMS43OTFMMi4yMzE1NSAyNC4wNjA5QzIuMDMzODcgMjQuMjIzNyAxLjc0MTY5IDI0LjE5NTQgMS41Nzg5NSAyMy45OTc3QzEuNDE2MjEgMjMuOCAxLjQ0NDU0IDIzLjUwNzggMS42NDIyMiAyMy4zNDUxTDMuNzIyMzEgMjEuNjMyN0MzLjYyNjc2IDIxLjYxMjUgMy41MzY1MSAyMS41ODg2IDMuNDQ5NDYgMjEuNTYwNEMyLjMyMDMxIDIxLjE5MzUgMS40MzUwNCAyMC4zMDgyIDEuMDY4MTYgMTkuMTc5QzAuODg2NjI3IDE4LjYyMDQgMC44ODY2MjcgMTcuOTMgMC44ODY2MjcgMTYuNTQ5M1Y3LjU3MDkyQzAuODg2NjI3IDcuNDkzMjIgMC44ODY2MjcgNy40NTQzNiAwLjg5NDg0NiA3LjM5MzA0QzAuOTA3NzQgNy4yOTY4NSAwLjk2NTkyOSA3LjEyODY4IDEuMDE1MjQgNy4wNDUwOUMxLjA0NjY4IDYuOTkxODEgMS4wNTk3MSA2Ljk3NTIzIDEuMDg1NzcgNi45NDIwOEMxLjYxMzY5IDYuMjcwNTQgMy4yNjE2MSA0LjU5NTQ0IDYuODU0NTIgNC4wOTgwM0w2LjUwNzUgMS44MjkwMkM2LjEwNzEgMS44NjQ2MyA1Ljc2MyAxLjkxNzkyIDUuNDcxMSAxLjk5NjA5QzUuMTI1NTkgMi4wODg2MyA0Ljg4MzIyIDIuMjA4ODggNC43MTQ2IDIuMzUyMThDNC41NTI3MiAyLjQ4OTc1IDQuNDM4NDkgMi42NjU0NSA0LjM3MzE1IDIuOTExMTRDNC4zMDczMyAzLjE1ODU5IDQuMDUzMzkgMy4zMDU4NCAzLjgwNTk0IDMuMjQwMDNDMy41NTg0OSAzLjE3NDIyIDMuNDExMjQgMi45MjAyNyAzLjQ3NzA1IDIuNjcyODJDMy41ODgyMSAyLjI1NDg2IDMuODAwNDIgMS45MTIyMyA0LjExNDE0IDEuNjQ1NjJDNC40MjExMiAxLjM4NDc0IDQuODAzNTQgMS4yMTQ5NiA1LjIzMTIyIDEuMTAwNDJDNi4wNjY5NCAwLjg3NjU5NiA3LjE4Nzk3IDAuODM2OTEzIDguNTMxNTUgMC44MzY0MDJWMC44MzMzMTNaTTEwLjU2MTYgMS43ODI3MkwxMC4yMjI0IDQuMDAwNjVDOS44MzQ4NyAzLjk3MiA5LjQyNzY4IDMuOTU2NjEgOSAzLjk1NjYxQzguNTcyMzMgMy45NTY2MSA4LjE2NTE0IDMuOTcyIDcuNzc3NjUgNC4wMDA2NUw3LjQzNzY2IDEuNzc3NjFDNy43ODA2NiAxLjc2NzQzIDguMTUzNjggMS43NjM2NCA4LjU1ODIxIDEuNzYzNjRDOC41NzY0IDEuNzYzNjQgOC41OTQzNCAxLjc2MjU5IDguNjExOTggMS43NjA1Nkg5LjIzMjY3QzkuMjUwMzEgMS43NjI1OSA5LjI2ODI1IDEuNzYzNjQgOS4yODY0NCAxLjc2MzY0QzkuNzUyNTUgMS43NjM2NCAxMC4xNzY4IDEuNzY4NjcgMTAuNTYxNiAxLjc4MjcyWk00LjM3Nzc0IDkuMTI5ODdDMy42MDk1OSA5LjEyOTg3IDIuOTg2ODcgOS43NTI1OCAyLjk4Njg3IDEwLjUyMDdWMTMuMzg3OEMyLjk4Njg3IDE0LjE1NTkgMy42MDk1OSAxNC43Nzg2IDQuMzc3NzQgMTQuNzc4NkgxMy42NTAyQzE0LjQxODMgMTQuNzc4NiAxNS4wNDEgMTQuMTU1OSAxNS4wNDEgMTMuMzg3OFYxMC41MjA3QzE1LjA0MSA5Ljc1MjU4IDE0LjQxODMgOS4xMjk4NyAxMy42NTAyIDkuMTI5ODdINC4zNzc3NFpNMTUuMDIzNyAxNy43MTQyQzE1LjAyMzcgMTguNDgyNCAxNC40MDEgMTkuMTA1MSAxMy42MzI5IDE5LjEwNTFDMTIuODY0NyAxOS4xMDUxIDEyLjI0MiAxOC40ODI0IDEyLjI0MiAxNy43MTQyQzEyLjI0MiAxNi45NDYxIDEyLjg2NDcgMTYuMzIzNCAxMy42MzI5IDE2LjMyMzRDMTQuNDAxIDE2LjMyMzQgMTUuMDIzNyAxNi45NDYxIDE1LjAyMzcgMTcuNzE0MlpNNC4zNjIwNSAxOS4xMDUxQzUuMTMwMiAxOS4xMDUxIDUuNzUyOTEgMTguNDgyNCA1Ljc1MjkxIDE3LjcxNDJDNS43NTI5MSAxNi45NDYxIDUuMTMwMiAxNi4zMjM0IDQuMzYyMDUgMTYuMzIzNEMzLjU5Mzg5IDE2LjMyMzQgMi45NzExOCAxNi45NDYxIDIuOTcxMTggMTcuNzE0MkMyLjk3MTE4IDE4LjQ4MjQgMy41OTM4OSAxOS4xMDUxIDQuMzYyMDUgMTkuMTA1MVoiLz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gortrans.module/assets/svg/tram.svg\n// module id = 2194\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuMTg4MiAyLjU2MTE3QzEwLjA1OTYgMi4zNDE0NyA5Ljc3NzE5IDIuMjY3NjYgOS41NTc1IDIuMzk2MzFDOS4zMzc4IDIuNTI0OTYgOS4yNjM5OSAyLjgwNzM1IDkuMzkyNjQgMy4wMjcwNUwxMC40MDk4IDQuNzY0MDJINy41NDYyNkM2LjAxODcgNC43NjQwMiA0Ljc4MDM3IDYuMDAyMzUgNC43ODAzNyA3LjUyOTkxVjIxLjM1OTNDNC43ODAzNyAyMS45OTE1IDUuMDM0ODQgMjIuNTY0MiA1LjQ0NjkxIDIyLjk4MDZWMjQuMjgzNEM1LjQ0NjkxIDI1LjA0NzIgNi4wNjYwOCAyNS42NjY0IDYuODI5ODYgMjUuNjY2NEg4LjY3Mzc4QzkuNDM3NTYgMjUuNjY2NCAxMC4wNTY3IDI1LjA0NzIgMTAuMDU2NyAyNC4yODM0VjIzLjg2NjhDMTAuMDU2NyAyMy43OTc2IDEwLjA1MDUgMjMuNzI5OSAxMC4wMzg1IDIzLjY2NDJIMTcuOTgzOEMxNy45NzE4IDIzLjcyOTkgMTcuOTY1NiAyMy43OTc2IDE3Ljk2NTYgMjMuODY2OFYyNC4yODM0QzE3Ljk2NTYgMjUuMDQ3MiAxOC41ODQ3IDI1LjY2NjQgMTkuMzQ4NSAyNS42NjY0SDIxLjE5MjRDMjEuOTU2MiAyNS42NjY0IDIyLjU3NTQgMjUuMDQ3MiAyMi41NzU0IDI0LjI4MzRWMjIuOTU3N0MyMi45NzQzIDIyLjU0MzMgMjMuMjE5NiAyMS45OCAyMy4yMTk2IDIxLjM1OTNWNy41Mjk5MUMyMy4yMTk2IDYuMDAyMzUgMjEuOTgxMyA0Ljc2NDAyIDIwLjQ1MzcgNC43NjQwMkgxNy41OTAyTDE4LjYwNzQgMy4wMjcwNUMxOC43MzYgMi44MDczNSAxOC42NjIyIDIuNTI0OTYgMTguNDQyNSAyLjM5NjMxQzE4LjIyMjggMi4yNjc2NiAxNy45NDA0IDIuMzQxNDcgMTcuODExOCAyLjU2MTE3TDE2LjUyMTggNC43NjQwMkgxMS40NzgyTDEwLjE4ODIgMi41NjExN1pNNi42MjQzIDcuODkyMjhDNi42MjQzIDcuMTI4NSA3LjI0MzQ2IDYuNTA5MzQgOC4wMDcyNCA2LjUwOTM0SDE5Ljk5MjdDMjAuNzU2NSA2LjUwOTM0IDIxLjM3NTcgNy4xMjg1IDIxLjM3NTcgNy44OTIyOFYxNS4yNjhDMjEuMzc1NyAxNi4wMzE4IDIwLjc1NjUgMTYuNjUwOSAxOS45OTI3IDE2LjY1MDlIOC4wMDcyNEM3LjI0MzQ2IDE2LjY1MDkgNi42MjQzIDE2LjAzMTggNi42MjQzIDE1LjI2OFY3Ljg5MjI4Wk0xOS45OTEgMjAuNzk1NEMyMC43NTQ4IDIwLjc5NTQgMjEuMzc0IDIwLjE3NjIgMjEuMzc0IDE5LjQxMjRDMjEuMzc0IDE4LjY0ODYgMjAuNzU0OCAxOC4wMjk1IDE5Ljk5MSAxOC4wMjk1QzE5LjIyNzMgMTguMDI5NSAxOC42MDgxIDE4LjY0ODYgMTguNjA4MSAxOS40MTI0QzE4LjYwODEgMjAuMTc2MiAxOS4yMjczIDIwLjc5NTQgMTkuOTkxIDIwLjc5NTRaTTkuNDI5NTcgMTkuNDEyNEM5LjQyOTU3IDIwLjE3NjIgOC44MTA0MSAyMC43OTU0IDguMDQ2NjMgMjAuNzk1NEM3LjI4Mjg1IDIwLjc5NTQgNi42NjM2OSAyMC4xNzYyIDYuNjYzNjkgMTkuNDEyNEM2LjY2MzY5IDE4LjY0ODYgNy4yODI4NSAxOC4wMjk1IDguMDQ2NjMgMTguMDI5NUM4LjgxMDQxIDE4LjAyOTUgOS40Mjk1NyAxOC42NDg2IDkuNDI5NTcgMTkuNDEyNFpNMjUuMTExMyAxMy4yOTIyQzI1LjExMTMgMTMuODAxNCAyNC42OTg1IDE0LjIxNDEgMjQuMTg5NCAxNC4yMTQxSDIzLjY4MDZWOS42MDU0M0gyNC4xODk0QzI0LjY5ODUgOS42MDU0MyAyNS4xMTEzIDEwLjAxODIgMjUuMTExMyAxMC41Mjc0TDI1LjExMTMgMTMuMjkyMlpNMy44MTA2MyAxNC4yMTQxQzMuMzAxNDUgMTQuMjE0MSAyLjg4ODY3IDEzLjgwMTQgMi44ODg2NyAxMy4yOTIyTDIuODg4NjcgMTAuNTI3NEMyLjg4ODY3IDEwLjAxODIgMy4zMDE0NSA5LjYwNTQzIDMuODEwNjMgOS42MDU0M0g0LjMxOTM5TDQuMzE5MzkgMTQuMjE0MUgzLjgxMDYzWiIvPg0KPC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gortrans.module/assets/svg/trolleybus.svg\n// module id = 2195\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MTIgNjEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2MTIgNjEyIj48cGF0aCBkPSJNNjEyIDM2IDU3Ni41Mi42MDMgMzA2IDI3MC42MSAzNS40NzguNjAzIDAgMzYgMjcwLjUyIDMwNi4wMSAwIDU3NiAzNS40NzggNjExLjQgMzA2IDM0MS40MSA1NzYuNTIgNjExLjQgNjEyIDU3NiAzNDEuNDYgMzA2LjAxeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/close-button.svg\n// module id = 2196\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KICAgICB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTI4IDEyOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCiAgICA8Zz4NCiAgICAgICAgPHBhdGggZD0iTTU2LjcyOSw5NS43ODFWNzEuMjdIMzIuMTkydi0xNC41NGgyNC41MzdWMzIuMTkyaDE0LjU0djI0LjUzN2gyNC41Mzd2MTQuNTRINzEuMjd2MjQuNTM3aC0xNC41NFY5NS43ODF6DQogICAgICAgICAgICAgTTEyNy42NDEsNDQuMjQxVjcuNjNjMC0zLjk5OS0zLjI0NS03LjI3MS03LjI3MS03LjI3MUg4My43NnYxNC41MTVoMjkuMzR2MjkuMzRoMTQuNTQxVjQ0LjI0MXogTTEyNy42NDEsMTIwLjM3VjgzLjc2aC0xNC41MTUNCiAgICAgICAgICAgIHYyOS4zNEg4My43ODV2MTQuNTE2aDM2LjYxMUMxMjQuMzY4LDEyNy42NDEsMTI3LjY0MSwxMjQuMzY4LDEyNy42NDEsMTIwLjM3eiBNNy42MywxMjcuNjQxaDM2LjYxMXYtMTQuNTE1SDE0LjlWODMuNzg1SDAuMzU5DQogICAgICAgICAgICB2MzYuNjExQzAuMzU5LDEyNC4zNjgsMy42MzEsMTI3LjY0MSw3LjYzLDEyNy42NDF6IE0wLjM1OSw3LjYzdjM2LjYxMWgxNC41MTVWMTQuOWgyOS4zNFYwLjM1OUg3LjYwNA0KICAgICAgICAgICAgQzMuNjMxLDAuMzU5LDAuMzU5LDMuNjMxLDAuMzU5LDcuNjN6Ii8+DQogICAgPC9nPg0KPC9nPg0KPC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/add-file.svg\n// module id = 2197\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAyOCI+DQo8dGl0bGU+c29ydC1kZXNjPC90aXRsZT4NCjxwYXRoIGQ9Ik0xNiAxN2MwIDAuMjY2LTAuMTA5IDAuNTE2LTAuMjk3IDAuNzAzbC03IDdjLTAuMTg3IDAuMTg3LTAuNDM4IDAuMjk3LTAuNzAzIDAuMjk3cy0wLjUxNi0wLjEwOS0wLjcwMy0wLjI5N2wtNy03Yy0wLjE4Ny0wLjE4Ny0wLjI5Ny0wLjQzOC0wLjI5Ny0wLjcwMyAwLTAuNTQ3IDAuNDUzLTEgMS0xaDE0YzAuNTQ3IDAgMSAwLjQ1MyAxIDF6Ij48L3BhdGg+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/angle-down.svg\n// module id = 2198\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAyOCI+DQo8dGl0bGU+c29ydC1hc2M8L3RpdGxlPg0KPHBhdGggZD0iTTE2IDExYzAgMC41NDctMC40NTMgMS0xIDFoLTE0Yy0wLjU0NyAwLTEtMC40NTMtMS0xIDAtMC4yNjYgMC4xMDktMC41MTYgMC4yOTctMC43MDNsNy03YzAuMTg3LTAuMTg3IDAuNDM4LTAuMjk3IDAuNzAzLTAuMjk3czAuNTE2IDAuMTA5IDAuNzAzIDAuMjk3bDcgN2MwLjE4NyAwLjE4NyAwLjI5NyAwLjQzOCAwLjI5NyAwLjcwM3oiPjwvcGF0aD4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/angle-up.svg\n// module id = 2199\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNDAuODIzIDI0MC44MjMiIHZpZXdCb3g9IjAgMCAyNDAuODIzIDI0MC44MjMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTU3LjYzMyAxMjkuMDA3IDEwOC4yOTcgMTA4LjI2MWM0Ljc1MiA0Ljc0IDEyLjQ1MSA0Ljc0IDE3LjIxNSAwIDQuNzUyLTQuNzQgNC43NTItMTIuNDM5IDAtMTcuMTc5bC05OS43MDctOTkuNjcxIDk5LjY5NS05OS42NzFjNC43NTItNC43NCA0Ljc1Mi0xMi40MzkgMC0xNy4xOTEtNC43NTItNC43NC0xMi40NjMtNC43NC0xNy4yMTUgMGwtMTA4LjI5NyAxMDguMjZjLTQuNjc5IDQuNjkxLTQuNjc5IDEyLjUxMS4wMTIgMTcuMTkxeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/arrow.svg\n// module id = 2200\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj4NCjxwYXRoIGQ9Ik00MzkuMzkgMzYyLjI5Yy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6TTY3LjUzIDM2OGMyMS4yMi0yNy45NyA0NC40Mi03NC4zMyA0NC41My0xNTkuNDIgMC0uMi0uMDYtLjM4LS4wNi0uNTggMC02MS44NiA1MC4xNC0xMTIgMTEyLTExMnMxMTIgNTAuMTQgMTEyIDExMmMwIC4yLS4wNi4zOC0uMDYuNTguMTEgODUuMSAyMy4zMSAxMzEuNDYgNDQuNTMgMTU5LjQySDY3LjUzek0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6Ii8+DQo8L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/bell.svg\n// module id = 2201\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCiAgICAgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KICAgIDxwYXRoIGQ9Ik00NDgsMTI4VjY0SDB2MzUyYzAsMTcuNjczLDE0LjMyNywzMiwzMiwzMmg0MzJjMjYuNTEyLDAsNDgtMjEuNDg5LDQ4LTQ4VjEyOEg0NDh6IE00MTYsNDE2SDMyVjk2aDM4NFY0MTZ6IE02NCwxNjBoMzIwDQogICAgICAgIHYzMkg2NFYxNjB6IE0yNTYsMjI0aDEyOHYzMkgyNTZWMjI0eiBNMjU2LDI4OGgxMjh2MzJIMjU2VjI4OHogTTI1NiwzNTJoOTZ2MzJoLTk2VjM1MnogTTY0LDIyNGgxNjB2MTYwSDY0VjIyNHoiLz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/calendar-plus-o.svg\n// module id = 2202\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCiAgICAgdmlld0JveD0iMCAwIDQ4OC4xNTIgNDg4LjE1MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDg4LjE1MiA0ODguMTUyOyINCiAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCiAgICA8Zz4NCiAgICAgICAgPHBhdGggZD0iTTE3Ny44NTQsMjY5LjMxMWMwLTYuMTE1LTQuOTYtMTEuMDY5LTExLjA4LTExLjA2OWgtMzguNjY1Yy02LjExMywwLTExLjA3NCw0Ljk1NC0xMS4wNzQsMTEuMDY5djM4LjY2DQogICAgICAgICAgICBjMCw2LjEyMyw0Ljk2MSwxMS4wNzksMTEuMDc0LDExLjA3OWgzOC42NjVjNi4xMiwwLDExLjA4LTQuOTU2LDExLjA4LTExLjA3OVYyNjkuMzExTDE3Ny44NTQsMjY5LjMxMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI3NC40ODMsMjY5LjMxMWMwLTYuMTE1LTQuOTYxLTExLjA2OS0xMS4wNjktMTEuMDY5aC0zOC42N2MtNi4xMTMsMC0xMS4wNzQsNC45NTQtMTEuMDc0LDExLjA2OXYzOC42Ng0KICAgICAgICAgICAgYzAsNi4xMjMsNC45NjEsMTEuMDc5LDExLjA3NCwxMS4wNzloMzguNjdjNi4xMDgsMCwxMS4wNjktNC45NTYsMTEuMDY5LTExLjA3OVYyNjkuMzExeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzcxLjExNywyNjkuMzExYzAtNi4xMTUtNC45NjEtMTEuMDY5LTExLjA3NC0xMS4wNjloLTM4LjY2NWMtNi4xMiwwLTExLjA4LDQuOTU0LTExLjA4LDExLjA2OXYzOC42Ng0KICAgICAgICAgICAgYzAsNi4xMjMsNC45NiwxMS4wNzksMTEuMDgsMTEuMDc5aDM4LjY2NWM2LjExMywwLDExLjA3NC00Ljk1NiwxMS4wNzQtMTEuMDc5VjI2OS4zMTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNzcuODU0LDM2NS45NWMwLTYuMTI1LTQuOTYtMTEuMDc1LTExLjA4LTExLjA3NWgtMzguNjY1Yy02LjExMywwLTExLjA3NCw0Ljk1LTExLjA3NCwxMS4wNzV2MzguNjUzDQogICAgICAgICAgICBjMCw2LjExOSw0Ljk2MSwxMS4wNzQsMTEuMDc0LDExLjA3NGgzOC42NjVjNi4xMiwwLDExLjA4LTQuOTU2LDExLjA4LTExLjA3NFYzNjUuOTVMMTc3Ljg1NCwzNjUuOTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNzQuNDgzLDM2NS45NWMwLTYuMTI1LTQuOTYxLTExLjA3NS0xMS4wNjktMTEuMDc1aC0zOC42N2MtNi4xMTMsMC0xMS4wNzQsNC45NS0xMS4wNzQsMTEuMDc1djM4LjY1Mw0KICAgICAgICAgICAgYzAsNi4xMTksNC45NjEsMTEuMDc0LDExLjA3NCwxMS4wNzRoMzguNjdjNi4xMDgsMCwxMS4wNjktNC45NTYsMTEuMDY5LTExLjA3NFYzNjUuOTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNzEuMTE3LDM2NS45NWMwLTYuMTI1LTQuOTYxLTExLjA3NS0xMS4wNjktMTEuMDc1aC0zOC42N2MtNi4xMiwwLTExLjA4LDQuOTUtMTEuMDgsMTEuMDc1djM4LjY1Mw0KICAgICAgICAgICAgYzAsNi4xMTksNC45NiwxMS4wNzQsMTEuMDgsMTEuMDc0aDM4LjY3YzYuMTA4LDAsMTEuMDY5LTQuOTU2LDExLjA2OS0xMS4wNzRWMzY1Ljk1TDM3MS4xMTcsMzY1Ljk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDQwLjI1NCw1NC4zNTR2NTkuMDVjMCwyNi42OS0yMS42NTIsNDguMTk4LTQ4LjMzOCw0OC4xOThoLTMwLjQ5M2MtMjYuNjg4LDAtNDguNjI3LTIxLjUwOC00OC42MjctNDguMTk4VjU0LjE0Mg0KICAgICAgICAgICAgaC0xMzcuNDR2NTkuMjYyYzAsMjYuNjktMjEuOTM4LDQ4LjE5OC00OC42MjIsNDguMTk4SDk2LjIzNWMtMjYuNjg1LDAtNDguMzM2LTIxLjUwOC00OC4zMzYtNDguMTk4di01OS4wNQ0KICAgICAgICAgICAgQzI0LjU3Niw1NS4wNTcsNS40MTEsNzQuMzU2LDUuNDExLDk4LjA3N3YzNDYuMDYxYzAsMjQuMTY3LDE5LjU4OCw0NC4wMTUsNDMuNzU1LDQ0LjAxNWgzODkuODINCiAgICAgICAgICAgIGMyNC4xMzEsMCw0My43NTUtMTkuODg5LDQzLjc1NS00NC4wMTVWOTguMDc3QzQ4Mi43NDEsNzQuMzU2LDQ2My41NzcsNTUuMDU3LDQ0MC4yNTQsNTQuMzU0eiBNNDI2LjA5MSw0MjIuNTg4DQogICAgICAgICAgICBjMCwxMC40NDQtOC40NjgsMTguOTE3LTE4LjkxNiwxOC45MTdIODAuMTQ0Yy0xMC40NDgsMC0xOC45MTYtOC40NzMtMTguOTE2LTE4LjkxN1YyNDMuODM1YzAtMTAuNDQ4LDguNDY3LTE4LjkyMSwxOC45MTYtMTguOTIxDQogICAgICAgICAgICBoMzI3LjAzYzEwLjQ0OCwwLDE4LjkxNiw4LjQ3MywxOC45MTYsMTguOTIxTDQyNi4wOTEsNDIyLjU4OEw0MjYuMDkxLDQyMi41ODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik05Ni4xMjgsMTI5Ljk0NWgzMC4xNjJjOS4xNTUsMCwxNi41NzgtNy40MTIsMTYuNTc4LTE2LjU2N1YxNi41NzNDMTQyLjg2OCw3LjQxNywxMzUuNDQ1LDAsMTI2LjI5LDBIOTYuMTI4DQogICAgICAgICAgICBDODYuOTcyLDAsNzkuNTUsNy40MTcsNzkuNTUsMTYuNTczdjk2LjgwNUM3OS41NSwxMjIuNTMzLDg2Ljk3MiwxMjkuOTQ1LDk2LjEyOCwxMjkuOTQ1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzYxLjAzNSwxMjkuOTQ1aDMwLjE2MmM5LjE0OSwwLDE2LjU3Mi03LjQxMiwxNi41NzItMTYuNTY3VjE2LjU3M0M0MDcuNzcsNy40MTcsNDAwLjM0NywwLDM5MS4xOTcsMGgtMzAuMTYyDQogICAgICAgICAgICBjLTkuMTU0LDAtMTYuNTc3LDcuNDE3LTE2LjU3NywxNi41NzN2OTYuODA1QzM0NC40NTgsMTIyLjUzMywzNTEuODgxLDEyOS45NDUsMzYxLjAzNSwxMjkuOTQ1eiIvPg0KICAgIDwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/calendar.svg\n// module id = 2203\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTEgMjB2LTUuNUg5TDEzIDd2NS41aDJMMTEgMjB6Ii8+PC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/charge.svg\n// module id = 2204\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTIyNy4zMTQgMzg3LjMxNGwxODQtMTg0YzYuMjQ4LTYuMjQ4IDYuMjQ4LTE2LjM3OSAwLTIyLjYyN2wtMjIuNjI3LTIyLjYyN2MtNi4yNDgtNi4yNDktMTYuMzc5LTYuMjQ5LTIyLjYyOCAwTDIxNiAzMDguMTE4bC03MC4wNTktNzAuMDU5Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDgtMjIuNjI4IDBsLTIyLjYyNyAyMi42MjdjLTYuMjQ4IDYuMjQ4LTYuMjQ4IDE2LjM3OSAwIDIyLjYyN2wxMDQgMTA0YzYuMjQ5IDYuMjQ5IDE2LjM3OSA2LjI0OSAyMi42MjguMDAxeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/check-circle.svg\n// module id = 2205\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNNTA1IDE3NC44bC0zOS42LTM5LjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE5MiAzNzQuNyA4MC42IDI2My4yYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMwMi45Yy05LjQgOS40LTkuNCAyNC42IDAgMzRMMTc1IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyOTYtMjk2LjJjOS40LTkuNSA5LjQtMjQuNy4xLTM0em0tMzI0LjMgMTA2YzYuMiA2LjMgMTYuNCA2LjMgMjIuNiAwbDIwOC0yMDguMmM2LjItNi4zIDYuMi0xNi40IDAtMjIuNkwzNjYuMSA0LjdjLTYuMi02LjMtMTYuNC02LjMtMjIuNiAwTDE5MiAxNTYuMmwtNTUuNC01NS41Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEw2OC43IDE0NmMtNi4yIDYuMy02LjIgMTYuNCAwIDIyLjZsMTEyIDExMi4yeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/check-double.svg\n// module id = 2206\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4em0tMjA0LjY4Ni05OC4wNTlsMTg0LTE4NGM2LjI0OC02LjI0OCA2LjI0OC0xNi4zNzkgMC0yMi42MjdsLTIyLjYyNy0yMi42MjdjLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OS0yMi42MjggMEwxODQgMzAyLjc0NWwtNzAuMDU5LTcwLjA1OWMtNi4yNDgtNi4yNDgtMTYuMzc5LTYuMjQ4LTIyLjYyOCAwbC0yMi42MjcgMjIuNjI3Yy02LjI0OCA2LjI0OC02LjI0OCAxNi4zNzkgMCAyMi42MjdsMTA0IDEwNGM2LjI0OSA2LjI1IDE2LjM3OSA2LjI1IDIyLjYyOC4wMDF6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/check-square.svg\n// module id = 2207\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMTczLjg5OCA0MzkuNDA0bC0xNjYuNC0xNjYuNGMtOS45OTctOS45OTctOS45OTctMjYuMjA2IDAtMzYuMjA0bDM2LjIwMy0zNi4yMDRjOS45OTctOS45OTggMjYuMjA3LTkuOTk4IDM2LjIwNCAwTDE5MiAzMTIuNjkgNDMyLjA5NSA3Mi41OTZjOS45OTctOS45OTcgMjYuMjA3LTkuOTk3IDM2LjIwNCAwbDM2LjIwMyAzNi4yMDRjOS45OTcgOS45OTcgOS45OTcgMjYuMjA2IDAgMzYuMjA0bC0yOTQuNCAyOTQuNDAxYy05Ljk5OCA5Ljk5Ny0yNi4yMDcgOS45OTctMzYuMjA0LS4wMDF6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/check.svg\n// module id = 2208\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMSAyOCI+DQo8dGl0bGU+Y2hldnJvbi1sZWZ0PC90aXRsZT4NCjxwYXRoIGQ9Ik0xOC4yOTcgNC43MDNsLTguMjk3IDguMjk3IDguMjk3IDguMjk3YzAuMzkxIDAuMzkxIDAuMzkxIDEuMDE2IDAgMS40MDZsLTIuNTk0IDIuNTk0Yy0wLjM5MSAwLjM5MS0xLjAxNiAwLjM5MS0xLjQwNiAwbC0xMS41OTQtMTEuNTk0Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAxNiAwLTEuNDA2bDExLjU5NC0xMS41OTRjMC4zOTEtMC4zOTEgMS4wMTYtMC4zOTEgMS40MDYgMGwyLjU5NCAyLjU5NGMwLjM5MSAwLjM5MSAwLjM5MSAxLjAxNiAwIDEuNDA2eiI+PC9wYXRoPg0KPC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/chevron-left.svg\n// module id = 2209\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOSAyOCI+DQo8dGl0bGU+Y2hldnJvbi1yaWdodDwvdGl0bGU+DQo8cGF0aCBkPSJNMTcuMjk3IDEzLjcwM2wtMTEuNTk0IDExLjU5NGMtMC4zOTEgMC4zOTEtMS4wMTYgMC4zOTEtMS40MDYgMGwtMi41OTQtMi41OTRjLTAuMzkxLTAuMzkxLTAuMzkxLTEuMDE2IDAtMS40MDZsOC4yOTctOC4yOTctOC4yOTctOC4yOTdjLTAuMzkxLTAuMzkxLTAuMzkxLTEuMDE2IDAtMS40MDZsMi41OTQtMi41OTRjMC4zOTEtMC4zOTEgMS4wMTYtMC4zOTEgMS40MDYgMGwxMS41OTQgMTEuNTk0YzAuMzkxIDAuMzkxIDAuMzkxIDEuMDE2IDAgMS40MDZ6Ij48L3BhdGg+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/chevron-right.svg\n// module id = 2210\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTExLjk5IDJjLTUuNTIgMC05Ljk5IDQuNDgtOS45OSAxMHM0LjQ3IDEwIDkuOTkgMTBjNS41MyAwIDEwLjAxLTQuNDggMTAuMDEtMTBzLTQuNDgtMTAtMTAuMDEtMTB6bS4wMSAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ii8+PHBhdGggZD0ibTAgMGgyNHYyNGgtMjR6IiBmaWxsPSJub25lIi8+PHBhdGggZD0ibTEyLjUgN2gtMS41djZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/clock-o.svg\n// module id = 2211\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTYxLjgtMTA0LjRsLTg0LjktNjEuN2MtMy4xLTIuMy00LjktNS45LTQuOS05LjdWMTE2YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTQxLjdsNjYuOCA0OC42YzUuNCAzLjkgNi41IDExLjQgMi42IDE2LjhMMzM0LjYgMzQ5Yy0zLjkgNS4zLTExLjQgNi41LTE2LjggMi42eiI+PC9wYXRoPg0KPC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/clock.svg\n// module id = 2212\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+DQo8dGl0bGU+Y29nPC90aXRsZT4NCjxwYXRoIGQ9Ik0yOS4xODEgMTkuMDcwYy0xLjY3OS0yLjkwOC0wLjY2OS02LjYzNCAyLjI1NS04LjMyOGwtMy4xNDUtNS40NDdjLTAuODk4IDAuNTI3LTEuOTQzIDAuODI5LTMuMDU4IDAuODI5LTMuMzYxIDAtNi4wODUtMi43NDItNi4wODUtNi4xMjVoLTYuMjg5YzAuMDA4IDEuMDQ0LTAuMjUyIDIuMTAzLTAuODExIDMuMDcwLTEuNjc5IDIuOTA4LTUuNDExIDMuODk3LTguMzM5IDIuMjExbC0zLjE0NCA1LjQ0N2MwLjkwNSAwLjUxNSAxLjY4OSAxLjI2OCAyLjI0NiAyLjIzNCAxLjY3NiAyLjkwMyAwLjY3MiA2LjYyMy0yLjI0MSA4LjMxOWwzLjE0NSA1LjQ0N2MwLjg5NS0wLjUyMiAxLjkzNS0wLjgyIDMuMDQ0LTAuODIgMy4zNSAwIDYuMDY3IDIuNzI1IDYuMDg0IDYuMDkyaDYuMjg5Yy0wLjAwMy0xLjAzNCAwLjI1OS0yLjA4MCAwLjgxMS0zLjAzOCAxLjY3Ni0yLjkwMyA1LjM5OS0zLjg5NCA4LjMyNS0yLjIxOWwzLjE0NS01LjQ0N2MtMC44OTktMC41MTUtMS42NzgtMS4yNjYtMi4yMzItMi4yMjZ6TTE2IDIyLjQ3OWMtMy41NzggMC02LjQ3OS0yLjkwMS02LjQ3OS02LjQ3OXMyLjkwMS02LjQ3OSA2LjQ3OS02LjQ3OWMzLjU3OCAwIDYuNDc5IDIuOTAxIDYuNDc5IDYuNDc5cy0yLjkwMSA2LjQ3OS02LjQ3OSA2LjQ3OXoiPjwvcGF0aD4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/cog.svg\n// module id = 2213\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KICAgICB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTI4IDEyOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCiAgICA8cGF0aCBkPSJNMTAzLjc3MywzOS4wNTFjMC04LjE4Ni02LjYzOC0xNC44MjQtMTQuODI2LTE0LjgyNEg3NS43MDF2MEgxNC44MjRjLTQuMzkxLDAtOC4zMzMsMS45MTItMTEuMDQ5LDQuOTQ1DQogICAgICAgIEMxLjQyOSwzMS43OTQsMCwzNS4yNTUsMCwzOS4wNTF2MHY3NC4xMjVDMCwxMjEuMzYzLDYuNjM4LDEyOCwxNC44MjQsMTI4aDYwLjg4MWgxMy4yNDJjOC4xODksMCwxNC44MjYtNi42MzcsMTQuODI2LTE0LjgyNA0KICAgICAgICBWOTkuOTI3bDAsMFYzOS4wNTF6IE04OS44MzEsMTEzLjk3M0gxNC4wMjhWMzguMTloNzUuODY4djI3Ljc3NWwtMC4wNjQsMC4wNjVWMTEzLjk3M3oiLz4NCjwvZz4NCjxwYXRoIGQ9Ik0xMTMuMTc0LDBIOTkuOTI4djBIMzkuMDUxYy00LjM5MSwwLTguMzMzLDEuOTEyLTExLjA0OSw0Ljk0NWMtMi4zNDcsMi42MjQtMy43NzUsNi4wODQtMy43NzUsOS44OHYwVjE2aDE0LjAyOHYtMi4wMzYNCiAgICBoNzUuODY4djI3Ljc3NWwtMC4wNjQsMC4wNjV2NDcuOTQxaC0xLjgwOHYxNC4wMjdoMC45MjRjOC4xODksMCwxNC44MjYtNi42MzcsMTQuODI2LTE0LjgyNFY3NS43VjE0LjgyNA0KICAgIEMxMjgsNi42MzgsMTIxLjM2MiwwLDExMy4xNzQsMHoiLz4NCjxyZWN0IHg9IjI3LjU5MiIgeT0iMjQuMjI2IiB3aWR0aD0iNDguNTkiIGhlaWdodD0iMTMuOTY0Ii8+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/copy.svg\n// module id = 2214\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjE2IDBoODBjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTY4aDg3LjdjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMjY5LjcgMzc4LjNjLTcuNSA3LjUtMTkuOCA3LjUtMjcuMyAwTDkwLjEgMjI2LjFjLTEyLjYtMTIuNi0zLjctMzQuMSAxNC4xLTM0LjFIMTkyVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0em0yOTYgMzc2djExMmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMzc2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE0Ni43bDQ5IDQ5YzIwLjEgMjAuMSA1Mi41IDIwLjEgNzIuNiAwbDQ5LTQ5SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHptLTEyNCA4OGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwem02NCAwYzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/download.svg\n// module id = 2215\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQogICAgIHZpZXdCb3g9IjAgMCA0OTcuMTgyIDQ5Ny4xODIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ5Ny4xODIgNDk3LjE4MiINCiAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCiAgICA8cGF0aCBkPSJNMzc2Ljk1NiwyMzcuMTQzbDU4LjUwNC01Ny42Mzd2MjU1LjQ2OGMwLDM0LjM1My0yNy44NTIsNjIuMjA3LTYyLjIwNyw2Mi4yMDdINjIuMjA5DQogICAgICAgIGMtMzQuMzUyLDAtNjIuMjA3LTI3Ljg1NC02Mi4yMDctNjIuMjA3VjEyMy45MzJjMC0zNC4zNTUsMjcuODU1LTYyLjIxMSw2Mi4yMDctNjIuMjExaDI1NS40NTNsLTU5Ljg0OSw1OC4yMzRINTguNTk3djMxOC4zNTkNCiAgICAgICAgaDMxOC4zNTlWMjM3LjE0M3ogTTM3Ny40NjksNTYuNzU1bDYyLjk2Nyw2Mi45ODVsMjAuOTkzLTIwLjk4NmwtNjIuOTY4LTYyLjk4NUwzNzcuNDY5LDU2Ljc1NXogTTQzNC4yMTEsMGwtMjAuOTg5LDIwLjk5DQogICAgICAgIGw2Mi45NjksNjIuOTY4bDIwLjk4OC0yMC45ODlMNDM0LjIxMSwweiBNMTcxLjI4OCwyNjIuOTg3bDE4OC45MS0xODguOTUzbDYyLjk2OSw2Mi45ODRsLTE4OC45MSwxODguOTM4bC05MS43MDMsMjguNjc3DQogICAgICAgIEwxNzEuMjg4LDI2Mi45ODd6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/edit.svg\n// module id = 2216\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNTEyIj48cGF0aCBkPSJNNjM0IDQ3MUwzNiAzLjUxQTE2IDE2IDAgMCAwIDEzLjUxIDZsLTEwIDEyLjQ5QTE2IDE2IDAgMCAwIDYgNDFsNTk4IDQ2Ny40OWExNiAxNiAwIDAgMCAyMi40OS0yLjQ5bDEwLTEyLjQ5QTE2IDE2IDAgMCAwIDYzNCA0NzF6TTI5Ni43OSAxNDYuNDdsMTM0Ljc5IDEwNS4zOEM0MjkuMzYgMTkxLjkxIDM4MC40OCAxNDQgMzIwIDE0NGExMTIuMjYgMTEyLjI2IDAgMCAwLTIzLjIxIDIuNDd6bTQ2LjQyIDIxOS4wN0wyMDguNDIgMjYwLjE2QzIxMC42NSAzMjAuMDkgMjU5LjUzIDM2OCAzMjAgMzY4YTExMyAxMTMgMCAwIDAgMjMuMjEtMi40NnpNMzIwIDExMmM5OC42NSAwIDE4OS4wOSA1NSAyMzcuOTMgMTQ0YTI4NS41MyAyODUuNTMgMCAwIDEtNDQgNjAuMmwzNy43NCAyOS41YTMzMy43IDMzMy43IDAgMCAwIDUyLjktNzUuMTEgMzIuMzUgMzIuMzUgMCAwIDAgMC0yOS4xOUM1NTAuMjkgMTM1LjU5IDQ0Mi45MyA2NCAzMjAgNjRjLTM2LjcgMC03MS43MSA3LTEwNC42MyAxOC44MWw0Ni40MSAzNi4yOWMxOC45NC00LjMgMzguMzQtNy4xIDU4LjIyLTcuMXptMCAyODhjLTk4LjY1IDAtMTg5LjA4LTU1LTIzNy45My0xNDRhMjg1LjQ3IDI4NS40NyAwIDAgMSA0NC4wNS02MC4xOWwtMzcuNzQtMjkuNWEzMzMuNiAzMzMuNiAwIDAgMC01Mi44OSA3NS4xIDMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDODkuNzIgMzc2LjQxIDE5Ny4wOCA0NDggMzIwIDQ0OGMzNi43IDAgNzEuNzEtNy4wNSAxMDQuNjMtMTguODFsLTQ2LjQxLTM2LjI4QzM1OS4yOCAzOTcuMiAzMzkuODkgNDAwIDMyMCA0MDB6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/eye-slash.svg\n// module id = 2217\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj48cGF0aCBkPSJNMjg4IDE0NGExMTAuOTQgMTEwLjk0IDAgMCAwLTMxLjI0IDUgNTUuNCA1NS40IDAgMCAxIDcuMjQgMjcgNTYgNTYgMCAwIDEtNTYgNTYgNTUuNCA1NS40IDAgMCAxLTI3LTcuMjRBMTExLjcxIDExMS43MSAwIDEgMCAyODggMTQ0em0yODQuNTIgOTcuNEM1MTguMjkgMTM1LjU5IDQxMC45MyA2NCAyODggNjRTNTcuNjggMTM1LjY0IDMuNDggMjQxLjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDNTcuNzEgMzc2LjQxIDE2NS4wNyA0NDggMjg4IDQ0OHMyMzAuMzItNzEuNjQgMjg0LjUyLTE3Ny40MWEzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5ek0yODggNDAwYy05OC42NSAwLTE4OS4wOS01NS0yMzcuOTMtMTQ0Qzk4LjkxIDE2NyAxODkuMzQgMTEyIDI4OCAxMTJzMTg5LjA5IDU1IDIzNy45MyAxNDRDNDc3LjEgMzQ1IDM4Ni42NiA0MDAgMjg4IDQwMHoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/eye.svg\n// module id = 2218\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMi4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPSJNMy45IDIyLjlDMTAuNSA4LjkgMjQuNSAwIDQwIDBINDcyYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzk2LjQgMTk1LjZDMzE2LjIgMjEyLjEgMjU2IDI4MyAyNTYgMzY4YzAgMjcuNCA2LjMgNTMuNCAxNy41IDc2LjVjLTEuNi0uOC0zLjItMS44LTQuNy0yLjlsLTY0LTQ4Yy04LjEtNi0xMi44LTE1LjUtMTIuOC0yNS42VjI4OC45TDkgNjUuM0MtLjcgNTMuNC0yLjggMzYuOCAzLjkgMjIuOXpNNDMyIDUxMmMtNzkuNSAwLTE0NC02NC41LTE0NC0xNDRzNjQuNS0xNDQgMTQ0LTE0NHMxNDQgNjQuNSAxNDQgMTQ0cy02NC41IDE0NC0xNDQgMTQ0em01OS4zLTE4MC43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43eiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/filter-reset.svg\n// module id = 2219\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyOCI+DQo8dGl0bGU+ZmlsdGVyPC90aXRsZT4NCjxwYXRoIGQ9Ik0yMS45MjIgNC42MDljMC4xNTYgMC4zNzUgMC4wNzggMC44MTItMC4yMTkgMS4wOTRsLTcuNzAzIDcuNzAzdjExLjU5NGMwIDAuNDA2LTAuMjUgMC43NjYtMC42MDkgMC45MjItMC4xMjUgMC4wNDctMC4yNjYgMC4wNzgtMC4zOTEgMC4wNzgtMC4yNjYgMC0wLjUxNi0wLjA5NC0wLjcwMy0wLjI5N2wtNC00Yy0wLjE4Ny0wLjE4Ny0wLjI5Ny0wLjQzOC0wLjI5Ny0wLjcwM3YtNy41OTRsLTcuNzAzLTcuNzAzYy0wLjI5Ny0wLjI4MS0wLjM3NS0wLjcxOS0wLjIxOS0xLjA5NCAwLjE1Ni0wLjM1OSAwLjUxNi0wLjYwOSAwLjkyMi0wLjYwOWgyMGMwLjQwNiAwIDAuNzY2IDAuMjUgMC45MjIgMC42MDl6Ij48L3BhdGg+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/filter.svg\n// module id = 2220\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNS4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjQgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTMyMy42IDUxLjJjLTIwLjggMTkuMy0zOS42IDM5LjYtNTYuMiA2MEMyNDAuMSA3My42IDIwNi4zIDM1LjUgMTY4IDAgNjkuNyA5MS4yIDAgMjEwIDAgMjgxLjYgMCA0MDguOSAxMDAuMyA1MTIgMjI0IDUxMnMyMjQtMTAzLjIgMjI0LTIzMC40YzAtNTMuMy01Mi0xNjMuMS0xMjQuNC0yMzAuNHptLTE5LjUgMzQwLjdDMjgyLjQgNDA3IDI1NS43IDQxNiAyMjYuOSA0MTYgMTU0LjcgNDE2IDk2IDM2OC4zIDk2IDI5MC44YzAtMzguNiAyNC4zLTcyLjYgNzIuOC0xMzAuOCA2LjkgOCA5OC44IDEyNS4zIDk4LjggMTI1LjNsNTguNi02Ni45YzQuMSA2LjkgNy45IDEzLjYgMTEuMyAyMCAyNy40IDUyLjIgMTUuOCAxMTktMzMuNCAxNTMuNHoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/fire-alt-solid.svg\n// module id = 2221\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjAwIDEyMDAiIGhlaWdodD0iMTIwMCIgdmlld0JveD0iMCAwIDEyMDAgMTIwMCIgd2lkdGg9IjEyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTM4MS42NCAxMjAwYy0yNDUuODYxLTEzOC41NjYtMzEwLjU5MS0yNjkuNzIyLTI3My41ODMtNDQ4Ljg1MiAyNy4zMjEtMTMyLjI3MSAxMTYuNzgyLTIzOS44ODYgMTI1LjM2LTM3MS45MDMgMzguMjE1IDY5LjU0NCA1NC4xODMgMTE5LjY5MSA1OC40NTMgMTkyLjM2NCAxMjEuNTQzLTE0OC45MTQgMjAxLjg2MS0zNTUuMDYzIDIwNi42MTctNTcxLjYwOSAwIDAgMzE2LjU3NSAxODYuMDEgMzM3LjM0OCA0NjYuOTggMjcuMjUzLTU3LjkxMyA0MC45NzItMTQ5Ljg5MiAxMy43MTktMjA5LjUwNCA4MS43NTcgNTkuNjE1IDU2MC4yOTMgNTg4LjgzOC02NC44MTggOTQyLjUyNCAxMTcuNTI3LTIyOC44MzggMzAuMzItNTM3LjYxMS0xNzMuNzM5LTY4MC4yMTggMTMuNjI4IDYxLjMxOS0xMC4yNjUgMjkwLjAyMS0xMDAuNTQyIDM5MC41MTUgMjUuMDE0LTE2Ny45MTYtMjMuOC0yMzguOTE4LTIzLjgtMjM4LjkxOHMtMTYuNzU0IDk0LjA1NC04MS43NTggMTg5LjA2NWMtNTkuMzYgODYuNzYyLTEwMC40OSAxNzguODQ3LTIzLjI1NyAzMzkuNTU2eiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/fire.svg\n// module id = 2222\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptOC45NCAzYy0uNDYtNC4xNy0zLjc3LTcuNDgtNy45NC03Ljk0VjFoLTJ2Mi4wNkM2LjgzIDMuNTIgMy41MiA2LjgzIDMuMDYgMTFIMXYyaDIuMDZjLjQ2IDQuMTcgMy43NyA3LjQ4IDcuOTQgNy45NFYyM2gydi0yLjA2YzQuMTctLjQ2IDcuNDgtMy43NyA3Ljk0LTcuOTRIMjN2LTJoLTIuMDZ6TTEyIDE5Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3oiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/gps.svg\n// module id = 2223\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPg0KICAgIDxwYXRoIGQ9Ik0xNS42NyA0SDE0VjJoLTR2Mkg4LjMzQzcuNiA0IDcgNC42IDcgNS4zM3YxNS4zM0M3IDIxLjQgNy42IDIyIDguMzMgMjJoNy4zM2MuNzQgMCAxLjM0LS42IDEuMzQtMS4zM1Y1LjMzQzE3IDQuNiAxNi40IDQgMTUuNjcgNHpNMTMgMThoLTJ2LTJoMnYyem0wLTRoLTJWOWgydjV6Ii8+DQo8L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/low-battery-charge.svg\n// module id = 2224\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwLjUgM2wtLjE2LjAzTDE1IDUuMSA5IDMgMy4zNiA0LjljLS4yMS4wNy0uMzYuMjUtLjM2LjQ4VjIwLjVjMCAuMjguMjIuNS41LjVsLjE2LS4wM0w5IDE4LjlsNiAyLjEgNS42NC0xLjljLjIxLS4wNy4zNi0uMjUuMzYtLjQ4VjMuNWMwLS4yOC0uMjItLjUtLjUtLjV6TTE1IDE5bC02LTIuMTFWNWw2IDIuMTFWMTl6Ii8+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/map.svg\n// module id = 2225\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQogICAgIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik0yNTYuODU0LDIuNDU5Yy0xNDAuMTk2LDAtMjUzLjg0NiwxMTMuNjUtMjUzLjg0NiwyNTMuODM3YzAsMTQwLjE5NiwxMTMuNjUsMjUzLjgzNywyNTMuODQ2LDI1My44MzcNCiAgICBjMTQwLjE3NywwLDI1My44MzgtMTEzLjY0MSwyNTMuODM4LTI1My44MzdDNTEwLjY5MSwxMTYuMTA5LDM5Ny4wMywyLjQ1OSwyNTYuODU0LDIuNDU5eiBNMjU2Ljg1NCw1My43NzENCiAgICBjNDYuNDQ5LDAsODkuMjUsMTUuNjU4LDEyMy40MjgsNDEuOTdMMjU2LjQyMiwyMTkuNkwxMzMuMDYzLDk2LjIzMUMxNjcuMzExLDY5LjcxNSwyMTAuMTc0LDUzLjc3MSwyNTYuODU0LDUzLjc3MXogTTU0LjMsMjU2LjI5Ng0KICAgIGMwLTQ2LjY4LDE1Ljk1My04OS41NDMsNDIuNDktMTIzLjc5MWwxMjMuMzY0LDEyMy4zNjRMOTYuMjc3LDM3OS43NDVDNjkuOTYsMzQ1LjU3NCw1NC4zLDMwMi43NzEsNTQuMywyNTYuMjk2eiBNMjU2Ljg1NCw0NTguODExDQogICAgYy00Ni45MDUsMC05MC4wNzctMTUuOTM4LTEyNC40MDktNDIuNjg4bDEyMy45ODEtMTIzLjk4bDEyNC4xOTksMTI0LjE5OEMzNDYuMzc3LDQ0Mi44NzcsMzAzLjUxNCw0NTguODExLDI1Ni44NTQsNDU4LjgxMXoNCiAgICAgTTQxNi44OTcsMzgwLjA4N0wyOTIuNjk0LDI1NS44NzVMNDE2LjY3LDEzMS44OThjMjYuNzY0LDM0LjMyOCw0Mi43MTksNzcuNDk3LDQyLjcxOSwxMjQuMzk3DQogICAgQzQ1OS4zODksMzAyLjk3Niw0NDMuNDM1LDM0NS44MTksNDE2Ljg5NywzODAuMDg3eiIvPg0KPC9zdmc+DQo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/minus.svg\n// module id = 2226\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwem05Ni0yODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNmgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnptLTExMiAwdjE2MGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/pause-circle.svg\n// module id = 2227\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNMTQ0IDQ3OUg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNzljMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0zMDQtNDhWNzljMC0yNi41LTIxLjUtNDgtNDgtNDhoLTk2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/pause.svg\n// module id = 2228\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMzcxLjcgMjM4bC0xNzYtMTA3Yy0xNS44LTguOC0zNS43IDIuNS0zNS43IDIxdjIwOGMwIDE4LjQgMTkuOCAyOS44IDM1LjcgMjFsMTc2LTEwMWMxNi40LTkuMSAxNi40LTMyLjggMC00MnpNNTA0IDI1NkM1MDQgMTE5IDM5MyA4IDI1NiA4UzggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDh6bS00NDggMGMwLTExMC41IDg5LjUtMjAwIDIwMC0yMDBzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NnoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/play-circle.svg\n// module id = 2229\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/play.svg\n// module id = 2230\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQgNTEyIj48cGF0aCBkPSJNMjU2IDE0NFYzMmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjExMmgtNjR6bTExMiAxNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYzMmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2djMyYzAgNzcuNDA2IDU0Ljk2OSAxNDEuOTcxIDEyOCAxNTYuNzk2VjUxMmg2NHYtOTkuMjA0YzczLjAzMS0xNC44MjUgMTI4LTc5LjM5IDEyOC0xNTYuNzk2di0zMmgxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di0zMmMwLTguODM3LTcuMTYzLTE2LTE2LTE2em0tMjQwLTE2VjMyYzAtMTcuNjczLTE0LjMyNy0zMi0zMi0zMlM2NCAxNC4zMjcgNjQgMzJ2MTEyaDY0eiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/plug.svg\n// module id = 2231\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/plus.svg\n// module id = 2232\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNNDAwIDU0LjFjNjMgNDUgMTA0IDExOC42IDEwNCAyMDEuOSAwIDEzNi44LTExMC44IDI0Ny43LTI0Ny41IDI0OEMxMjAgNTA0LjMgOC4yIDM5MyA4IDI1Ni40IDcuOSAxNzMuMSA0OC45IDk5LjMgMTExLjggNTQuMmMxMS43LTguMyAyOC00LjggMzUgNy43TDE2Mi42IDkwYzUuOSAxMC41IDMuMSAyMy44LTYuNiAzMS00MS41IDMwLjgtNjggNzkuNi02OCAxMzQuOS0uMSA5Mi4zIDc0LjUgMTY4LjEgMTY4IDE2OC4xIDkxLjYgMCAxNjguNi03NC4yIDE2OC0xNjkuMS0uMy01MS44LTI0LjctMTAxLjgtNjguMS0xMzQtOS43LTcuMi0xMi40LTIwLjUtNi41LTMwLjlsMTUuOC0yOC4xYzctMTIuNCAyMy4yLTE2LjEgMzQuOC03Ljh6TTI5NiAyNjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/power-off.svg\n// module id = 2233\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCiAgICAgdmlld0JveD0iMCAwIDQ4NS4yMTIgNDg1LjIxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDg1LjIxMiA0ODUuMjEyOyINCiAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCiAgICA8Zz4NCiAgICAgICAgPHJlY3QgeD0iMTUxLjYzNiIgeT0iMzYzLjkwNiIgd2lkdGg9IjE1MS42MTgiIGhlaWdodD0iMzAuMzMxIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjEuMzEyLDMwLjMyN2gyNDIuNTk1djYwLjY1MWgzMC4zMjFWMzAuMzI3QzM5NC4yMjksMTMuNTk1LDM4MC42NjYsMCwzNjMuOTA3LDBIMTIxLjMxMg0KICAgICAgICAgICAgYy0xNi43NDgsMC0zMC4zMjcsMTMuNTk1LTMwLjMyNywzMC4zMjd2NjAuNjUxaDMwLjMyN1YzMC4zMjd6Ii8+DQogICAgICAgIDxyZWN0IHg9IjE1MS42MzYiIHk9IjMwMy4yNTciIHdpZHRoPSIxODEuOTM5IiBoZWlnaHQ9IjMwLjMyNyIvPg0KICAgICAgICA8cGF0aCBkPSJNNDU0Ljg4MiwxMjEuMzA0SDMwLjMzNGMtMTYuNzQ4LDAtMzAuMzI3LDEzLjU5MS0zMC4zMjcsMzAuMzI0djE4MS45NTZjMCwxNi43NTksMTMuNTc5LDMwLjMyMSwzMC4zMjcsMzAuMzIxaDYwLjY1MQ0KICAgICAgICAgICAgdjkwLjk4YzAsMTYuNzY0LDEzLjU3OSwzMC4zMjYsMzAuMzI3LDMwLjMyNmgyNDIuNTk1YzE2Ljc1OSwwLDMwLjMyMS0xMy41NjIsMzAuMzIxLTMwLjMyNnYtOTAuOThoNjAuNjUzDQogICAgICAgICAgICBjMTYuNzYsMCwzMC4zMjItMTMuNTYyLDMwLjMyMi0zMC4zMjFWMTUxLjYyOEM0ODUuMjA0LDEzNC44OTUsNDcxLjY0MiwxMjEuMzA0LDQ1NC44ODIsMTIxLjMwNHogTTM2My45MDcsNDU0Ljg4NkgxMjEuMzEyVjI3Mi45Mw0KICAgICAgICAgICAgaDI0Mi41OTVWNDU0Ljg4NnogTTQyNC41NTEsMjEyLjI4MmMtMTYuNzYsMC0zMC4zMjItMTMuNTY0LTMwLjMyMi0zMC4zMjdjMC0xNi43MzEsMTMuNTYyLTMwLjMyNywzMC4zMjItMzAuMzI3DQogICAgICAgICAgICBjMTYuNzY1LDAsMzAuMzMxLDEzLjU5NSwzMC4zMzEsMzAuMzI3QzQ1NC44ODIsMTk4LjcxNyw0NDEuMzE1LDIxMi4yODIsNDI0LjU1MSwyMTIuMjgyeiIvPg0KICAgIDwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/print.svg\n// module id = 2234\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQogICAgIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KICAgIDxwYXRoIGQ9Ik00MzcuMDEyLDc0Ljk5QzM5MC42ODYsMjguNjYyLDMyNi42OTMsMCwyNTYsMEMxNDYuMjU2LDAsNTIuNjU1LDY5LjA2NCwxNi4yNTEsMTY2LjA5NGw1OS45MzgsMjIuNDc3DQogICAgICAgIEMxMDMuNDkxLDExNS43OTgsMTczLjY5Miw2NCwyNTYsNjRjNTMuMDIsMCwxMDEuMDEsMjEuNSwxMzUuNzU0LDU2LjI0N0wzMjAsMTkyaDE5MlYwTDQzNy4wMTIsNzQuOTl6IE0yNTYsNDQ4DQogICAgICAgIGMtNTMuMDIsMC0xMDEuMDEzLTIxLjQ5Ni0xMzUuNzU2LTU2LjI0NEwxOTIsMzIwSDB2MTkybDc0Ljk5Ny03NC45OTdDMTIxLjMyLDQ4My4zMzQsMTg1LjMwNiw1MTIsMjU2LDUxMg0KICAgICAgICBjMTA5Ljc0NCwwLDIwMy4zNDYtNjkuMDY0LDIzOS43NS0xNjYuMDk0bC01OS45MzgtMjIuNDc4QzQwOC41MSwzOTYuMjAyLDMzOC4zMDksNDQ4LDI1Niw0NDh6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/refresh.svg\n// module id = 2235\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE3IDEzbC01IDUtNS01aDNWOWg0djRoM3oiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/report-download.svg\n// module id = 2236\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjwhLS0hRm9udCBBd2Vzb21lIEZyZWUgNi41LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSBDb3B5cmlnaHQgMjAyNCBGb250aWNvbnMsIEluYy4tLT48cGF0aCBvcGFjaXR5PSIxIiBmaWxsPSIjMUUzMDUwIiBkPSJNNDguNSAyMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjcyYzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMkw5OC42IDk2LjZjODcuNi04Ni41IDIyOC43LTg2LjIgMzE1LjggMWM4Ny41IDg3LjUgODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNjLTYyLjItNjIuMi0xNjIuNy02Mi41LTIyNS4zLTFMMTg1IDE4M2M2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44SDQ4LjV6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/rotate-left-solid.svg\n// module id = 2237\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogICAgPHBhdGggZmlsbC1vcGFjaXR5PSIuMyIgZD0iTTIgMjJoMjBWMnoiLz4NCiAgICA8cGF0aCBkPSJNMTcgN0wyIDIyaDE1eiIvPg0KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/signal.svg\n// module id = 2238\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/stop.svg\n// module id = 2239\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyOCI+DQo8cGF0aCBkPSJNNyA3YzAtMS4xMDktMC44OTEtMi0yLTJzLTIgMC44OTEtMiAyIDAuODkxIDIgMiAyIDItMC44OTEgMi0yek0yMy42NzIgMTZjMCAwLjUzMS0wLjIxOSAxLjA0Ny0wLjU3OCAxLjQwNmwtNy42NzIgNy42ODhjLTAuMzc1IDAuMzU5LTAuODkxIDAuNTc4LTEuNDIyIDAuNTc4cy0xLjA0Ny0wLjIxOS0xLjQwNi0wLjU3OGwtMTEuMTcyLTExLjE4OGMtMC43OTctMC43ODEtMS40MjItMi4yOTctMS40MjItMy40MDZ2LTYuNWMwLTEuMDk0IDAuOTA2LTIgMi0yaDYuNWMxLjEwOSAwIDIuNjI1IDAuNjI1IDMuNDIyIDEuNDIybDExLjE3MiAxMS4xNTZjMC4zNTkgMC4zNzUgMC41NzggMC44OTEgMC41NzggMS40MjJ6Ij48L3BhdGg+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/tag.svg\n// module id = 2240\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAyOCI+DQo8cGF0aCBkPSJNNyA3YzAtMS4xMDktMC44OTEtMi0yLTJzLTIgMC44OTEtMiAyIDAuODkxIDIgMiAyIDItMC44OTEgMi0yek0yMy42NzIgMTZjMCAwLjUzMS0wLjIxOSAxLjA0Ny0wLjU3OCAxLjQwNmwtNy42NzIgNy42ODhjLTAuMzc1IDAuMzU5LTAuODkxIDAuNTc4LTEuNDIyIDAuNTc4cy0xLjA0Ny0wLjIxOS0xLjQwNi0wLjU3OGwtMTEuMTcyLTExLjE4OGMtMC43OTctMC43ODEtMS40MjItMi4yOTctMS40MjItMy40MDZ2LTYuNWMwLTEuMDk0IDAuOTA2LTIgMi0yaDYuNWMxLjEwOSAwIDIuNjI1IDAuNjI1IDMuNDIyIDEuNDIybDExLjE3MiAxMS4xNTZjMC4zNTkgMC4zNzUgMC41NzggMC44OTEgMC41NzggMS40MjJ6TTI5LjY3MiAxNmMwIDAuNTMxLTAuMjE5IDEuMDQ3LTAuNTc4IDEuNDA2bC03LjY3MiA3LjY4OGMtMC4zNzUgMC4zNTktMC44OTEgMC41NzgtMS40MjIgMC41NzgtMC44MTIgMC0xLjIxOS0wLjM3NS0xLjc1LTAuOTIybDcuMzQ0LTcuMzQ0YzAuMzU5LTAuMzU5IDAuNTc4LTAuODc1IDAuNTc4LTEuNDA2cy0wLjIxOS0xLjA0Ny0wLjU3OC0xLjQyMmwtMTEuMTcyLTExLjE1NmMtMC43OTctMC43OTctMi4zMTItMS40MjItMy40MjItMS40MjJoMy41YzEuMTA5IDAgMi42MjUgMC42MjUgMy40MjIgMS40MjJsMTEuMTcyIDExLjE1NmMwLjM1OSAwLjM3NSAwLjU3OCAwLjg5MSAwLjU3OCAxLjQyMnoiPjwvcGF0aD4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/tags.svg\n// module id = 2241\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPg0KICAgIDxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiLz4NCjwvc3ZnPg0K\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/toolbar.svg\n// module id = 2242\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNMjY4IDQxNmgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnpNNDMyIDgwaC04Mi40MWwtMzQtNTYuN0E0OCA0OCAwIDAgMCAyNzQuNDEgMEgxNzMuNTlhNDggNDggMCAwIDAtNDEuMTYgMjMuM0w5OC40MSA4MEgxNkExNiAxNiAwIDAgMCAwIDk2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE2djMzNmE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4aDE2YTE2IDE2IDAgMCAwIDE2LTE2Vjk2YTE2IDE2IDAgMCAwLTE2LTE2ek0xNzEuODQgNTAuOTFBNiA2IDAgMCAxIDE3NyA0OGg5NGE2IDYgMCAwIDEgNS4xNSAyLjkxTDI5My42MSA4MEgxNTQuMzl6TTM2OCA0NjRIODBWMTI4aDI4OHptLTIxMi00OGgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/trash-alt.svg\n// module id = 2243\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQogICAgdmlld0JveD0iMCAwIDQzOC41MjkgNDM4LjUyOSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDM4LjUyOSA0MzguNTI5Ig0KICAgICB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KICAgIDxnPg0KICAgICAgICA8cGF0aCBkPSJNNDE3LjY4OCw3NS42NTRjLTEuNzExLTEuNzA5LTMuOS0yLjU2OC02LjU2My0yLjU2OGgtODguMjI1TDMwMi45MTcsMjUuNDENCiAgICAgICAgICAgIGMtMi44NTQtNy4wNDQtNy45OTQtMTMuMDQtMTUuNDEzLTE3Ljk4OUMyODAuMDc4LDIuNDczLDI3Mi41NTYsMCwyNjQuOTQ0LDBoLTkxLjM2MmMtNy42MTEsMC0xNS4xMzEsMi40NzMtMjIuNTU0LDcuNDIxDQogICAgICAgICAgICBjLTcuNDI0LDQuOTQ5LTEyLjU2MywxMC45NDQtMTUuNDE5LDE3Ljk4OWwtMTkuOTg1LDQ3LjY3NmgtODguMjJjLTIuNjY3LDAtNC44NTMsMC44NTktNi41NjcsMi41NjgNCiAgICAgICAgICAgIGMtMS43MDksMS43MTMtMi41NjgsMy45MDMtMi41NjgsNi41Njd2MTguMjc0YzAsMi42NjQsMC44NTUsNC44NTQsMi41NjgsNi41NjRjMS43MTQsMS43MTIsMy45MDQsMi41NjgsNi41NjcsMi41NjhINTQuODF2MjcxLjgNCiAgICAgICAgICAgIGMwLDE1LjgwNCw0LjQ3MywyOS4yNjcsMTMuNDE4LDQwLjM5OGM4Ljk0NywxMS4xMzksMTkuNzAxLDE2LjcwMywzMi4yNjQsMTYuNzAzaDIzNy41NDJjMTIuNTY2LDAsMjMuMzE4LTUuNzU2LDMyLjI2NS0xNy4yNjkNCiAgICAgICAgICAgIGM4Ljk0NS0xMS41MiwxMy40MTUtMjUuMTc0LDEzLjQxNS00MC45NzFWMTA5LjYyN2gyNy40MTFjMi42NjIsMCw0Ljg1My0wLjg1Niw2LjU2My0yLjU2OGMxLjcwNy0xLjcwOSwyLjU2OS0zLjksMi41NjktNi41NjQNCiAgICAgICAgICAgIFY4Mi4yMjFDNDIwLjI2LDc5LjU1Nyw0MTkuMzk3LDc3LjM2Nyw0MTcuNjg4LDc1LjY1NHogTTE2OS4zMDEsMzkuNjc4YzEuMzMxLTEuNzEyLDIuOTUtMi43NjIsNC44NTMtMy4xNGg5MC41MDQNCiAgICAgICAgICAgIGMxLjkwMywwLjM4MSwzLjUyNCwxLjQzLDQuODU0LDMuMTRsMTMuNzA5LDMzLjQwNEgxNTUuMzExTDE2OS4zMDEsMzkuNjc4eiBNMzQ3LjE3MywzODAuMjkxYzAsNC4xODYtMC42NjQsOC4wNDItMS45OTksMTEuNTYxDQogICAgICAgICAgICBjLTEuMzM0LDMuNTE5LTIuNzE3LDYuMDg5LTQuMTQxLDcuNzA2Yy0xLjQzMSwxLjYyMi0yLjQyMywyLjQyOC0yLjk5OCwyLjQyOEgxMDAuNDkzYy0wLjU3MSwwLTEuNTY1LTAuODA2LTIuOTk2LTIuNDI4DQogICAgICAgICAgICBjLTEuNDI5LTEuNjE3LTIuODEtNC4xODgtNC4xNDMtNy43MDZjLTEuMzMxLTMuNTE5LTEuOTk3LTcuMzc5LTEuOTk3LTExLjU2MVYxMDkuNjI3aDI1NS44MTVMMzQ3LjE3MywzODAuMjkxTDM0Ny4xNzMsMzgwLjI5MXoiDQogICAgICAgICAgICAvPg0KICAgICAgICA8cGF0aCBkPSJNMTM3LjA0LDM0Ny4xNzJoMTguMjcxYzIuNjY3LDAsNC44NTgtMC44NTQsNi41NjctMi41NjZjMS43MDktMS43MTksMi41NjgtMy45MDEsMi41NjgtNi41N1YxNzMuNTgxDQogICAgICAgICAgICBjMC0yLjY2My0wLjg1OS00Ljg1My0yLjU2OC02LjU2N2MtMS43MTQtMS43MDktMy44OTktMi41NjUtNi41NjctMi41NjVIMTM3LjA0Yy0yLjY2NywwLTQuODU0LDAuODU1LTYuNTY3LDIuNTY1DQogICAgICAgICAgICBjLTEuNzExLDEuNzE0LTIuNTY4LDMuOTA0LTIuNTY4LDYuNTY3djE2NC40NTRjMCwyLjY2OSwwLjg1NCw0Ljg1MywyLjU2OCw2LjU3QzEzMi4xODYsMzQ2LjMxNiwxMzQuMzczLDM0Ny4xNzIsMTM3LjA0LDM0Ny4xNzJ6Ig0KICAgICAgICAgICAgLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMC4xMjksMzQ3LjE3MmgxOC4yNzFjMi42NjYsMCw0Ljg1Ni0wLjg1NCw2LjU2NC0yLjU2NmMxLjcxOS0xLjcxOSwyLjU2OS0zLjkwMSwyLjU2OS02LjU3VjE3My41ODENCiAgICAgICAgICAgIGMwLTIuNjYzLTAuODUzLTQuODUzLTIuNTY5LTYuNTY3Yy0xLjcwOC0xLjcwOS0zLjg5OC0yLjU2NS02LjU2NC0yLjU2NWgtMTguMjcxYy0yLjY2NCwwLTQuODU0LDAuODU1LTYuNTY3LDIuNTY1DQogICAgICAgICAgICBjLTEuNzE0LDEuNzE0LTIuNTY4LDMuOTA0LTIuNTY4LDYuNTY3djE2NC40NTRjMCwyLjY2OSwwLjg1NCw0Ljg1MywyLjU2OCw2LjU3QzIwNS4yNzQsMzQ2LjMxNiwyMDcuNDY1LDM0Ny4xNzIsMjEwLjEyOSwzNDcuMTcyeg0KICAgICAgICAgICAgIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yODMuMjIsMzQ3LjE3MmgxOC4yNjhjMi42NywwLDQuODU5LTAuODU0LDYuNTctMi41NjZjMS43MTEtMS43MTksMi41NjMtMy45MDEsMi41NjMtNi41N1YxNzMuNTgxDQogICAgICAgICAgICBjMC0yLjY2My0wLjg1Mi00Ljg1My0yLjU2My02LjU2N2MtMS43MTEtMS43MDktMy45LTIuNTY1LTYuNTctMi41NjVIMjgzLjIyYy0yLjY3LDAtNC44NTMsMC44NTUtNi41NywyLjU2NQ0KICAgICAgICAgICAgYy0xLjcxMSwxLjcxNC0yLjU2NiwzLjkwNC0yLjU2Niw2LjU2N3YxNjQuNDU0YzAsMi42NjksMC44NTUsNC44NTMsMi41NjYsNi41N0MyNzguMzY3LDM0Ni4zMTYsMjgwLjU1LDM0Ny4xNzIsMjgzLjIyLDM0Ny4xNzJ6Ig0KICAgICAgICAgICAgLz4NCiAgICA8L2c+DQo8L2c+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/trash-o.svg\n// module id = 2244\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48cGF0aCBkPSJNNDMyIDMySDMxMmwtOS40LTE4LjdBMjQgMjQgMCAwIDAgMjgxLjEgMEgxNjYuOGEyMy43MiAyMy43MiAwIDAgMC0yMS40IDEzLjNMMTM2IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2ek01My4yIDQ2N2E0OCA0OCAwIDAgMCA0Ny45IDQ1aDI0NS44YTQ4IDQ4IDAgMCAwIDQ3LjktNDVMNDE2IDEyOEgzMnoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/trash.svg\n// module id = 2245\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjk2IDM4NGgtODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE5MmgtODcuN2MtMTcuOCAwLTI2LjctMjEuNS0xNC4xLTM0LjFMMjQyLjMgNS43YzcuNS03LjUgMTkuOC03LjUgMjcuMyAwbDE1Mi4yIDE1Mi4yYzEyLjYgMTIuNiAzLjcgMzQuMS0xNC4xIDM0LjFIMzIwdjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHptMjE2LTh2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2djhjMCAzMC45IDI1LjEgNTYgNTYgNTZoODBjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThoMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHoiLz48L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/upload.svg\n// module id = 2246\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNTEyIiB3aWR0aD0iMjQiPg0KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCA5NiAxMjhhMTI4IDEyOCAwIDAgMCAxMjggMTI4em05NiA2NGE2My4wOCA2My4wOCAwIDAgMSA4LjEtMzAuNWMtNC44LS41LTkuNS0xLjUtMTQuNS0xLjVoLTE2LjdhMTc0LjA4IDE3NC4wOCAwIDAgMS0xNDUuOCAwaC0xNi43QTEzNC40MyAxMzQuNDMgMCAwIDAgMCA0MjIuNFY0NjRhNDggNDggMCAwIDAgNDggNDhoMjgwLjlhNjMuNTQgNjMuNTQgMCAwIDEtOC45LTMyem0yODgtMzJoLTMydi04MGE4MCA4MCAwIDAgMC0xNjAgMHY4MGgtMzJhMzIgMzIgMCAwIDAtMzIgMzJ2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDIyNGEzMiAzMiAwIDAgMCAzMi0zMlYzMjBhMzIgMzIgMCAwIDAtMzItMzJ6TTQ5NiA0MzJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTMyLTE0NGgtNjR2LTgwYTMyIDMyIDAgMCAxIDY0IDB6Ij48L3BhdGg+DQo8L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/user-lock.svg\n// module id = 2247\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNTEyIj4NCiAgICA8cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik02MTAuNSAzNDEuM2MyLjYtMTQuMSAyLjYtMjguNSAwLTQyLjZsMjUuOC0xNC45YzMtMS43IDQuMy01LjIgMy4zLTguNS02LjctMjEuNi0xOC4yLTQxLjItMzMuMi01Ny40LTIuMy0yLjUtNi0zLjEtOS0xLjRsLTI1LjggMTQuOWMtMTAuOS05LjMtMjMuNC0xNi41LTM2LjktMjEuM3YtMjkuOGMwLTMuNC0yLjQtNi40LTUuNy03LjEtMjIuMy01LTQ1LTQuOC02Ni4yIDAtMy4zLjctNS43IDMuNy01LjcgNy4xdjI5LjhjLTEzLjUgNC44LTI2IDEyLTM2LjkgMjEuM2wtMjUuOC0xNC45Yy0yLjktMS43LTYuNy0xLjEtOSAxLjQtMTUgMTYuMi0yNi41IDM1LjgtMzMuMiA1Ny40LTEgMy4zLjQgNi44IDMuMyA4LjVsMjUuOCAxNC45Yy0yLjYgMTQuMS0yLjYgMjguNSAwIDQyLjZsLTI1LjggMTQuOWMtMyAxLjctNC4zIDUuMi0zLjMgOC41IDYuNyAyMS42IDE4LjIgNDEuMSAzMy4yIDU3LjQgMi4zIDIuNSA2IDMuMSA5IDEuNGwyNS44LTE0LjljMTAuOSA5LjMgMjMuNCAxNi41IDM2LjkgMjEuM3YyOS44YzAgMy40IDIuNCA2LjQgNS43IDcuMSAyMi4zIDUgNDUgNC44IDY2LjIgMCAzLjMtLjcgNS43LTMuNyA1LjctNy4xdi0yOS44YzEzLjUtNC44IDI2LTEyIDM2LjktMjEuM2wyNS44IDE0LjljMi45IDEuNyA2LjcgMS4xIDktMS40IDE1LTE2LjIgMjYuNS0zNS44IDMzLjItNTcuNCAxLTMuMy0uNC02LjgtMy4zLTguNWwtMjUuOC0xNC45ek00OTYgMzY4LjVjLTI2LjggMC00OC41LTIxLjgtNDguNS00OC41czIxLjgtNDguNSA0OC41LTQ4LjUgNDguNSAyMS44IDQ4LjUgNDguNS0yMS43IDQ4LjUtNDguNSA0OC41ek05NiAyMjRjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0yMjQgMzJjMS45IDAgMy43LS41IDUuNi0uNiA4LjMtMjEuNyAyMC41LTQyLjEgMzYuMy01OS4yIDcuNC04IDE3LjktMTIuNiAyOC45LTEyLjYgNi45IDAgMTMuNyAxLjggMTkuNiA1LjNsNy45IDQuNmMuOC0uNSAxLjYtLjkgMi40LTEuNCA3LTE0LjYgMTEuMi0zMC44IDExLjItNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJTMjA4IDgyLjEgMjA4IDE0NGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnptMTA1LjIgMTk0LjVjLTIuMy0xLjItNC42LTIuNi02LjgtMy45LTguMiA0LjgtMTUuMyA5LjgtMjcuNSA5LjgtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi0xMC43LTM0LjUgMjQuOS00OS43IDI1LjgtNTAuMy0uMS0yLjYtLjEtNS4yIDAtNy44bC03LjktNC42Yy0zLjgtMi4yLTctNS05LjgtOC4xLTMuMy4yLTYuNS42LTkuOC42LTI0LjYgMC00Ny42LTYtNjguNS0xNmgtOC4zQzE3OS42IDI4OCAxMjggMzM5LjYgMTI4IDQwMy4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNTUuNGMtMy43LTYtNi4yLTEyLjgtNi4yLTIwLjN2LTkuMnpNMTczLjEgMjc0LjZDMTYxLjUgMjYzLjEgMTQ1LjYgMjU2IDEyOCAyNTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0djMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY1LjljNi4zLTQ3LjQgMzQuOS04Ny4zIDc1LjItMTA5LjR6Ij48L3BhdGg+DQo8L3N2Zz4=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/users-cog.svg\n// module id = 2248\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMi4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i0KHQu9C+0LlfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA0NyA0NyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDcgNDc7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik00NC41LDI0LjZjMS4xLDAsMi0wLjksMi0ycy0wLjktMi0yLTJoLTQyYy0xLjEsMC0yLDAuOS0yLDJzMC45LDIsMiwySDQ0LjV6Ii8+DQo8L3N2Zz4NCg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/zoom-minus.svg\n// module id = 2249\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0NyA0NyIgdmlld0JveD0iMCAwIDQ3IDQ3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im0yMyA0N2MxLjEwNCAwIDItLjg5NiAyLTJ2LTIwLjM4MWgxOS41YzEuMTA0IDAgMi0uODk2IDItMnMtLjg5Ni0yLTItMmgtMTkuNXYtMTguNjE5YzAtMS4xMDQtLjg5Ni0yLTItMnMtMiAuODk2LTIgMnYxOC42MTloLTE4LjVjLTEuMTA0IDAtMiAuODk2LTIgMnMuODk2IDIgMiAyaDE4LjV2MjAuMzgxYzAgMS4xMDQuODk2IDIgMiAyeiIvPjwvc3ZnPg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/zoom-plus.svg\n// module id = 2250\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDV2NGgyVjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0yIDEwSDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHptMTQgNGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHptMC0xNmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fa/zoom100.svg\n// module id = 2251\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQuOTcgMzg0Ljk3IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzODQuOTcgMzg0Ljk3Ij48cGF0aCBkPSJtMzg0Ljk3IDEyLjAzYzAtNi43MTMtNS4zMTctMTIuMDMtMTIuMDMtMTIuMDNoLTEwOC4wOWMtNi44MzMgMC0xMS45MjIgNS4zOS0xMS45MzQgMTIuMjIzIDAgNi44MjEgNS4xMDEgMTEuODM4IDExLjkzNCAxMS44MzhoOTYuMDZsLS4xOTMgOTYuNTJjMCA2LjgzMyA1LjE5NyAxMi4wMyAxMi4wMyAxMi4wMyA2LjgzMy0uMDEyIDEyLjAzLTUuMTk3IDEyLjAzLTEyLjAzbC4xOTMtMTA4LjM3YzAtLjAzNi0uMDEyLS4wNi0uMDEyLS4wODQuMDAwMS0uMDM3LjAxMy0uMDYxLjAxMy0uMDk3Ii8+PHBhdGggZD0ibTEyMC41IDBoLTEwOC4wOWMtLjAzNiAwLS4wNi4wMTItLjA5Ni4wMTItLjAyNCAwLS4wNi0uMDEyLS4wODQtLjAxMi02LjcxMyAwLTEyLjAzIDUuMzE3LTEyLjAzIDEyLjAzbC0uMTkyIDEwOC4zN2MwIDYuODMzIDUuMzkgMTEuOTM0IDEyLjIyMyAxMS45MzQgNi44MjEgMCAxMS44MzgtNS4xMDEgMTEuODM4LTExLjkzNGwuMTkyLTk2LjM0aDk2LjI0YzYuODMzIDAgMTIuMDMtNS4xOTcgMTIuMDMtMTIuMDMtLjAxMS02LjgzMy01LjIwOC0xMi4wMy0xMi4wMy0xMi4wMyIvPjxwYXRoIGQ9Im0xMjAuMTIgMzYwLjkxaC05Ni4wNnYtOTYuMjRjMC02LjgzMy01LjE5Ny0xMi4wMy0xMi4wMy0xMi4wM3MtMTIuMDMgNS4xOTYtMTIuMDMgMTIuMDN2MTA4LjA5YzAgLjAzNi4wMTIuMDYuMDEyLjA4NCAwIC4wMzYtLjAxMi4wNi0uMDEyLjA5NiAwIDYuNzEzIDUuMzE3IDEyLjAzIDEyLjAzIDEyLjAzaDEwOC4wOWM2LjgzMyAwIDExLjkyMi01LjM5IDExLjkzNC0xMi4yMjMuMDAwMS02LjgyLTUuMS0xMS44MzctMTEuOTMzLTExLjgzNyIvPjxwYXRoIGQ9Im0zNzIuNzUgMjUyLjkxYy02LjgzMyAwLTExLjg1IDUuMTAxLTExLjgzOCAxMS45MzR2OTYuMDZoLTk2LjI0Yy02LjgzMyAwLTEyLjAzIDUuMTk3LTEyLjAzIDEyLjAzczUuMTk3IDEyLjAzIDEyLjAzIDEyLjAzaDEwOC4wOWMuMDM2IDAgLjA2LS4wMTIuMDg0LS4wMTIuMDM2LS4wMTIuMDYuMDEyLjA5Ni4wMTIgNi43MTMgMCAxMi4wMy01LjMxNyAxMi4wMy0xMi4wM3YtMTA4LjA5Yy4wMDAxLTYuODMzLTUuMzg5LTExLjkzNC0xMi4yMjItMTEuOTM0Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fullscreen_1.svg\n// module id = 2252\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODUuMzMxIDM4NS4zMzEiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDM4NS4zMzEgMzg1LjMzMSI+PHBhdGggZD0ibTI2NC45NCAxNTYuNjZoMTA4LjI3YzYuODMzIDAgMTEuOTM0LTUuMzkgMTEuOTM0LTEyLjIxMSAwLTYuODMzLTUuMTAxLTExLjg1LTExLjkzNC0xMS44MzhoLTk2LjI0di05Ni40M2MwLTYuODMzLTUuMTk3LTEyLjAzLTEyLjAzLTEyLjAzcy0xMi4wMyA1LjE5Ny0xMi4wMyAxMi4wM3YxMDguMjdjMCAuMDM2LjAxMi4wNi4wMTIuMDg0IDAgLjAzNi0uMDEyLjA2LS4wMTIuMDk2LS4wMDAxIDYuNzEzIDUuMzE2IDEyLjA0IDEyLjAzIDEyLjAzIi8+PHBhdGggZD0ibTEyMC4yOSAyNC4yNWMtNi44MjEgMC0xMS44MzggNS4xMTMtMTEuODM4IDExLjkzNHY5Ni4yNGgtOTYuNDJjLTYuODMzIDAtMTIuMDMgNS4xOTctMTIuMDMgMTIuMDMgMCA2LjgzMyA1LjE5NyAxMi4wMyAxMi4wMyAxMi4wM2gxMDguMjdjLjAzNiAwIC4wNi0uMDEyLjA4NC0uMDEyLjAzNiAwIC4wNi4wMTIuMDk2LjAxMiA2LjcxMyAwIDEyLjAzLTUuMzE3IDEyLjAzLTEyLjAzdi0xMDguMjdjLjAwMDEtNi44MjEtNS4zODktMTEuOTIyLTEyLjIyMi0xMS45MzQiLz48cGF0aCBkPSJtMTIwLjM5IDIyOC42N2gtMTA4LjI3Yy02LjgzMy4wMTItMTEuOTM0IDUuMzktMTEuOTM0IDEyLjIyMyAwIDYuODMzIDUuMTAxIDExLjg1IDExLjkzNCAxMS44MzhoOTYuMjR2OTYuNDJjMCA2LjgzMyA1LjE5NyAxMi4wMyAxMi4wMyAxMi4wMyA2LjgzMyAwIDEyLjAzLTUuMTk3IDEyLjAzLTEyLjAzdi0xMDguMjdjMC0uMDM2LS4wMTItLjA2LS4wMTItLjA4NCAwLS4wMzYuMDEyLS4wNi4wMTItLjA5Ni4wMDAxLTYuNzE0LTUuMzE3LTEyLjAzLTEyLjAzLTEyLjAzIi8+PHBhdGggZD0ibTM3My4zIDIyOC42N2gtMTA4LjI3Yy0uMDM2IDAtLjA2LjAxMi0uMDg0LjAxMi0uMDM2IDAtLjA2LS4wMTItLjA5Ni0uMDEyLTYuNzEzIDAtMTIuMDMgNS4zMTctMTIuMDMgMTIuMDN2MTA4LjI3YzAgNi44MzMgNS4zOSAxMS45MjIgMTIuMjIzIDExLjkzNCA2LjgyMS4wMTIgMTEuODM4LTUuMTAxIDExLjgzOC0xMS45MjJ2LTk2LjI0aDk2LjQyYzYuODMzIDAgMTIuMDMtNS4xOTcgMTIuMDMtMTIuMDNzLTUuMTk2LTEyLjAzLTEyLjAzLTEyLjA0Ii8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/fullscreen_2.svg\n// module id = 2253\n// module chunks = 1","module.exports = \"data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxODggMTE1IiBoZWlnaHQ9IjExNSIgdmlld0JveD0iMCAwIDE4OCAxMTUiIHdpZHRoPSIxODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTExMi45MjcgNjcuNTk0YzAgMTAuNDYtOC40NjggMTguOTI2LTE4LjkyNyAxOC45MjZzLTE4LjkyNy04LjQ2Ni0xOC45MjctMTguOTI2IDguNDY4LTE4LjkyOCAxOC45MjctMTguOTI4IDE4LjkyNyA4LjQ2OCAxOC45MjcgMTguOTI4em0zOC43MzMtNDcuNDM1YzcuNTU5IDAgMTMuNjgzIDYuMTI0IDEzLjY4MyAxMy42ODJ2MzUuODYxIDMwLjQxMmMwIDguMDU4LTYuNTM0IDE0LjU5MS0xNC41OTIgMTQuNTkxaC0xMTMuNTAyYy04LjA1NyAwLTE0LjU5LTYuNTMzLTE0LjU5LTE0LjU5MXYtMzAuNDQxLTM1LjgzMmMwLTcuNTU5IDYuMTIzLTEzLjY4MiAxMy42ODMtMTMuNjgyaDI3LjM2NWwxLjI4OS01LjQ1YzEuOTYyLTguNDM4IDkuNDkxLTE0LjQxNSAxOC4xNjQtMTQuNDE1aDIxLjcxYzguNjcyIDAgMTYuMjAyIDUuOTc3IDE4LjE2NSAxNC40MTVsMS4yNjEgNS40NXptLTEwMC40NjUgMTkuNzQ3YzAtMy43NzktMy4wNzYtNi44NTYtNi44NTUtNi44NTYtMy44MDkgMC02Ljg4NiAzLjA3Ny02Ljg4NiA2Ljg1NnMzLjA3NyA2Ljg1NSA2Ljg1NiA2Ljg1NWMzLjgwOS4wMyA2Ljg4NS0zLjA0NiA2Ljg4NS02Ljg1NXptNzYuNTU3IDI3LjY4OGMwLTE4LjYzNS0xNS4xMTgtMzMuNzUzLTMzLjc1Mi0zMy43NTMtMTguNjMzIDAtMzMuNzUyIDE1LjExOC0zMy43NTIgMzMuNzUzIDAgMTguNjMzIDE1LjExOSAzMy43NTIgMzMuNzUyIDMzLjc1MiAxOC42MzQgMCAzMy43NTItMTUuMTE5IDMzLjc1Mi0zMy43NTJ6IiBmaWxsPSIjZWNlY2VjIi8+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/assets/svg/photo-camera.svg\n// module id = 2254\n// module chunks = 1","import { Directive, Input, HostListener, Injectable, ElementRef, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { ifEmpty, isNotEmpty } from '../utils/utils';\r\n\r\n/**\r\n * Директива расширяет обычный тег TITLE таким образом, что можно передавать не только текст хинта, но и функцию,\r\n * которая будет возвращать текст хинта в момент наведения указателя мыши на элемент.\r\n * Это нужно, например, для задания сложновычисляемых хинтов для элементов больших списков на форме.\r\n */ \r\n@Injectable()\r\n@Directive({\r\n selector: '[title]'\r\n})\r\n//@CoreComponent() // используется новая директива [title]\r\nexport class UssTitleDirective implements OnChanges {\r\n /** Текст хинта или функция, возвращающая текст хинта */\r\n @Input('title') title: string | ((context: any, el: HTMLElement) => string);\r\n /** Дополнительный контекст, передаваемый в качестве параметра в функцию, возвращающую текст хинта. */ \r\n @Input('context') context: any;\r\n /** Если задано - это будет значение this при вызове метода. */\r\n @Input('bindTo') bindTo: any;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['title']) {\r\n if (typeof this.title === 'function') {\r\n this.el.nativeElement.title = '';\r\n } else {\r\n this.el.nativeElement.title = ifEmpty(this.title, '');\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseover', ['$event'])\r\n public mouseOver(e: Event) {\r\n if (typeof this.title === 'function') {\r\n const title = (isNotEmpty(this.bindTo) ? this.title.bind(this.bindTo) : this.title)(this.context, this.el.nativeElement);\r\n this.el.nativeElement.title = ifEmpty(title, '');\r\n }\r\n }\r\n\r\n @HostListener('mouseleave', ['$event'])\r\n public mouseLeave(e: Event) {\r\n if (typeof this.title === 'function') {\r\n this.el.nativeElement.title = '';\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/title.directive.ts","import { ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostListener, Input, ViewContainerRef } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { markdownToHtml, isNotEmpty, debounce, clearDebounce } from '../utils/utils';\r\nimport { translate } from '../interfaces/core-translate.service';\r\nimport { TooltipComponent } from '../components/tooltip/tooltip.component';\r\nimport { TypedEventEmitter } from '../utils/TypedEventEmitter';\r\n\r\nexport type TTooltipContent = string | ((context?: any, self?: TooltipDirective) => string) | ((self?: TooltipDirective) => string);\r\n\r\nconst mousePosition = { x: -1, y: -1 };\r\nconst globalMouseMove = new TypedEventEmitter(1);\r\nconst globalMouseWheel = new TypedEventEmitter(1);\r\n\r\ndocument.addEventListener('mousemove', e => {\r\n mousePosition.x = e.clientX;\r\n mousePosition.y = e.clientY;\r\n globalMouseMove.emit(e);\r\n}, true);\r\n\r\n\r\n\r\n@Directive({\r\n selector: '[title][context]',\r\n})\r\n@CoreComponent()\r\nexport class TooltipDirective {\r\n\r\n private static lastHiddenTime?: number;\r\n\r\n @Input('title') tooltipContent: TTooltipContent;\r\n\r\n /** Дополнительный контекст, передаваемый в качестве параметра в функцию, возвращающую текст хинта. */ \r\n @Input('context') context: any;\r\n\r\n /** Если задано - это будет значение this при вызове метода. */\r\n @Input('bindTo') bindTo: any;\r\n\r\n\r\n private tooltipComponentRef: any;\r\n\r\n private tap: boolean;\r\n\r\n private isMouseOver: boolean;\r\n\r\n readonly destroyed$ = new EventEmitter();\r\n\r\n get tooltip() {\r\n return this.tooltipComponentRef ? this.tooltipComponentRef.instance.content : this.tooltipContent;\r\n }\r\n set tooltip(value: TTooltipContent) {\r\n this.elementRef.nativeElement.title = '';\r\n this.tooltipContent = value;\r\n if (this.isVisible) {\r\n this.setPosition();\r\n }\r\n }\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private viewContainerRef: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver\r\n ) {\r\n globalMouseMove.takeUntil(this.destroyed$).subscribe(e => {\r\n // Получаем координаты элемента относительно окна\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n // Координаты мыши\r\n const mouseX = e.clientX;\r\n const mouseY = e.clientY;\r\n // Проверяем, находится ли указатель мыши внутри границ элемента\r\n this.isMouseOver = mouseX >= rect.left && mouseX <= rect.right && mouseY >= rect.top && mouseY <= rect.bottom;\r\n if (this.isMouseOver) {\r\n this.onMouseEnter();\r\n if (this.tooltipComponentRef && TooltipComponent.activeTooltip === this.tooltipComponentRef.instance) {\r\n debounce(() => {\r\n if (this.tooltipComponentRef && TooltipComponent.activeTooltip === this.tooltipComponentRef.instance) {\r\n this.setPosition();\r\n }\r\n }, !TooltipDirective.lastHiddenTime || (Date.now() - TooltipDirective.lastHiddenTime) > 500 ? 500 : 0, '@@tooltip@@');\r\n }\r\n } else {\r\n this.isVisible && this.onMouseLeave();\r\n }\r\n });\r\n\r\n globalMouseWheel.takeUntil(this.destroyed$).subscribe(e => {\r\n this.isVisible && this.onMouseWheel();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n try {\r\n this.destroyed$.emit(true);\r\n clearDebounce('@@tooltip@@');\r\n if (this.isVisible) {\r\n document.body.removeChild(this.tooltipComponentRef.location.nativeElement);\r\n this.viewContainerRef.clear();\r\n }\r\n } catch (e) {} \r\n }\r\n\r\n ngOnChanges(v) {\r\n \tthis.tooltip = this.tooltipContent;\r\n }\r\n\r\n @HostListener('resize') onResize() {\r\n this.hide();\r\n }\r\n\r\n private _tapStartTimeStamp;\r\n @HostListener('touchstart', ['$event']) onStartTap(e: Event) {\r\n this._tapStartTimeStamp = e.timeStamp;\r\n }\r\n\r\n @HostListener('touchend', ['$event']) onTap(e: Event) {\r\n if (e.timeStamp - this._tapStartTimeStamp > 500) {\r\n this._tapStartTimeStamp = undefined;\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n this.onMouseEnter(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(toggle?: boolean) {\r\n if (this._tapStartTimeStamp) return;\r\n debounce(() => {\r\n if (this.isMouseOver) {\r\n if (!this.tooltipComponentRef) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);\r\n this.tooltipComponentRef = this.viewContainerRef.createComponent(factory);\r\n }\r\n this.tap = toggle === true;\r\n this.tap ? this.toggle() : this.show();\r\n }\r\n }, !TooltipDirective.lastHiddenTime || (Date.now() - TooltipDirective.lastHiddenTime) > 500 ? 500 : 0, '@@tooltip@@');\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.isVisible) {\r\n this.hide();\r\n }\r\n }\r\n\r\n @HostListener('wheel') onMouseWheel() {\r\n if (this.isVisible) {\r\n this.hide();\r\n TooltipDirective.lastHiddenTime = 0;\r\n }\r\n }\r\n\r\n private setPosition() {\r\n this.tooltipComponentRef.instance.content = this.transformTooltip(this.tooltipContent);\r\n this.tooltipComponentRef.instance.show();\r\n\r\n const elementRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const hintElement = this.tooltipComponentRef.instance.elementRef.nativeElement.children[0];\r\n\r\n const styles = getComputedStyle(hintElement);\r\n\r\n hintElement.style.minWidth = undefined;\r\n hintElement.style.maxWidth = undefined;\r\n hintElement.classList.remove('x-left');\r\n hintElement.classList.remove('x-right');\r\n hintElement.classList.remove('x-center');\r\n const marginX = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\r\n const fullWidth = hintElement.offsetWidth + marginX;\r\n const ww = window.innerWidth;\r\n let modeX = 'left';\r\n let left = this.tap ? (elementRect.left + window.scrollX) : (mousePosition.x + 10);\r\n if (ww - (left + fullWidth) < 0) {\r\n modeX = 'right';\r\n left = this.tap ? (elementRect.right + window.scrollX - fullWidth) : (ww - fullWidth - 22);\r\n if (left < 0) {\r\n modeX = 'center';\r\n left = 8;\r\n hintElement.style.minWidth = `${ww - 8}px`;\r\n hintElement.style.maxWidth = hintElement.style.minWidth;\r\n }\r\n }\r\n hintElement.classList.add(`x-${modeX}`);\r\n hintElement.style.left = `${left}px`;\r\n\r\n hintElement.classList.remove('y-top');\r\n hintElement.classList.remove('y-bottom');\r\n hintElement.classList.remove('y-middle');\r\n //const marginY = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\r\n const fullHeight = hintElement.offsetHeight + 6 + 4;\r\n const wh = window.innerHeight;\r\n let modeY = 'bottom';\r\n let top = this.tap ? (elementRect.bottom + window.scrollY) : (mousePosition.y + 10);\r\n if (wh - (top + fullHeight) < 0) {\r\n modeY = 'top';\r\n top = this.tap ? elementRect.top + window.scrollY - fullHeight : (wh - fullHeight);\r\n if (top < 0) {\r\n modeY = 'middle';\r\n top = 8;\r\n hintElement.style.minHeight = `${wh - 8}px`;\r\n hintElement.style.maxHeight = hintElement.style.minHeight;\r\n }\r\n }\r\n hintElement.classList.add(`y-${modeY}`);\r\n hintElement.style.top = `${top}px`;\r\n }\r\n\r\n private transformTooltip(s?: TTooltipContent): string {\r\n let title;\r\n if (typeof s === 'function') {\r\n title = (isNotEmpty(this.bindTo) ? s.bind(this.bindTo) : s)(this.context ?? this, this);\r\n }\r\n else {\r\n title = s;\r\n }\r\n title = markdownToHtml(translate.instant(title));\r\n return title;\r\n }\r\n\r\n get isVisible() {\r\n \treturn this.tooltipComponentRef && this.tooltipComponentRef.instance.isVisible;\r\n }\r\n\r\n toggle() {\r\n if (this.tooltipComponentRef) {\r\n this.tooltipComponentRef.instance.toggle();\r\n if (this.isVisible) {\r\n this.setPosition();\r\n }\r\n\t\t}\r\n }\r\n\r\n show() {\r\n if (this.tooltipComponentRef && !this.isVisible) {\r\n this.setPosition();\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.isVisible) {\r\n clearDebounce('@@tooltip@@');\r\n TooltipDirective.lastHiddenTime = Date.now();\r\n this.tooltipComponentRef.instance.hide();\r\n }\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/directives/tooltip.directive.ts","export * from './console.pipe';\r\nexport * from './format.pipe';\r\nexport * from './lang-dependent.pipe';\r\nexport * from './plusSuffix.pipe';\r\nexport * from './time-ago.pipe';\r\nexport * from './trustHtml.pipe';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/index.ts","import { Pipe, PipeTransform, isDevMode } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { isArray } from '../utils/utils';\r\n\r\n@Pipe({\r\n name: 'console',\r\n pure: true\r\n})\r\n@CoreComponent()\r\nexport class UssConsolePipe implements PipeTransform {\r\n transform(value: any, groupName?: string): any {\r\n if (isDevMode()) {\r\n if (groupName) {\r\n console.group(groupName);\r\n }\r\n if (isArray(value)) {\r\n console.table(value);\r\n } else {\r\n console.log(value);\r\n }\r\n if (groupName) {\r\n console.groupEnd();\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/console.pipe.ts","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { isNotEmpty } from '../utils';\r\n\r\n@Pipe({\r\n name: 'plusSuffix',\r\n pure: true\r\n})\r\n@CoreComponent()\r\nexport class UssPlusSuffixPipe implements PipeTransform {\r\n transform(value: number, maxValue: number): string {\r\n let res = '';\r\n if (isNotEmpty(value)) {\r\n if (maxValue && value >= maxValue) {\r\n res = (+maxValue - 1) + '+';\r\n } else {\r\n res = value.toString();\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/plusSuffix.pipe.ts","import { Pipe } from '@angular/core';\r\nimport { CoreComponent } from '../internals';\r\nimport { UssFormatPipe } from './format.pipe';\r\n\r\n/** Deprecated. Use ussFormat instead. */\r\n@Pipe({\r\n name: 'ussTimeAgo',\r\n pure: false\r\n})\r\n@CoreComponent()\r\nexport class UssTimeAgoPipe extends UssFormatPipe {\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/time-ago.pipe.ts","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { CoreComponent } from '../internals';\r\nimport { isArray, isDevMode, isNotEmpty } from '../utils/utils';\r\n\r\n@Pipe({\r\n name: 'trustHtml',\r\n pure: true\r\n})\r\n@CoreComponent()\r\nexport class UssTrustHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n transform(value: any, disabled: boolean): any {\r\n let res: any = value;\r\n if (!disabled) {\r\n res = this.sanitizer.bypassSecurityTrustHtml('');\r\n if (isNotEmpty(res.changingThisBreaksApplicationSecurity)) {\r\n res.changingThisBreaksApplicationSecurity = value;\r\n } else {\r\n res = value;\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/pipes/trustHtml.pipe.ts","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { UssApiService } from '.';\r\nimport { ApiService, ApiMethod } from '../decorators';\r\nimport { EVENTS_SERVICE_TOKEN, IUssEventsService } from '../interfaces';\r\nimport { CoreService } from '../internals';\r\nimport { Reflection } from '../utils';\r\nimport { bool, ifNotEmpty } from '../utils/utils';\r\n\r\n@Injectable()\r\n@ApiService()\r\n@CoreService()\r\nexport class UssSystemInfoService extends UssApiService {\r\n\r\n public readonly settingsChanged = new EventEmitter();\r\n\r\n _subscribed = false;\r\n /**\r\n * Подписка на изменение параметров на бекенде. При наступлении события - перезагружает данные.\r\n * Следует вызывать после бутстрапа модуля AppModule.\r\n */\r\n public subscribeOnChanged() {\r\n if (!this._subscribed) {\r\n const eventService = Reflection.get(EVENTS_SERVICE_TOKEN);\r\n if (eventService) {\r\n this._subscribed = true;\r\n eventService.subscribe(App.UssEvents.OnSettingsChanged, () => {\r\n this.appSettingsAsync(true, true, true);\r\n });\r\n }\r\n }\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '/$appSettings' })\r\n async appSettingsAsync(assignAppSettings?: boolean, setTitle?: boolean, forced?: boolean): Promise {\r\n let waitLoadingResolver;\r\n $appSettings.$waitLoading = new Promise(resolver => waitLoadingResolver = resolver);\r\n $appSettings.cacheGetRequests = bool($appSettings.cacheGetRequests);\r\n $appSettings.isDebug = ifNotEmpty($appSettings.isDebug, bool($appSettings.isDebug));\r\n let res = $appSettings;\r\n if (forced || $appSettings.noBackend) {\r\n try {\r\n res = await this.request();\r\n res.cacheGetRequests = bool(res.cacheGetRequests);\r\n if (assignAppSettings) {\r\n const isDebug = $appSettings?.releaseInfo?.isDebug !== false;\r\n Object.assign($appSettings, res);\r\n delete $appSettings.noBackend;\r\n $appSettings.releaseInfo.isDebug = isDebug;\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n waitLoadingResolver();\r\n if (setTitle) {\r\n document.title = res?.releaseInfo?.applicationTitle || document.title;\r\n }\r\n this.settingsChanged.emit(res);\r\n return res;\r\n }\r\n\r\n @ApiMethod({ method: 'GET', route: '$' })\r\n async releaseInfoAsync(): Promise {\r\n let res = { };\r\n try { res = await this.request(); } catch(e) { }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/services/systemInfo.service.ts","/* Angular */\r\nimport { NgModule, ErrorHandler, Injector, APP_INITIALIZER, ApplicationInitStatus, ApplicationRef } from '@angular/core'\r\nimport { Location } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { Http, HttpModule, XHRBackend, RequestOptions } from '@angular/http';\r\nimport { RouterModule, Router } from '@angular/router';\r\n\r\n/* 3rd Party */\r\nimport { ResizableModule } from 'angular-resizable-element';\r\nimport * as moment from 'moment';\r\nimport * as linq from 'linq';\r\n\r\nimport '../linq.array';\r\n\r\nwindow['moment'] = moment;\r\nwindow['Enumerable'] = linq;\r\n\r\nimport { clone, cloneDeep, assign, extend, filter, merge, defaults, defaultsDeep } from 'lodash';\r\n\r\nwindow['moment'] = moment;\r\nwindow['_clone'] = clone;\r\nwindow['_cloneDeep'] = cloneDeep;\r\nwindow['_assign'] = assign;\r\nwindow['_merge'] = merge;\r\nwindow['_extend'] = extend;\r\nwindow['_defaults'] = defaults;\r\nwindow['_defaultsDeep'] = defaultsDeep;\r\nwindow['_filter'] = filter;\r\n\r\n\r\n/* Core */\r\nimport { Reflection } from './utils';\r\nimport { coreComponents, coreEntryComponents, coreServices } from './internals';\r\nimport { UssHttp } from './services/http.service';\r\nimport { UssErrorHandler } from './services/error-handler';\r\nimport * as interfaces from './interfaces';\r\nimport { UssSystemInfoService } from './services';\r\n\r\n\r\nexport interface IUssInitModule {\r\n preInitModuleAsync?(): Promise;\r\n onInitModule?(): void;\r\n}\r\n\r\nconst ussInitModules = [];\r\nexport let isAppInitialized = false;\r\n\r\n/**\r\n * Применяется к классу Ng-модуля для предварительной и пост-инициализации модуля.\r\n * Если класс модуля декорирован этим декоратором, то модуль должен реализовывать интерфейс IUssInitModule.\r\n * Метод модуля preInitModule (если он есть) будет вызван перед инициализацией модуля (но после вызова конструктора).\r\n * Метод модуля onInitModule (если он есть) будет вызван после того, как все методы инициализации приложения будут отработаны.\r\n */\r\nexport function UssInitModule() {\r\n return target => {\r\n if (isAppInitialized) {\r\n } else {\r\n ussInitModules.push(target);\r\n }\r\n }\r\n}\r\n\r\nfunction preInitApplication(): Promise {\r\n const promises: Promise[] = [];\r\n const initStatus: ApplicationInitStatus = Reflection.get(ApplicationInitStatus);\r\n if (initStatus) {\r\n initStatus.donePromise.then(() => {\r\n for (let i = 0; i < ussInitModules.length; i++) {\r\n const module = Reflection.get(ussInitModules[i]);\r\n if (module && typeof (module as IUssInitModule).onInitModule === 'function') {\r\n (module as IUssInitModule).onInitModule();\r\n }\r\n }\r\n isAppInitialized = true;\r\n });\r\n for (let i = 0; i < ussInitModules.length; i++) {\r\n const module = Reflection.get(ussInitModules[i]);\r\n if (module && typeof (module as IUssInitModule).preInitModuleAsync === 'function') {\r\n const x = (module as IUssInitModule).preInitModuleAsync();\r\n if (x instanceof Promise) {\r\n promises.push(x);\r\n }\r\n }\r\n }\r\n }\r\n return Promise.all(promises);\r\n}\r\n\r\n@NgModule({\r\n declarations: [coreComponents],\r\n exports: [coreComponents],\r\n entryComponents: [coreEntryComponents],\r\n imports: [\r\n HttpModule,\r\n BrowserModule,\r\n RouterModule,\r\n ResizableModule\r\n ],\r\n providers: [\r\n coreServices,\r\n { provide: ErrorHandler, useClass: UssErrorHandler },\r\n {\r\n provide: Http,\r\n useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => {\r\n var res = new UssHttp(backend, defaultOptions);\r\n return res;\r\n },\r\n deps: [XHRBackend, RequestOptions]\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: () => () => preInitApplication(),\r\n multi: true\r\n },\r\n { provide: interfaces.UssRouterServiceOptions, useClass: interfaces.UssRouterServiceOptions },\r\n { provide: interfaces.NAVIGATION_SERVICE_TOKEN, useClass: interfaces.UssRouterService, deps: [Router, interfaces.UssRouterServiceOptions, Location] },\r\n { provide: interfaces.LOAD_RESOLVER_TOKEN, useClass: interfaces.DefaultLoadResolverService }\r\n ]\r\n})\r\n@UssInitModule()\r\nexport class UssCoreModule implements IUssInitModule {\r\n constructor(public injector: Injector, public systemInfoService: UssSystemInfoService, app: ApplicationRef) {\r\n // убираем нафиг эту долбанную ошибку \"Expression has changed after it was checked\" в devMode !!!\r\n app['_enforceNoNewChanges'] = false; // Angular 4\r\n window['ngDevMode'] = false; // Angular 13\r\n Reflection.setInjector(injector);\r\n }\r\n\r\n async preInitModuleAsync(): Promise {\r\n if (this.systemInfoService) {\r\n await this.systemInfoService.appSettingsAsync(true);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/core.module/core.module.ts","// linq extension for Array\r\nwindow['linq'] = require('linq');\r\nwindow['Enumerable'] = linq;\r\nif (!linq) {\r\n throw new Error(\"can't find Enumerable. linq.array.js must load after linq.js\");\r\n}\r\nlinq.Utils.extendTo(Array);\r\n\r\n\r\nexport class IterableIteratorEnumerator implements linqjs.IEnumerator {\r\n\r\n iteration: IteratorResult;\r\n\r\n constructor(private iterator: IterableIterator) { }\r\n\r\n current(): T {\r\n return this.iteration.value;\r\n }\r\n\r\n moveNext(): boolean {\r\n this.iteration = this.iterator.next();\r\n return !this.iteration.done;\r\n }\r\n\r\n dispose(): void { }\r\n}\r\n\r\n\r\nEnumerable.fromIterator = (iterator: IterableIterator) => {\r\n return Enumerable.Utils.createEnumerable(() => new IterableIteratorEnumerator(iterator));\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/linq.array.ts","/* Angular */\r\nimport { NgModule } from '@angular/core';\r\n\r\n/* Auth */\r\nimport { UssCoreModule, AUTH_SERVICE_TOKEN } from '../core.module';\r\nimport { UssAccountService } from './account.service';\r\nimport { UssAuthService } from './auth.service';\r\n\r\n@NgModule({\r\n declarations: [ ],\r\n exports: [ ],\r\n imports: [ UssCoreModule ],\r\n providers: [\r\n UssAccountService,\r\n UssAuthService,\r\n { provide: AUTH_SERVICE_TOKEN, useClass: UssAuthService }\r\n ],\r\n schemas: [ ]\r\n})\r\nexport class UssAuthModule {\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/auth.module/auth.module.ts","/* Angular */\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { UssCoreModule } from '@core.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [],\r\n imports: [UssCoreModule],\r\n providers: [],\r\n schemas: []\r\n})\r\nexport class UssCacheModule {\r\n \r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/cache.module/cache.module.ts","import { Http, RequestOptionsArgs, Response } from '@angular/http';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { CacheStoragesEnum, CacheService } from 'ng2-cache';\r\nimport * as core from '@core.module';\r\nimport { UssCacheService } from './cache.service';\r\nimport { auth, EVENTS_SERVICE_TOKEN, ifEmpty, IUssEventsService, Reflection, TCacheOptions } from '@core.module';\r\nimport { Optional } from '@angular/core';\r\n\r\nexport const ApiCachePrefix = '@ApiCache';\r\n\r\n/**\r\n * Basic cache API controller\r\n */\r\nexport class UssCacheApiService extends core.UssApiService {\r\n\r\n\r\n public static readonly DefaultCacheOptions: TCacheOptions = {\r\n storage: 'memory',\r\n ttl: 100,\r\n tag: ApiCachePrefix,\r\n cacheErrors: false\r\n }\r\n\r\n /**\r\n * Параметры кеша по умолчанию\r\n * Это может быть полный объект с параметрами кеша, строка, значение которой будет считаться тегом в кеше,\r\n * или логическое значение (в этом случае тег берётся из значения defaultCacheTag)\r\n */\r\n public cache: boolean | string | core.TCacheOptions;\r\n\r\n /** Тег кеша по умолчанию (если такой не задан в объекте cache) */\r\n public defaultCacheTag: string;\r\n\r\n protected defaultCaches = {\r\n memory: UssCacheService.create(CacheStoragesEnum.MEMORY, `${ApiCachePrefix}: `),\r\n localStorage: UssCacheService.create(CacheStoragesEnum.LOCAL_STORAGE, `${ApiCachePrefix}: `),\r\n session: UssCacheService.create(CacheStoragesEnum.SESSION_STORAGE, `${ApiCachePrefix}: `)\r\n }\r\n\r\n constructor(@Optional() http?: Http) {\r\n super(http);\r\n auth.onAuthEvent.subscribe(() => this.clearCache());\r\n }\r\n\r\n protected cacheOptions: core.TCacheOptions;\r\n private _isSubscribed: boolean;\r\n\r\n\r\n protected checkUpdateCache(entityName: string) {\r\n\r\n }\r\n\r\n private onClearCache(entityName: string): void {\r\n this.checkUpdateCache(entityName);\r\n }\r\n\r\n private onDataChanged(e: TotalApi.OnDataChanged): void {\r\n this.checkUpdateCache(e.TypeId);\r\n }\r\n\r\n protected subscribeOnCacheUpdate(): void {\r\n if (!this._isSubscribed && this.cache) {\r\n const eventService: IUssEventsService = Reflection.get(EVENTS_SERVICE_TOKEN);\r\n if (eventService) {\r\n eventService.subscribe(App.UssEvents.OnClearCache, this.onClearCache.bind(this));\r\n eventService.subscribe(App.UssEvents.OnDataChanged, this.onDataChanged.bind(this));\r\n this._isSubscribed = true;\r\n }\r\n }\r\n }\r\n\r\n public clearCache(cacheTags?: string | string[], cache?: core.ICacheService) {\r\n if (cacheTags) {\r\n if (cache) {\r\n cache.removeTag(cacheTags);\r\n } else {\r\n this.defaultCaches.memory.removeTag(cacheTags);\r\n this.defaultCaches.localStorage.removeTag(cacheTags);\r\n this.defaultCaches.session.removeTag(cacheTags);\r\n }\r\n } else {\r\n if (cache) {\r\n cache.removeAll();\r\n } else {\r\n this.defaultCaches.memory.removeAll();\r\n this.defaultCaches.localStorage.removeAll();\r\n this.defaultCaches.session.removeAll();\r\n }\r\n }\r\n }\r\n\r\n public query$(method: string, request: string, body?: any, options?: RequestOptionsArgs, methodDescriptor?: core.IApiMethodMetadata): Observable {\r\n this.subscribeOnCacheUpdate();\r\n let cacheTag = null;\r\n this.cacheOptions = (ifEmpty((methodDescriptor ? methodDescriptor.cache : null), this.cache));\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n if (typeof this.cacheOptions === 'boolean') {\r\n this.cacheOptions = this.cacheOptions ? core.clone(UssCacheApiService.DefaultCacheOptions, true) : null;\r\n }\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n else if (typeof this.cacheOptions === 'string') {\r\n const tag = this.cacheOptions;\r\n this.cacheOptions = core.clone(UssCacheApiService.DefaultCacheOptions, true);\r\n (this.cacheOptions).tag = tag;\r\n }\r\n if (core.isNotEmpty(this.cacheOptions)) {\r\n if (this.cacheOptions.tag === UssCacheApiService.DefaultCacheOptions.tag && this.defaultCacheTag) {\r\n this.cacheOptions.tag = `${UssCacheApiService.DefaultCacheOptions.tag}.${this.defaultCacheTag}`;\r\n }\r\n cacheTag = this.cacheOptions.tag;\r\n }\r\n\r\n let cache: core.ICacheService = null;\r\n let cacheOptionsHash = null;\r\n // не кешируем запросы, если в них передали options\r\n if (options === undefined && core.isNotEmpty(this.cacheOptions)) {\r\n cacheOptionsHash = 'api.service:' + request + (core.isNotEmpty(body) ? `\\n${core.toJson(body)}` : '');\r\n // ReSharper disable once SuspiciousInstanceofCheck\r\n cache = (this.cacheOptions.storage instanceof CacheService\r\n ? this.cacheOptions.storage\r\n : (typeof this.cacheOptions.storage === 'string' ? this.defaultCaches[this.cacheOptions.storage] : null) || this.defaultCaches.memory);\r\n this.cacheOptions.storage = cache;\r\n }\r\n\r\n let fn;\r\n // методы PUT, PATCH, DELETE не кешируются и сбрасывают кеш\r\n // метод POST может кешироваться (в этом случае он НЕ сбрасывает кеш, но это должно быть ЯВНО указано в описании метода),\r\n // если POST не кешируется - кеш будет сброшен\r\n switch (method) {\r\n case 'GET':\r\n fn = () => this.http.get(request, options);\r\n break;\r\n case 'HEAD': \r\n fn = () => this.http.head(request, options);\r\n break;\r\n case 'OPTIONS': \r\n fn = () => this.http.options(request, options);\r\n break;\r\n case 'POST':\r\n // POST не кешируется - если явно не указали в описании метода\r\n if (this.cacheOptions && (!methodDescriptor || !methodDescriptor.cache)) {\r\n this.cacheOptions = null;\r\n } else {\r\n fn = () => this.http.post(request, body, options);\r\n break;\r\n }\r\n case 'PUT': \r\n case 'PATCH': \r\n case 'DELETE': \r\n default:\r\n {\r\n this.clearCache(cacheTag, cache);\r\n return super.query$(method, request, body, options, methodDescriptor);\r\n }\r\n \r\n }\r\n\r\n let response: Observable = UssCacheService.getFromCache(cacheOptionsHash, fn, this.cacheOptions, cache);\r\n response = response.do(() => {\r\n if (!cacheOptionsHash && method === 'POST') {\r\n this.clearCache(cacheTag, cache);\r\n }\r\n });\r\n\r\n return core.UssHttp.HandleResponse(response, options);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/cache.module/services/cache-api.service.ts","export * from './button/button.component';\r\n\r\nexport * from './color-picker/color-picker.component';\r\n\r\n\r\nexport * from './common';\r\n\r\nexport * from './data-source';\r\n\r\nexport * from './datetime-picker/datetime-picker.component';\r\n\r\nexport * from './dialogs';\r\n\r\nexport * from './enum-select/enum-select.component';\r\n\r\nexport * from './framed-list/framed-list.component';\r\n\r\nexport * from './input/inputs.component';\r\n\r\nexport * from './multi-select/multi-select.component';\r\nexport * from './multi-selector/multi-selector.component';\r\n\r\nexport * from './object-dropdown-select/object-dropdown-select.component';\r\n\r\nexport * from './object-list/object-list.component';\r\nexport * from './object-list/object-list.settings';\r\nexport * from './object-list/IUssObjectListPanel';\r\n\r\nexport * from './object-select/object-select.component';\r\n\r\nexport * from './page-control/page-control.component';\r\nexport * from './period-picker/period-picker.component';\r\n\r\nexport * from './popover/popover.component';\r\nexport * from './popover/tooltip.directive';\r\n\r\nexport * from './schedule/schedule-time/schedule.component';\r\nexport * from './schedule/schedule-periods/schedule-periods.component';\r\nexport * from './scrollable-table/scrollable-table.component';\r\n\r\nexport * from './select/select.component';\r\n\r\nexport * from './semanticui/semantic';\r\n\r\nexport * from './spinner/spinner.component';\r\n\r\nexport * from './table-column-filter/table-column-filter.component';\r\n\r\nexport * from './tree-list/tree-list.component';\r\nexport * from './tree-list-select/tree-list-select.component';\r\n\r\nexport * from './upload/upload.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/index.ts","/* Angular */\r\nimport { NgModule } from '@angular/core';\r\n\r\n/* SignalR */\r\nimport * as core from '../core.module';\r\nimport { UssSignalRService } from './signalr.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [],\r\n imports: [ core.UssCoreModule ],\r\n providers: [\r\n { provide: core.EVENTS_SERVICE_TOKEN, useClass: UssSignalRService }\r\n ],\r\n schemas: []\r\n})\r\nexport class UssSignalRModule {\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/signalr.module/signalr.module.ts","var map = {\n\t\"./primeng/button.component.html\": 2271,\n\t\"./semantic-ui/button.component.html\": 2272\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2270;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button ^\\.\\/.*\\/button\\.component\\.html$\n// module id = 2270\n// module chunks = 1","module.exports = \"\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button/primeng/button.component.html\n// module id = 2271\n// module chunks = 1","module.exports = \"\\r\\n \\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button/semantic-ui/button.component.html\n// module id = 2272\n// module chunks = 1","var map = {\n\t\"./primeng/button.component.scss\": 2274,\n\t\"./semantic-ui/button.component.scss\": 2275\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2273;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button ^\\.\\/.*\\/button\\.component\\.scss$\n// module id = 2273\n// module chunks = 1","module.exports = \".uss-system-button {\\n min-width: 84px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button/primeng/button.component.scss\n// module id = 2274\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\nuss-button {\\n /* Кнопка с выпадающим списком */ }\\n uss-button .uss-button.uss-system-button {\\n min-width: 84px;\\n margin-left: 0.5em !important; }\\n uss-button .button-wrapper {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center; }\\n uss-button .button-wrapper i {\\n margin-bottom: 0; }\\n uss-button .button-wrapper i span.uss-svg-icon {\\n margin-right: 0; }\\n uss-button .button-wrapper i.with-content span.uss-svg-icon {\\n margin-right: 0.5em; }\\n uss-button .uss-button-content {\\n display: inline; }\\n uss-button .uss-button-content.vertical.loading {\\n padding-top: 20px; }\\n uss-button .vertical {\\n display: block; }\\n uss-button span.uss-svg-icon > svg {\\n width: 1.2em !important;\\n height: 1.2em !important;\\n vertical-align: unset !important; }\\n uss-button button.ui[class*=\\\"right labeled\\\"].icon.button {\\n padding-left: 8px !important;\\n padding-right: calc(8px + 1.5em) !important; }\\n uss-button button.ui[class*=\\\"right labeled\\\"].icon.button .dropdown.icon {\\n width: 1.5em !important; }\\n uss-button button.ui[class*=\\\"right labeled\\\"].icon.button.toolbar-btn {\\n padding-left: 0 !important;\\n padding-right: 1.5em !important; }\\n uss-button button.ui[class*=\\\"right labeled\\\"].icon.button.toolbar-btn .dropdown.icon {\\n background: none;\\n border-left: 1px solid transparent; }\\n uss-button button.ui[class*=\\\"right labeled\\\"].icon.button.toolbar-btn:hover .dropdown.icon {\\n border-left: 1px solid #c9cbcc; }\\n\\n.uss-button.items-popup.uss-popover.ui.popup {\\n padding: 0;\\n min-width: min-content !important; }\\n .uss-button.items-popup.uss-popover.ui.popup:before {\\n display: none !important; }\\n .uss-button.items-popup.uss-popover.ui.popup .item {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n white-space: nowrap; }\\n .uss-button.items-popup.uss-popover.ui.popup .item:hover {\\n background: rgba(0, 0, 0, 0.05);\\n color: rgba(0, 0, 0, 0.95); }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/button/semantic-ui/button.component.scss\n// module id = 2275\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/util.js\n// module id = 2276\n// module chunks = 1","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js\n// module id = 2277\n// module chunks = 1","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js\n// module id = 2278\n// module chunks = 1","import { OData, odata, UssFramedListService, isEmpty, ODataLike } from '../core.module';\r\nimport { Type } from '@angular/core';\r\nimport { UssCrudApiService, IEntityObjectId, UssMetadataService } from '.';\r\n\r\nexport class CrudFramedService = UssCrudApiService> extends UssFramedListService {\r\n\r\n /** Ссылка на CRUD-сервис класса */\r\n service: TService;\r\n\r\n /**\r\n * Событие, вызываемое для установки значений OData-фильтров запроса.\r\n * Служит для установки фильтра поиска данных по значения полей.\r\n * При получении списка всех объектов - этот фильтр НЕ будет применён, а фильтр, установленный в свойстве `filter` - будет использоваться.\r\n */\r\n onFilter: (odata: OData, loadAll: boolean) => void;\r\n\r\n /**\r\n * Событие, вызывается при начале/окончании загрузки фрейма.\r\n * При начале загрузки в параметр передаётся значение `false`, по окончании - данные фрейма (массив).\r\n */\r\n onFrameLoaded: (data: T[] | false) => void;\r\n\r\n\r\n protected filter: ODataLike;\r\n\r\n /**\r\n * Постоянный фильтр, применяемый к запросу.\r\n * При получении списка всех объектов - этот фильтр будет применён, а фильтр, устанавливаемый в событии `onFilter` - будет проигнорирован.\r\n */\r\n getFilter(): ODataLike {\r\n return this.filter;\r\n }\r\n\r\n /**\r\n * Установить постоянный фильтр, применяемый к запросу.\r\n * При установке нового фильтра - этот фильтр будет применён, и всё выделение будет сброшено.\r\n */\r\n setFilter(filter: ODataLike, saveSelection?: boolean) {\r\n if (this.filter !== filter) {\r\n this.filter = filter;\r\n if (!saveSelection) {\r\n this.toggleSelection(false);\r\n }\r\n this.reload();\r\n }\r\n }\r\n\r\n /**\r\n * Конструктор по умолчанию.\r\n * @param changeDetector ссылка на changeDetector компонента скроллбокса\r\n * @param service cсылка на CRUD-сервис класса, его тип или его название.\r\n * @param pageSize размер страницы данных - должен быть больше кол-ва данных, видимых в списке\r\n */\r\n constructor(service: UssCrudApiService | string | Type) {\r\n super();\r\n this.service = UssMetadataService.getService(service);\r\n }\r\n\r\n async getObjectByKey(key: string, defValue?: T): Promise {\r\n let res = await super.getObjectByKey(key, null);\r\n if (res === null) {\r\n // не найден в списке - пробуем загрузить из БД\r\n res = (await this.service.load(key)) || defValue;\r\n }\r\n return res;\r\n }\r\n\r\n protected createFilter(top: number, count: number): OData {\r\n const res = odata(this.getFilter());\r\n if (typeof this.onFilter === 'function') {\r\n this.onFilter(res, isEmpty(count));\r\n }\r\n // если кол-во не передано - нужно загрузить всё //и без пользовательских фильтров\r\n if (!isEmpty(count)) {\r\n if (top > 0) res.$skip(top - 1);\r\n if (count >= 0) res.$top(count);\r\n }\r\n return res;\r\n }\r\n\r\n async loadPageAsync(top: number, count: number, appendSubscriptions?: boolean): Promise {\r\n (typeof this.onFrameLoaded === 'function') && this.onFrameLoaded(false);\r\n const res = await this.service.load(this.createFilter(top, count));\r\n (typeof this.onFrameLoaded === 'function') && this.onFrameLoaded(res);\r\n return res;\r\n }\r\n\r\n /** Проверяет, все ли пункты выделены, если все данные полностью загружены. В этом случеа - переключаем список в режим `allChecked`.*/\r\n updateAllChecked() {\r\n // если все данные полностью загружены\r\n if (isEmpty(this.allChecked) && this.list && !this.list.upLoader && !this.list.downLoader) {\r\n // если все пункты выделены или ни один пункт не выделен при полностью загруженном списке\r\n if (this.list.frame.length === this.selectedIds.length && !this.list.frame.select(x => x.Id).except(this.selectedIds).any()) {\r\n\r\n // дополнительно проверим, что кастомное событие onFilter ничего не добавляет\r\n if (typeof this.onFilter === 'function') {\r\n const od = odata();\r\n this.onFilter(od, false);\r\n if (od.query) {\r\n return;\r\n }\r\n }\r\n\r\n this.selectedIds.Clear();\r\n this.reverseSelectionMode = !this.reverseSelectionMode && this.list.frame.length > 0;\r\n }\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/crud-framed.service.ts","import { NgModule } from '@angular/core'\r\nimport { HttpModule } from '@angular/http';\r\n\r\nimport { UssCoreModule, translate, UssSystemInfoService } from '@core.module';\r\nimport { UssDialogsModule } from '@dialogs.module';\r\n\r\nimport { UssMetadataService } from './metadata.service';\r\nimport { UssEnumPipe } from './enum.pipe';\r\nimport { UssExpressionPipe } from './expression.pipe';\r\n\r\n@NgModule({\r\n declarations: [UssEnumPipe, UssExpressionPipe],\r\n exports: [UssEnumPipe, UssExpressionPipe],\r\n imports: [HttpModule, UssCoreModule, UssDialogsModule],\r\n providers: [UssMetadataService]\r\n})\r\nexport class UssMetadataModule {\r\n constructor(public metatataService: UssMetadataService, public systemInfoService: UssSystemInfoService) {\r\n translate.onLangChange.filter(e => e.firstTime).subscribe(() => {\r\n for (let entityName of UssMetadataService.getEntityNames()) {\r\n const mi = UssMetadataService.getEntityInfo(entityName);\r\n if (mi && mi.Properties) {\r\n mi.Description && translate.instant(mi.Description);\r\n mi.Group && translate.instant(mi.Group);\r\n mi.Menu && mi.Menu.GroupCaption && translate.instant(mi.Menu.GroupCaption);\r\n for (let pi of mi.Properties ?? []) {\r\n if (!pi.Hidden) {\r\n pi.Description && translate.instant(pi.Description);\r\n pi.Note && translate.instant(pi.Note);\r\n if (pi.EnumerableMetadata) {\r\n for (let ei of pi.EnumerableMetadata) {\r\n ei.Description && translate.instant(ei.Description);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngDoBootstrap() {\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/metadata.module/metadata.module.ts","import { NgModule } from '@angular/core';\r\nimport { UssCoreModule, DIALOGS_SERVICE_TOKEN } from '../core.module';\r\nimport { UssDialogsService } from './dialogs.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [],\r\n imports: [\r\n UssCoreModule\r\n ],\r\n providers: [\r\n UssDialogsService,\r\n { provide: DIALOGS_SERVICE_TOKEN, useClass: UssDialogsService }\r\n ],\r\n schemas: []\r\n})\r\nexport class UssDialogsModule {\r\n\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/dialogs.module/dialogs.module.ts","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/color-picker/color-picker.component.html\n// module id = 2282\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n/* components.module */\\n.uss-color-picker .item-color {\\n width: 5px;\\n top: 1px;\\n bottom: 1px;\\n left: 1px;\\n position: absolute;\\n z-index: 1; }\\n\\n.item-colors {\\n width: 224px; }\\n .item-colors .item-color {\\n width: 20px;\\n height: 20px;\\n display: inline-flex;\\n margin: 4px;\\n cursor: pointer; }\\n .item-colors .item-color-selected {\\n border-radius: 0;\\n outline: thin dashed black; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/color-picker/color-picker.component.scss\n// module id = 2283\n// module chunks = 1","export * from './base.component';\r\nexport * from './base.list-panel';\r\nexport * from './base.page';\r\nexport * from './CustomValidators';\r\nexport * from './ObserverPlatform';\r\nexport * from './UssDataBindedComponent';\r\nexport * from './UssDataSourceComponent';\r\nexport * from './UssFormGroup';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/index.ts","import { Router } from '@angular/router';\r\nimport { isNotEmpty, Inject, extendForPropertyChanges, clone } from '@core.module';\r\nimport { IUssObjectListPanel } from '../object-list/IUssObjectListPanel';\r\nimport { UssObjectListComponent } from '../object-list/object-list.component';\r\nimport { UssDataTable } from '../data-source/data-source.p-dataTable.directive';\r\nimport { AppPageBase } from './base.page';\r\n\r\nexport class UssListPanel extends AppPageBase implements IUssObjectListPanel {\r\n\r\n @Inject(Router) public router: Router;\r\n\r\n protected _noKey: boolean;\r\n /** Запретить поиск данных в таблице по ключу (odata.$key) */\r\n get noKey(): boolean { return this._noKey; }\r\n set noKey(value: boolean) {\r\n this._noKey = value;\r\n if (this._objectList) {\r\n this._objectList.noKey = value;\r\n }\r\n }\r\n\r\n private _objectList: UssObjectListComponent;\r\n\r\n _routeParams: Record;\r\n\r\n get routeParams(): Record { return this._routeParams; }\r\n\r\n /**\r\n * Параметры панели, сохраняемые в роуте.\r\n * Объект должен быть обязательно проинициализирован в конструкторе всеми параметрами,\r\n * изменения которых будут автоматически отслеживаться.\r\n */\r\n set routeParams(value) {\r\n if (this._routeParams !== value) {\r\n this._routeParams && extendForPropertyChanges(this._routeParams, null, () => { });\r\n this._routeParams = value;\r\n this._routeParams['_s'] = this._routeParams['_s'] || ''; // строка глобального поиска\r\n this._routeParams && extendForPropertyChanges(this._routeParams, null, () => this.updateRoute());\r\n }\r\n if (this.wasInit) {\r\n this.updateRoute();\r\n }\r\n }\r\n\r\n applyQueryParams(p: Record) {\r\n for (let propName in this._routeParams) {\r\n if (propName !== '__nc_values' && Object.prototype.hasOwnProperty.call(this._routeParams, propName)) {\r\n if (p[propName] !== undefined) this._routeParams[propName] = p[propName];\r\n }\r\n }\r\n super.applyQueryParams(p);\r\n this.objectList.setGlobalSearch(this.routeParams['_s']);\r\n this.initRouteParams(this.routeParams);\r\n }\r\n\r\n /**\r\n * Вызывается при инициализации панели и при изменении параметров роута.\r\n * Требует перекрытия в дочерней панели.\r\n */\r\n initRouteParams(p: Record) { }\r\n\r\n\r\n /**\r\n * Автоматически вызывается при изменении параметров `this.routeParams`.\r\n * Для этого объект `this.routeParams` должен быть обязательно проинициализирован в конструкторе всеми параметрами.\r\n * Может быть также вызвана вручную.\r\n */\r\n public updateRoute() {\r\n this.setQueryParam(clone(this._routeParams));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.routeParams = this.routeParams || {};\r\n super.ngOnInit();\r\n }\r\n\r\n public isReadOnly: boolean;\r\n\r\n public get objectList(): UssObjectListComponent { return this._objectList; }\r\n public set objectList(value: UssObjectListComponent) {\r\n this._objectList = value;\r\n if (this._objectList) {\r\n this._objectList.noKey = this.noKey;\r\n if (isNotEmpty(this.isReadOnly)) {\r\n this._objectList._readOnly = this.isReadOnly;\r\n }\r\n }\r\n }\r\n\r\n public get dataTable(): UssDataTable {\r\n return this.objectList ? this.objectList.dataTable : null;\r\n }\r\n\r\n public refresh() {\r\n this.dataTable && this.dataTable.refresh();\r\n }\r\n\r\n public SetStoreSectionPrefix(prefix: string | number) {\r\n if (this.objectList) {\r\n if (prefix || prefix === 0) {\r\n this.objectList._storeSection = `{className}:${prefix}`;\r\n } else {\r\n this.objectList._storeSection = '{className}'; \r\n }\r\n this.objectList.updateStoreSection(); \r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/common/base.list-panel.ts","export * from './IUssDataTableSettings';\r\nexport * from './data-source.base.directive';\r\nexport * from './data-source.textarea.directive';\r\nexport * from './data-source.input.directive';\r\nexport * from './data-source.form.directive';\r\nexport * from './data-source.p-dataTable.directive';\r\nexport * from './data-source.p-dataTable.templates';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/index.ts","import * as ng from '@angular/core';\r\nimport { UssDataSourceBaseDirective } from './data-source.base.directive';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Directive({\r\n selector: 'textarea[ussDataSource]'\r\n , inputs: UssDataSourceBaseDirective.Inputs\r\n , outputs: UssDataSourceBaseDirective.Outputs\r\n , host: UssDataSourceBaseDirective.Host\r\n})\r\n@SystemComponent()\r\nexport class UssDataSourceTextAreaDirective extends UssDataSourceBaseDirective {\r\n\r\n constructor(vcr: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(vcr, changeDetector);\r\n }\r\n\r\n protected get nativeInputElement() {\r\n if (!this._nativeInputElement) {\r\n this._nativeInputElement = this.nativeElement instanceof HTMLTextAreaElement\r\n ? this.nativeElement\r\n : this.nativeElement.querySelector('textarea');\r\n }\r\n return this._nativeInputElement;\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.textarea.directive.ts","import * as ng from '@angular/core';\r\nimport { UssDataSourceBaseDirective } from './data-source.base.directive';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Directive({\r\n selector: 'input[ussDataSource]'\r\n , inputs: UssDataSourceBaseDirective.Inputs\r\n , outputs: UssDataSourceBaseDirective.Outputs\r\n , host: UssDataSourceBaseDirective.Host\r\n})\r\n@SystemComponent()\r\nexport class UssDataSourceInputDirective extends UssDataSourceBaseDirective {\r\n\r\n constructor(vcr: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(vcr, changeDetector);\r\n }\r\n\r\n protected get nativeInputElement() {\r\n if (!this._nativeInputElement) {\r\n this._nativeInputElement = this.nativeElement instanceof HTMLInputElement\r\n ? this.nativeElement\r\n : this.nativeElement.querySelector('input');\r\n }\r\n return this._nativeInputElement;\r\n }\r\n\r\n public onKeyDown($event: KeyboardEvent) {\r\n const el = $event.srcElement;\r\n if (el instanceof HTMLInputElement) {\r\n if (el.type === 'checkbox' || el.type === 'radio') {\r\n // nothing to do \r\n }\r\n else if (el.value !== this.value || this.inOnChanged) {\r\n if ($event.key === \"Enter\") { \r\n this.updateComponentValue();\r\n if (!el.disabled)\r\n el.select();\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n } else if ($event.key === \"Escape\") { \r\n this.updateElementValue(this.value);\r\n if (!el.disabled)\r\n el.select();\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n }\r\n super.onKeyDown($event);\r\n }\r\n\r\n\r\n /**\r\n * Получение текущего значения компонента на основании значения в HTML-элементе\r\n */\r\n protected getComponentValue(): any {\r\n let res = super.getComponentValue();\r\n if (this.nativeElement) {\r\n switch (this.nativeInputElement.type) {\r\n case 'checkbox':\r\n if (isNaN(res))\r\n res = this.nativeInputElement.checked;\r\n else {\r\n if (this.nativeInputElement.checked)\r\n res = this.value | parseInt(res);\r\n else\r\n res = this.value & ~parseInt(res);\r\n }\r\n break;\r\n case 'radio':\r\n if (this.nativeInputElement.checked)\r\n res = parseInt(res);\r\n break;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Установка значения в HTML-элементе, соответствующая текущему значению компонента.\r\n */\r\n protected setElementValue(value: any) {\r\n if (this.nativeElement) {\r\n switch (this.nativeInputElement.type) {\r\n case 'checkbox':\r\n if (isNaN(this.nativeInputElement.value)) {\r\n // Если значения value не установлено - этот checkbox просто переключает значения true/false\r\n this.nativeInputElement.checked = !!value;\r\n } else {\r\n // Если значения value установлено - этот checkbox устанавливает/сбрасывает указанные в этом значении биты\r\n this.nativeInputElement.checked = (parseInt(this.nativeInputElement.value) & value) !== 0;\r\n }\r\n break;\r\n case 'radio':\r\n this.nativeInputElement.checked = parseInt(this.nativeInputElement.value) === value;\r\n break;\r\n default:\r\n value = value === undefined ? '' : value;\r\n if (this.nativeInputElement.value !== value) {\r\n this.nativeInputElement.value = value;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.input.directive.ts","import * as ng from '@angular/core';\r\nimport * as ngForms from '@angular/forms';\r\nimport { UssMetadataService } from '../../../metadata.module';\r\nimport { UssDirectiveBase } from '../../directives/directive.base';\r\nimport { UssFormGroup } from '../common/UssFormGroup';\r\nimport { SystemComponent } from '../../internals';\r\nimport { Optional } from '@angular/core';\r\n\r\n@ng.Directive({\r\n selector: 'form[ussDataSource]'\r\n})\r\n@SystemComponent()\r\nexport class UssDataSourceFormDirective extends UssDirectiveBase implements ng.OnChanges, ng.OnInit {\r\n\r\n constructor( @ng.Host() @Optional() hostComponent: ngForms.NgForm, @Optional() public formGroup: ngForms.FormGroupDirective, vcr: ng.ViewContainerRef, changeDetector: ng.ChangeDetectorRef) {\r\n super(hostComponent, vcr, changeDetector);\r\n }\r\n\r\n /**\r\n * Источник данных (объект) с полем которого связывается компонент\r\n */\r\n @ng.Input('ussDataSource') dataSource: Object;\r\n\r\n /**\r\n * Метаинформация (опционально) для класса, передаваемого в качестве источника данных\r\n */\r\n @ng.Input('metadata') metadata: App.EntityMetadata | string;\r\n\r\n public ngForm: ngForms.NgForm;\r\n public form: ngForms.FormGroup;\r\n\r\n ngOnChanges(changes) {\r\n if (/*this.wasInit &&*/ (changes.dataSource || changes.metadata)) {\r\n this.initForm();\r\n } \r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this.dataSource && !this.metadata) {\r\n this.metadata = {\r\n Properties: Enumerable.from(this.dataSource).select(kv => { Name: kv.key }).toArray()\r\n };\r\n }\r\n this.ngForm = this.hostComponent;\r\n this.initForm();\r\n }\r\n\r\n private initForm() {\r\n if (this.ngForm) {\r\n if (typeof this.metadata === 'string') {\r\n this.metadata = UssMetadataService.getEntityInfo(this.metadata);\r\n }\r\n this.form = UssFormGroup.create(this.metadata as App.EntityMetadata, this.dataSource);\r\n this.ngForm.form = this.form;\r\n } else {\r\n this.form = this.formGroup && this.formGroup.form;\r\n }\r\n this.nativeElement['_ussDataSource'] = this;\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/data-source/data-source.form.directive.ts","export class AngularIndexedDB {\r\n private utils: Utils;\r\n private dbWrapper: DbWrapper;\r\n\r\n constructor(dbName: string, version: number) {\r\n this.utils = new Utils();\r\n this.dbWrapper = new DbWrapper(dbName, version);\r\n }\r\n\r\n createStore(version: number, upgradeCallback: Function) {\r\n let self = this,\r\n promise = new Promise((resolve, reject)=> {\r\n this.dbWrapper.dbVersion = version;\r\n let request = this.utils.indexedDB.open(this.dbWrapper.dbName, version);\r\n request.onsuccess = function (e) {\r\n self.dbWrapper.db = request.result;\r\n resolve();\r\n };\r\n\r\n request.onerror = function (e) {\r\n reject(\"IndexedDB error: \" + (e.target).errorCode);\r\n };\r\n\r\n request.onupgradeneeded = function (e) {\r\n upgradeCallback(e, self.dbWrapper.db);\r\n };\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n getByKey(storeName: string, key: any) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readOnly,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName),\r\n request: IDBRequest;\r\n\r\n request = objectStore.get(key);\r\n request.onsuccess = function (event: Event) {\r\n resolve((event.target).result);\r\n }\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n getAll(storeName: string, keyRange?: IDBKeyRange, indexDetails?: IndexDetails) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readOnly,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName),\r\n result: Array = [],\r\n request: IDBRequest;\r\n if(indexDetails) {\r\n let index = objectStore.index(indexDetails.indexName);\r\n let order: IDBCursorDirection = (indexDetails.order === 'desc') ? 'prev' : 'next';\r\n request = index.openCursor(keyRange, order);\r\n }\r\n else {\r\n request = objectStore.openCursor(keyRange);\r\n }\r\n\r\n request.onerror = function (e) {\r\n reject(e);\r\n };\r\n\r\n request.onsuccess = function (evt: Event) {\r\n let cursor = (evt.target).result;\r\n if (cursor) {\r\n result.push(cursor['value']);\r\n cursor[\"continue\"]();\r\n } else {\r\n resolve(result);\r\n }\r\n };\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n add(storeName: string, value: any, key?: any) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readWrite,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n resolve({ key: key, value: value });\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName);\r\n\r\n var request = objectStore.add(value, key);\r\n request.onsuccess = (evt: any) => {\r\n key = evt.target.result;\r\n }\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n update(storeName: string, value: any, key?: any) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readWrite,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n resolve(value);\r\n },\r\n abort: (e: Event) => {\r\n reject(e);\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName);\r\n\r\n objectStore.put(value, key);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n delete(storeName: string, key: any) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readWrite,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n resolve();\r\n },\r\n abort: (e: Event) => {\r\n reject(e);\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName);\r\n\r\n objectStore[\"delete\"](key);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n openCursor(storeName: string, cursorCallback: (evt: Event) => void, keyRange?: IDBKeyRange) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readOnly,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n resolve();\r\n },\r\n abort: (e: Event) => {\r\n reject(e);\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName),\r\n request = objectStore.openCursor(keyRange);\r\n\r\n request.onsuccess = (evt: Event) => {\r\n cursorCallback(evt);\r\n resolve();\r\n };\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n clear(storeName: string) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readWrite,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n resolve();\r\n },\r\n abort: (e: Event) => {\r\n reject(e);\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName);\r\n objectStore.clear();\r\n resolve();\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n getByIndex(storeName: string, indexName: string, key: any) {\r\n let self = this;\r\n let promise = new Promise((resolve, reject)=> {\r\n self.dbWrapper.validateBeforeTransaction(storeName, reject);\r\n\r\n let transaction = self.dbWrapper.createTransaction({ storeName: storeName,\r\n dbMode: self.utils.dbMode.readOnly,\r\n error: (e: Event) => {\r\n reject(e);\r\n },\r\n abort: (e: Event) => {\r\n reject(e);\r\n },\r\n complete: (e: Event) => {\r\n }\r\n }),\r\n objectStore = transaction.objectStore(storeName),\r\n index = objectStore.index(indexName),\r\n request = index.get(key);\r\n\r\n request.onsuccess = (event) => {\r\n resolve((event.target).result);\r\n };\r\n });\r\n\r\n return promise;\r\n }\r\n}\r\n\r\nclass Utils {\r\n dbMode: DbMode;\r\n indexedDB: IDBFactory;\r\n\r\n constructor() {\r\n this.indexedDB = window.indexedDB || (window).mozIndexedDB || (window).webkitIndexedDB || (window).msIndexedDB;\r\n this.dbMode = {\r\n readOnly: \"readonly\",\r\n readWrite: \"readwrite\"\r\n };\r\n }\r\n}\r\n\r\nexport interface IndexDetails {\r\n indexName: string;\r\n order: string;\r\n}\r\n\r\ntype IDBCursorDirection = 'next' | 'nextunique' | 'prev' | 'prevunique';\r\ntype IDBTransactionMode = 'readonly' | 'readwrite' | 'versionchange';\r\n\r\ninterface DbMode {\r\n readOnly: IDBTransactionMode;\r\n readWrite: IDBTransactionMode;\r\n}\r\n\r\nclass DbWrapper {\r\n dbName: string;\r\n dbVersion: number;\r\n db: IDBDatabase;\r\n\r\n constructor(dbName: string, version: number) {\r\n this.dbName = dbName;\r\n this.dbVersion = version || 1;\r\n this.db = null;\r\n }\r\n\r\n validateStoreName(storeName: string) {\r\n return this.db.objectStoreNames.contains(storeName);\r\n };\r\n\r\n validateBeforeTransaction(storeName: string, reject: Function) {\r\n if (!this.db) {\r\n reject('You need to use the createStore function to create a database before you query it!');\r\n }\r\n if (!this.validateStoreName(storeName)) {\r\n reject(('objectStore does not exists: ' + storeName));\r\n }\r\n }\r\n\r\n createTransaction(options: { storeName: string, dbMode: IDBTransactionMode, error: (e: Event) => any, complete: (e: Event) => any, abort?: (e:Event) => any }): IDBTransaction {\r\n let trans: IDBTransaction = this.db.transaction(options.storeName, options.dbMode);\r\n trans.onerror = options.error;\r\n trans.oncomplete = options.complete;\r\n trans.onabort = options.abort;\r\n return trans;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/services/angular2-indexeddb.ts","/* Angular */\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { Reflection, isAppInitialized, UssInitModule, IUssInitModule } from '@core.module';\r\nimport { initCacheUserSettings } from './decorators/store-settings.decorator';\r\n\r\n@NgModule({ \r\n imports: [ ],\r\n exports: [ ],\r\n declarations: [ ],\r\n providers: [ ]\r\n})\r\n@UssInitModule()\r\nexport class UssSettingsModule implements IUssInitModule {\r\n\r\n private static _preInited: boolean;\r\n\r\n constructor(public injector: Injector) {\r\n Reflection.setInjector(injector);\r\n if (isAppInitialized && !UssSettingsModule._preInited) {\r\n this.preInitModuleAsync();\r\n }\r\n }\r\n\r\n async preInitModuleAsync(): Promise {\r\n await initCacheUserSettings();\r\n UssSettingsModule._preInited = true;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/settings.module/settings.module.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
  • \\r\\n \\r\\n {{col.header | translate}}\\r\\n \\r\\n
  • \\r\\n
    \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n По умолчанию\\r\\n \\r\\n \\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-list/object-list.settings.html\n// module id = 2292\n// module chunks = 1","module.exports = \".object-list-settings modal-content ul {\\n list-style-type: none;\\n margin-left: -2.5em;\\n line-height: 2;\\n margin-top: 0;\\n margin-bottom: 0;\\n padding-top: 1em;\\n padding-bottom: 0; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-list/object-list.settings.scss\n// module id = 2293\n// module chunks = 1","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.html\n// module id = 2294\n// module chunks = 1","module.exports = \"/* components.module */\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/systemTask-params/systemTask-params.component.scss\n// module id = 2295\n// module chunks = 1","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
Подготовка к выполнению задачи...
\\r\\n
\\r\\n
\\r\\n
Выполнение задачи...
\\r\\n
\\r\\n \\r\\n
\\r\\n
Задача выполнена
\\r\\n
\\r\\n
\\r\\n
Задача отменена
\\r\\n
\\r\\n
\\r\\n
Ошибка при выполнении задачи
\\r\\n
\\r\\n
= 0\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
= 0\\\">\\r\\n
{{systemTaskComponent?.currentProgressMessage | translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.html\n// module id = 2296\n// module chunks = 1","module.exports = \"/* components.module */\\n.system-task-dialog .modal-status-bar {\\n margin-left: 1.05rem; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/system-task.dialog/system-task.dialog.scss\n// module id = 2297\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
Импорт данных из файла{{model?.file?.name}}
\\r\\n \\r\\n
\\r\\n \\r\\n
Всего обработано записей{{taskResult?.Result && taskResult.Result.Succeded !== undefined ? taskResult.Result.Succeded + taskResult.Result.Failed : '-'}}
\\r\\n
Успешно импортировано{{taskResult?.Result && taskResult.Result.Succeded !== undefined ? taskResult.Result.Succeded : '-'}}
\\r\\n
Создано записей{{taskResult?.Result && taskResult.Result.Succeded !== undefined ? taskResult.Result.Succeded - taskResult.Result.Updated: '-'}}
\\r\\n
Обновлено записей{{taskResult?.Result && taskResult.Result.Succeded !== undefined ? taskResult.Result.Updated : '-'}}
\\r\\n
Не импортировано{{taskResult?.Result && taskResult.Result.Succeded !== undefined ? taskResult.Result.Failed : '-'}}
\\r\\n
\\r\\n \\r\\n
{{taskResult.Result.Error | translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\">\\r\\n
  • \\r\\n [{{item.RecordNumber}}] \\r\\n {{item.Error | translate}}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.html\n// module id = 2298\n// module chunks = 1","module.exports = \".import-systemTask-page .ui.header {\\n margin-bottom: 0.3em; }\\n\\n.import-systemTask-page .info-block {\\n margin-top: 1em;\\n width: 100%;\\n height: 100%; }\\n .import-systemTask-page .info-block > * {\\n width: 100%; }\\n .import-systemTask-page .info-block .caption:after {\\n content: ': '; }\\n .import-systemTask-page .info-block .value {\\n font-weight: bold;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.import-systemTask-page uss-layout {\\n width: 100%;\\n height: calc(100% + 24px); }\\n\\n.import-systemTask-page ul {\\n list-style: none;\\n padding: 0;\\n margin: 4px 0 0; }\\n .import-systemTask-page ul li span {\\n font-family: monospace;\\n font-size: 80%;\\n margin-bottom: .3em; }\\n .import-systemTask-page ul li span.err-line {\\n font-weight: bolder;\\n /*\\r\\n &:before {\\r\\n content: '['\\r\\n }\\r\\n\\r\\n &:after {\\r\\n content: '] '\\r\\n }\\r\\n*/ }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/import.system-task/import-systemTask.page.scss\n// module id = 2299\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/datetime-picker/datetime-picker.component.html\n// module id = 2300\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n/* components.module */\\nuss-datetime-picker .rd-container {\\n z-index: 100;\\n border: 1px solid #96C8DA;\\n border-top-color: rgba(189, 181, 181, 0.17);\\n margin-top: -1px;\\n border-radius: 0 0 4px 4px; }\\n uss-datetime-picker .rd-container .rd-days {\\n border-collapse: initial;\\n border-spacing: 5px; }\\n uss-datetime-picker .rd-container .rd-day-body {\\n padding: 5px 8px 6px; }\\n uss-datetime-picker .rd-container .rd-day-body:hover {\\n background-color: #40aec5;\\n color: #fff; }\\n uss-datetime-picker .rd-container .rd-day-selected {\\n background-color: #40aec5;\\n border-radius: 2px; }\\n uss-datetime-picker .rd-container .rd-time .rd-time-list {\\n max-height: 260px;\\n border: 1px solid #96C8DA;\\n border-top-color: rgba(189, 181, 181, 0.17); }\\n\\nuss-datetime-picker[type=\\\"time\\\"] .rd-time-list {\\n top: -16px;\\n left: -11px;\\n right: -11px; }\\n\\nuss-datetime-picker > i.link[disabled] {\\n cursor: default; }\\n\\nuss-datetime-picker .fix {\\n /*margin: 0 4px 0 4px !important;*/\\n padding: 0 !important;\\n width: auto;\\n border-radius: 0 !important; }\\n\\nuss-datetime-picker .datapicker-btn {\\n padding: 0 14px 0 14px;\\n border: 0 !important;\\n background: none;\\n color: rgba(0, 0, 0, 0.8);\\n height: 30px;\\n width: 40px;\\n padding: 0; }\\n uss-datetime-picker .datapicker-btn.date-prev {\\n margin-top: 4px; }\\n uss-datetime-picker .datapicker-btn.date-next {\\n margin-top: 4px; }\\n uss-datetime-picker .datapicker-btn:hover, uss-datetime-picker .datapicker-btn:active, uss-datetime-picker .datapicker-btn:focus:hover, uss-datetime-picker .datapicker-btn:focus:active {\\n border-color: none !important;\\n background: none !important;\\n outline: 0 none;\\n color: #96C8DA; }\\n uss-datetime-picker .datapicker-btn:focus {\\n border-color: none !important;\\n background: none !important;\\n color: rgba(0, 0, 0, 0.8); }\\n\\nuss-datetime-picker.disabled .datapicker-btn {\\n background: #edeeef !important; }\\n\\nuss-datetime-picker.disabled .dp-mx-width {\\n width: 130px !important; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/datetime-picker/datetime-picker.component.scss\n// module id = 2301\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { UssDialog } from '../common/UssDialog';\r\nimport { IModalEditor } from '../common/EditorModal';\r\nimport { SystemComponent } from '../../../internals';\r\nimport {IExportDialogData} from '../../data-source/data-source.p-dataTable.directive';\r\n\r\n\r\n@ng.Component({\r\n template: require('./export-options.editor.html')\r\n})\r\n@SystemComponent()\r\nexport class UssExportOptionsEditorComponent extends UssDialog implements IModalEditor, IExportDialogData {\r\n \r\n @ng.ViewChild('modal') modal: any;\r\n\r\n reportParams: App.ExportParams;\r\n loadReport: (params: App.ExportParams) => Promise;\r\n\r\n public async confirm() {\r\n if (this.loadReport) {\r\n await this.loadReport(this.reportParams);\r\n this.close();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/export/export-options.editor.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/export/export-options.editor.html\n// module id = 2303\n// module chunks = 1","import { OnChanges, Component, Output, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, Input, ViewChild, ElementRef, ComponentRef, Renderer2, EventEmitter, SimpleChanges } from '@angular/core';\r\nimport { DomHandler } from 'primeng/primeng';\r\nimport { bool, clone, debounce, detectChanges, IDialog, ifNotEmpty, isEmpty, isTabletView, observeDocumentEvent, onWindowResize, uid } from '@core.module';\r\nimport { disableStoreSettings, enableStoreSettings, extendForStoreSettings } from '@settings.module';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { Dialog } from 'primeng/components/dialog/dialog';\r\nimport { UssDialog } from '../common/UssDialog';\r\nimport { EditorModal } from '..';\r\n\r\nDomHandler.zindex = 100002; // \r\n\r\n@Component({\r\n selector: 'uss-modal,[uss-modal]',\r\n styles: [require('./modal.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.Default, // !! OnPush - не применимо\r\n template: require('./modal.component.html')\r\n})\r\n@SystemComponent()\r\nexport class UssModalComponent implements OnInit, IDialog, OnChanges {\r\n @Input('class') class: string;\r\n @Input('header') header: string;\r\n @Input('icon') icon: string;\r\n @Input('showHeader') showHeader = true;\r\n @Input('showFooter') showFooter = true;\r\n @Input('l10n-params') l10nParams: any;\r\n\r\n @Input('width') width: number |string = 1024;\r\n @Input('top') top: number | string = 100;\r\n @Input('left') left: number | string;\r\n @Input('height') height: number | string = 400;\r\n\r\n @Input('min-height') minHeight: number | string = 300;\r\n @Input('min-width') minWidth: number | string = 600;\r\n\r\n @Input('resizable') resizable: boolean = true;\r\n @Input('draggable') draggable: boolean = true;\r\n @Input('closable') closable: boolean = true;\r\n\r\n\r\n @Input('l10n') inputl10n: string = undefined;\r\n\r\n public get l10n(): string | boolean {\r\n return this.inputl10n !== undefined;\r\n }\r\n\r\n @Output('ussDialogInit') ussDialogInit = new EventEmitter();\r\n \r\n @ViewChild('dialog') modal: Dialog;\r\n\r\n @ViewChild('closeButton') closeButton: ElementRef;\r\n\r\n private prevWidth: number | string;\r\n private prevHeight: number | string;\r\n private prevTop: number | string;\r\n private prevLeft: number | string;\r\n private onWindowResizeSub: { unsubscribe: () => void};\r\n\r\n private _ussDialog: UssDialog;\r\n private initialResizeable: boolean;\r\n\r\n private documentMouseMoveListener;\r\n private documentEscapeListener;\r\n\r\n private resizing: boolean;\r\n private dragging: boolean;\r\n\r\n public modalVisibility = new EventEmitter();\r\n\r\n public canFullscreen: boolean;\r\n public isFullscreen: boolean;\r\n private fullscreenMode: boolean;\r\n\r\n public isSaving: boolean = false;\r\n\r\n public hashCode: string = uid();\r\n\r\n addClass(cls: string): string {\r\n this.class = ` ${this.class || ''} ${cls}`.trim();\r\n return this.class;\r\n }\r\n removeClass(cls: string): string {\r\n this.class = ` ${this.class || ''} `.replace(` ${cls} `, '').trim();\r\n return this.class;\r\n }\r\n\r\n /**\r\n * Ссылка на компонент диалога.\r\n * Это свойство будет установлено в UssDialog.\r\n * Если свойство не установлено - это означает, что в методе afterViewInit диалога не вызвали super.AfterViewInit()\r\n */\r\n public get $ussDialog(): UssDialog {\r\n return this._ussDialog;\r\n }\r\n\r\n public set $ussDialog(dialog: UssDialog) {\r\n this.header && (dialog instanceof EditorModal) && (dialog.header !== this.header) && (dialog.header = this.header);\r\n this._ussDialog = dialog;\r\n\r\n setTimeout(() => this._ussDialog.onShow.emit(true));\r\n\r\n if (this._ussDialog) {\r\n this.ussDialogInit.emit(true);\r\n }\r\n }\r\n\r\n public get me(): HTMLElement {\r\n if (!isEmpty(this.modal)) {\r\n return this.modal.containerViewChild.nativeElement;\r\n }\r\n return undefined;\r\n }\r\n\r\n constructor(public renderer: Renderer2, private changeDetector: ChangeDetectorRef, private el: ElementRef) {\r\n }\r\n\r\n private checkSize(v: number | string, minValue: number): number {\r\n let res = ifNotEmpty(v, +v);\r\n if (minValue > 0) {\r\n if ((res || 0) < minValue) res = minValue;\r\n }\r\n return res;\r\n }\r\n\r\n private checkPosition(v: number | string, maxValue: number): number {\r\n let res;\r\n if (!isEmpty(v)) {\r\n res = +v;\r\n if (res < 0) res = 0;\r\n if (maxValue > 0) {\r\n if (res > maxValue) res = maxValue;\r\n }\r\n } else {\r\n res = v;\r\n }\r\n return res;\r\n }\r\n\r\n detectChanges() {\r\n detectChanges(this.changeDetector);\r\n }\r\n\r\n private checkFullScreen() {\r\n if (isTabletView() || this.minWidth > window.innerWidth || this.minHeight > window.innerHeight) {\r\n this.isFullscreen = true;\r\n this.canFullscreen = false;\r\n } else {\r\n this.isFullscreen = !!this.fullscreenMode;\r\n this.canFullscreen = this.initialResizeable;\r\n }\r\n this.fullscreen(this.isFullscreen);\r\n this.detectChanges();\r\n }\r\n\r\n ngOnInit() {\r\n this.onWindowResizeSub && this.onWindowResizeSub.unsubscribe();\r\n this.onWindowResizeSub = onWindowResize.subscribe((e) => {\r\n this.checkFullScreen();\r\n });\r\n\r\n this.showHeader = bool(this.showHeader, true);\r\n this.showFooter = bool(this.showFooter, true);\r\n this.resizable = bool(this.resizable, true);\r\n this.draggable = bool(this.draggable, true);\r\n this.closable = bool(this.closable, true);\r\n this.minWidth = ifNotEmpty(this.minWidth, +this.minWidth);\r\n this.minHeight = ifNotEmpty(this.minHeight, +this.minHeight);\r\n\r\n const storeSectionName = this.$ussDialog['metadata'] ? this.$ussDialog['metadata'].Name : this.$ussDialog['entityName'] || '$default';\r\n const section = `${this.$ussDialog.constructor.name}_${storeSectionName}`;\r\n if (section) {\r\n\r\n/*\r\n this.width = this.checkSize(this.width, this.minWidth);\r\n this.height = this.checkSize(this.height, this.minHeight);\r\n*/\r\n\r\n if (!isEmpty(this.top) && !isEmpty(this.left)) {\r\n this.modal.positionLeft = +this.left;\r\n this.modal.positionTop = +this.top;\r\n }\r\n/*\r\n if (this.minHeight) {\r\n this.modal.minHeight = this.minHeight;\r\n }\r\n if (this.minWidth) {\r\n this.modal.minWidth = this.minWidth;\r\n }\r\n*/\r\n this.initialResizeable = this.resizable;\r\n this.modal._visible = false;\r\n\r\n this.setModalVisible();\r\n\r\n // для диалогов, которые могут менять размер - настраиваем сохранение параметров ширины, высоты и признака полного размера\r\n extendForStoreSettings(this, 'width', { section }, v => this.resizable ? this.setModalVisible() : v);\r\n extendForStoreSettings(this, 'height', { section }, v => this.resizable ? this.setModalVisible() : v);\r\n extendForStoreSettings(this, 'fullscreenMode', { section }, v => this.resizable ? this.setModalVisible() : v);\r\n\r\n // для диалогов, которые могут тягаться по экрану - настраиваем сохранение параметров позиции на экране\r\n extendForStoreSettings(this, 'left', { section }, v => this.draggable ? this.setModalVisible() : v);\r\n extendForStoreSettings(this, 'top', { section }, v => this.draggable ? this.setModalVisible() : v);\r\n\r\n\r\n/*\r\n if (!this.resizable && !this.draggable) {\r\n this.setModalVisible();\r\n } else {\r\n\r\n // для диалогов, которые могут менять размер - настраиваем сохранение параметров ширины, высоты и признака полного размера\r\n if (this.resizable) {\r\n extendForStoreSettings(this, 'width', { section }, () => this.setModalVisible());\r\n extendForStoreSettings(this, 'height', { section }, () => this.setModalVisible());\r\n extendForStoreSettings(this, 'fullscreenMode', { section }, () => this.setModalVisible());\r\n }\r\n\r\n // для диалогов, которые могут тягаться по экрану - настраиваем сохранение параметров позиции на экране\r\n if (this.draggable) {\r\n extendForStoreSettings(this, 'left', { section }, () => this.setModalVisible());\r\n extendForStoreSettings(this, 'top', { section }, () => this.setModalVisible());\r\n }\r\n }\r\n*/\r\n }\r\n }\r\n\r\n ngOnChanges(c: SimpleChanges): void {\r\n if (c.minHeight || c.maxHeight || c.minWidth || c.maxWidth || c.width || c.height || c.resizable || c.draggable) {\r\n if (c.resizable) {\r\n this.initialResizeable = this.resizable;\r\n }\r\n //console.log(`ngOnChanges: w=${this.width}, h=${this.height}`);\r\n this.setModalVisible();\r\n }\r\n }\r\n\r\n private setModalVisible() {\r\n if (this.resizable) {\r\n //console.log(`setModalVisible: enableStoreSettings: resizable`);\r\n enableStoreSettings(this, 'width');\r\n enableStoreSettings(this, 'height');\r\n enableStoreSettings(this, 'fullscreenMode');\r\n } else {\r\n //console.log(`setModalVisible: disableStoreSettings: resizable`);\r\n disableStoreSettings(this, 'width');\r\n disableStoreSettings(this, 'height');\r\n disableStoreSettings(this, 'fullscreenMode');\r\n }\r\n if (this.draggable) {\r\n //console.log(`setModalVisible: enableStoreSettings: draggable`);\r\n enableStoreSettings(this, 'left');\r\n enableStoreSettings(this, 'top');\r\n } else {\r\n //console.log(`setModalVisible: disableStoreSettings: draggable`);\r\n disableStoreSettings(this, 'left');\r\n disableStoreSettings(this, 'top');\r\n }\r\n //console.log(`setModalVisible: Width=${+this.width}/${+this.minWidth}, Height=${+this.height}/${+this.minHeight}`);\r\n debounce(() => {\r\n //console.log(`*setModalVisible: Width=${+this.width}/${+this.minWidth}, Height=${+this.height}/${+this.minHeight}`);\r\n\r\n if (this.minHeight) {\r\n this.modal.minHeight = +this.minHeight;\r\n }\r\n if (this.minWidth) {\r\n this.modal.minWidth = +this.minWidth;\r\n }\r\n\r\n // фиксим размеры диалога - они не должны превышать установленные ограничения\r\n this.width = this.checkSize(this.width, +this.minWidth);\r\n this.height = this.checkSize(this.height, +this.minHeight);\r\n this.modal.width = this.width;\r\n this.modal.height = this.height;\r\n\r\n //console.log(`**setModalVisible: Width=${+this.width}/${+this.minWidth}, Height=${+this.height}/${+this.minHeight}`);\r\n\r\n\r\n // фиксим позицию диалога - оно не должно выходить за границы окна\r\n this.left = this.checkPosition(this.left, window.innerWidth - +this.width);\r\n this.top = this.checkPosition(this.top, window.innerHeight - +this.height);\r\n this.modal.positionLeft = this.left;\r\n this.modal.positionTop = this.top;\r\n\r\n // сохраняем предыдущие размеры и позицию окна\r\n this.prevLeft = this.left;\r\n this.prevTop = this.top;\r\n this.prevWidth = this.width;\r\n this.prevHeight = this.height;\r\n\r\n this.checkFullScreen();\r\n\r\n if (!this.modal._visible) {\r\n this.modal._visible = true;\r\n this.modal.show();\r\n }\r\n this.changeDetector.markForCheck();\r\n }, 0, `${this.hashCode}:setModalVisible`);\r\n }\r\n\r\n private priorFullScreen: boolean;\r\n\r\n /**\r\n * Переключает режим полного экрана\r\n * @param force если параметр равен `true` принудительно включает режим полного экрана\r\n * если параметр равен `false` принудительно выключает режим полного экрана\r\n */\r\n public fullscreen(force?: boolean) {\r\n if (this.initialResizeable || force) {\r\n\r\n if (isEmpty(force)) {\r\n this.isFullscreen = !this.isFullscreen;\r\n this.fullscreenMode = this.isFullscreen;\r\n } else {\r\n this.isFullscreen = !!force;\r\n }\r\n if (this.priorFullScreen === this.isFullscreen) return;\r\n this.priorFullScreen = this.isFullscreen;\r\n if (this.isFullscreen) {\r\n // сохраняем предыдущие размеры окна\r\n if (isEmpty(force)) {\r\n this.prevWidth = this.width;\r\n this.prevHeight = this.height;\r\n }\r\n disableStoreSettings(this, 'width');\r\n disableStoreSettings(this, 'height');\r\n\r\n // сохраняем предыдущую позицию окна\r\n if (isEmpty(force)) {\r\n this.prevLeft = this.left;\r\n this.prevTop = this.top;\r\n }\r\n disableStoreSettings(this, 'left');\r\n disableStoreSettings(this, 'top');\r\n\r\n // устанавливаем позицию и размеры для полноэкранного режима\r\n this.top = 0;\r\n this.left = 0;\r\n this.me.style.width = undefined;\r\n this.me.style.height = undefined;\r\n this.modal.contentViewChild.nativeElement.style = clone(this.modal.contentViewChild.nativeElement.style);\r\n this.modal.contentViewChild.nativeElement.style.width = undefined;\r\n this.modal.contentViewChild.nativeElement.style.height = undefined;\r\n this.width = window.innerWidth;\r\n this.height = window.innerHeight;\r\n //console.log(`fullscreen.1: w=${this.width}, h=${this.height}`);\r\n\r\n\r\n // запрещаем перетягивание и изменение размера\r\n this.draggable = false;\r\n this.resizable = false;\r\n // устанавливаем класс 'fullscreen'\r\n this.addClass('fullscreen');\r\n this.unbindMouseListeners();\r\n } else {\r\n // сбрасываем класс 'fullscreen'\r\n this.removeClass('fullscreen');\r\n // восстанавливаем размеры окна\r\n this.width = this.checkSize(this.prevWidth, +this.minWidth);\r\n this.height = this.checkSize(this.prevHeight, +this.minHeight);\r\n //console.log(`fullscreen.0: w=${this.width}, h=${this.height}`);\r\n this.me.style.width = `${this.width}px`;\r\n this.me.style.height = `${this.height}px`;\r\n\r\n enableStoreSettings(this, 'width');\r\n enableStoreSettings(this, 'height');\r\n // восстанавливаем позицию окна\r\n this.left = this.checkPosition(this.prevLeft, window.innerWidth - +this.width);\r\n this.top = this.checkPosition(this.prevTop, window.innerHeight - +this.height);\r\n this.me.style.left = `${this.left}px`;\r\n this.me.style.top = `${this.top}px`;\r\n enableStoreSettings(this, 'left');\r\n enableStoreSettings(this, 'top');\r\n // разрешаем перетягивание и изменение размера\r\n this.draggable = true;\r\n this.resizable = true;\r\n // сбрасываем признак полноэкранного режима - он будет сохранён в параметрах \r\n this.bindMouseListeners();\r\n }\r\n\r\n // сбрасываем признак изменения размера окна (на всякий случай)\r\n this.modal.resizing = false;\r\n\r\n // генерируем событие о том, что размеры окна поменялись\r\n setTimeout(() => {\r\n this.$ussDialog && this.$ussDialog.onResize.emit({ width: this.modal.width, height: this.modal.height });\r\n this.$ussDialog && this.$ussDialog.onMove.emit({ left: this.modal.positionLeft, top: this.modal.positionTop });\r\n }, 100);\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n show(data?: {}): Promise {\r\n this.modal._visible = true;\r\n return new Promise(resolve => this.modalVisibility.subscribe(x => resolve(x)));\r\n }\r\n public onShow() {\r\n if (this.$ussDialog) {\r\n this.modalVisibility.emit(true);\r\n this.$ussDialog && this.$ussDialog.onShow.emit(true);\r\n \r\n if (!this.height) {\r\n this.minHeight = this.modal.domHandler.getOuterHeight(this.me);\r\n this.height = this.minHeight;\r\n }\r\n \r\n this.bindDocumentEscapeListener();\r\n this.bindDocumentMouseMoveListener();\r\n }\r\n }\r\n\r\n hide() {\r\n this.modal._visible = false;\r\n this.modal.hide();\r\n }\r\n public onHide() {\r\n this.modalVisibility.emit(false);\r\n this.unbindDocumentMouseMoveListener();\r\n this.unbindDocumentEscapeListener();\r\n this.modalVisibility && this.modalVisibility.unsubscribe();\r\n this.ussDialogInit && this.ussDialogInit.unsubscribe();\r\n this.onWindowResizeSub && this.onWindowResizeSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Корректно закрывает окно. Для закрытия следует вызывать именно этот метод.\r\n * Если закрытие происходит некорректно - это означает, что this.$ussDialog не установлен,\r\n * потому что в методе afterViewInit диалога не вызвали super.AfterViewInit()\r\n */\r\n public close(closeResult?: any) {\r\n if (this.$ussDialog) {\r\n this.$ussDialog.close(closeResult);\r\n } else {\r\n this.internalClose();\r\n }\r\n }\r\n internalClose(componentRef?: ComponentRef) {\r\n this.modal.hide();\r\n this.unbindMouseListeners();\r\n componentRef && componentRef.destroy();\r\n }\r\n\r\n\r\n bindDocumentEscapeListener() {\r\n this.unbindDocumentEscapeListener();\r\n this.documentEscapeListener = observeDocumentEvent('keydown', (event: KeyboardEvent) => {\r\n if (!event.cancelBubble && !event.defaultPrevented && event.key === \"Escape\") {\r\n this.close();\r\n }\r\n }, true);\r\n }\r\n \r\n unbindDocumentEscapeListener() {\r\n if (this.documentEscapeListener) {\r\n this.documentEscapeListener.unsubscribe();\r\n this.documentEscapeListener = null;\r\n }\r\n }\r\n\r\n bindDocumentMouseMoveListener() {\r\n this.unbindDocumentMouseMoveListener();\r\n this.documentMouseMoveListener = this.renderer.listen('document', 'mousemove', (event) => {\r\n if (this.modal.resizing) {\r\n this.resizing = true;\r\n } else if (this.resizing) {\r\n this.resizing = false;\r\n }\r\n this.height = this.modal.domHandler.getOuterHeight(this.me);\r\n this.width = this.modal.domHandler.getOuterWidth(this.me);\r\n //console.log(`bindDocumentMouseMoveListener: w=${this.width}, h=${this.height}`);\r\n this.$ussDialog && this.$ussDialog.onResize.emit({ width: +this.width, height: +this.height });\r\n\r\n if (this.modal.dragging) {\r\n this.dragging = true;\r\n } else if (this.dragging) {\r\n const offset = this.modal.domHandler.getOffset(this.me);\r\n this.top = offset.top;\r\n this.left = offset.left;\r\n this.$ussDialog && this.$ussDialog.onMove.emit({ left: +this.left, top: +this.top });\r\n this.dragging = false;\r\n }\r\n });\r\n }\r\n\r\n unbindDocumentMouseMoveListener() {\r\n if(this.documentMouseMoveListener) {\r\n this.documentMouseMoveListener();\r\n this.documentMouseMoveListener = null;\r\n }\r\n }\r\n\r\n\r\n private bindMouseListeners() {\r\n if (this.resizable) {\r\n this.modal.bindDocumentDragListener();\r\n this.modal.bindDocumentResizeListeners();\r\n this.modal.bindDocumentResponsiveListener();\r\n// this.modal.bindDocumentEscapeListener();\r\n }\r\n }\r\n\r\n private unbindMouseListeners() {\r\n this.modal.unbindDocumentDragListener();\r\n this.modal.unbindDocumentResizeListeners();\r\n this.modal.unbindDocumentResponsiveListener();\r\n// this.modal.unbindDocumentEscapeListener();\r\n }\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/modal/modal.component.ts","module.exports = \".uss-dialog .actions {\\n opacity: 0.99999999; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/modal/modal.component.scss\n// module id = 2305\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n {{header | translate:l10nParams}}\\r\\n {{header}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/modal/modal.component.html\n// module id = 2306\n// module chunks = 1","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-list/object-list.component.html\n// module id = 2307\n// module chunks = 1","module.exports = \".uss-object-list {\\n overflow: hidden; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-list/object-list.component.scss\n// module id = 2308\n// module chunks = 1","module.exports = \"uss-table-select {\\n /*\\r\\n .ui-dialog-content {\\r\\n padding-right: 0 !important;\\r\\n }\\r\\n*/ }\\n uss-table-select .uss-object-list-panel {\\n margin-left: -14px;\\n margin-bottom: -9px;\\n margin-right: 0px; }\\n uss-table-select .uss-tool-bar-wrapper {\\n margin-right: 0;\\n padding-bottom: 8px !important; }\\n uss-table-select .uss-tool-bar-wrapper .search-input {\\n margin-top: 0 !important;\\n margin-right: 0 !important; }\\n uss-table-select .ui-datatable-tablewrapper {\\n margin-right: 0; }\\n uss-table-select .ui-datatable-tablewrapper {\\n margin-right: 0 !important; }\\n uss-table-select .ui-paginator-bottom {\\n margin-right: 14px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.scss\n// module id = 2309\n// module chunks = 1","module.exports = \"\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/object-table-select/object-table-select.component.html\n// module id = 2310\n// module chunks = 1","import { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssDialog } from '../common/UssDialog';\r\nimport { dialog, Inject } from '@core.module';\r\nimport { TProgressType, UssAsyncTasksService, OnProgress } from '../../../services/asyncTask.service';\r\n\r\n@Component({\r\n template: require('./progress.dialog.html')\r\n})\r\n@SystemComponent()\r\nexport class UssProgressDialog extends UssDialog implements OnInit {\r\n\r\n public isProgress: Subscription;\r\n\r\n public header: string;\r\n public showCancelButton: boolean;\r\n\r\n\r\n public isCancelling: boolean;\r\n public progressType: TProgressType;\r\n public currentProgressPercent: number = -1;\r\n public currentProgressMessage: string;\r\n\r\n @Inject(UssAsyncTasksService) asyncTasksService: UssAsyncTasksService;\r\n\r\n\r\n asyncTask: () => Promise;\r\n taskId: string;\r\n\r\n static async start(asyncTask: () => Promise, showCancelButton = true): Promise {\r\n return await dialog.show(UssProgressDialog, { asyncTask, showCancelButton }).result;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.hideCloseInTitle = true;\r\n this.startProgress();\r\n }\r\n\r\n onProgress(e: OnProgress) {\r\n if (e.TaskId !== this.taskId) return;\r\n this.progressType = e.Type;\r\n if (this.progressType === 'init') {\r\n this.header = e.StatusText || this.header;\r\n }\r\n else if (this.progressType === 'run') {\r\n if (this.currentProgressPercent < e.Progress || (e.Progress || 0) <= 0) this.currentProgressPercent = e.Progress;\r\n if (e.Progress <= 0) {\r\n this.header = e.StatusText || this.header;\r\n this.currentProgressMessage = '';\r\n } else {\r\n this.currentProgressMessage = e.StatusText || this.currentProgressMessage;\r\n }\r\n } else if (this.progressType === 'fault') {\r\n this.currentProgressMessage = e.StatusText || \"При выполнении операции произошла ошибка.\";\r\n } else {\r\n this.endProgress();\r\n this.close(true);\r\n }\r\n this.markForCheck();\r\n }\r\n\r\n public async startProgress() {\r\n this.progressType = 'init';\r\n this.currentProgressPercent = -1;\r\n this.currentProgressMessage = '';\r\n this.isCancelling = false;\r\n this.isProgress = this.asyncTasksService.onProgress.subscribe(e => this.onProgress(e));\r\n try {\r\n this.taskId = await this.asyncTask();\r\n const res = await this.asyncTasksService.subscribe(this.taskId);\r\n this.onProgress(res);\r\n } catch (e) {\r\n this.endProgress();\r\n throw e;\r\n } \r\n }\r\n\r\n public endProgress() {\r\n if (this.isProgress) {\r\n this.isProgress.unsubscribe();\r\n this.isProgress = null;\r\n this.isCancelling = false;\r\n this.markForCheck();\r\n }\r\n }\r\n\r\n public cancel() {\r\n if (this.isProgress) {\r\n if (this.isCancelling) {\r\n this.endProgress();\r\n } else {\r\n this.isCancelling = true;\r\n this.asyncTasksService.CancelTask(this.taskId);\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/progressDialog/progress.dialog.ts","module.exports = \"\\r\\n \\r\\n
\\r\\n
= 0\\\">\\r\\n \\r\\n
\\r\\n
= 0\\\">\\r\\n
{{currentProgressMessage | translate}}
\\r\\n
\\r\\n
\\r\\n
{{currentProgressMessage | translate}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/progressDialog/progress.dialog.html\n// module id = 2312\n// module chunks = 1","import { Component, OnInit, ViewContainerRef } from '@angular/core';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssDialog } from '../common/UssDialog';\r\nimport { isEmpty, IDialogParams } from '@core.module';\r\n\r\n@Component({\r\n template: require('./simple.dialog.html')\r\n})\r\n@SystemComponent()\r\nexport class UssSimpleDialog extends UssDialog implements IDialogParams, OnInit {\r\n text: string;\r\n header: string;\r\n type: 'info' | 'warning' | 'error' | 'alert' | 'confirmation' | 'custom';\r\n width: number = 640;\r\n height: number;\r\n resizable = false;\r\n\r\n showCancelButton: boolean;\r\n\r\n constructor(vcr: ViewContainerRef) {\r\n super(vcr, true);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.hideCloseInTitle = this.type === 'confirmation' && !this.showCancelButton;\r\n }\r\n\r\n close(closeResult?: boolean): void {\r\n if (this.showCancelButton || !isEmpty(closeResult)) {\r\n super.close(closeResult);\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/simpleDialog/simple.dialog.ts","module.exports = \"\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/simpleDialog/simple.dialog.html\n// module id = 2314\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n 0}\\\" (click)=\\\"clickIcon.emit()\\\">\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/select/select.component.html\n// module id = 2315\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/select/select.component.scss\n// module id = 2316\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n 0}\\\" (click)=\\\"clickIcon.emit()\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/enum-select/enum-select.component.html\n// module id = 2317\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/enum-select/enum-select.component.scss\n// module id = 2318\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssFramedList, UssFramedListService, UssFramedListSelectionEvent } from '../../../core.module';\r\nimport { ifEmpty } from '../../../core.module/utils/utils';\r\n\r\n\r\n/**\r\n * Компонент, служит для постраничного отображения больших данных в списке с прокруткой.\r\n * Одновременно загружено и отображается не более чем `frameSize` элементов списка.\r\n *\r\n * Параметры:\r\n * \r\n * service - сервис, обеспечивающий загрузку данных.\r\n * itemTemplate - шаблон данных, отображаемых в списке. (Использует параметры контекста `$item` и `data`).\r\n *\r\n * frameSize - (опционально) размер фрейма. Должно быть заведомо больше элементов, которые могут быть видимы в списке. (По умолчанию - 50)\r\n * upLoaderTemplate - (опционально) шаблон лоадера при загрузке предыдущих данных. (Использует параметр контекста `data`).\r\n * downLoaderTemplate - (опционально) шаблон лоадера при загрузке следующих данных. (Использует параметр контекста `data`).\r\n * loaderTemplate - (опционально) шаблон лоадера при загрузке данных в случае, если `upLoaderTemplate` и `downLoaderTemplate` не заданы. (Использует параметр контекста `data`).\r\n * reloadTemplate - (опционально) шаблон лоадера при первой загрузке данных.\r\n *\r\n * noDataText - (опционально) текст, выводимый в случае, если данных нет.\r\n *\r\n * frameLoaded - событие, вызывается при начале/окончании загрузки фрейма.\r\n * При начале загрузки в параметр передаётся значение `false`, по окончании - данные фрейма (массив).\r\n */\r\n@ng.Component({\r\n selector: 'uss-framed-list',\r\n template: require('./framed-list.component.html'),\r\n styles: [require('./framed-list.component.scss')]\r\n})\r\n@SystemComponent()\r\nexport class UssFramedListComponent extends UssComponent2 implements ng.OnInit, ng.OnChanges {\r\n\r\n @ng.Input('service') service: UssFramedListService;\r\n @ng.Input('frameSize') frameSize = 50;\r\n\r\n @ng.Input('upLoaderTemplate') upLoaderTemplate: ng.TemplateRef;\r\n @ng.Input('downLoaderTemplate') downLoaderTemplate: ng.TemplateRef;\r\n @ng.Input('loaderTemplate') loaderTemplate: ng.TemplateRef;\r\n @ng.Input('itemTemplate') itemTemplate: ng.TemplateRef;\r\n @ng.Input('reloadTemplate') reloadTemplate: ng.TemplateRef;\r\n\r\n @ng.Input('noDataText') noDataText: string;\r\n\r\n @ng.Output('frameLoaded') frameLoaded = new ng.EventEmitter();\r\n @ng.Output('selectionChanged') selectionChanged = new ng.EventEmitter();\r\n\r\n @ng.ViewChild('defaultLoader') defaultLoaderTemplate: ng.TemplateRef;\r\n @ng.ViewChild('defaultItem') defaultItemTemplate: ng.TemplateRef;\r\n @ng.ViewChild('defaultReload') defaultReloadTemplate: ng.TemplateRef;\r\n \r\n\r\n public list: UssFramedList;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.setup(true);\r\n }\r\n\r\n ngOnChanges(ch) {\r\n this.wasInit && this.setup(!!ch.service);\r\n }\r\n\r\n private _sub;\r\n\r\n setup(setupService: boolean) {\r\n this.noDataText = ifEmpty(this.noDataText, '@OBJECT_LIST.NO_DATA|Нет данных');\r\n this.upLoaderTemplate = this.upLoaderTemplate || this.loaderTemplate || this.defaultLoaderTemplate;\r\n this.downLoaderTemplate = this.downLoaderTemplate || this.loaderTemplate || this.defaultLoaderTemplate;\r\n this.reloadTemplate = this.reloadTemplate || this.defaultReloadTemplate;\r\n this.itemTemplate = this.itemTemplate || this.defaultItemTemplate;\r\n if (setupService) {\r\n this.list = null;\r\n this.service = this.service || new UssFramedListService();\r\n if (this._sub) this._sub.unsubscribe();\r\n this._sub = this.service.selectionChanged.subscribe(r => this.selectionChanged.emit(r));\r\n if (!this.list) {\r\n this.list = new UssFramedList(this.changeDetector, this.service, this.frameSize).load();\r\n this.list.frameLoaded.subscribe(r => this.frameLoaded.emit(r));\r\n } else {\r\n this.list.frameService = this.service;\r\n this.list.frameSize = this.frameSize;\r\n this.list.load();\r\n }\r\n }\r\n else if (this.list && this.list.frameSize !== this.frameSize) {\r\n this.list.frameSize = this.frameSize;\r\n this.list.load();\r\n }\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/framed-list/framed-list.component.ts","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
{{$item.$source}}
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/framed-list/framed-list.component.html\n// module id = 2320\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\nuss-framed-list {\\n display: block;\\n height: 100%;\\n position: relative; }\\n uss-framed-list .uss-framed-list-component {\\n display: block;\\n overflow-y: auto;\\n overflow-x: hidden;\\n height: 100%; }\\n uss-framed-list .uss-framed-list-component .fl-loader {\\n height: 3px;\\n width: 100%;\\n position: relative; }\\n uss-framed-list .uss-framed-list-component .fl-loader .uss-linear-loader {\\n height: 3px;\\n width: 100%; }\\n uss-framed-list .uss-framed-list-component .fl-item-position {\\n display: block;\\n overflow: hidden; }\\n uss-framed-list .uss-framed-list-component .fl-item-position {\\n display: block;\\n height: 1px;\\n overflow: hidden; }\\n uss-framed-list .uss-framed-list-component .fl-fill {\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0; }\\n uss-framed-list .uss-framed-list-component .fl-fill.fl-nodata {\\n text-align: center; }\\n uss-framed-list .uss-framed-list-component .fl-fill.fl-nodata:before {\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n content: \\\"\\\"; }\\n uss-framed-list .uss-framed-list-component .fl-fill.fl-nodata .fl-text {\\n display: inline-block;\\n vertical-align: middle; }\\n uss-framed-list .uss-framed-list-component .fl-fill.fl-reloader {\\n z-index: 100;\\n background-color: rgba(150, 150, 150, 0.1); }\\n uss-framed-list .uss-framed-list-component .fl-fill.fl-reloader .loader {\\n display: block; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/framed-list/framed-list.component.scss\n// module id = 2321\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/multi-select/multi-select.component.html\n// module id = 2322\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n.uss-multi-select input {\\n cursor: default; }\\n\\n.uss-multi-select:not(.readonly) input[readonly] {\\n background-color: white !important;\\n cursor: pointer; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/multi-select/multi-select.component.scss\n// module id = 2323\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { bool } from '@core.module';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { SystemComponent } from '../../internals';\r\nimport { ITreeListItem } from '../tree-list/tree-list.component';\r\n\r\n\r\n/** Простейший компонент для множественного выбора из массива значений-вариантов. */\r\n@ng.Component({\r\n selector: 'uss-multi-selector',\r\n template: require('./multi-selector.component.html'),\r\n styles: [require('./multi-selector.component.scss')],\r\n changeDetection: ng.ChangeDetectionStrategy.OnPush\r\n})\r\n@SystemComponent()\r\nexport class UssMultiSelectorComponent extends UssComponent2 implements ng.OnInit {\r\n \r\n @ng.Input('label') label: string;\r\n @ng.Input('disabled') disabled: boolean;\r\n @ng.Input('placeholder') inputPlaceholder: string;\r\n @ng.Input('l10n-placeholder') l10nInputPlaceholder: string;\r\n public get placeholder(): string { return this.inputPlaceholder || this.translate.instant(this.l10nInputPlaceholder); }\r\n\r\n @ng.Input('isFluid') isFluid: boolean;\r\n @ng.Input('required') public _required: boolean;\r\n public required: boolean;\r\n\r\n /** Текущее выделение. Массив ключевых значений. */\r\n @ng.Input('value') value: string = null;\r\n\r\n /** Событие, вызываемое при изменении текущего выделения. */\r\n @ng.Output('valueChange') valueChange = new ng.EventEmitter();\r\n\r\n // ReSharper disable InconsistentNaming\r\n @ng.Input('l10n') inputl10n: string = '';\r\n public get l10n(): string | boolean {\r\n return this.inputl10n === undefined || this.inputl10n === 'false' ? false : this.inputl10n;\r\n }\r\n // ReSharper restore InconsistentNaming\r\n\r\n @ng.Input('items') public items: ITreeListItem[];\r\n\r\n constructor(@ng.Optional()viewContainer?: ng.ViewContainerRef, @ng.Optional() skipChecking?: boolean) {\r\n super(viewContainer, skipChecking);\r\n }\r\n\r\n\r\n setValue(value: string) {\r\n if (this.value !== value) {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n }\r\n }\r\n\r\n public selectionChange(value: string) {\r\n value = value || null;\r\n this.setValue(value);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.disabled = bool(this.disabled);\r\n this.isFluid = bool(this.isFluid, true);\r\n this.required = bool(this._required, false);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/multi-selector/multi-selector.component.ts","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/multi-selector/multi-selector.component.html\n// module id = 2325\n// module chunks = 1","module.exports = \":host multi-selector {\\n display: inline-block; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/multi-selector/multi-selector.component.scss\n// module id = 2326\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.html\n// module id = 2327\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-dropdown-select/object-dropdown-select.component.scss\n// module id = 2328\n// module chunks = 1","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-select/object-select.component.html\n// module id = 2329\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n.uss-object-select input {\\n pointer-events: none;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden; }\\n\\n.uss-object-select div.ui.icon.input {\\n cursor: pointer; }\\n .uss-object-select div.ui.icon.input.disabled, .uss-object-select div.ui.icon.input.readonly {\\n cursor: default; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/object-select/object-select.component.scss\n// module id = 2330\n// module chunks = 1","import { Component, Input, Output, Injector, ViewContainerRef, EventEmitter, OnInit, OnDestroy, TemplateRef } from '@angular/core';\r\nimport { isEmpty, isNotEmpty, ifEmpty, uid, bool } from '@core.module';\r\nimport { UssPageControlComponent, TPageDescriptor } from './page-control.component';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n// По умолчанию контент страницы будет отображаться за границами страницы\r\n\r\n@Component({\r\n selector: 'uss-page-control>uss-page',\r\n template: `\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n`\r\n})\r\n@SystemComponent()\r\nexport class UssPageComponent extends UssComponent2 implements OnInit, OnDestroy {\r\n @Input('templateRef') templateRef: TemplateRef;\r\n\r\n @Input('id') id: string;\r\n @Input('hidden') hidden: boolean;\r\n @Input('disabled') disabled: boolean;\r\n\r\n @Input('avoid-fullscreen-height') avoidFullscreenHeight: boolean;\r\n\r\n @Input('caption') title: string;\r\n @Input('scrollable') scrollable: boolean;\r\n @Input('scrollable-x') scrollableX: boolean;\r\n @Input('scrollable-y') scrollableY: boolean;\r\n @Input('content-class') contentClass: string = '';\r\n @Input('overflow') overflow: boolean;\r\n\r\n @Output('activate') activate = new EventEmitter();\r\n @Output('deactivate') deactivate = new EventEmitter();\r\n\r\n @Input('canActivate') canActivate: boolean | Promise | ((firstTime: boolean) => boolean | Promise);\r\n @Input('canDeactivate') canDeactivate: boolean | Promise | (() => boolean | Promise);\r\n\r\n public parent: UssPageControlComponent;\r\n\r\n constructor(vcr: ViewContainerRef, private inj: Injector) {\r\n super(vcr);\r\n this.parent = this.inj.get(UssPageControlComponent);\r\n }\r\n\r\n firstActivation: boolean = true;\r\n index: number;\r\n\r\n public onActivate() {\r\n const firstTime = this.firstActivation;\r\n this.firstActivation = false;\r\n this.activate.emit(firstTime);\r\n if (bool(this.avoidFullscreenHeight) || bool(this.scrollable) || bool(this.scrollableY)) {\r\n //const modal = $('uss-modal,[uss-modal] p-dialog div.ui-dialog.ui-widget.ui-widget-content');\r\n const modal = $('uss-modal p-dialog div.ui-dialog.ui-widget.ui-widget-content,[uss-modal] p-dialog div.ui-dialog.ui-widget.ui-widget-content');\r\n modal && modal.addClass('avoid-fullscreen-height');\r\n }\r\n this.detectChanges();\r\n }\r\n\r\n public onDeactivate() {\r\n if (bool(this.avoidFullscreenHeight) || bool(this.scrollable) || bool(this.scrollableY)) {\r\n //const modal = $('uss-modal,[uss-modal] p-dialog div.ui-dialog.ui-widget.ui-widget-content');\r\n const modal = $('uss-modal p-dialog div.ui-dialog.ui-widget.ui-widget-content,[uss-modal] p-dialog div.ui-dialog.ui-widget.ui-widget-content');\r\n modal && modal.removeClass('avoid-fullscreen-height');\r\n }\r\n this.deactivate.emit();\r\n this.detectChanges();\r\n }\r\n\r\n async checkOnActivate(): Promise {\r\n let res = true;\r\n if (typeof this.canActivate === 'function') {\r\n res = await this.canActivate(this.firstActivation);\r\n }\r\n else if (this.canActivate instanceof Promise) {\r\n res = await this.canActivate;\r\n }\r\n else if (isNotEmpty(this.canActivate)) {\r\n res = !!this.canActivate;\r\n }\r\n return res !== false;\r\n }\r\n\r\n async checkOnDeactivate(): Promise {\r\n let res = true;\r\n if (typeof this.canDeactivate === 'function') {\r\n res = await this.canDeactivate();\r\n }\r\n else if (this.canDeactivate instanceof Promise) {\r\n res = await this.canDeactivate;\r\n }\r\n else if (isNotEmpty(this.canDeactivate)) {\r\n res = !!this.canDeactivate;\r\n }\r\n return res !== false;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.avoidFullscreenHeight = bool(this.avoidFullscreenHeight);\r\n this.hidden = bool(this.hidden);\r\n if (isNotEmpty(this.scrollable)) {\r\n this.scrollable = bool(this.scrollable);\r\n if (isEmpty(this.scrollableY)) this.scrollableY = this.scrollable;\r\n else if (isEmpty(this.scrollableX)) this.scrollableX = this.scrollable;\r\n }\r\n this.scrollableX = bool(this.scrollableX);\r\n this.scrollableY = bool(this.scrollableY);\r\n this.overflow = bool(this.overflow, true);\r\n\r\n this.id = ifEmpty(this.id, uid());\r\n if (!this.parent.pages.any(x => x.id === this.id)) {\r\n this.parent.pages.push(this);\r\n this.parent.updateActivePage();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.parent.pages.Remove(this);\r\n }\r\n \r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/page-control/page.component.ts","module.exports = \"
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n {{page?.title}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/page-control/page-control.component.html\n// module id = 2332\n// module chunks = 1","module.exports = \"/* components.module */\\n.uss-component.uss-page-control {\\n height: 100%; }\\n .uss-component.uss-page-control .ui.tabular.menu.uss-page-control {\\n border-bottom: 2px solid #D4D4D5; }\\n .uss-component.uss-page-control .ui.tabular.menu.uss-page-control .active.item.uss-page-control {\\n margin-bottom: -2px;\\n border: 0;\\n border-bottom: 2px solid #40aec5;\\n background: transparent; }\\n .uss-component.uss-page-control .ui.attached.segment:not(.default-ui) {\\n overflow: visible !important;\\n border: 0 !important;\\n background: #f5f6f7;\\n width: 100%;\\n height: 100%; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/page-control/page-control.component.scss\n// module id = 2333\n// module chunks = 1","import { Component, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { UssDataSourceComponent } from '@system/components.module/components/common/UssDataSourceComponent';\r\n\r\nenum PeriodType {\r\n /** Текущий */\r\n Current = 0,\r\n /** Предыдущий */\r\n Previous = 1,\r\n /** Текущие N */\r\n Currents = 2,\r\n /** Предыдущие N */\r\n Previouses = 3,\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'uss-period-picker',\r\n template: require('./period-picker.component.html'),\r\n styles: [require('./period-picker.component.scss')]\r\n})\r\n@SystemComponent()\r\nexport class UssPeriodPickerComponent extends UssComponent2 implements OnChanges, OnInit {\r\n @Input() periodTypeFieldName = 'PeriodType';\r\n @Input() fromStartFieldName = 'FromStart';\r\n @Input() fromEndFieldName = 'FromEnd';\r\n @Input() timeFieldName = 'Time';\r\n\r\n /** Ссылка на форму или контрол формы, содержащие поля для заполнения */\r\n @Input() formGroup: FormGroup;\r\n\r\n\r\n @Input('readonly') _readonly: boolean;\r\n isReadOnly(): boolean {\r\n let res = this._readonly !== undefined ? this.bool(this._readonly) : undefined;\r\n let parent: any = this.parentComponent;\r\n while (res === undefined && parent) {\r\n if (parent['isReadOnly']) {\r\n if (typeof parent['isReadOnly'] === 'function') {\r\n res = parent['isReadOnly']();\r\n } else {\r\n res = parent['isReadOnly'];\r\n }\r\n }\r\n if (parent instanceof UssDataSourceComponent) {\r\n res = parent.isReadOnly();\r\n } else if (parent.modal && parent.modal.$ussDialog) {\r\n res = parent.modal.$ussDialog.isReadOnly;\r\n } else {\r\n parent = parent.parentComponent;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n periodTypeControl: FormControl;\r\n fromStartControl: FormControl;\r\n fromEndControl: FormControl;\r\n timeControl: FormControl;\r\n\r\n public periodTypes = [\r\n '@DATE_TIME.PERIOD_TYPE.CURRENT|За текущий',\r\n '@DATE_TIME.PERIOD_TYPE.PREVIOUS|За предыдущий',\r\n '@DATE_TIME.PERIOD_TYPE.CURRENTS|За последние ...',\r\n '@DATE_TIME.PERIOD_TYPE.PREVIOUSES|За предыдущие ...'\r\n ];\r\n\r\n public periodValues = [\r\n '@DATE_TIME.PERIOD.DAY|День/Дня/Дней',\r\n '@DATE_TIME.PERIOD.WEEK|Неделю/Недели',\r\n '@DATE_TIME.PERIOD.MONTH|Месяц(а)',\r\n '@DATE_TIME.PERIOD.YEAR|Год(а)',\r\n '@DATE_TIME.PERIOD.HOUR|Час(а)',\r\n '@DATE_TIME.PERIOD.MINUTE|Минуту(ы)',\r\n '@DATE_TIME.PERIOD.SECOND|Секунду(ы)'\r\n ];\r\n\r\n public periodType = PeriodType.Current;\r\n public periodValue = App.PeriodType.Day;\r\n public shift: number = 1;\r\n public time: moment.MomentInput = moment().startOf('day');\r\n\r\n\r\n ngOnChanges(c: SimpleChanges): void {\r\n if (c.formGroup || c.periodTypeFieldName || c.fromStartFieldName || c.fromEndFieldName || c.timeFieldName) {\r\n if (this.wasInit) this.initControls();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.initControls();\r\n }\r\n\r\n initControls() {\r\n this.formGroup = this.formGroup || UssDataSourceComponent.searchForm(this);\r\n if (this.formGroup) {\r\n this.periodTypeControl = this.initControl(this.periodTypeFieldName, this.periodTypeControl);\r\n this.fromStartControl = this.initControl(this.fromStartFieldName, this.fromStartControl);\r\n this.fromEndControl = this.initControl(this.fromEndFieldName, this.fromEndControl);\r\n this.timeControl = this.initControl(this.timeFieldName, this.timeControl);\r\n this.controlsValueChanged();\r\n }\r\n }\r\n\r\n initControl(controlFieldName: string, oldControl: FormControl): FormControl {\r\n let control = this.formGroup.controls[controlFieldName];\r\n if (!control) {\r\n control = new FormControl();\r\n control['_name'] = controlFieldName;\r\n this.formGroup.addControl(controlFieldName, control);\r\n }\r\n if (oldControl !== control) {\r\n oldControl && oldControl['_sub'] && oldControl['_sub'].unsubscribe();\r\n this.subscribe(control['_sub'] = control.valueChanges.debounceTime(1).subscribe(() => this.controlsValueChanged()));\r\n }\r\n return control;\r\n }\r\n\r\n private _lock = false;\r\n\r\n public periodChanged() {\r\n if (!this._lock) {\r\n if (this.formGroup && !this.wasInitVisible) {\r\n this.controlsValueChanged();\r\n } else {\r\n this._lock = true;\r\n this.periodType = +(this.periodType || PeriodType.Current);\r\n this.periodValue = +(this.periodValue || App.PeriodType.Day);\r\n if (this.periodType === PeriodType.Current || this.periodType === PeriodType.Previous) {\r\n this.shift = 1;\r\n } else {\r\n this.shift = +(this.shift || 1);\r\n }\r\n const current = this.periodType === PeriodType.Current || this.periodType === PeriodType.Currents;\r\n this.periodTypeControl && this.periodTypeControl.setValue(this.periodValue);\r\n this.fromEndControl && this.fromEndControl.setValue(current ? 0 : -1);\r\n this.fromStartControl && this.fromStartControl.setValue(-(current ? this.shift - 1 : this.shift));\r\n this.timeControl && this.timeControl.setValue(moment(this.time).format('HH:mm'));\r\n this._lock = false;\r\n }\r\n }\r\n }\r\n\r\n controlsValueChanged(): void {\r\n if (!this._lock) {\r\n this._lock = true;\r\n if (this.timeControl) {\r\n const timeValues = (this.timeControl.value || '').split(':');\r\n this.time = moment().startOf('day').add(+timeValues[0], 'hour').add(+timeValues[1], 'minute').add(+timeValues[2], 'second');\r\n }\r\n this.periodTypeControl && (this.periodValue = this.periodTypeControl.value);\r\n if (this.fromEndControl && this.fromStartControl) {\r\n const fromStart = +(this.fromStartControl.value || 0);\r\n const fromEnd = +(this.fromEndControl.value || 0);\r\n if (fromEnd === 0 || fromEnd === -1) {\r\n this.shift = -(fromStart || 0);\r\n if (this.shift >= 0) {\r\n if (fromEnd === 0) {\r\n this.shift++;\r\n this.periodType = this.shift === 1 && this.periodType !== PeriodType.Currents ? PeriodType.Current : PeriodType.Currents;\r\n } else {\r\n this.periodType = this.shift === 1 && this.periodType !== PeriodType.Previouses ? PeriodType.Previous : PeriodType.Previouses;\r\n }\r\n }\r\n }\r\n this._lock = false;\r\n }\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/period-picker/period-picker.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n в\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/period-picker/period-picker.component.html\n// module id = 2335\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n/* components.module */\\n.uss-period-picker .row {\\n display: flex;\\n justify-content: space-around;\\n flex-flow: row wrap;\\n align-items: stretch;\\n flex-wrap: wrap; }\\n .uss-period-picker .row .col:not(:first-child) {\\n margin-left: .5em; }\\n .uss-period-picker .row .col:not(:last-child) {\\n margin-right: .5em; }\\n .uss-period-picker .row .col {\\n width: 1em;\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .uss-period-picker .row .col.shift {\\n width: 5em;\\n flex-grow: unset;\\n flex-shrink: unset; }\\n .uss-period-picker .row .col.time-caption {\\n width: 0.4em;\\n flex-grow: unset;\\n flex-shrink: unset;\\n margin-top: auto;\\n margin-bottom: auto; }\\n .uss-period-picker .row .col.period-type {\\n flex-grow: 2; }\\n .uss-period-picker .row .col.period-value {\\n flex-shrink: 2; }\\n .uss-period-picker .row .col.time-value {\\n width: 102px;\\n flex-grow: unset;\\n flex-shrink: unset; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/period-picker/period-picker.component.scss\n// module id = 2336\n// module chunks = 1","import { Directive, ViewContainerRef, Input, OnInit } from '@angular/core';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n/**\r\n * Implementation of Semantic UI tooltip\r\n *\r\n * @link http://semantic-ui.com/modules/popup.html\r\n */\r\n@Directive({\r\n selector: '[ussTooltip]'\r\n})\r\n@SystemComponent()\r\nexport class UssTooltipDirective implements OnInit {\r\n\r\n @Input(\"ussTooltip\") smDirTooltip: string;\r\n @Input(\"ussTooltipPosition\") smDirPosition: string;\r\n\r\n constructor(public element: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.element.element.nativeElement.setAttribute('data-position', this.smDirPosition || 'top center');\r\n this.element.element.nativeElement.setAttribute('data-tooltip', this.smDirTooltip);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/popover/tooltip.directive.ts","import { Component, OnChanges, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormGroup, AbstractControl, FormControl, FormBuilder, Validators } from '@angular/forms';\r\nimport { Reflection, Inject, isArray, getPathValue, setPathValue, toJson } from '@core.module';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssDataSourceComponent } from '../../common/UssDataSourceComponent';\r\nimport { CustomValidators } from '../../../components/common/CustomValidators';\r\n\r\n\r\n@Component({\r\n selector: 'uss-schedule',\r\n template: require('./schedule.component.html'),\r\n styles: [require('./schedule.component.scss')],\r\n// changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n@SystemComponent()\r\nexport class UssScheduleTimeComponent extends UssDataSourceComponent implements OnChanges, OnInit {\r\n\r\n @Inject(FormBuilder) fb: FormBuilder;\r\n\r\n public repeatTypes = [\r\n 'SCHEDULER.REPEAT_TYPE.ONCE|Однократно',\r\n 'SCHEDULER.REPEAT_TYPE.DAY|Ежедневно',\r\n 'SCHEDULER.REPEAT_TYPE.WEEK|Еженедельно',\r\n 'SCHEDULER.REPEAT_TYPE.MONTH|Ежемесячно'\r\n ];\r\n\r\n initForm() {\r\n this._fieldName = this._fieldName || 'Schedule';\r\n super.initForm();\r\n }\r\n\r\n protected assignInputElement(element?: HTMLInputElement) {\r\n // nothing here\r\n }\r\n\r\n //#region - Common -\r\n private _v;\r\n\r\n public static createControlTemplate(value?: any, fb?: FormBuilder): FormGroup {\r\n fb = fb || Reflection.get(FormBuilder);\r\n value = value || {};\r\n const res = fb.group({\r\n IsDisabled: [!!value.IsDisabled],\r\n DateTime: ['DateTime' in value ? value.DateTime : moment().startOf('day'), Validators.required],\r\n RepeatType: [value.RepeatType || App.Schedule.Repeat.Once, Validators.required],\r\n RepeatTime: [value.RepeatTime],\r\n EveryDay: [value.EveryDay || 1],\r\n WeekNumbers: [value.WeekNumbers || []],\r\n WeekDays: [value.WeekDays || []],\r\n MonthNumbers: [value.MonthNumbers || []],\r\n MonthDays: [value.MonthDays || []],\r\n TimePeriods: [value.TimePeriods || '']\r\n });\r\n return res;\r\n }\r\n\r\n protected createControl(value?: any): AbstractControl {\r\n value = this.ussDataSource && this.ussDataSource[this.fieldName] || value || {};\r\n this._v = value;\r\n const res = UssScheduleTimeComponent.createControlTemplate(value, this.fb);\r\n res.valueChanges.subscribe(v => {\r\n for (let propName in v) {\r\n if (v.hasOwnProperty(propName)) {\r\n const ds = this.ussDataSource && this.ussDataSource[this.fieldName] || this._v;\r\n ds && setPathValue(ds, propName, getPathValue(v, propName));\r\n }\r\n }\r\n });\r\n return res;\r\n }\r\n\r\n public static fillValue(value: App.Schedule): App.Schedule {\r\n const res = value || {};\r\n res.IsDisabled = !!res.IsDisabled;\r\n res.DateTime = res.DateTime || moment().startOf('day');\r\n res.RepeatType = res.RepeatType || App.Schedule.Repeat.Once;\r\n res.RepeatTime = res.RepeatTime || moment().startOf('day');\r\n res.EveryDay = res.EveryDay || 1;\r\n res.WeekNumbers = res.WeekNumbers || [];\r\n res.WeekDays = res.WeekDays || [];\r\n res.MonthNumbers = res.MonthNumbers || [];\r\n res.MonthDays = res.MonthDays || [];\r\n return res;\r\n }\r\n\r\n protected getDataSourceValue(): App.Schedule {\r\n return UssScheduleTimeComponent.fillValue(super.getDataSourceValue());\r\n }\r\n\r\n setValue(value: App.Schedule) {\r\n super.setValue(UssScheduleTimeComponent.fillValue(value));\r\n }\r\n\r\n protected initControl() {\r\n if (!this.control && this.fieldName && this.formGroup) {\r\n this.control = this.formGroup.controls[this.fieldName];\r\n }\r\n if (this.control instanceof FormControl && this.control.parent instanceof FormGroup && this.control['_name']) {\r\n const value = this.control.value;\r\n (this.control.parent).removeControl(this.control['_name']);\r\n this.control = this.createControl(value);\r\n } else {\r\n\r\n }\r\n super.initControl();\r\n }\r\n\r\n getControl(controlName: string): FormControl {\r\n let res = (this.control).controls[controlName];\r\n if (!res) {\r\n res = new FormControl([], CustomValidators.ussDataSourceComponentValidator(this));\r\n res['_name'] = controlName;\r\n (this.control).addControl(controlName, res);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Возвращает признак установленного значения контролов `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n * @param controlName `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n */\r\n public getControlValue(controlName: string, num: number): boolean {\r\n const currentValue = this.getControl(controlName).value || [];\r\n return num === 0 ? !currentValue.length : currentValue.contains(num);\r\n }\r\n\r\n /**\r\n * Устанавливает признак установленного значения контролов `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n * @param controlName `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n */\r\n public setControlValue(controlName: string, num: number, value: boolean): number[] {\r\n const control = this.getControl(controlName);\r\n let currentValue = control.value || [];\r\n const priorJsonValue = toJson(currentValue);\r\n\r\n if (num === 0 && value) {\r\n currentValue = [];\r\n }\r\n else if (value && !currentValue.contains(num)) {\r\n currentValue.push(num);\r\n }\r\n else if (!value && currentValue.contains(num)) {\r\n currentValue.Remove(num);\r\n }\r\n if (toJson(currentValue) !== priorJsonValue) {\r\n control.markAsDirty();\r\n control.markAsTouched();\r\n control.setValue([...currentValue]);\r\n }\r\n this[`disableAll${controlName}`] = !currentValue.length;\r\n this.markForCheck();\r\n return currentValue;\r\n }\r\n\r\n public getDisplayText(e: { value: number[] | string }, values: any[]) {\r\n e.value = e.value || [];\r\n if (typeof e.value !== 'string' && isArray(e.value)) {\r\n !e.value.length && (e.value = [0]);\r\n e.value = e.value\r\n .orderBy(x => x < 0 ? 1000 : x)\r\n .select(x => values.where(m => m.Number === x).select(m => this.translate.instant(m.Name)).firstOrDefault() || '?')\r\n .toArray().join(', ');\r\n }\r\n }\r\n //#endregion - Common -\r\n\r\n //#region - WeekNumbers -\r\n public disableAllWeekNumbers: boolean;\r\n\r\n public weekNumbers = [\r\n { Number: 0, Name: 'SCHEDULER.ALL|Все' },\r\n { Number: 1, Name: 'SCHEDULER.WEEK_1|1-я' },\r\n { Number: 2, Name: 'SCHEDULER.WEEK_2|2-я' },\r\n { Number: 3, Name: 'SCHEDULER.WEEK_3|3-я' },\r\n { Number: 4, Name: 'SCHEDULER.WEEK_4|4-я' },\r\n { Number: 5, Name: 'SCHEDULER.WEEK_5|5-я' },\r\n { Number: 6, Name: 'SCHEDULER.WEEK_6|6-я' },\r\n { Number: -1, Name: 'SCHEDULER.LAST|посл.' },\r\n ]\r\n //#endregion - WeekNumbers -\r\n\r\n //#region - WeekDays -\r\n public disableAllWeekDays: boolean;\r\n\r\n public weekDays = [{ Number: 0, Name: 'SCHEDULER.ALL|Все' }]\r\n .union((moment.weekdaysShort(true) as any).select((x, i) => ({Number: i + 1, Name: x})))\r\n .toArray();\r\n //#endregion - WeekNumbers -\r\n\r\n //#region - MonthNumbers -\r\n public disableAllMonthNumbers: boolean;\r\n\r\n public months = [{ Number: 0, Name: 'SCHEDULER.ALL|Все' }]\r\n .union(moment.months().select((m, i) => ({Number: i + 1, Name: m.substr(0, 1).toUpperCase() + m.substr(1)})))\r\n .toArray();\r\n //#endregion - MonthNumbers -\r\n\r\n //#region - MonthDays -\r\n public disableAllMonthDays: boolean;\r\n\r\n public days = Enumerable.range(0, 33)\r\n .select(i => ({ Number: i === 32 ? -1 : i, Name: i === 0 ? 'SCHEDULER.ALL|Все' : i === 32 ? 'SCHEDULER.LAST|посл.' : i.toString() }))\r\n .toArray();\r\n //#endregion - MonthNumbers -\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/schedule/schedule-time/schedule.component.ts","module.exports = \"
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{x.Name | translate}}\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/schedule/schedule-time/schedule.component.html\n// module id = 2339\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n/* components.module */\\nuss-schedule .uss-schedule {\\n min-width: 430px; }\\n uss-schedule .uss-schedule .row {\\n display: flex;\\n margin-top: 1em; }\\n uss-schedule .uss-schedule .row.vertical {\\n flex-direction: column;\\n flex-wrap: wrap;\\n margin-top: 0; }\\n uss-schedule .uss-schedule .row.vertical .popup-element {\\n margin-left: -1em;\\n padding-left: 1em;\\n padding-right: 1em; }\\n uss-schedule .uss-schedule .row uss-enum-select[fieldName=\\\"RepeatType\\\"] {\\n flex-grow: 1; }\\n uss-schedule .uss-schedule .row uss-enum-select[fieldName=\\\"RepeatType\\\"] .field.uss-enum-select.uss-select.uss-component {\\n width: 99.9%; }\\n uss-schedule .uss-schedule .row uss-datetime-picker[fieldName=\\\"RepeatTime\\\"], uss-schedule .uss-schedule .row uss-spinner[fieldName=\\\"EveryDay\\\"] {\\n width: 7.3em;\\n margin-left: 1em; }\\n uss-schedule .uss-schedule .row.selectors {\\n margin-top: 1em; }\\n uss-schedule .uss-schedule .row.selectors uss-multi-select {\\n flex-grow: 1; }\\n uss-schedule .uss-schedule .row.selectors uss-multi-select:first-child {\\n margin-right: 1em; }\\n uss-schedule .uss-schedule .row.selectors uss-multi-select[fieldName=\\\"WeekNumbers\\\"] .row.vertical {\\n height: 5.5em;\\n min-width: 9em; }\\n uss-schedule .uss-schedule .row.selectors uss-multi-select[fieldName=\\\"WeekDays\\\"] .row.vertical {\\n height: 5.5em;\\n min-width: 8em; }\\n uss-schedule .uss-schedule .row.selectors uss-multi-select[fieldName=\\\"MonthDays\\\"] .row.vertical {\\n height: 9.5em;\\n min-width: 20em; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/schedule/schedule-time/schedule.component.scss\n// module id = 2340\n// module chunks = 1","import { Component } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { translate } from '@core.module';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssScheduleBaseComponent } from '../schedule-base.component';\r\n\r\n\r\n@Component({\r\n selector: 'uss-schedule-periods',\r\n template: require('./schedule-periods.component.html'),\r\n styles: [require('./schedule-periods.component.scss')],\r\n})\r\n@SystemComponent()\r\nexport class UssSchedulePeriodsComponent extends UssScheduleBaseComponent {\r\n\r\n public repeatTypes = [\r\n 'SCHEDULER.REPEAT_TYPE.ALWAYS|Всегда',\r\n 'SCHEDULER.REPEAT_TYPE.DAY|Ежедневно',\r\n 'SCHEDULER.REPEAT_TYPE.WEEK|Еженедельно',\r\n 'SCHEDULER.REPEAT_TYPE.MONTH|Ежемесячно'\r\n ];\r\n\r\n protected createControl(value?: any): AbstractControl {\r\n value = this.ussDataSource && this.ussDataSource[this.fieldName] || value || {};\r\n return super.createControl(value,\r\n {\r\n TimePeriods: [value.TimePeriods || ''],\r\n });\r\n }\r\n\r\n public static fillValue(value: App.SchedulePeriods): App.SchedulePeriods {\r\n const res = UssScheduleBaseComponent.fillValue(value);\r\n res.TimePeriods = res.TimePeriods || '';\r\n return res;\r\n }\r\n\r\n protected getDataSourceValue(): App.SchedulePeriods {\r\n return UssSchedulePeriodsComponent.fillValue(super.getDataSourceValue());\r\n }\r\n\r\n setValue(value: App.SchedulePeriods) {\r\n super.setValue(UssSchedulePeriodsComponent.fillValue(value));\r\n }\r\n\r\n displayText() {\r\n return UssSchedulePeriodsComponent.getDisplayText(this.value);\r\n }\r\n\r\n static weekDayToText(x: App.AppDayOfWeek): any {\r\n switch (x) {\r\n case App.AppDayOfWeek.Sunday: return moment().locale('en').weekday(0).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Monday: return moment().locale('en').weekday(1).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Tuesday: return moment().locale('en').weekday(2).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Wednesday: return moment().locale('en').weekday(3).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Thursday: return moment().locale('en').weekday(4).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Friday: return moment().locale('en').weekday(5).locale(translate.currentLang).format('ddd');\r\n case App.AppDayOfWeek.Saturday: return moment().locale('en').weekday(6).locale(translate.currentLang).format('ddd');\r\n default: return '';\r\n }\r\n }\r\n\r\n\r\n static getDisplayText(p: App.SchedulePeriods) {\r\n function _(translateKey: string, defaultText: string, prms?: any) {\r\n const s = defaultText.trim();\r\n const i = defaultText.indexOf(s);\r\n const prefix = defaultText.substring(0, i);\r\n const suffix = defaultText.substring(i + s.length);\r\n if (!translateKey.startsWith('SCHEDULER.')) {\r\n translateKey = `SCHEDULER.SCHEDULE.DESCRIPTIONS.${translateKey}`;\r\n }\r\n return prefix + translate.instant(`${translateKey}|${s}`, prms) + suffix;\r\n }\r\n\r\n let res = '';\r\n let timePeriods = p?.TimePeriods || '';\r\n switch (p?.RepeatType) {\r\n case App.SchedulePeriods.Repeat.Always:\r\n timePeriods = '';\r\n break;\r\n case App.SchedulePeriods.Repeat.Day:\r\n //res += _('EVERY_DAY', 'каждый день');\r\n break;\r\n case App.SchedulePeriods.Repeat.Week:\r\n if (p.WeekNumbers?.length > 0) {\r\n const prms = {\r\n value: p.WeekNumbers.orderBy(x => x < 0 ? 1000 : x)\r\n .select(x => x == -1\r\n ? _('ON_LAST_WEEK', 'последнюю')\r\n : _('ON_WEEK_NUMBERS', '{{x}}-ю', {x})\r\n ).toArray().join(',')\r\n }\r\n res += _('EVERY_WEEKS', 'каждую {{value}} неделю месяца', prms);\r\n } else {\r\n res += _('EVERY_WEEK', ' еженедельно');\r\n }\r\n if (p.WeekDays?.length > 0)\r\n {\r\n res += _('ON_WEEK_DAYS', ' в {{week_days}}', {week_days: p.WeekDays.orderBy(x => x).select(x => this.weekDayToText(x)).toArray().join(',')});\r\n }\r\n break;\r\n case App.SchedulePeriods.Repeat.Month:\r\n if (p.MonthNumbers?.length > 0) {\r\n res += _('EVERY_MONTHS', 'каждый {{value}} месяц', { value: p.MonthNumbers.orderBy(x => _('ON_MONTH_NUMBERS', '${x}-й', {x})).toArray().join(',')});\r\n } else {\r\n res += _('EVERY_MONTH', ' ежемесячно');\r\n }\r\n if (p.MonthDays?.length > 0)\r\n {\r\n res += _('ON_MONTH_DAYS', ' в {{month_days}} день',\r\n {\r\n month_days: p.MonthDays.orderBy(x => x < 0 ? 1000 : x).select(x => x == -1\r\n ? _('ON_LAST_MONTH', 'последний')\r\n : _('ON_MONTH_NUMBERS', '${x}-й', {x})).toArray().join(',')\r\n });\r\n }\r\n break;\r\n }\r\n res = res.trim();\r\n if (res) {\r\n if (timePeriods) {\r\n res = `${timePeriods} (${res})`;\r\n }\r\n } else {\r\n res = timePeriods;\r\n }\r\n return res.trim() || _('ALWAYS', 'всегда');\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.ts","import { Component, OnChanges, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormGroup, AbstractControl, FormControl, FormBuilder, Validators } from '@angular/forms';\r\nimport { Reflection, Inject, isArray, getPathValue, setPathValue, toJson } from '@core.module';\r\nimport { UssDataSourceComponent } from '../common/UssDataSourceComponent';\r\nimport { CustomValidators } from '../../components/common/CustomValidators';\r\n\r\n\r\nexport class UssScheduleBaseComponent extends UssDataSourceComponent implements OnChanges, OnInit {\r\n\r\n @Inject(FormBuilder) fb: FormBuilder;\r\n\r\n public repeatTypes = [\r\n 'SCHEDULER.REPEAT_TYPE.DAY|Ежедневно',\r\n 'SCHEDULER.REPEAT_TYPE.WEEK|Еженедельно',\r\n 'SCHEDULER.REPEAT_TYPE.MONTH|Ежемесячно'\r\n ];\r\n\r\n initForm() {\r\n this._fieldName = this._fieldName || 'Schedule';\r\n super.initForm();\r\n }\r\n\r\n protected assignInputElement(element?: HTMLInputElement) {\r\n // nothing here\r\n }\r\n\r\n //#region - Common -\r\n private _v;\r\n\r\n public static createControlTemplate(extraFields?: any, value?: any, fb?: FormBuilder): FormGroup {\r\n fb = fb || Reflection.get(FormBuilder);\r\n value = value || {};\r\n\r\n const fields = Object.assign({\r\n IsDisabled: [!!value.IsDisabled],\r\n RepeatType: [value.RepeatType || 0, Validators.required],\r\n WeekNumbers: [value.WeekNumbers || []],\r\n WeekDays: [value.WeekDays || []],\r\n MonthNumbers: [value.MonthNumbers || []],\r\n MonthDays: [value.MonthDays || []]\r\n }, extraFields);\r\n\r\n return fb.group(fields);\r\n }\r\n\r\n protected createControl(value?: any, extraFields?: any): AbstractControl {\r\n value = this.ussDataSource && this.ussDataSource[this.fieldName] || value || {};\r\n this._v = value;\r\n const res = UssScheduleBaseComponent.createControlTemplate(extraFields, value, this.fb);\r\n res.valueChanges.subscribe(v => {\r\n for (let propName in v) {\r\n if (v.hasOwnProperty(propName)) {\r\n const ds = this.ussDataSource && this.ussDataSource[this.fieldName] || this._v;\r\n ds && setPathValue(ds, propName, getPathValue(v, propName));\r\n }\r\n }\r\n });\r\n return res;\r\n }\r\n\r\n public static fillValue(value: App.ScheduleBase): App.ScheduleBase {\r\n const res = value || {};\r\n res.IsDisabled = !!res.IsDisabled;\r\n res.RepeatType = res.RepeatType || 0;\r\n res.WeekNumbers = res.WeekNumbers || [];\r\n res.WeekDays = res.WeekDays || [];\r\n res.MonthNumbers = res.MonthNumbers || [];\r\n res.MonthDays = res.MonthDays || [];\r\n return res;\r\n }\r\n\r\n protected getDataSourceValue(): TSchedule {\r\n return UssScheduleBaseComponent.fillValue(super.getDataSourceValue());\r\n }\r\n\r\n setValue(value: TSchedule) {\r\n super.setValue(UssScheduleBaseComponent.fillValue(value));\r\n }\r\n\r\n protected initControl() {\r\n if (!this.control && this.fieldName && this.formGroup) {\r\n this.control = this.formGroup.controls[this.fieldName];\r\n }\r\n if (this.control instanceof FormControl && this.control.parent instanceof FormGroup && this.control['_name']) {\r\n const value = this.control.value;\r\n (this.control.parent).removeControl(this.control['_name']);\r\n this.control = this.createControl(value);\r\n } else {\r\n\r\n }\r\n super.initControl();\r\n }\r\n\r\n getControl(controlName: string): FormControl {\r\n let res = (this.control).controls[controlName];\r\n if (!res) {\r\n res = new FormControl([], CustomValidators.ussDataSourceComponentValidator(this));\r\n res['_name'] = controlName;\r\n (this.control).addControl(controlName, res);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Возвращает признак установленного значения контролов `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n * @param controlName `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n */\r\n public getControlValue(controlName: string, num: number): boolean {\r\n const currentValue = this.getControl(controlName).value || [];\r\n return num === 0 ? !currentValue.length : currentValue.contains(num);\r\n }\r\n\r\n /**\r\n * Устанавливает признак установленного значения контролов `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n * @param controlName `WeekNumbers`, `WeekDays`, `MonthNumbers`, `MonthDays`\r\n */\r\n public setControlValue(controlName: string, num: number, value: boolean): number[] {\r\n const control = this.getControl(controlName);\r\n let currentValue = control.value || [];\r\n const priorJsonValue = toJson(currentValue);\r\n\r\n if (num === 0 && value) {\r\n currentValue = [];\r\n }\r\n else if (value && !currentValue.contains(num)) {\r\n currentValue.push(num);\r\n }\r\n else if (!value && currentValue.contains(num)) {\r\n currentValue.Remove(num);\r\n }\r\n if (toJson(currentValue) !== priorJsonValue) {\r\n control.markAsDirty();\r\n control.markAsTouched();\r\n control.setValue([...currentValue]);\r\n }\r\n this[`disableAll${controlName}`] = !currentValue.length;\r\n this.markForCheck();\r\n return currentValue;\r\n }\r\n\r\n public getDisplayText(e: { value: number[] | string }, values: any[]) {\r\n e.value = e.value || [];\r\n if (typeof e.value !== 'string' && isArray(e.value)) {\r\n !e.value.length && (e.value = [0]);\r\n e.value = e.value\r\n .orderBy(x => x < 0 ? 1000 : x)\r\n .select(x => values.where(m => m.Number === x).select(m => this.translate.instant(m.Name)).firstOrDefault() || '?')\r\n .toArray().join(', ');\r\n }\r\n }\r\n //#endregion - Common -\r\n\r\n //#region - WeekNumbers -\r\n public disableAllWeekNumbers: boolean;\r\n\r\n public weekNumbers = [\r\n { Number: 0, Name: 'SCHEDULER.ALL|Все' },\r\n { Number: 1, Name: 'SCHEDULER.WEEK_1|1-я' },\r\n { Number: 2, Name: 'SCHEDULER.WEEK_2|2-я' },\r\n { Number: 3, Name: 'SCHEDULER.WEEK_3|3-я' },\r\n { Number: 4, Name: 'SCHEDULER.WEEK_4|4-я' },\r\n { Number: 5, Name: 'SCHEDULER.WEEK_5|5-я' },\r\n { Number: 6, Name: 'SCHEDULER.WEEK_6|6-я' },\r\n { Number: -1, Name: 'SCHEDULER.LAST|посл.' },\r\n ]\r\n //#endregion - WeekNumbers -\r\n\r\n //#region - WeekDays -\r\n public disableAllWeekDays: boolean;\r\n\r\n public weekDays = [{ Number: 0, Name: 'SCHEDULER.ALL|Все' }]\r\n .union((moment.weekdaysShort(true) as any).select((x, i) => ({Number: i + 1, Name: x})))\r\n .toArray();\r\n //#endregion - WeekNumbers -\r\n\r\n //#region - MonthNumbers -\r\n public disableAllMonthNumbers: boolean;\r\n\r\n public months = [{ Number: 0, Name: 'SCHEDULER.ALL|Все' }]\r\n .union(moment.months().select((m, i) => ({Number: i + 1, Name: m.substr(0, 1).toUpperCase() + m.substr(1)})))\r\n .toArray();\r\n //#endregion - MonthNumbers -\r\n\r\n //#region - MonthDays -\r\n public disableAllMonthDays: boolean;\r\n\r\n public days = Enumerable.range(0, 33)\r\n .select(i => ({ Number: i === 32 ? -1 : i, Name: i === 0 ? 'SCHEDULER.ALL|Все' : i === 32 ? 'SCHEDULER.LAST|посл.' : i.toString() }))\r\n .toArray();\r\n //#endregion - MonthNumbers -\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/schedule/schedule-base.component.ts","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n 0\\\" placeholder=\\\"8:00 - 10:00, 20:00 - 22:00\\\" fieldName=\\\"TimePeriods\\\" label=\\\"SCHEDULER.SCHEDULE.EXECUTE_PERIODS|Периоды времени активности\\\">\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{x.Name | translate}}\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n {{x.Name | translate}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.html\n// module id = 2343\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n/* components.module */\\n/* semantic-ui лоадер */\\n/* диммер лоадера в модальных окнах modal.component.html */\\n/* выпадающий календарь */\\n/* выпадающий список semantic-ui dropdown */\\n/* контролы на карте */\\n/* Предопределённое значение z-index для карт leaflet. Не меняйте это значение. */\\n/* semantic-ui dropdown меню */\\n/* semantic-ui nav-bar - нельзя */\\n/* При открытии диалогов semantic-ui первое затенение начинается с этого значения,\\r\\n после чего все последующие диалоги и тени получают значение на единицу больше,\\r\\n позволяя тем самым визуально накладывать их друг на друга.\\r\\n Значение по-умолчанию: 1000. Не меняйте это значение.\\r\\n*/\\n/* сообщения toaster'а */\\n/* components.module */\\nuss-schedule-periods .uss-schedule-periods {\\n min-width: 430px; }\\n uss-schedule-periods .uss-schedule-periods .row {\\n display: flex;\\n margin-top: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.vertical {\\n flex-direction: column;\\n flex-wrap: wrap;\\n margin-top: 0; }\\n uss-schedule-periods .uss-schedule-periods .row.vertical .popup-element {\\n margin-left: -1em;\\n padding-left: 1em;\\n padding-right: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.repeat-type uss-enum-select {\\n width: 50%;\\n margin-right: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.repeat-type-0 uss-enum-select {\\n margin-right: 0; }\\n uss-schedule-periods .uss-schedule-periods .row.repeat-type uss-input input {\\n font-family: monospace; }\\n uss-schedule-periods .uss-schedule-periods .row uss-enum-select[fieldName=\\\"RepeatType\\\"] {\\n flex-grow: 1; }\\n uss-schedule-periods .uss-schedule-periods .row uss-enum-select[fieldName=\\\"RepeatType\\\"] .field.uss-enum-select.uss-select.uss-component {\\n width: 99.9%; }\\n uss-schedule-periods .uss-schedule-periods .row uss-datetime-picker[fieldName=\\\"RepeatTime\\\"], uss-schedule-periods .uss-schedule-periods .row uss-spinner[fieldName=\\\"EveryDay\\\"] {\\n width: 7.3em;\\n margin-left: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors {\\n margin-top: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors uss-multi-select {\\n flex-grow: 1; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors uss-multi-select:first-child {\\n margin-right: 1em; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors uss-multi-select[fieldName=\\\"WeekNumbers\\\"] .row.vertical {\\n height: 5.5em;\\n min-width: 9em; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors uss-multi-select[fieldName=\\\"WeekDays\\\"] .row.vertical {\\n height: 5.5em;\\n min-width: 8em; }\\n uss-schedule-periods .uss-schedule-periods .row.selectors uss-multi-select[fieldName=\\\"MonthDays\\\"] .row.vertical {\\n height: 9.5em;\\n min-width: 25em; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/schedule/schedule-periods/schedule-periods.component.scss\n// module id = 2344\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { AppBase } from '@core.module';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@ng.Component({\r\n selector: '[scrollable-table], [scrollable-fixed-table]',\r\n template: require('./scrollable-table.component.html'),\r\n styles: [require('./scrollable-table.component.scss')],\r\n encapsulation: ng.ViewEncapsulation.None\r\n})\r\n@SystemComponent()\r\nexport class UssScrollableTableComponent extends AppBase {\r\n\r\n @ng.Input('scrollable-table') autoTableTemplate: ng.TemplateRef;\r\n @ng.Input('scrollable-fixed-table') fixedTableTemplate: ng.TemplateRef;\r\n\r\n public get dataTableTemplate() { return this.autoTableTemplate || this.fixedTableTemplate }\r\n public get headTableTemplate() { return this.fixedTableTemplate || this.autoTableTemplate }\r\n\r\n public hasFooter: boolean;\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.renderer.setAttribute(this.nativeElement, 'scrollable-table', '');\r\n if (this.fixedTableTemplate) {\r\n this.renderer.setAttribute(this.nativeElement, 'scrollable-fixed-table', '');\r\n this.nativeElement.querySelector('top-area > table tbody')?.remove();\r\n const tfoot = this.nativeElement.querySelector('top-area > table tfoot');\r\n if (tfoot) {\r\n tfoot.remove();\r\n this.nativeElement.querySelector('content-area > table tfoot')?.remove();\r\n this.nativeElement.querySelector('bottom-area > table tbody')?.remove();\r\n }\r\n else {\r\n this.nativeElement.querySelector('.bottom-area')?.remove();\r\n }\r\n this.hasFooter = !!tfoot;\r\n }\r\n\r\n }\r\n\r\n\r\n \r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/scrollable-table/scrollable-table.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/scrollable-table/scrollable-table.component.html\n// module id = 2346\n// module chunks = 1","module.exports = \"@charset \\\"UTF-8\\\";\\n[scrollable-table] {\\n height: 100%;\\n width: 100%; }\\n\\n.scrollable-table {\\n height: 100%;\\n width: 100%; }\\n .scrollable-table.scrollable-fixed-table table {\\n table-layout: fixed; }\\n .scrollable-table top-area > table {\\n width: 100%;\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n .scrollable-table top-area > table tbody, .scrollable-table top-area > table tfoot {\\n visibility: collapse; }\\n .scrollable-table .content-area {\\n /* для того, чтобы помещался прогрессор загрузки и строкеа НЕТ ДАННЫХ */\\n min-height: 50px;\\n position: relative; }\\n .scrollable-table .content-area content-area > table {\\n width: 100%;\\n border-top: none;\\n border-radius: 0; }\\n .scrollable-table .content-area content-area > table thead, .scrollable-table .content-area content-area > table tfoot {\\n visibility: collapse; }\\n .scrollable-table bottom-area > table {\\n width: 100%;\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n .scrollable-table bottom-area > table tbody, .scrollable-table bottom-area > table thead {\\n visibility: collapse; }\\n .scrollable-table .ui.table > tbody > tr th, .scrollable-table .ui.table > thead > tr th, .scrollable-table .ui.table > tr th {\\n text-align: center; }\\n .scrollable-table .ui.table > tbody > tr td, .scrollable-table .ui.table > thead > tr td, .scrollable-table .ui.table > tr td {\\n text-align: left; }\\n .scrollable-table .ui.table > tbody > tr th, .scrollable-table .ui.table > tbody > tr td, .scrollable-table .ui.table > thead > tr th, .scrollable-table .ui.table > thead > tr td, .scrollable-table .ui.table > tr th, .scrollable-table .ui.table > tr td {\\n min-width: 0 !important; }\\n .scrollable-table .ui.table > tbody > tr th[c-cmd], .scrollable-table .ui.table > tbody > tr td[c-cmd], .scrollable-table .ui.table > thead > tr th[c-cmd], .scrollable-table .ui.table > thead > tr td[c-cmd], .scrollable-table .ui.table > tr th[c-cmd], .scrollable-table .ui.table > tr td[c-cmd] {\\n width: 4em;\\n text-align: center; }\\n .scrollable-table .ui.table > tbody > tr th[c-date], .scrollable-table .ui.table > tbody > tr td[c-date], .scrollable-table .ui.table > thead > tr th[c-date], .scrollable-table .ui.table > thead > tr td[c-date], .scrollable-table .ui.table > tr th[c-date], .scrollable-table .ui.table > tr td[c-date] {\\n width: 12em;\\n text-align: center; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/scrollable-table/scrollable-table.component.scss\n// module id = 2347\n// module chunks = 1","import { Directive, Component, Input, ChangeDetectionStrategy, AfterViewInit, ViewChild, ElementRef, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { SystemComponent } from '../../internals';\r\n\r\n@Directive({selector: '.ui.dropdown:not(.default-ui)'})\r\n@SystemComponent()\r\nexport class SemanticDropdownDirective {\r\n constructor(public elementRef: ElementRef) {\r\n setTimeout(() => $(elementRef.nativeElement).dropdown());\r\n }\r\n}\r\n\r\n@Directive({selector: '.ui.top.attached.tabular.menu:not(.default-ui)'})\r\n@SystemComponent()\r\nexport class SemanticTabDirective {\r\n constructor(public elementRef: ElementRef) {\r\n setTimeout(() => {\r\n $(elementRef.nativeElement.querySelectorAll('a.item')).tab();\r\n });\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Implementation of Menu component\r\n *\r\n * @link http://semantic-ui.com/collections/menu.html\r\n * @link http://semantic-ui.com/elements/icon.html\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'sm-menu',\r\n template: `\r\n`\r\n})\r\n@SystemComponent()\r\nexport class SemanticMenuComponent implements AfterViewInit {\r\n @Input() logo: string;\r\n @Input() class: string;\r\n @Input() logoClass: string = 'logo';\r\n @Input() title: string;\r\n @ViewChild('innerElement') innerElement: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n Array.from(this.innerElement.nativeElement.childNodes)\r\n .filter((element: Element) => element.nodeName === 'SM-MENU')\r\n .map((element: Element) => element.firstElementChild.classList.remove('ui'));\r\n }\r\n}\r\n\r\n/**\r\n * Implementation of Item view\r\n *\r\n * @link http://semantic-ui.com/views/item.html\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'a[sm-item], sm-item',\r\n template: `\r\n\r\n
\r\n
\r\n {{header}}\r\n
\r\n \r\n
`\r\n})\r\n@SystemComponent()\r\nexport class SemanticItemComponent implements AfterViewInit {\r\n @Input() icon: string;\r\n @Input() header: string;\r\n @Input() image: string;\r\n\r\n @ViewChild('innerItemElement') innerItemElement: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n this.innerItemElement.nativeElement.parentElement.classList.add('item');\r\n }\r\n}\r\n\r\n/**\r\n * Implementation of Loader element\r\n *\r\n * @link http://semantic-ui.com/elements/loader.html\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'sm-loader',\r\n template: `
\r\n
\r\n
{{text}}
\r\n
\r\n
`\r\n})\r\n@SystemComponent()\r\nexport class SemanticLoaderComponent {\r\n @Input('class') class: string;\r\n @Input('text') text: string = '@DIALOG.LOADING|Загрузка...';\r\n @Input('complete') complete: boolean = false;\r\n}\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'sm-accordion',\r\n styles: [`sm-accordion sm-accordion-item:first-child .title { border-top: none !important; }`],\r\n template: `\r\n
\r\n \r\n
\r\n`\r\n})\r\n@SystemComponent()\r\nexport class SemanticAccordionComponent implements AfterViewInit {\r\n @Input() class: string;\r\n @Input() options: string;\r\n @ViewChild('accordion') accordion: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n\r\n const inAccordion: HTMLElement | boolean = this.inAccordion(this.accordion.nativeElement, 'accordion');\r\n\r\n if (inAccordion) {\r\n this.accordion.nativeElement.classList.remove('ui');\r\n jQuery(inAccordion).accordion(this.options || {});\r\n } else {\r\n jQuery(this.accordion.nativeElement).accordion(this.options || {});\r\n }\r\n }\r\n\r\n inAccordion(el: any, className: string): HTMLElement | boolean {\r\n\r\n if (el.parentNode) {\r\n if (el.parentNode.classList && el.parentNode.classList.contains(className)) {\r\n return el.parentNode;\r\n } else {\r\n return this.inAccordion(el.parentNode, className);\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'sm-accordion-item',\r\n template: `\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n`\r\n})\r\n@SystemComponent()\r\nexport class SemanticAccordionItemComponent {\r\n @Input() class: string;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/semanticui/semantic.ts","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/spinner/spinner.component.html\n// module id = 2349\n// module chunks = 1","module.exports = \".uss-spinner {\\n position: relative; }\\n .uss-spinner .uss-spinner-add,\\n .uss-spinner .uss-spinner-sub {\\n position: absolute;\\n right: 8px;\\n cursor: pointer;\\n opacity: 0.5;\\n transition: opacity 0.3s ease; }\\n .uss-spinner .uss-spinner-add:hover,\\n .uss-spinner .uss-spinner-sub:hover {\\n opacity: 1; }\\n .uss-spinner .uss-spinner-add {\\n top: 4px; }\\n .uss-spinner .uss-spinner-sub {\\n top: 18px; }\\n .uss-spinner .ui.input input.uss-spinner-field {\\n padding-right: 1.6em; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/spinner/spinner.component.scss\n// module id = 2350\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { Inject, ifEmpty, isEmpty, isNotEmpty, translate } from '@core.module';\r\nimport { ussExpression } from '@metadata.module';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { UssPopoverComponent } from '../popover/popover.component';\r\nimport { SystemComponent } from '../../internals';\r\nimport { UssDataTableColumn } from '../data-source/data-source.p-dataTable.directive';\r\nimport { UssObjectListComponent } from '../object-list/object-list.component';\r\nimport Moment = moment.Moment;\r\n\r\nexport declare type TTableColumnFilterValue = string | number | boolean | { from: moment.Moment, to: moment.Moment } | undefined;\r\ndeclare type TPeriod = 'lastHour' | 'lastThreeHours' | 'today' | 'yesterday' | '';\r\n\r\n@ng.Component({\r\n selector: 'table-column-filter',\r\n template: require('./table-column-filter.component.html'),\r\n changeDetection: ng.ChangeDetectionStrategy.OnPush,\r\n styles: [require('./table-column-filter.component.scss')]\r\n})\r\n@SystemComponent()\r\nexport class TableColumnFilterComponent extends UssComponent2 implements ng.OnChanges {\r\n\r\n @ng.Input('propertyMetadata') propertyMetadata: App.PropertyMetadata;\r\n @ng.Input('value') value: TTableColumnFilterValue;\r\n @ng.Output('valueChange') valueChange = new ng.EventEmitter();\r\n @ng.Input('disabled') isDisabled: boolean = false;\r\n @ng.Input('class') class: string = '';\r\n @ng.Input('col') col: UssDataTableColumn;\r\n\r\n @ng.ViewChild('popup') popup: UssPopoverComponent;\r\n @ng.ViewChild('src') src: ng.ElementRef;\r\n @ng.ViewChild('input') input: ng.ElementRef;\r\n\r\n @Inject(UssObjectListComponent) objectList: UssObjectListComponent;\r\n\r\n public hasValue: boolean;\r\n @ng.Input('type') type: 'string' | 'integer' | 'float' | 'boolean' | 'datetime' | 'enum' | 'object';\r\n\r\n public inputText: string = '';\r\n public enumValue: number = 0;\r\n\r\n private isActivePopup: boolean = false;\r\n private isFocused: boolean = false;\r\n private isObject: boolean = false;\r\n\r\n ngOnChanges(changes) {\r\n if (changes.value) {\r\n this.setValue(this.value);\r\n }\r\n if (changes.propertyMetadata) {\r\n this.isActivePopup = false;\r\n this.type = ifEmpty(this.propertyMetadata?.TypeName, 'text');\r\n if (!this.propertyMetadata) {\r\n this.type = 'string';\r\n } else {\r\n if (this.propertyMetadata.EnumerableMetadata) {\r\n this.type = 'enum';\r\n this.isActivePopup = true;\r\n } else if (this.propertyMetadata.ObjectRefMetadata) {\r\n this.type = 'object';\r\n this.isObject = true;\r\n } else if (this.type === 'boolean') {\r\n this.isActivePopup = true;\r\n } else if (this.type === 'datetime') {\r\n this.isActivePopup = true;\r\n }\r\n }\r\n this.setValue(this.value);\r\n }\r\n if (changes.type) {\r\n this.isActivePopup = true;\r\n this.setValue(this.value);\r\n }\r\n }\r\n\r\n public setInputText(value: string) {\r\n this.inputText = value;\r\n switch (this.type) {\r\n/*\r\n case 'integer':\r\n this.setValue(parseInt(this.inputText));\r\n break;\r\n case 'float':\r\n this.setValue(parseFloat(this.inputText));\r\n break;\r\n*/\r\n case 'enum':\r\n case 'boolean':\r\n case 'datetime':\r\n break;\r\n default:\r\n this.setValue(this.inputText);\r\n break;\r\n }\r\n }\r\n\r\n public setEnumValue(enumValue: number): void {\r\n if (this.type === 'boolean') {\r\n this.setValue(enumValue === 1 ? true : enumValue === 2 ? false : undefined);\r\n }\r\n else if (this.type === 'enum') {\r\n this.setValue(!enumValue ? undefined : enumValue - 1);\r\n }\r\n }\r\n\r\n public setValue(value: any): void {\r\n switch (this.type) {\r\n case 'enum':\r\n if (isEmpty(value)) {\r\n value = undefined;\r\n this.inputText = '';\r\n } else {\r\n value = +value;\r\n this.inputText = translate.instant(this.propertyMetadata.EnumerableMetadata.first(x => x.Value === value).Description);\r\n }\r\n this.enumValue = isEmpty(value) ? 0 : value + 1;\r\n break;\r\n case 'boolean':\r\n if (isEmpty(value)) {\r\n value = undefined;\r\n this.inputText = '';\r\n } else {\r\n value = value ? true : false;\r\n this.inputText = value\r\n ? translate.instant('@DIALOG.YES|Да')\r\n : translate.instant('@DIALOG.NO|Нет');\r\n }\r\n this.enumValue = isEmpty(value) ? 0 : value === true ? 1 : 2;\r\n break;\r\n case 'datetime':\r\n if (value) {\r\n if (isEmpty(value.from) && value.to) {\r\n this.inputText = `${translate.instant('@REPORTS.COMMON.DATE_TO|по').toLowerCase()} ${moment(value.to).local().format('L LT')}`;\r\n } else if (value.from && isEmpty(value.to)) {\r\n this.inputText = `${translate.instant('@REPORTS.COMMON.DATE_FROM|с').toLowerCase()} ${moment(value.from).local().format('L LT')}`;\r\n } else if (value.from && value.to) {\r\n this.inputText = `${moment(value.from).local().format('L LT')} - ${moment(value.to).local().format('L LT')}`;\r\n } else {\r\n value = undefined;\r\n this.inputText = '';\r\n }\r\n } else {\r\n value = undefined;\r\n this.inputText = '';\r\n }\r\n break;\r\n default:\r\n this.inputText = value || '';\r\n if (!value) value = undefined;\r\n break;\r\n }\r\n this.hasValue = isNotEmpty(value);\r\n if (this.value !== value) {\r\n if (this.popup) {\r\n this.popup.hide();\r\n }\r\n this.value = value;\r\n this.debounce(() => this.valueChange.emit(this.value), 500, 'valueChange');\r\n }\r\n }\r\n\r\n\r\n // Используется для выбора диапазона дат \r\n public from: Moment;\r\n public to: Moment;\r\n public isPopupVisible: boolean = false;\r\n\r\n public togglePopup() {\r\n if (this.popup && this.isActivePopup) {\r\n if (this.isPopupVisible) {\r\n this.popup.hide();\r\n } else {\r\n const value = typeof this.value === 'object' ? this.value : {};\r\n if (this.value) {\r\n this.from = this.value['from'];\r\n this.to = this.value['to'];\r\n } else {\r\n this.from = undefined;\r\n this.to = undefined;\r\n }\r\n value.distanceAway = -8;\r\n value.onHidden = () => {\r\n this.isPopupVisible = false;\r\n this.markForCheck();\r\n };\r\n value.position = 'bottom left';\r\n this.popup.show(value, this.src.nativeElement);\r\n this.isPopupVisible = true;\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n\r\n public onIconClick(event): void {\r\n if (this.hasValue) {\r\n this.setValue(null);\r\n if (!this.isActivePopup)\r\n this.input.nativeElement.focus();\r\n } else {\r\n const propertyMetadata = this.propertyMetadata || (this.col ? this.col.PropertyMetadata : null);\r\n if (this.objectList && this.objectList.isSelected && (propertyMetadata || this.col)) {\r\n const currentSelection = this.objectList.getSelectedObjects().lastOrDefault();\r\n if (isNotEmpty(currentSelection)) {\r\n let filterValue = undefined;\r\n if (this.col) {\r\n filterValue = ifEmpty(this.col.getValue(currentSelection), this.col.getText(currentSelection));\r\n }\r\n else if (propertyMetadata) {\r\n filterValue = currentSelection[propertyMetadata.Name];\r\n }\r\n if (isNotEmpty(filterValue)) {\r\n if (this.type === 'datetime') {\r\n filterValue = moment(filterValue);\r\n if (filterValue.isValid) {\r\n this.setValue({ from: filterValue, to: filterValue });\r\n }\r\n }\r\n else if (typeof filterValue === 'object') {\r\n if (this.col) {\r\n filterValue = this.col.getText(currentSelection);\r\n }\r\n if (typeof filterValue === 'object' && propertyMetadata) {\r\n filterValue = ussExpression(filterValue, propertyMetadata);\r\n }\r\n if (typeof filterValue !== 'object') {\r\n this.setValue(filterValue);\r\n }\r\n } else {\r\n this.setValue(filterValue);\r\n }\r\n }\r\n }\r\n }\r\n if (this.type === 'float' ||\r\n this.type === 'integer' ||\r\n this.type === 'object'\r\n //|| this.type === 'datetime'\r\n ||\r\n this.type === 'string') {\r\n this.input.nativeElement.focus();\r\n } else {\r\n //this.togglePopup();\r\n }\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n public onKeyDown(e: KeyboardEvent) {\r\n this.objectList.globalKeyHandler(e, true);\r\n }\r\n\r\n static getLastFrom(period?: TPeriod) {\r\n switch (period) {\r\n case 'lastHour': return moment().subtract(1, 'hour');\r\n case 'lastThreeHours': return moment().subtract(3, 'hour');\r\n case 'today': return moment().startOf('day');\r\n case 'yesterday': return moment().startOf('day').subtract(1, 'day');\r\n default: return moment().subtract(1, 'hour');\r\n }\r\n }\r\n\r\n static getLastTo(period?: TPeriod) {\r\n switch (period) {\r\n case 'lastHour': case 'lastThreeHours': return moment();\r\n case 'today': return moment().startOf('day').add(1, 'day');\r\n case 'yesterday': return moment().startOf('day');\r\n default: return moment();\r\n }\r\n }\r\n\r\n public period: TPeriod = 'lastHour';\r\n public setPeriod(type?: TPeriod) {\r\n this.period = type;\r\n switch (type) {\r\n case 'lastHour':\r\n case 'lastThreeHours':\r\n this.setValue({\r\n from: TableColumnFilterComponent.getLastFrom(type),\r\n to: null\r\n });\r\n break;\r\n case 'today':\r\n case 'yesterday':\r\n this.setValue({\r\n from: TableColumnFilterComponent.getLastFrom(type),\r\n to: TableColumnFilterComponent.getLastTo(type)\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n this.markForCheck();\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/table-column-filter/table-column-filter.component.ts","module.exports = \"
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n Начало\\r\\n \\r\\n\\r\\n Конец\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/table-column-filter/table-column-filter.component.html\n// module id = 2352\n// module chunks = 1","module.exports = \"/* components.module */\\ndiv.uss-component.uss-table-column-filter {\\n position: relative;\\n padding-bottom: 2px;\\n opacity: 0.5;\\n line-height: 22px;\\n border-bottom: 1px solid rgba(0, 0, 0, 0); }\\n div.uss-component.uss-table-column-filter input {\\n width: 100%;\\n border: none;\\n padding: 0 0 0 16px;\\n background-color: transparent;\\n text-overflow: ellipsis; }\\n div.uss-component.uss-table-column-filter input.with-popup {\\n cursor: pointer;\\n background-color: inherit !important; }\\n div.uss-component.uss-table-column-filter input:focus {\\n outline: none; }\\n div.uss-component.uss-table-column-filter i.fa {\\n position: absolute;\\n top: 3px; }\\n div.uss-component.uss-table-column-filter i.fa.fa-remove {\\n cursor: pointer; }\\n div.uss-component.uss-table-column-filter.hasValue {\\n opacity: 0.7; }\\n div.uss-component.uss-table-column-filter.focused {\\n opacity: 1;\\n /*transition: all .6s cubic-bezier(.23,1,.32,1) 0ms;*/ }\\n div.uss-component.uss-table-column-filter:after {\\n content: '';\\n display: block;\\n width: 0;\\n height: 1px;\\n background: rgba(0, 0, 0, 0.5);\\n transition: width .3s; }\\n div.uss-component.uss-table-column-filter.with-popup:after {\\n height: 0; }\\n div.uss-component.uss-table-column-filter.focused:after {\\n width: 100%; }\\n div.uss-component.uss-table-column-filter.disabled {\\n opacity: 0.2; }\\n\\n/deep/ .uss-popover.uss-filter-popup .field label {\\n font-weight: normal; }\\n\\n/deep/ .uss-popover div.popupContent {\\n text-align: left; }\\n /deep/ .uss-popover div.popupContent .sel-periods {\\n display: flex; }\\n /deep/ .uss-popover div.popupContent .sel-periods uss-button button {\\n font-size: 75% !important; }\\n /deep/ .uss-popover div.popupContent .popup-action-button {\\n display: flex;\\n justify-content: right; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/table-column-filter/table-column-filter.component.scss\n// module id = 2353\n// module chunks = 1","module.exports = \"\\r\\n\\r\\n\\r\\n {{$item.caption}}\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n 0 || $item.hasGrandChildren\\\" class=\\\"caret icon\\\" [ngClass]=\\\"{'right': !$item.expanded, 'down': $item.expanded, 'space': !$item.children.length}\\\" (click)=\\\"$item.children && ($item.expanded=!$item.expanded)\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/tree-list/tree-list.component.html\n// module id = 2354\n// module chunks = 1","module.exports = \"/* components.module */\\nuss-tree-list .list .item {\\n display: flex; }\\n uss-tree-list .list .item i.icon {\\n padding-top: 0.3em !important; }\\n uss-tree-list .list .item i.icon:before {\\n display: inline-block;\\n width: 10px; }\\n uss-tree-list .list .item i.icon.space:before {\\n content: \\\" \\\" !important; }\\n uss-tree-list .list .item .content {\\n padding: 0 !important;\\n width: 100%; }\\n uss-tree-list .list .item .content .header > * {\\n cursor: pointer;\\n padding: 6px 4px;\\n width: 100%;\\n display: inline-block;\\n font-weight: normal; }\\n uss-tree-list .list .item .content .multi-item .multi-item-caption {\\n width: 100%;\\n display: inline-block;\\n margin: -2px 0; }\\n uss-tree-list .list .item .content .single-item {\\n background-color: white; }\\n uss-tree-list .list .item .content .single-item:hover {\\n background-color: #c5e7ee; }\\n uss-tree-list .list .item .content .single-item.selected {\\n background-color: #1689a0;\\n color: white; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/tree-list/tree-list.component.scss\n// module id = 2355\n// module chunks = 1","import * as ng from '@angular/core';\r\nimport { UssComponent2 } from '../common/base.component';\r\nimport { SystemComponent } from '../../internals';\r\nimport { bool } from '@core.module';\r\nimport { UssTreeListComponent } from '../tree-list/tree-list.component';\r\nimport { UssPopoverComponent } from '../popover/popover.component';\r\n\r\n@ng.Component({\r\n selector: 'uss-tree-list-select',\r\n template: require('./tree-list-select.component.html'),\r\n styles: [require('./tree-list-select.component.scss')],\r\n encapsulation: ng.ViewEncapsulation.None,\r\n changeDetection: ng.ChangeDetectionStrategy.OnPush\r\n})\r\n@SystemComponent()\r\nexport class UssTreeListSelectComponent extends UssComponent2 implements ng.OnInit, ng.AfterViewInit {\r\n\r\n @ng.Input('class') class: string = '';\r\n\r\n @ng.Input('placeholder') placeholder: string = '';\r\n\r\n @ng.Input('tabindex') tabindex: number;\r\n\r\n @ng.Input('maxHeight') maxHeight: number | string = 250;\r\n @ng.Input('maxWidth') maxWidth: number | string;\r\n @ng.Input('disabled') disabled: boolean = false;\r\n @ng.Input('showClear') showClear: boolean = true;\r\n @ng.Input('readonly') readonly: boolean = false;\r\n \r\n @ng.ContentChild(UssTreeListComponent) treeList: UssTreeListComponent;\r\n\r\n @ng.ViewChild(UssPopoverComponent) popover: UssPopoverComponent;\r\n\r\n public displayText: string = '';\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.disabled = bool(this.disabled);\r\n this.showClear = bool(this.showClear);\r\n\r\n if (this.treeList) {\r\n this.treeList.onLoaded.subscribe(() => this.updateDisplayText());\r\n this.treeList.onSelected.subscribe(e => {\r\n this.updateDisplayText();\r\n if (e.needClose) {\r\n this.popover.hide();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n if (this.treeList) {\r\n this.updateDisplayText();\r\n }\r\n }\r\n\r\n public clearValue(e: Event) {\r\n this.treeList.setSelection(null);\r\n this.popover.hide();\r\n e.stopPropagation();\r\n }\r\n\r\n public show(target) {\r\n !this.disabled && this.popover.show({ position: 'bottom right', distanceAway: -11 }, target);\r\n }\r\n\r\n updateDisplayText() {\r\n if (this.treeList) {\r\n const captions = this.treeList.selectedCaptions;\r\n this.displayText = typeof captions === 'string' ? captions : captions.join(', ');\r\n this.markForCheck();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/tree-list-select/tree-list-select.component.ts","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/tree-list-select/tree-list-select.component.html\n// module id = 2357\n// module chunks = 1","module.exports = \"/* components.module */\\n.uss-tree-list-select.uss-popover.ui.popup {\\n box-shadow: none !important;\\n overflow-y: auto; }\\n .uss-tree-list-select.uss-popover.ui.popup.bottom {\\n border-top-left-radius: 0 !important;\\n border-top-right-radius: 0 !important;\\n border-top-color: #d3d3d33d; }\\n .uss-tree-list-select.uss-popover.ui.popup.top {\\n border-bottom-left-radius: 0 !important;\\n border-bottom-right-radius: 0 !important;\\n border-bottom-color: #d3d3d33d; }\\n .uss-tree-list-select.uss-popover.ui.popup:before {\\n display: none !important; }\\n\\nuss-tree-list-select input.focused {\\n border-color: #40aec5 !important;\\n border-bottom-left-radius: 0 !important;\\n border-bottom-right-radius: 0 !important; }\\n\\nuss-tree-list-select input:not(.readonly) {\\n cursor: pointer;\\n background-color: white !important; }\\n\\ndiv.uss-popover.uss-tree-list-select {\\n background-color: white !important; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/tree-list-select/tree-list-select.component.scss\n// module id = 2358\n// module chunks = 1","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{successfulLoading || 'UPLOAD_COMPONENT.SELECT_FILE|Выберите файл' | translate}} \\r\\n {{fileSize}}\\r\\n
\\r\\n
\\r\\n
{{progressValue}}%
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && progressValue < 100\\\">\\r\\n {{progressValue}}%\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/upload/upload.component.html\n// module id = 2359\n// module chunks = 1","module.exports = \"uss-upload {\\n display: inline-block; }\\n uss-upload .uss-upload-container {\\n position: relative;\\n margin-top: 0;\\n width: 100%;\\n height: 100%;\\n cursor: pointer;\\n background-color: white;\\n border: 1px solid rgba(34, 36, 38, 0.15); }\\n uss-upload .uss-upload-container .img-wrapper {\\n width: 100%;\\n height: 100%;\\n text-align: center; }\\n uss-upload .uss-upload-container .image {\\n text-align: center;\\n padding: 6px;\\n width: 100%;\\n height: 100%;\\n display: flex; }\\n uss-upload .uss-upload-container .image .img {\\n width: 100%;\\n height: 100%;\\n background-position: center;\\n background-size: contain;\\n background-repeat: no-repeat;\\n display: inline-block; }\\n uss-upload .uss-upload-container .image .img.no-image {\\n width: 112px;\\n height: 88px;\\n margin: auto; }\\n uss-upload .uss-upload-container .progress {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0; }\\n uss-upload .uss-upload-container .progress-num {\\n position: absolute;\\n top: 0;\\n right: 0;\\n font-size: 1.2em;\\n font-weight: bold;\\n padding: 5px;\\n color: #fff;\\n text-shadow: -1px 0 #000, 0 1px #000, 1px 0 #000, 0 -1px #000; }\\n uss-upload .uss-upload-container .clear-btn {\\n position: absolute;\\n top: 0;\\n right: 0;\\n font-size: 1.2em;\\n font-weight: bold;\\n padding: 5px;\\n color: red; }\\n uss-upload .uss-upload-ctrl {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: flex-start; }\\n uss-upload .uss-upload-ctrl .upload-file-title {\\n margin-left: 8px; }\\n uss-upload div.small {\\n font-size: 10px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/upload/upload.component.scss\n// module id = 2360\n// module chunks = 1","/*\r\n Angular\r\n*/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/*\r\n 3rd party\r\n*/\r\nimport { ResizableModule } from 'angular-resizable-element';\r\n\r\nimport { ButtonModule } from 'primeng/components/button/button';\r\nimport { DataTableModule } from 'primeng/components/datatable/datatable';\r\nimport { InputTextModule } from 'primeng/components/inputtext/inputtext';\r\nimport { ProgressBarModule } from 'primeng/components/progressbar/progressbar';\r\nimport { FileUploadModule } from 'primeng/components/fileupload/fileupload';\r\nimport { DialogModule } from 'primeng/components/dialog/dialog';\r\n/*\r\n Components\r\n*/\r\nimport { UssCoreModule } from '../core.module';\r\nimport { UssMetadataModule } from '../metadata.module';\r\nimport { UssTranslateModule } from '../translate.module';\r\nimport { UssDialogsModule } from '../dialogs.module';\r\nimport { systemComponents, systemServices } from './internals';\r\nimport { API_SERVICE_QUESTION_HANDLER_TOKEN } from '../core.module/interfaces/core-interface.tokens';\r\nimport { UssDialogsApiQuestionHandler } from './components/dialogs/api-question/api-question.handler';\r\n\r\n@NgModule({\r\n declarations: [systemComponents],\r\n exports: [systemComponents],\r\n imports: [\r\n ResizableModule,\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n ButtonModule, DataTableModule, InputTextModule, ProgressBarModule, FileUploadModule,\r\n DialogModule,\r\n UssCoreModule,\r\n UssMetadataModule,\r\n UssDialogsModule,\r\n UssTranslateModule.forChild()\r\n ],\r\n providers: [\r\n systemServices,\r\n { provide: API_SERVICE_QUESTION_HANDLER_TOKEN, useClass: UssDialogsApiQuestionHandler }\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class UssComponentsModule { }\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components.module.ts","var __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * @license Angular v4.1.0\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\nimport { AUTO_STYLE, NoopAnimationPlayer, sequence, style, ɵAnimationGroupPlayer } from '@angular/animations';\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @experimental\n */\nvar NoopAnimationDriver = (function () {\n function NoopAnimationDriver() {\n }\n NoopAnimationDriver.prototype.animate = function (element, keyframes, duration, delay, easing, previousPlayers) {\n if (previousPlayers === void 0) { previousPlayers = []; }\n return new NoopAnimationPlayer();\n };\n return NoopAnimationDriver;\n}());\n/**\n * @experimental\n */\nvar AnimationDriver = (function () {\n function AnimationDriver() {\n }\n return AnimationDriver;\n}());\nAnimationDriver.NOOP = new NoopAnimationDriver();\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @abstract\n */\nvar AnimationEngine = (function () {\n function AnimationEngine() {\n }\n /**\n * @abstract\n * @param {?} trigger\n * @param {?=} name\n * @return {?}\n */\n AnimationEngine.prototype.registerTrigger = function (trigger, name) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n AnimationEngine.prototype.onInsert = function (element, domFn) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n AnimationEngine.prototype.onRemove = function (element, domFn) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n AnimationEngine.prototype.setProperty = function (element, property, value) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} eventName\n * @param {?} eventPhase\n * @param {?} callback\n * @return {?}\n */\n AnimationEngine.prototype.listen = function (element, eventName, eventPhase, callback) { };\n /**\n * @abstract\n * @return {?}\n */\n AnimationEngine.prototype.flush = function () { };\n Object.defineProperty(AnimationEngine.prototype, \"activePlayers\", {\n /**\n * @return {?}\n */\n get: function () { throw new Error('...'); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AnimationEngine.prototype, \"queuedPlayers\", {\n /**\n * @return {?}\n */\n get: function () { throw new Error('...'); },\n enumerable: true,\n configurable: true\n });\n return AnimationEngine;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ONE_SECOND = 1000;\n/**\n * @param {?} exp\n * @param {?} errors\n * @return {?}\n */\nfunction parseTimeExpression(exp, errors) {\n var /** @type {?} */ regex = /^([\\.\\d]+)(m?s)(?:\\s+([\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n var /** @type {?} */ duration;\n var /** @type {?} */ delay = 0;\n var /** @type {?} */ easing = null;\n if (typeof exp === 'string') {\n var /** @type {?} */ matches = exp.match(regex);\n if (matches === null) {\n errors.push(\"The provided timing value \\\"\" + exp + \"\\\" is invalid.\");\n return { duration: 0, delay: 0, easing: null };\n }\n var /** @type {?} */ durationMatch = parseFloat(matches[1]);\n var /** @type {?} */ durationUnit = matches[2];\n if (durationUnit == 's') {\n durationMatch *= ONE_SECOND;\n }\n duration = Math.floor(durationMatch);\n var /** @type {?} */ delayMatch = matches[3];\n var /** @type {?} */ delayUnit = matches[4];\n if (delayMatch != null) {\n var /** @type {?} */ delayVal = parseFloat(delayMatch);\n if (delayUnit != null && delayUnit == 's') {\n delayVal *= ONE_SECOND;\n }\n delay = Math.floor(delayVal);\n }\n var /** @type {?} */ easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = (exp);\n }\n return { duration: duration, delay: delay, easing: easing };\n}\n/**\n * @param {?} styles\n * @return {?}\n */\nfunction normalizeStyles(styles) {\n var /** @type {?} */ normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(function (data) { return copyStyles(data, false, normalizedStyles); });\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\n/**\n * @param {?} styles\n * @param {?} readPrototype\n * @param {?=} destination\n * @return {?}\n */\nfunction copyStyles(styles, readPrototype, destination) {\n if (destination === void 0) { destination = {}; }\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (var /** @type {?} */ prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n Object.keys(styles).forEach(function (prop) { return destination[prop] = styles[prop]; });\n }\n return destination;\n}\n/**\n * @param {?} element\n * @param {?} styles\n * @return {?}\n */\nfunction setStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(function (prop) { return element.style[prop] = styles[prop]; });\n }\n}\n/**\n * @param {?} element\n * @param {?} styles\n * @return {?}\n */\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(function (prop) {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n element.style[prop] = '';\n });\n }\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} visitor\n * @param {?} node\n * @param {?} context\n * @return {?}\n */\nfunction visitAnimationNode(visitor, node, context) {\n switch (node.type) {\n case 0 /* State */:\n return visitor.visitState(/** @type {?} */ (node), context);\n case 1 /* Transition */:\n return visitor.visitTransition(/** @type {?} */ (node), context);\n case 2 /* Sequence */:\n return visitor.visitSequence(/** @type {?} */ (node), context);\n case 3 /* Group */:\n return visitor.visitGroup(/** @type {?} */ (node), context);\n case 4 /* Animate */:\n return visitor.visitAnimate(/** @type {?} */ (node), context);\n case 5 /* KeyframeSequence */:\n return visitor.visitKeyframeSequence(/** @type {?} */ (node), context);\n case 6 /* Style */:\n return visitor.visitStyle(/** @type {?} */ (node), context);\n default:\n throw new Error(\"Unable to resolve animation metadata node #\" + node.type);\n }\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ANY_STATE = '*';\n/**\n * @param {?} transitionValue\n * @param {?} errors\n * @return {?}\n */\nfunction parseTransitionExpr(transitionValue, errors) {\n var /** @type {?} */ expressions = [];\n if (typeof transitionValue == 'string') {\n ((transitionValue))\n .split(/\\s*,\\s*/)\n .forEach(function (str) { return parseInnerTransitionStr(str, expressions, errors); });\n }\n else {\n expressions.push(/** @type {?} */ (transitionValue));\n }\n return expressions;\n}\n/**\n * @param {?} eventStr\n * @param {?} expressions\n * @param {?} errors\n * @return {?}\n */\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n eventStr = parseAnimationAlias(eventStr, errors);\n }\n var /** @type {?} */ match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(\"The provided transition expression \\\"\" + eventStr + \"\\\" is not supported\");\n return expressions;\n }\n var /** @type {?} */ fromState = match[1];\n var /** @type {?} */ separator = match[2];\n var /** @type {?} */ toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n var /** @type {?} */ isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\n/**\n * @param {?} alias\n * @param {?} errors\n * @return {?}\n */\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n default:\n errors.push(\"The transition alias value \\\"\" + alias + \"\\\" is not supported\");\n return '* => *';\n }\n}\n/**\n * @param {?} lhs\n * @param {?} rhs\n * @return {?}\n */\nfunction makeLambdaFromStates(lhs, rhs) {\n return function (fromState, toState) {\n var /** @type {?} */ lhsMatch = lhs == ANY_STATE || lhs == fromState;\n var /** @type {?} */ rhsMatch = rhs == ANY_STATE || rhs == toState;\n return lhsMatch && rhsMatch;\n };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @return {?}\n */\nfunction createTimelineInstruction(keyframes, duration, delay, easing) {\n return {\n type: 1 /* TimelineAnimation */,\n keyframes: keyframes,\n duration: duration,\n delay: delay,\n totalTime: duration + delay, easing: easing\n };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} ast\n * @param {?=} startingStyles\n * @param {?=} finalStyles\n * @return {?}\n */\nfunction buildAnimationKeyframes(ast, startingStyles, finalStyles) {\n if (startingStyles === void 0) { startingStyles = {}; }\n if (finalStyles === void 0) { finalStyles = {}; }\n var /** @type {?} */ normalizedAst = Array.isArray(ast) ? sequence(/** @type {?} */ (ast)) : (ast);\n return new AnimationTimelineVisitor().buildKeyframes(normalizedAst, startingStyles, finalStyles);\n}\nvar AnimationTimelineContext = (function () {\n /**\n * @param {?} errors\n * @param {?} timelines\n * @param {?=} initialTimeline\n */\n function AnimationTimelineContext(errors, timelines, initialTimeline) {\n this.errors = errors;\n this.timelines = timelines;\n this.previousNode = ({});\n this.subContextCount = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(0);\n timelines.push(this.currentTimeline);\n }\n /**\n * @return {?}\n */\n AnimationTimelineContext.prototype.createSubContext = function () {\n var /** @type {?} */ context = new AnimationTimelineContext(this.errors, this.timelines, this.currentTimeline.fork());\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n this.subContextCount++;\n return context;\n };\n /**\n * @param {?=} newTime\n * @return {?}\n */\n AnimationTimelineContext.prototype.transformIntoNewTimeline = function (newTime) {\n if (newTime === void 0) { newTime = 0; }\n this.currentTimeline = this.currentTimeline.fork(newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n };\n /**\n * @param {?} time\n * @return {?}\n */\n AnimationTimelineContext.prototype.incrementTime = function (time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n };\n return AnimationTimelineContext;\n}());\nvar AnimationTimelineVisitor = (function () {\n function AnimationTimelineVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} startingStyles\n * @param {?} finalStyles\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.buildKeyframes = function (ast, startingStyles, finalStyles) {\n var /** @type {?} */ context = new AnimationTimelineContext([], []);\n context.currentTimeline.setStyles(startingStyles);\n visitAnimationNode(this, ast, context);\n // this checks to see if an actual animation happened\n var /** @type {?} */ timelines = context.timelines.filter(function (timeline) { return timeline.hasStyling(); });\n if (timelines.length && Object.keys(finalStyles).length) {\n var /** @type {?} */ tl = timelines[timelines.length - 1];\n if (!tl.allowOnlyTimelineStyles()) {\n tl.setStyles(finalStyles);\n }\n }\n return timelines.length ? timelines.map(function (timeline) { return timeline.buildKeyframes(); }) :\n [createTimelineInstruction([], 0, 0, '')];\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitState = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitTransition = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitSequence = function (ast, context) {\n var _this = this;\n var /** @type {?} */ subContextCount = context.subContextCount;\n if (context.previousNode.type == 6 /* Style */) {\n context.currentTimeline.forwardFrame();\n context.currentTimeline.snapshotCurrentStyles();\n }\n ast.steps.forEach(function (s) { return visitAnimationNode(_this, s, context); });\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (context.subContextCount > subContextCount) {\n context.transformIntoNewTimeline();\n }\n context.previousNode = ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitGroup = function (ast, context) {\n var _this = this;\n var /** @type {?} */ innerTimelines = [];\n var /** @type {?} */ furthestTime = context.currentTimeline.currentTime;\n ast.steps.forEach(function (s) {\n var /** @type {?} */ innerContext = context.createSubContext();\n visitAnimationNode(_this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(function (timeline) { return context.currentTimeline.mergeTimelineCollectedStyles(timeline); });\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitAnimate = function (ast, context) {\n var /** @type {?} */ timings = ast.timings.hasOwnProperty('duration') ? (ast.timings) :\n parseTimeExpression(/** @type {?} */ (ast.timings), context.errors);\n context.currentAnimateTimings = timings;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n context.currentTimeline.snapshotCurrentStyles();\n }\n var /** @type {?} */ astType = ast.styles ? ast.styles.type : -1;\n if (astType == 5 /* KeyframeSequence */) {\n this.visitKeyframeSequence(/** @type {?} */ (ast.styles), context);\n }\n else {\n var /** @type {?} */ styleAst = (ast.styles);\n if (!styleAst) {\n var /** @type {?} */ newStyleData = {};\n if (timings.easing) {\n newStyleData['easing'] = timings.easing;\n }\n styleAst = style(newStyleData);\n ((styleAst))['treatAsEmptyStep'] = true;\n }\n context.incrementTime(timings.duration);\n if (styleAst) {\n this.visitStyle(styleAst, context);\n }\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitStyle = function (ast, context) {\n // this is a special case when a style() call is issued directly after\n // a call to animate(). If the clock is not forwarded by one frame then\n // the style() calls will be merged into the previous animate() call\n // which is incorrect.\n if (!context.currentAnimateTimings &&\n context.previousNode.type == 4 /* Animate */) {\n context.currentTimeline.forwardFrame();\n }\n var /** @type {?} */ normalizedStyles = normalizeStyles(ast.styles);\n var /** @type {?} */ easing = context.currentAnimateTimings && context.currentAnimateTimings.easing;\n this._applyStyles(normalizedStyles, easing, ((ast))['treatAsEmptyStep'] ? true : false, context);\n context.previousNode = ast;\n };\n /**\n * @param {?} styles\n * @param {?} easing\n * @param {?} treatAsEmptyStep\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype._applyStyles = function (styles, easing, treatAsEmptyStep, context) {\n if (styles.hasOwnProperty('easing')) {\n easing = easing || (styles['easing']);\n delete styles['easing'];\n }\n context.currentTimeline.setStyles(styles, easing, treatAsEmptyStep);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTimelineVisitor.prototype.visitKeyframeSequence = function (ast, context) {\n var _this = this;\n var /** @type {?} */ MAX_KEYFRAME_OFFSET = 1;\n var /** @type {?} */ limit = ast.steps.length - 1;\n var /** @type {?} */ firstKeyframe = ast.steps[0];\n var /** @type {?} */ offsetGap = 0;\n var /** @type {?} */ containsOffsets = getOffset(firstKeyframe) != null;\n if (!containsOffsets) {\n offsetGap = MAX_KEYFRAME_OFFSET / limit;\n }\n var /** @type {?} */ startTime = context.currentTimeline.duration;\n var /** @type {?} */ duration = ((context.currentAnimateTimings)).duration;\n var /** @type {?} */ innerContext = context.createSubContext();\n var /** @type {?} */ innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = ((context.currentAnimateTimings)).easing;\n ast.steps.forEach(function (step, i) {\n var /** @type {?} */ normalizedStyles = normalizeStyles(step.styles);\n var /** @type {?} */ offset = containsOffsets ?\n (step.offset != null ? step.offset : parseFloat(/** @type {?} */ (normalizedStyles['offset']))) :\n (i == limit ? MAX_KEYFRAME_OFFSET : i * offsetGap);\n innerTimeline.forwardTime(offset * duration);\n _this._applyStyles(normalizedStyles, null, false, innerContext);\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n };\n return AnimationTimelineVisitor;\n}());\nvar TimelineBuilder = (function () {\n /**\n * @param {?} startTime\n * @param {?=} globalTimelineStyles\n */\n function TimelineBuilder(startTime, globalTimelineStyles) {\n this.startTime = startTime;\n this.duration = 0;\n this.easing = '';\n this._previousKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles =\n globalTimelineStyles ? globalTimelineStyles : this._localTimelineStyles;\n this._loadKeyframe();\n }\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.hasStyling = function () { return this._keyframes.size > 1; };\n Object.defineProperty(TimelineBuilder.prototype, \"currentTime\", {\n /**\n * @return {?}\n */\n get: function () { return this.startTime + this.duration; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?=} currentTime\n * @return {?}\n */\n TimelineBuilder.prototype.fork = function (currentTime) {\n if (currentTime === void 0) { currentTime = 0; }\n return new TimelineBuilder(currentTime || this.currentTime, this._globalTimelineStyles);\n };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype._loadKeyframe = function () {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = ((this._keyframes.get(this.duration)));\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.forwardFrame = function () {\n this.duration++;\n this._loadKeyframe();\n };\n /**\n * @param {?} time\n * @return {?}\n */\n TimelineBuilder.prototype.forwardTime = function (time) {\n this.duration = time;\n this._loadKeyframe();\n };\n /**\n * @param {?} prop\n * @param {?} value\n * @return {?}\n */\n TimelineBuilder.prototype._updateStyle = function (prop, value) {\n this._localTimelineStyles[prop] = value; /** @type {?} */\n ((this._globalTimelineStyles))[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value: value };\n };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.allowOnlyTimelineStyles = function () { return this._currentEmptyStepKeyframe !== this._currentKeyframe; };\n /**\n * @param {?} styles\n * @param {?=} easing\n * @param {?=} treatAsEmptyStep\n * @return {?}\n */\n TimelineBuilder.prototype.setStyles = function (styles, easing, treatAsEmptyStep) {\n var _this = this;\n if (easing === void 0) { easing = null; }\n if (treatAsEmptyStep === void 0) { treatAsEmptyStep = false; }\n if (easing) {\n ((this._previousKeyframe))['easing'] = easing;\n }\n if (treatAsEmptyStep) {\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(function (prop) {\n _this._backFill[prop] = _this._globalTimelineStyles[prop] || AUTO_STYLE;\n _this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n else {\n Object.keys(styles).forEach(function (prop) {\n if (prop !== 'offset') {\n var /** @type {?} */ val = styles[prop];\n _this._currentKeyframe[prop] = val;\n if (!_this._localTimelineStyles[prop]) {\n _this._backFill[prop] = _this._globalTimelineStyles[prop] || AUTO_STYLE;\n }\n _this._updateStyle(prop, val);\n }\n });\n Object.keys(this._localTimelineStyles).forEach(function (prop) {\n if (!_this._currentKeyframe.hasOwnProperty(prop)) {\n _this._currentKeyframe[prop] = _this._localTimelineStyles[prop];\n }\n });\n }\n };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.snapshotCurrentStyles = function () { copyStyles(this._localTimelineStyles, false, this._currentKeyframe); };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.getFinalKeyframe = function () { return ((this._keyframes.get(this.duration))); };\n Object.defineProperty(TimelineBuilder.prototype, \"properties\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ properties = [];\n for (var /** @type {?} */ prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} timeline\n * @return {?}\n */\n TimelineBuilder.prototype.mergeTimelineCollectedStyles = function (timeline) {\n var _this = this;\n Object.keys(timeline._styleSummary).forEach(function (prop) {\n var /** @type {?} */ details0 = _this._styleSummary[prop];\n var /** @type {?} */ details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n _this._updateStyle(prop, details1.value);\n }\n });\n };\n /**\n * @return {?}\n */\n TimelineBuilder.prototype.buildKeyframes = function () {\n var _this = this;\n var /** @type {?} */ finalKeyframes = [];\n // special case for when there are only start/destination\n // styles but no actual animation animate steps...\n if (this.duration == 0) {\n var /** @type {?} */ targetKeyframe = this.getFinalKeyframe();\n var /** @type {?} */ firstKeyframe = copyStyles(targetKeyframe, true);\n firstKeyframe['offset'] = 0;\n finalKeyframes.push(firstKeyframe);\n var /** @type {?} */ lastKeyframe = copyStyles(targetKeyframe, true);\n lastKeyframe['offset'] = 1;\n finalKeyframes.push(lastKeyframe);\n }\n else {\n this._keyframes.forEach(function (keyframe, time) {\n var /** @type {?} */ finalKeyframe = copyStyles(keyframe, true);\n finalKeyframe['offset'] = time / _this.duration;\n finalKeyframes.push(finalKeyframe);\n });\n }\n return createTimelineInstruction(finalKeyframes, this.duration, this.startTime, this.easing);\n };\n return TimelineBuilder;\n}());\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction getOffset(ast) {\n var /** @type {?} */ offset = ast.offset;\n if (offset == null) {\n var /** @type {?} */ styles = ast.styles;\n if (Array.isArray(styles)) {\n for (var /** @type {?} */ i = 0; i < styles.length; i++) {\n var /** @type {?} */ o = (styles[i]['offset']);\n if (o != null) {\n offset = o;\n break;\n }\n }\n }\n else {\n offset = (styles['offset']);\n }\n }\n return ((offset));\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} triggerName\n * @param {?} fromState\n * @param {?} toState\n * @param {?} isRemovalTransition\n * @param {?} fromStyles\n * @param {?} toStyles\n * @param {?} timelines\n * @return {?}\n */\nfunction createTransitionInstruction(triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines) {\n return {\n type: 0 /* TransitionAnimation */,\n triggerName: triggerName,\n isRemovalTransition: isRemovalTransition,\n fromState: fromState,\n fromStyles: fromStyles,\n toState: toState,\n toStyles: toStyles,\n timelines: timelines\n };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar AnimationTransitionFactory = (function () {\n /**\n * @param {?} _triggerName\n * @param {?} ast\n * @param {?} matchFns\n * @param {?} _stateStyles\n */\n function AnimationTransitionFactory(_triggerName, ast, matchFns, _stateStyles) {\n this._triggerName = _triggerName;\n this.matchFns = matchFns;\n this._stateStyles = _stateStyles;\n var normalizedAst = Array.isArray(ast.animation) ?\n sequence(ast.animation) :\n ast.animation;\n this._animationAst = normalizedAst;\n }\n /**\n * @param {?} currentState\n * @param {?} nextState\n * @return {?}\n */\n AnimationTransitionFactory.prototype.match = function (currentState, nextState) {\n if (!oneOrMoreTransitionsMatch(this.matchFns, currentState, nextState))\n return;\n var /** @type {?} */ backupStateStyles = this._stateStyles['*'] || {};\n var /** @type {?} */ currentStateStyles = this._stateStyles[currentState] || backupStateStyles;\n var /** @type {?} */ nextStateStyles = this._stateStyles[nextState] || backupStateStyles;\n var /** @type {?} */ timelines = buildAnimationKeyframes(this._animationAst, currentStateStyles, nextStateStyles);\n return createTransitionInstruction(this._triggerName, currentState, nextState, nextState === 'void', currentStateStyles, nextStateStyles, timelines);\n };\n return AnimationTransitionFactory;\n}());\n/**\n * @param {?} matchFns\n * @param {?} currentState\n * @param {?} nextState\n * @return {?}\n */\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState) {\n return matchFns.some(function (fn) { return fn(currentState, nextState); });\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction validateAnimationSequence(ast) {\n var /** @type {?} */ normalizedAst = Array.isArray(ast) ? sequence(/** @type {?} */ (ast)) : (ast);\n return new AnimationValidatorVisitor().validate(normalizedAst);\n}\nvar AnimationValidatorVisitor = (function () {\n function AnimationValidatorVisitor() {\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.validate = function (ast) {\n var /** @type {?} */ context = new AnimationValidatorContext();\n visitAnimationNode(this, ast, context);\n return context.errors;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitState = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitTransition = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitSequence = function (ast, context) {\n var _this = this;\n ast.steps.forEach(function (step) { return visitAnimationNode(_this, step, context); });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitGroup = function (ast, context) {\n var _this = this;\n var /** @type {?} */ currentTime = context.currentTime;\n var /** @type {?} */ furthestTime = 0;\n ast.steps.forEach(function (step) {\n context.currentTime = currentTime;\n visitAnimationNode(_this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n });\n context.currentTime = furthestTime;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitAnimate = function (ast, context) {\n // we reassign the timings here so that they are not reparsed each\n // time an animation occurs\n context.currentAnimateTimings = ast.timings =\n parseTimeExpression(/** @type {?} */ (ast.timings), context.errors);\n var /** @type {?} */ astType = ast.styles && ast.styles.type;\n if (astType == 5 /* KeyframeSequence */) {\n this.visitKeyframeSequence(/** @type {?} */ (ast.styles), context);\n }\n else {\n context.currentTime +=\n context.currentAnimateTimings.duration + context.currentAnimateTimings.delay;\n if (astType == 6 /* Style */) {\n this.visitStyle(/** @type {?} */ (ast.styles), context);\n }\n }\n context.currentAnimateTimings = null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitStyle = function (ast, context) {\n var /** @type {?} */ styleData = normalizeStyles(ast.styles);\n var /** @type {?} */ timings = context.currentAnimateTimings;\n var /** @type {?} */ endTime = context.currentTime;\n var /** @type {?} */ startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n Object.keys(styleData).forEach(function (prop) {\n var /** @type {?} */ collectedEntry = context.collectedStyles[prop];\n var /** @type {?} */ updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(\"The CSS property \\\"\" + prop + \"\\\" that exists between the times of \\\"\" + collectedEntry.startTime + \"ms\\\" and \\\"\" + collectedEntry.endTime + \"ms\\\" is also being animated in a parallel animation between the times of \\\"\" + startTime + \"ms\\\" and \\\"\" + endTime + \"ms\\\"\");\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n context.collectedStyles[prop] = { startTime: startTime, endTime: endTime };\n }\n });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationValidatorVisitor.prototype.visitKeyframeSequence = function (ast, context) {\n var _this = this;\n var /** @type {?} */ totalKeyframesWithOffsets = 0;\n var /** @type {?} */ offsets = [];\n var /** @type {?} */ offsetsOutOfOrder = false;\n var /** @type {?} */ keyframesOutOfRange = false;\n var /** @type {?} */ previousOffset = 0;\n ast.steps.forEach(function (step) {\n var /** @type {?} */ styleData = normalizeStyles(step.styles);\n var /** @type {?} */ offset = 0;\n if (styleData.hasOwnProperty('offset')) {\n totalKeyframesWithOffsets++;\n offset = (styleData['offset']);\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n });\n if (keyframesOutOfRange) {\n context.errors.push(\"Please ensure that all keyframe offsets are between 0 and 1\");\n }\n if (offsetsOutOfOrder) {\n context.errors.push(\"Please ensure that all keyframe offsets are in order\");\n }\n var /** @type {?} */ length = ast.steps.length;\n var /** @type {?} */ generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(\"Not all style() steps within the declared keyframes() contain offsets\");\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = 1 / length;\n }\n var /** @type {?} */ limit = length - 1;\n var /** @type {?} */ currentTime = context.currentTime;\n var /** @type {?} */ animateDuration = ((context.currentAnimateTimings)).duration;\n ast.steps.forEach(function (step, i) {\n var /** @type {?} */ offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n var /** @type {?} */ durationUpToThisFrame = offset * animateDuration;\n context.currentTime =\n currentTime + ((context.currentAnimateTimings)).delay + durationUpToThisFrame; /** @type {?} */\n ((context.currentAnimateTimings)).duration = durationUpToThisFrame;\n _this.visitStyle(step, context);\n });\n };\n return AnimationValidatorVisitor;\n}());\nvar AnimationValidatorContext = (function () {\n function AnimationValidatorContext() {\n this.errors = [];\n this.currentTime = 0;\n this.collectedStyles = {};\n }\n return AnimationValidatorContext;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nfunction buildTrigger(name, definitions) {\n return new AnimationTriggerVisitor().buildTrigger(name, definitions);\n}\n/**\n * \\@experimental Animation support is experimental.\n */\nvar AnimationTrigger = (function () {\n /**\n * @param {?} name\n * @param {?} states\n * @param {?} _transitionAsts\n */\n function AnimationTrigger(name, states, _transitionAsts) {\n var _this = this;\n this.name = name;\n this._transitionAsts = _transitionAsts;\n this.transitionFactories = [];\n this.states = {};\n Object.keys(states).forEach(function (stateName) { _this.states[stateName] = copyStyles(states[stateName], false); });\n var errors = [];\n _transitionAsts.forEach(function (ast) {\n var exprs = parseTransitionExpr(ast.expr, errors);\n var sequenceErrors = validateAnimationSequence(ast);\n if (sequenceErrors.length) {\n errors.push.apply(errors, sequenceErrors);\n }\n else {\n _this.transitionFactories.push(new AnimationTransitionFactory(_this.name, ast, exprs, states));\n }\n });\n if (errors.length) {\n var LINE_START = '\\n - ';\n throw new Error(\"Animation parsing for the \" + name + \" trigger have failed:\" + LINE_START + errors.join(LINE_START));\n }\n }\n /**\n * @param {?} currentState\n * @param {?} nextState\n * @return {?}\n */\n AnimationTrigger.prototype.createFallbackInstruction = function (currentState, nextState) {\n var /** @type {?} */ backupStateStyles = this.states['*'] || {};\n var /** @type {?} */ currentStateStyles = this.states[currentState] || backupStateStyles;\n var /** @type {?} */ nextStateStyles = this.states[nextState] || backupStateStyles;\n return createTransitionInstruction(this.name, currentState, nextState, nextState == 'void', currentStateStyles, nextStateStyles, []);\n };\n /**\n * @param {?} currentState\n * @param {?} nextState\n * @return {?}\n */\n AnimationTrigger.prototype.matchTransition = function (currentState, nextState) {\n for (var /** @type {?} */ i = 0; i < this.transitionFactories.length; i++) {\n var /** @type {?} */ result = this.transitionFactories[i].match(currentState, nextState);\n if (result)\n return result;\n }\n return null;\n };\n return AnimationTrigger;\n}());\nvar AnimationTriggerContext = (function () {\n function AnimationTriggerContext() {\n this.errors = [];\n this.states = {};\n this.transitions = [];\n }\n return AnimationTriggerContext;\n}());\nvar AnimationTriggerVisitor = (function () {\n function AnimationTriggerVisitor() {\n }\n /**\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.buildTrigger = function (name, definitions) {\n var _this = this;\n var /** @type {?} */ context = new AnimationTriggerContext();\n definitions.forEach(function (def) { return visitAnimationNode(_this, def, context); });\n return new AnimationTrigger(name, context.states, context.transitions);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitState = function (ast, context) {\n var /** @type {?} */ styles = normalizeStyles(ast.styles.styles);\n ast.name.split(/\\s*,\\s*/).forEach(function (name) { context.states[name] = styles; });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitTransition = function (ast, context) {\n context.transitions.push(ast);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitSequence = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitGroup = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitAnimate = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitStyle = function (ast, context) {\n // these values are not visited in this AST\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AnimationTriggerVisitor.prototype.visitKeyframeSequence = function (ast, context) {\n // these values are not visited in this AST\n };\n return AnimationTriggerVisitor;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar MARKED_FOR_ANIMATION_CLASSNAME = 'ng-animating';\nvar MARKED_FOR_ANIMATION_SELECTOR = '.ng-animating';\nvar MARKED_FOR_REMOVAL = '$$ngRemove';\nvar VOID_STATE = 'void';\nvar DomAnimationEngine = (function () {\n /**\n * @param {?} _driver\n * @param {?} _normalizer\n */\n function DomAnimationEngine(_driver, _normalizer) {\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._flaggedInserts = new Set();\n this._queuedRemovals = new Map();\n this._queuedTransitionAnimations = [];\n this._activeTransitionAnimations = new Map();\n this._activeElementAnimations = new Map();\n this._elementTriggerStates = new Map();\n this._triggers = Object.create(null);\n this._triggerListeners = new Map();\n this._pendingListenerRemovals = new Map();\n }\n Object.defineProperty(DomAnimationEngine.prototype, \"queuedPlayers\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._queuedTransitionAnimations.map(function (q) { return q.player; });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DomAnimationEngine.prototype, \"activePlayers\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ players = [];\n this._activeElementAnimations.forEach(function (activePlayers) { return players.push.apply(players, activePlayers); });\n return players;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} trigger\n * @param {?=} name\n * @return {?}\n */\n DomAnimationEngine.prototype.registerTrigger = function (trigger, name) {\n name = name || trigger.name;\n if (this._triggers[name]) {\n return;\n }\n this._triggers[name] = buildTrigger(name, trigger.definitions);\n };\n /**\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n DomAnimationEngine.prototype.onInsert = function (element, domFn) {\n if (element['nodeType'] == 1) {\n this._flaggedInserts.add(element);\n }\n domFn();\n };\n /**\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n DomAnimationEngine.prototype.onRemove = function (element, domFn) {\n var _this = this;\n if (element['nodeType'] != 1) {\n domFn();\n return;\n }\n var /** @type {?} */ lookupRef = this._elementTriggerStates.get(element);\n if (lookupRef) {\n var /** @type {?} */ possibleTriggers = Object.keys(lookupRef);\n var /** @type {?} */ hasRemoval = possibleTriggers.some(function (triggerName) {\n var /** @type {?} */ oldValue = ((lookupRef))[triggerName];\n var /** @type {?} */ instruction = _this._triggers[triggerName].matchTransition(oldValue, VOID_STATE);\n return !!instruction;\n });\n if (hasRemoval) {\n element[MARKED_FOR_REMOVAL] = true;\n this._queuedRemovals.set(element, domFn);\n return;\n }\n }\n // this means that there are no animations to take on this\n // leave operation therefore we should fire the done|start callbacks\n if (this._triggerListeners.has(element)) {\n element[MARKED_FOR_REMOVAL] = true;\n this._queuedRemovals.set(element, function () { });\n }\n this._onRemovalTransition(element).forEach(function (player) { return player.destroy(); });\n domFn();\n };\n /**\n * @param {?} element\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n DomAnimationEngine.prototype.setProperty = function (element, property, value) {\n var /** @type {?} */ trigger = this._triggers[property];\n if (!trigger) {\n throw new Error(\"The provided animation trigger \\\"\" + property + \"\\\" has not been registered!\");\n }\n var /** @type {?} */ lookupRef = this._elementTriggerStates.get(element);\n if (!lookupRef) {\n this._elementTriggerStates.set(element, lookupRef = {});\n }\n var /** @type {?} */ oldValue = lookupRef.hasOwnProperty(property) ? lookupRef[property] : VOID_STATE;\n if (oldValue !== value) {\n value = normalizeTriggerValue(value);\n var /** @type {?} */ instruction = trigger.matchTransition(oldValue, value);\n if (!instruction) {\n // we do this to make sure we always have an animation player so\n // that callback operations are properly called\n instruction = trigger.createFallbackInstruction(oldValue, value);\n }\n this.animateTransition(element, instruction);\n lookupRef[property] = value;\n }\n };\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} eventPhase\n * @param {?} callback\n * @return {?}\n */\n DomAnimationEngine.prototype.listen = function (element, eventName, eventPhase, callback) {\n var _this = this;\n if (!eventPhase) {\n throw new Error(\"Unable to listen on the animation trigger \\\"\" + eventName + \"\\\" because the provided event is undefined!\");\n }\n if (!this._triggers[eventName]) {\n throw new Error(\"Unable to listen on the animation trigger event \\\"\" + eventPhase + \"\\\" because the animation trigger \\\"\" + eventName + \"\\\" doesn't exist!\");\n }\n var /** @type {?} */ elementListeners = this._triggerListeners.get(element);\n if (!elementListeners) {\n this._triggerListeners.set(element, elementListeners = []);\n }\n validatePlayerEvent(eventName, eventPhase);\n var /** @type {?} */ tuple = ({ triggerName: eventName, phase: eventPhase, callback: callback });\n elementListeners.push(tuple);\n return function () {\n // this is queued up in the event that a removal animation is set\n // to fire on the element (the listeners need to be set during flush)\n getOrSetAsInMap(_this._pendingListenerRemovals, element, []).push(tuple);\n };\n };\n /**\n * @return {?}\n */\n DomAnimationEngine.prototype._clearPendingListenerRemovals = function () {\n var _this = this;\n this._pendingListenerRemovals.forEach(function (tuples, element) {\n var /** @type {?} */ elementListeners = _this._triggerListeners.get(element);\n if (elementListeners) {\n tuples.forEach(function (tuple) {\n var /** @type {?} */ index = elementListeners.indexOf(tuple);\n if (index >= 0) {\n elementListeners.splice(index, 1);\n }\n });\n }\n });\n this._pendingListenerRemovals.clear();\n };\n /**\n * @param {?} element\n * @return {?}\n */\n DomAnimationEngine.prototype._onRemovalTransition = function (element) {\n // when a parent animation is set to trigger a removal we want to\n // find all of the children that are currently animating and clear\n // them out by destroying each of them.\n var /** @type {?} */ elms = element.querySelectorAll(MARKED_FOR_ANIMATION_SELECTOR);\n var _loop_1 = function (i) {\n var /** @type {?} */ elm = elms[i];\n var /** @type {?} */ activePlayers = this_1._activeElementAnimations.get(elm);\n if (activePlayers) {\n activePlayers.forEach(function (player) { return player.destroy(); });\n }\n var /** @type {?} */ activeTransitions = this_1._activeTransitionAnimations.get(elm);\n if (activeTransitions) {\n Object.keys(activeTransitions).forEach(function (triggerName) {\n var /** @type {?} */ player = activeTransitions[triggerName];\n if (player) {\n player.destroy();\n }\n });\n }\n };\n var this_1 = this;\n for (var /** @type {?} */ i = 0; i < elms.length; i++) {\n _loop_1(/** @type {?} */ i);\n }\n // we make a copy of the array because the actual source array is modified\n // each time a player is finished/destroyed (the forEach loop would fail otherwise)\n return copyArray(/** @type {?} */ ((this._activeElementAnimations.get(element))));\n };\n /**\n * @param {?} element\n * @param {?} instruction\n * @return {?}\n */\n DomAnimationEngine.prototype.animateTransition = function (element, instruction) {\n var _this = this;\n var /** @type {?} */ triggerName = instruction.triggerName;\n var /** @type {?} */ previousPlayers;\n if (instruction.isRemovalTransition) {\n previousPlayers = this._onRemovalTransition(element);\n }\n else {\n previousPlayers = [];\n var /** @type {?} */ existingTransitions = this._activeTransitionAnimations.get(element);\n var /** @type {?} */ existingPlayer = existingTransitions ? existingTransitions[triggerName] : null;\n if (existingPlayer) {\n previousPlayers.push(existingPlayer);\n }\n }\n // it's important to do this step before destroying the players\n // so that the onDone callback below won't fire before this\n eraseStyles(element, instruction.fromStyles);\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n var /** @type {?} */ totalTime = 0;\n var /** @type {?} */ players = instruction.timelines.map(function (timelineInstruction, i) {\n totalTime = Math.max(totalTime, timelineInstruction.totalTime);\n return _this._buildPlayer(element, timelineInstruction, previousPlayers, i);\n });\n previousPlayers.forEach(function (previousPlayer) { return previousPlayer.destroy(); });\n var /** @type {?} */ player = optimizeGroupPlayer(players);\n player.onDone(function () {\n player.destroy();\n var /** @type {?} */ elmTransitionMap = _this._activeTransitionAnimations.get(element);\n if (elmTransitionMap) {\n delete elmTransitionMap[triggerName];\n if (Object.keys(elmTransitionMap).length == 0) {\n _this._activeTransitionAnimations.delete(element);\n }\n }\n deleteFromArrayMap(_this._activeElementAnimations, element, player);\n setStyles(element, instruction.toStyles);\n });\n var /** @type {?} */ elmTransitionMap = getOrSetAsInMap(this._activeTransitionAnimations, element, {});\n elmTransitionMap[triggerName] = player;\n this._queuePlayer(element, triggerName, player, makeAnimationEvent(element, triggerName, instruction.fromState, instruction.toState, null, // this will be filled in during event creation\n totalTime));\n return player;\n };\n /**\n * @param {?} element\n * @param {?} instructions\n * @param {?=} previousPlayers\n * @return {?}\n */\n DomAnimationEngine.prototype.animateTimeline = function (element, instructions, previousPlayers) {\n var _this = this;\n if (previousPlayers === void 0) { previousPlayers = []; }\n var /** @type {?} */ players = instructions.map(function (instruction, i) {\n var /** @type {?} */ player = _this._buildPlayer(element, instruction, previousPlayers, i);\n player.onDestroy(function () { deleteFromArrayMap(_this._activeElementAnimations, element, player); });\n _this._markPlayerAsActive(element, player);\n return player;\n });\n return optimizeGroupPlayer(players);\n };\n /**\n * @param {?} element\n * @param {?} instruction\n * @param {?} previousPlayers\n * @param {?=} index\n * @return {?}\n */\n DomAnimationEngine.prototype._buildPlayer = function (element, instruction, previousPlayers, index) {\n if (index === void 0) { index = 0; }\n // only the very first animation can absorb the previous styles. This\n // is here to prevent the an overlap situation where a group animation\n // absorbs previous styles multiple times for the same element.\n if (index && previousPlayers.length) {\n previousPlayers = [];\n }\n return this._driver.animate(element, this._normalizeKeyframes(instruction.keyframes), instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n };\n /**\n * @param {?} keyframes\n * @return {?}\n */\n DomAnimationEngine.prototype._normalizeKeyframes = function (keyframes) {\n var _this = this;\n var /** @type {?} */ errors = [];\n var /** @type {?} */ normalizedKeyframes = [];\n keyframes.forEach(function (kf) {\n var /** @type {?} */ normalizedKeyframe = {};\n Object.keys(kf).forEach(function (prop) {\n var /** @type {?} */ normalizedProp = prop;\n var /** @type {?} */ normalizedValue = kf[prop];\n if (prop != 'offset') {\n normalizedProp = _this._normalizer.normalizePropertyName(prop, errors);\n normalizedValue =\n _this._normalizer.normalizeStyleValue(prop, normalizedProp, kf[prop], errors);\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n normalizedKeyframes.push(normalizedKeyframe);\n });\n if (errors.length) {\n var /** @type {?} */ LINE_START = '\\n - ';\n throw new Error(\"Unable to animate due to the following errors:\" + LINE_START + errors.join(LINE_START));\n }\n return normalizedKeyframes;\n };\n /**\n * @param {?} element\n * @param {?} player\n * @return {?}\n */\n DomAnimationEngine.prototype._markPlayerAsActive = function (element, player) {\n var /** @type {?} */ elementAnimations = getOrSetAsInMap(this._activeElementAnimations, element, []);\n elementAnimations.push(player);\n };\n /**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} player\n * @param {?} event\n * @return {?}\n */\n DomAnimationEngine.prototype._queuePlayer = function (element, triggerName, player, event) {\n var /** @type {?} */ tuple = ({ element: element, player: player, triggerName: triggerName, event: event });\n this._queuedTransitionAnimations.push(tuple);\n player.init();\n element.classList.add(MARKED_FOR_ANIMATION_CLASSNAME);\n player.onDone(function () { element.classList.remove(MARKED_FOR_ANIMATION_CLASSNAME); });\n };\n /**\n * @return {?}\n */\n DomAnimationEngine.prototype._flushQueuedAnimations = function () {\n var _loop_2 = function () {\n var _a = ((this_2._queuedTransitionAnimations.shift())), player = _a.player, element = _a.element, triggerName = _a.triggerName, event = _a.event;\n var /** @type {?} */ parent = element;\n while (parent = parent.parentNode) {\n // this means that a parent element will or will not\n // have its own animation operation which in this case\n // there's no point in even trying to do an animation\n if (parent[MARKED_FOR_REMOVAL])\n return \"continue-parentLoop\";\n }\n var /** @type {?} */ listeners = this_2._triggerListeners.get(element);\n if (listeners) {\n listeners.forEach(function (tuple) {\n if (tuple.triggerName == triggerName) {\n listenOnPlayer(player, tuple.phase, event, tuple.callback);\n }\n });\n }\n // if a removal exists for the given element then we need cancel\n // all the queued players so that a proper removal animation can go\n if (this_2._queuedRemovals.has(element)) {\n player.destroy();\n return \"continue\";\n }\n this_2._markPlayerAsActive(element, player);\n // in the event that an animation throws an error then we do\n // not want to re-run animations on any previous animations\n // if they have already been kicked off beforehand\n player.init();\n if (!player.hasStarted()) {\n player.play();\n }\n };\n var this_2 = this;\n parentLoop: while (this._queuedTransitionAnimations.length) {\n var state_1 = _loop_2();\n switch (state_1) {\n case \"continue-parentLoop\": continue parentLoop;\n }\n }\n };\n /**\n * @return {?}\n */\n DomAnimationEngine.prototype.flush = function () {\n var _this = this;\n var /** @type {?} */ leaveListeners = new Map();\n this._queuedRemovals.forEach(function (callback, element) {\n var /** @type {?} */ tuple = _this._pendingListenerRemovals.get(element);\n if (tuple) {\n leaveListeners.set(element, tuple);\n _this._pendingListenerRemovals.delete(element);\n }\n });\n this._clearPendingListenerRemovals();\n this._pendingListenerRemovals = leaveListeners;\n this._flushQueuedAnimations();\n var /** @type {?} */ flushAgain = false;\n this._queuedRemovals.forEach(function (callback, element) {\n // an item that was inserted/removed in the same flush means\n // that an animation should not happen anyway\n if (_this._flaggedInserts.has(element))\n return;\n var /** @type {?} */ parent = element;\n var /** @type {?} */ players = [];\n while (parent = parent.parentNode) {\n // there is no reason to even try to\n if (parent[MARKED_FOR_REMOVAL]) {\n callback();\n return;\n }\n var /** @type {?} */ match = _this._activeElementAnimations.get(parent);\n if (match) {\n players.push.apply(players, match);\n break;\n }\n }\n // the loop was unable to find an parent that is animating even\n // though this element has set to be removed, so the algorithm\n // should check to see if there are any triggers on the element\n // that are present to handle a leave animation and then setup\n // those players to facilitate the callback after done\n if (players.length == 0) {\n // this means that the element has valid state triggers\n var /** @type {?} */ stateDetails_1 = _this._elementTriggerStates.get(element);\n if (stateDetails_1) {\n Object.keys(stateDetails_1).forEach(function (triggerName) {\n flushAgain = true;\n var /** @type {?} */ oldValue = stateDetails_1[triggerName];\n var /** @type {?} */ instruction = _this._triggers[triggerName].matchTransition(oldValue, VOID_STATE);\n if (instruction) {\n players.push(_this.animateTransition(element, instruction));\n }\n else {\n var /** @type {?} */ event = makeAnimationEvent(element, triggerName, oldValue, VOID_STATE, '', 0);\n var /** @type {?} */ player = new NoopAnimationPlayer();\n _this._queuePlayer(element, triggerName, player, event);\n }\n });\n }\n }\n if (players.length) {\n optimizeGroupPlayer(players).onDone(callback);\n }\n else {\n callback();\n }\n });\n this._queuedRemovals.clear();\n this._flaggedInserts.clear();\n // this means that one or more leave animations were detected\n if (flushAgain) {\n this._flushQueuedAnimations();\n this._clearPendingListenerRemovals();\n }\n };\n return DomAnimationEngine;\n}());\n/**\n * @param {?} map\n * @param {?} key\n * @param {?} defaultValue\n * @return {?}\n */\nfunction getOrSetAsInMap(map, key, defaultValue) {\n var /** @type {?} */ value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\n/**\n * @param {?} map\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nfunction deleteFromArrayMap(map, key, value) {\n var /** @type {?} */ arr = map.get(key);\n if (arr) {\n var /** @type {?} */ index = arr.indexOf(value);\n if (index >= 0) {\n arr.splice(index, 1);\n if (arr.length == 0) {\n map.delete(key);\n }\n }\n }\n}\n/**\n * @param {?} players\n * @return {?}\n */\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\n/**\n * @param {?} source\n * @return {?}\n */\nfunction copyArray(source) {\n return source ? source.splice(0) : [];\n}\n/**\n * @param {?} triggerName\n * @param {?} eventName\n * @return {?}\n */\nfunction validatePlayerEvent(triggerName, eventName) {\n switch (eventName) {\n case 'start':\n case 'done':\n return;\n default:\n throw new Error(\"The provided animation trigger event \\\"\" + eventName + \"\\\" for the animation trigger \\\"\" + triggerName + \"\\\" is not supported!\");\n }\n}\n/**\n * @param {?} player\n * @param {?} eventName\n * @param {?} baseEvent\n * @param {?} callback\n * @return {?}\n */\nfunction listenOnPlayer(player, eventName, baseEvent, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(function () {\n var /** @type {?} */ event = copyAnimationEvent(baseEvent);\n event.phaseName = 'start';\n callback(event);\n });\n break;\n case 'done':\n player.onDone(function () {\n var /** @type {?} */ event = copyAnimationEvent(baseEvent);\n event.phaseName = 'done';\n callback(event);\n });\n break;\n }\n}\n/**\n * @param {?} e\n * @return {?}\n */\nfunction copyAnimationEvent(e) {\n return makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, e.phaseName, e.totalTime);\n}\n/**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} fromState\n * @param {?} toState\n * @param {?} phaseName\n * @param {?} totalTime\n * @return {?}\n */\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName, totalTime) {\n return ({ element: element, triggerName: triggerName, fromState: fromState, toState: toState, phaseName: phaseName, totalTime: totalTime });\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeTriggerValue(value) {\n switch (typeof value) {\n case 'boolean':\n return value ? '1' : '0';\n default:\n return value ? value.toString() : null;\n }\n}\n/**\n * \\@experimental Animation support is experimental.\n * @abstract\n */\nvar AnimationStyleNormalizer = (function () {\n function AnimationStyleNormalizer() {\n }\n /**\n * @abstract\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n AnimationStyleNormalizer.prototype.normalizePropertyName = function (propertyName, errors) { };\n /**\n * @abstract\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n AnimationStyleNormalizer.prototype.normalizeStyleValue = function (userProvidedProperty, normalizedProperty, value, errors) { };\n return AnimationStyleNormalizer;\n}());\n/**\n * \\@experimental Animation support is experimental.\n */\nvar NoopAnimationStyleNormalizer = (function () {\n function NoopAnimationStyleNormalizer() {\n }\n /**\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n NoopAnimationStyleNormalizer.prototype.normalizePropertyName = function (propertyName, errors) { return propertyName; };\n /**\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n NoopAnimationStyleNormalizer.prototype.normalizeStyleValue = function (userProvidedProperty, normalizedProperty, value, errors) {\n return (value);\n };\n return NoopAnimationStyleNormalizer;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Animation = (function () {\n /**\n * @param {?} input\n */\n function Animation(input) {\n var ast = Array.isArray(input) ? sequence(input) : input;\n var errors = validateAnimationSequence(ast);\n if (errors.length) {\n var errorMessage = \"animation validation failed:\\n\" + errors.join(\"\\n\");\n throw new Error(errorMessage);\n }\n this._animationAst = ast;\n }\n /**\n * @param {?} startingStyles\n * @param {?} destinationStyles\n * @return {?}\n */\n Animation.prototype.buildTimelines = function (startingStyles, destinationStyles) {\n var /** @type {?} */ start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) : (startingStyles);\n var /** @type {?} */ dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) : (destinationStyles);\n return buildAnimationKeyframes(this._animationAst, start, dest);\n };\n /**\n * @param {?} injector\n * @param {?} element\n * @param {?=} startingStyles\n * @param {?=} destinationStyles\n * @return {?}\n */\n Animation.prototype.create = function (injector, element, startingStyles, destinationStyles) {\n if (startingStyles === void 0) { startingStyles = {}; }\n if (destinationStyles === void 0) { destinationStyles = {}; }\n var /** @type {?} */ instructions = this.buildTimelines(startingStyles, destinationStyles);\n // note the code below is only here to make the tests happy (once the new renderer is\n // within core then the code below will interact with Renderer.transition(...))\n var /** @type {?} */ driver = injector.get(AnimationDriver);\n var /** @type {?} */ normalizer = injector.get(AnimationStyleNormalizer);\n var /** @type {?} */ engine = new DomAnimationEngine(driver, normalizer);\n return engine.animateTimeline(element, instructions);\n };\n return Animation;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar WebAnimationsStyleNormalizer = (function (_super) {\n __extends(WebAnimationsStyleNormalizer, _super);\n function WebAnimationsStyleNormalizer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n WebAnimationsStyleNormalizer.prototype.normalizePropertyName = function (propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n };\n /**\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n WebAnimationsStyleNormalizer.prototype.normalizeStyleValue = function (userProvidedProperty, normalizedProperty, value, errors) {\n var /** @type {?} */ unit = '';\n var /** @type {?} */ strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n var /** @type {?} */ valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(\"Please provide a CSS unit value for \" + userProvidedProperty + \":\" + value);\n }\n }\n }\n return strVal + unit;\n };\n return WebAnimationsStyleNormalizer;\n}(AnimationStyleNormalizer));\nvar DIMENSIONAL_PROP_MAP = makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent'\n .split(','));\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction makeBooleanMap(keys) {\n var /** @type {?} */ map = {};\n keys.forEach(function (key) { return map[key] = true; });\n return map;\n}\nvar DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[1].toUpperCase();\n });\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar DEFAULT_STATE_VALUE = 'void';\nvar DEFAULT_STATE_STYLES = '*';\nvar NoopAnimationEngine = (function (_super) {\n __extends(NoopAnimationEngine, _super);\n function NoopAnimationEngine() {\n var _this = _super.apply(this, arguments) || this;\n _this._listeners = new Map();\n _this._changes = [];\n _this._flaggedRemovals = new Set();\n _this._onDoneFns = [];\n _this._triggerStyles = Object.create(null);\n return _this;\n }\n /**\n * @param {?} trigger\n * @param {?=} name\n * @return {?}\n */\n NoopAnimationEngine.prototype.registerTrigger = function (trigger, name) {\n name = name || trigger.name;\n if (this._triggerStyles[name]) {\n return;\n }\n var /** @type {?} */ stateMap = {};\n trigger.definitions.forEach(function (def) {\n if (def.type === 0 /* State */) {\n var /** @type {?} */ stateDef = (def);\n stateMap[stateDef.name] = normalizeStyles(stateDef.styles.styles);\n }\n });\n this._triggerStyles[name] = stateMap;\n };\n /**\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n NoopAnimationEngine.prototype.onInsert = function (element, domFn) { domFn(); };\n /**\n * @param {?} element\n * @param {?} domFn\n * @return {?}\n */\n NoopAnimationEngine.prototype.onRemove = function (element, domFn) {\n domFn();\n if (element['nodeType'] == 1) {\n this._flaggedRemovals.add(element);\n }\n };\n /**\n * @param {?} element\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n NoopAnimationEngine.prototype.setProperty = function (element, property, value) {\n var /** @type {?} */ storageProp = makeStorageProp(property);\n var /** @type {?} */ oldValue = element[storageProp] || DEFAULT_STATE_VALUE;\n this._changes.push(/** @type {?} */ ({ element: element, oldValue: oldValue, newValue: value, triggerName: property }));\n var /** @type {?} */ triggerStateStyles = this._triggerStyles[property] || {};\n var /** @type {?} */ fromStateStyles = triggerStateStyles[oldValue] || triggerStateStyles[DEFAULT_STATE_STYLES];\n if (fromStateStyles) {\n eraseStyles(element, fromStateStyles);\n }\n element[storageProp] = value;\n this._onDoneFns.push(function () {\n var /** @type {?} */ toStateStyles = triggerStateStyles[value] || triggerStateStyles[DEFAULT_STATE_STYLES];\n if (toStateStyles) {\n setStyles(element, toStateStyles);\n }\n });\n };\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} eventPhase\n * @param {?} callback\n * @return {?}\n */\n NoopAnimationEngine.prototype.listen = function (element, eventName, eventPhase, callback) {\n var /** @type {?} */ listeners = this._listeners.get(element);\n if (!listeners) {\n this._listeners.set(element, listeners = []);\n }\n var /** @type {?} */ tuple = ({ triggerName: eventName, eventPhase: eventPhase, callback: callback });\n listeners.push(tuple);\n return function () { return tuple.doRemove = true; };\n };\n /**\n * @return {?}\n */\n NoopAnimationEngine.prototype.flush = function () {\n var _this = this;\n var /** @type {?} */ onStartCallbacks = [];\n var /** @type {?} */ onDoneCallbacks = [];\n /**\n * @param {?} listener\n * @param {?} data\n * @return {?}\n */\n function handleListener(listener, data) {\n var /** @type {?} */ phase = listener.eventPhase;\n var /** @type {?} */ event = makeAnimationEvent$1(data.element, data.triggerName, data.oldValue, data.newValue, phase, 0);\n if (phase == 'start') {\n onStartCallbacks.push(function () { return listener.callback(event); });\n }\n else if (phase == 'done') {\n onDoneCallbacks.push(function () { return listener.callback(event); });\n }\n }\n this._changes.forEach(function (change) {\n var /** @type {?} */ element = change.element;\n var /** @type {?} */ listeners = _this._listeners.get(element);\n if (listeners) {\n listeners.forEach(function (listener) {\n if (listener.triggerName == change.triggerName) {\n handleListener(listener, change);\n }\n });\n }\n });\n // upon removal ALL the animation triggers need to get fired\n this._flaggedRemovals.forEach(function (element) {\n var /** @type {?} */ listeners = _this._listeners.get(element);\n if (listeners) {\n listeners.forEach(function (listener) {\n var /** @type {?} */ triggerName = listener.triggerName;\n var /** @type {?} */ storageProp = makeStorageProp(triggerName);\n handleListener(listener, /** @type {?} */ ({\n element: element,\n triggerName: triggerName,\n oldValue: element[storageProp] || DEFAULT_STATE_VALUE,\n newValue: DEFAULT_STATE_VALUE\n }));\n });\n }\n });\n // remove all the listeners after everything is complete\n Array.from(this._listeners.keys()).forEach(function (element) {\n var /** @type {?} */ listenersToKeep = ((_this._listeners.get(element))).filter(function (l) { return !l.doRemove; });\n if (listenersToKeep.length) {\n _this._listeners.set(element, listenersToKeep);\n }\n else {\n _this._listeners.delete(element);\n }\n });\n onStartCallbacks.forEach(function (fn) { return fn(); });\n onDoneCallbacks.forEach(function (fn) { return fn(); });\n this._flaggedRemovals.clear();\n this._changes = [];\n this._onDoneFns.forEach(function (doneFn) { return doneFn(); });\n this._onDoneFns = [];\n };\n Object.defineProperty(NoopAnimationEngine.prototype, \"activePlayers\", {\n /**\n * @return {?}\n */\n get: function () { return []; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NoopAnimationEngine.prototype, \"queuedPlayers\", {\n /**\n * @return {?}\n */\n get: function () { return []; },\n enumerable: true,\n configurable: true\n });\n return NoopAnimationEngine;\n}(AnimationEngine));\n/**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} fromState\n * @param {?} toState\n * @param {?} phaseName\n * @param {?} totalTime\n * @return {?}\n */\nfunction makeAnimationEvent$1(element, triggerName, fromState, toState, phaseName, totalTime) {\n return ({ element: element, triggerName: triggerName, fromState: fromState, toState: toState, phaseName: phaseName, totalTime: totalTime });\n}\n/**\n * @param {?} property\n * @return {?}\n */\nfunction makeStorageProp(property) {\n return '_@_' + property;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar WebAnimationsPlayer = (function () {\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @param {?=} previousPlayers\n */\n function WebAnimationsPlayer(element, keyframes, options, previousPlayers) {\n if (previousPlayers === void 0) { previousPlayers = []; }\n var _this = this;\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n this.previousStyles = {};\n previousPlayers.forEach(function (player) {\n var styles = player._captureStyles();\n Object.keys(styles).forEach(function (prop) { return _this.previousStyles[prop] = styles[prop]; });\n });\n }\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype._onFinish = function () {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(function (fn) { return fn(); });\n this._onDoneFns = [];\n }\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.init = function () {\n var _this = this;\n if (this._initialized)\n return;\n this._initialized = true;\n var /** @type {?} */ keyframes = this.keyframes.map(function (styles) {\n var /** @type {?} */ formattedKeyframe = {};\n Object.keys(styles).forEach(function (prop, index) {\n var /** @type {?} */ value = styles[prop];\n if (value == AUTO_STYLE) {\n value = _computeStyle(_this.element, prop);\n }\n if (value != undefined) {\n formattedKeyframe[prop] = value;\n }\n });\n return formattedKeyframe;\n });\n var /** @type {?} */ previousStyleProps = Object.keys(this.previousStyles);\n if (previousStyleProps.length) {\n var /** @type {?} */ startingKeyframe_1 = keyframes[0];\n var /** @type {?} */ missingStyleProps_1 = [];\n previousStyleProps.forEach(function (prop) {\n if (!startingKeyframe_1.hasOwnProperty(prop)) {\n missingStyleProps_1.push(prop);\n }\n startingKeyframe_1[prop] = _this.previousStyles[prop];\n });\n if (missingStyleProps_1.length) {\n var /** @type {?} */ self_1 = this;\n var _loop_3 = function () {\n var /** @type {?} */ kf = keyframes[i];\n missingStyleProps_1.forEach(function (prop) {\n kf[prop] = _computeStyle(self_1.element, prop);\n });\n };\n // tslint:disable-next-line\n for (var /** @type {?} */ i = 1; i < keyframes.length; i++) {\n _loop_3();\n }\n }\n }\n this._player = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe =\n keyframes.length ? _copyKeyframeStyles(keyframes[keyframes.length - 1]) : {};\n // this is required so that the player doesn't start to animate right away\n this._resetDomPlayerState();\n this._player.addEventListener('finish', function () { return _this._onFinish(); });\n };\n /**\n * \\@internal\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @return {?}\n */\n WebAnimationsPlayer.prototype._triggerWebAnimation = function (element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return (element['animate'](keyframes, options));\n };\n Object.defineProperty(WebAnimationsPlayer.prototype, \"domPlayer\", {\n /**\n * @return {?}\n */\n get: function () { return this._player; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} fn\n * @return {?}\n */\n WebAnimationsPlayer.prototype.onStart = function (fn) { this._onStartFns.push(fn); };\n /**\n * @param {?} fn\n * @return {?}\n */\n WebAnimationsPlayer.prototype.onDone = function (fn) { this._onDoneFns.push(fn); };\n /**\n * @param {?} fn\n * @return {?}\n */\n WebAnimationsPlayer.prototype.onDestroy = function (fn) { this._onDestroyFns.push(fn); };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.play = function () {\n this.init();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(function (fn) { return fn(); });\n this._onStartFns = [];\n this._started = true;\n }\n this._player.play();\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.pause = function () {\n this.init();\n this._player.pause();\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.finish = function () {\n this.init();\n this._onFinish();\n this._player.finish();\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.reset = function () {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype._resetDomPlayerState = function () {\n if (this._player) {\n this._player.cancel();\n }\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.restart = function () {\n this.reset();\n this.play();\n };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.hasStarted = function () { return this._started; };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.destroy = function () {\n if (!this._destroyed) {\n this._resetDomPlayerState();\n this._onFinish();\n this._destroyed = true;\n this._onDestroyFns.forEach(function (fn) { return fn(); });\n this._onDestroyFns = [];\n }\n };\n /**\n * @param {?} p\n * @return {?}\n */\n WebAnimationsPlayer.prototype.setPosition = function (p) { this._player.currentTime = p * this.time; };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype.getPosition = function () { return this._player.currentTime / this.time; };\n /**\n * @return {?}\n */\n WebAnimationsPlayer.prototype._captureStyles = function () {\n var _this = this;\n var /** @type {?} */ styles = {};\n if (this.hasStarted()) {\n Object.keys(this._finalKeyframe).forEach(function (prop) {\n if (prop != 'offset') {\n styles[prop] =\n _this._finished ? _this._finalKeyframe[prop] : _computeStyle(_this.element, prop);\n }\n });\n }\n return styles;\n };\n return WebAnimationsPlayer;\n}());\n/**\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\nfunction _computeStyle(element, prop) {\n return ((window.getComputedStyle(element)))[prop];\n}\n/**\n * @param {?} styles\n * @return {?}\n */\nfunction _copyKeyframeStyles(styles) {\n var /** @type {?} */ newStyles = {};\n Object.keys(styles).forEach(function (prop) {\n if (prop != 'offset') {\n newStyles[prop] = styles[prop];\n }\n });\n return newStyles;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar WebAnimationsDriver = (function () {\n function WebAnimationsDriver() {\n }\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @return {?}\n */\n WebAnimationsDriver.prototype.animate = function (element, keyframes, duration, delay, easing, previousPlayers) {\n if (previousPlayers === void 0) { previousPlayers = []; }\n var /** @type {?} */ playerOptions = { 'duration': duration, 'delay': delay, 'fill': 'forwards' };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n var /** @type {?} */ previousWebAnimationPlayers = (previousPlayers.filter(function (player) { return player instanceof WebAnimationsPlayer; }));\n return new WebAnimationsPlayer(element, keyframes, playerOptions, previousWebAnimationPlayers);\n };\n return WebAnimationsDriver;\n}());\n/**\n * @return {?}\n */\nfunction supportsWebAnimations() {\n return typeof Element !== 'undefined' && typeof ((Element)).prototype['animate'] === 'function';\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the animation package.\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { AnimationDriver, AnimationEngine as ɵAnimationEngine, Animation as ɵAnimation, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, DomAnimationEngine as ɵDomAnimationEngine, NoopAnimationEngine as ɵNoopAnimationEngine, WebAnimationsDriver as ɵWebAnimationsDriver, supportsWebAnimations as ɵsupportsWebAnimations, WebAnimationsPlayer as ɵWebAnimationsPlayer };\n//# sourceMappingURL=browser.es5.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/animations/@angular/animations/browser.es5.js\n// module id = 2362\n// module chunks = 1","var map = {\n\t\".\": 98,\n\t\"./\": 98,\n\t\"./index\": 98,\n\t\"./index.ts\": 98,\n\t\"./l10n.directive\": 294,\n\t\"./l10n.directive.ts\": 294,\n\t\"./l10n/en.yml\": 2364,\n\t\"./l10n/ru.yml\": 2365,\n\t\"./l10n/ua.yml\": 2366,\n\t\"./translate.module\": 478,\n\t\"./translate.module.ts\": 478,\n\t\"./translate.service\": 216,\n\t\"./translate.service.ts\": 216\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2363;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/translate.module ^.*$\n// module id = 2363\n// module chunks = 1","module.exports = \"'@ACCESS_RIGHTS':\\r\\n ACCESS_DENIED: '{{accessRight}}: Access denied (User: {{userName}}).'\\r\\n BY_DEFAULT: By default\\r\\n CREATE: create\\r\\n DELETE: delete\\r\\n DISABLED: disabled\\r\\n ENABLED: enabled\\r\\n EXPORT: export\\r\\n FULL_ACCESS: Full access\\r\\n IMPORT: import\\r\\n PAGE:\\r\\n REF: References\\r\\n REPORTS: Reports\\r\\n SYSTEM_TASKS: System tasks\\r\\n FEATURES: Features\\r\\n READ: read\\r\\n TITLE: Access Rights\\r\\n UPDATE: update\\r\\n'@ACCOUNT':\\r\\n '@ENUMS':\\r\\n EVENTTYPE:\\r\\n BADREQUEST: Fail\\r\\n LOGIN: Login\\r\\n LOGOUT: Logout\\r\\n INVALID_LOGIN: '`{{userName}}`: Incorrect username or password.'\\r\\n LOCKOUT: '`{{userName}}`: Account is blocked'\\r\\n NOT_ALLOWED: >-\\r\\n `{{userName}}`: Account is not activated. Please, activate your account. The\\r\\n instructions were sent to your e-mail, which was specified during\\r\\n registration.\\r\\n PASSWORD_MISMATCH: Incorrect password.\\r\\n TWO_FACTOR: '`{{userName}}`: Account requires two-factor authentication.'\\r\\n'@COMMON':\\r\\n '@ENUMS':\\r\\n GENDER:\\r\\n FEMALE: Female.\\r\\n MALE: Male\\r\\n BEGIN: Begin\\r\\n END: End\\r\\n FIO: Full name\\r\\n'@COMPONENTS':\\r\\n MAP:\\r\\n ADDRESS_SEARCH:\\r\\n INPUT_PLACEHOLDER: Address search...\\r\\n TAG_LIST:\\r\\n ADD_TAG: Create tag\\r\\n ASSIGN_TAGS: Assign tags\\r\\n REMOVE_TAG: Remove tags\\r\\n TAGS: Tags\\r\\n'@DATE_TIME':\\r\\n PERIOD:\\r\\n AT: at\\r\\n DAY: Day(s)\\r\\n HOUR: Hour(s)\\r\\n MINUTE: Minute(s)\\r\\n MONTH: Month(s)\\r\\n SECOND: Second(s)\\r\\n WEEK: Week(s)\\r\\n YEAR: Year(s)\\r\\n PERIOD_TYPE:\\r\\n CURRENT: Current\\r\\n CURRENTS: Current ...\\r\\n PREVIOUS: Past\\r\\n PREVIOUSES: Past ...\\r\\n'@DIALOG':\\r\\n '@CONFIRMATIONS':\\r\\n CLOSE_UNSAVED: The changes are not saved. Save changes?\\r\\n DELETE: Do you wish to delete the item?\\r\\n DELETE_ITEM: 'Do you wish to delete {{item}}?'\\r\\n DELETE_ITEMS: Do you wish to delete selected objects?\\r\\n ALERT: Warning\\r\\n ALL: All\\r\\n APPLY: Apply\\r\\n BY_DEFAULT: By default\\r\\n CANCEL: Cancel\\r\\n CANNOT_SAVE_READ_ONLY: Read only.\\r\\n CANT_SAVE_NO_VALIDATION: 'Required fields not filled: {{fields}}'\\r\\n CLEAR: Clear\\r\\n CLOSE: Close\\r\\n CLOSE_NO_SAVE: Save changes?\\r\\n CONFIRMATION: Confirmation\\r\\n CONNECTION_TO_API_LOST: Error connecting to server. Try to reload the page.\\r\\n DELETE: Delete\\r\\n DOWNLOAD: Download\\r\\n ERROR: Error\\r\\n EXCEPT: except\\r\\n EXECUTE: Execute\\r\\n EXPORT:\\r\\n TITLE: Export\\r\\n REPORT_NAME: Report name\\r\\n PAGE_ONLY: Current page only\\r\\n FOR_IMPORT: Use import format (*.csv)\\r\\n FAILED_LOAD_DATA: 'Failed to load data from
{{address}}.'\\r\\n INFORMATION: Information\\r\\n INVALID_DATE: Incorrect date format\\r\\n LOADING: Loading...\\r\\n 'NO': 'No'\\r\\n NO_DATA: No data\\r\\n OK: OK\\r\\n PRINT: Print\\r\\n READ_ONLY: Read only\\r\\n REFRESH: Refresh\\r\\n REQUIRED: Value is required\\r\\n SAVE_AND_PRINT: Save and Print\\r\\n SAVE_CHANGES: Save\\r\\n SAVE_TO_CONTINUE: You must save your data to continue. Execute?\\r\\n SAVING: Saving...\\r\\n SELECT: Select\\r\\n SPINNER_PLACEHOLDER: Enter number...\\r\\n WARNING: Attention\\r\\n 'YES': 'Yes'\\r\\n'@ENTITY_COMMON':\\r\\n '@COLUMNS':\\r\\n DATE: Date\\r\\n NUMBER: Number\\r\\n NAME: Name\\r\\n NOTE: Note\\r\\n CREATED_BY: Author\\r\\n CREATED_DATE: Created date\\r\\n IMPORTED_DB_ID: External DB code\\r\\n IMPORTED_ID: External code\\r\\n IMPORTED_DATE: Import date\\r\\n MODIFIED_DATE: Modified date\\r\\n MODIFIED_BY: Modified by\\r\\n'@ENTITY_GROUPS':\\r\\n ADMIN: Administration\\r\\n DATA_FILTERS: Data filters\\r\\n PERSONNEL: Personnel\\r\\n SETTINGS: Settings\\r\\n STORE: Store\\r\\n ZONES: Geofences and routes\\r\\n'@FEATURES':\\r\\n ZONE_IN_OUT: Visit geofences settings\\r\\n DASHBOARD: Dashboard\\r\\n MAP: Map\\r\\n'@FORMS':\\r\\n VALIDATORS:\\r\\n CUSTOM: Incorrect value\\r\\n EMAIL: Incorrect email\\r\\n MAX: 'Value {{actual}} is greater than {{max}}'\\r\\n MAX_LENGTH: 'Line length {{actualLength} is greater than {{requiredLength}}'\\r\\n MIN: 'Value {{actual}} less than acceptable {{min}}'\\r\\n MIN_LENGTH: 'Line length {{actualLength} less than acceptable {{requiredLength}}'\\r\\n PATTERN: Invalid format\\r\\n REQUIRED: Value is required\\r\\n REQUIRED_TRUE: Required\\r\\n'@MENU':\\r\\n ABOUT: About\\r\\n COMPONENTS: Components\\r\\n DASHBOARD: Dashboard\\r\\n DOCS: Documents\\r\\n MAP: Map\\r\\n REFS: References\\r\\n REPORTS: Reports\\r\\n TEST: For testing\\r\\n'@OBJECT_LIST':\\r\\n ACTIONS:\\r\\n ADD: Add\\r\\n COPY: Copy\\r\\n DELETE: Delete\\r\\n EDIT: Edit\\r\\n EXPORT: Export\\r\\n IMPORT: Import\\r\\n READ: Read\\r\\n REFRESH: Update\\r\\n SEARCH: Search\\r\\n SELECT_ALL: Select all\\r\\n SETTINGS: Settings\\r\\n LOADING: Loading...\\r\\n NO_DATA: No data\\r\\n SEARCH: Search...\\r\\n SETTINGS:\\r\\n COLUMNS:\\r\\n TITLE: Columns\\r\\n RESET: Reset\\r\\n TITLE: Settings\\r\\n'@REPORTS':\\r\\n BY_DEFAULT: By default\\r\\n COMMON:\\r\\n ALL_TRACKING_OBJECTS: All tracking objects\\r\\n ALL_ZONES: All geofences\\r\\n BUILDING: Building a report...\\r\\n BY_DEFAULT: By default\\r\\n CANCELLED: Canceled\\r\\n COMPLETED: Report building completed\\r\\n DATE: Date\\r\\n DATE_FROM: From\\r\\n DATE_TO: To\\r\\n DUT_FILTER: FLS filter\\r\\n FAULTED: Error on report building\\r\\n FINISHED: The report builded\\r\\n LOADING: Loading data...\\r\\n MAKING: Making a report...\\r\\n PREPARING: Preparing to build a report...\\r\\n PROCESSING: Data processing...\\r\\n PROCESSING_STATUS: 'Data processing: {{status}}'\\r\\n TRACKING_OBJECT: Tracking object\\r\\n TRACKING_OBJECTS: Tracking objects\\r\\n TRACKING_OBJECT_TAGS: Tracking objects groups\\r\\n TRACK_FILTER: Track data filter\\r\\n ZONE: Geofence\\r\\n ZONES: Geofences\\r\\n ZONE_TAGS: Geofence groups\\r\\n RESULT:\\r\\n EMAIL: EMail\\r\\n FILE: File\\r\\n TELEGRAM: Telegram\\r\\n SENSORS_CHART: Sensors chart\\r\\n TRACK_FILTER: Track filter\\r\\n'@SYSTEM_TASK':\\r\\n COMMON:\\r\\n PREPARING: Preparing for a task executing\\r\\n PROCESSING: Task executing...\\r\\n FINISHED: Task completed\\r\\n CANCELLED: Task canceled\\r\\n FAULTED: Error while executing task\\r\\n IMPORT:\\r\\n TITLE: Data import\\r\\n CREATED: Created\\r\\n DUPLICATE_ENTRY: >-\\r\\n An entity with the same set of key fields has already been imported.\\r\\n Skipping...\\r\\n FAILED: Failed\\r\\n IMPORTING: Importing data from file\\r\\n NO_DATA: No data to import.\\r\\n SUCCESS: Successfully imported\\r\\n TOTAL: Total records processed\\r\\n UPDATED: Updated\\r\\n'@UNITS':\\r\\n HOUR: h\\r\\n KILOMETRES: km\\r\\n KMH: km/h\\r\\n LITER: l\\r\\n METRES: m\\r\\n MINUTE: min\\r\\n PIECE: pc.\\r\\n SECOND: sec\\r\\n VOLT: V\\r\\nUPLOAD_COMPONENT:\\r\\n SELECT_FILE: Select a file...\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/translate.module/l10n/en.yml\n// module id = 2364\n// module chunks = 1","module.exports = \"'@ACCESS_RIGHTS':\\r\\n ACCESS_DENIED: '{{accessRight}}: Доступ запрещён (Пользователь: {{userName}}).'\\r\\n BY_DEFAULT: По умолчанию\\r\\n CREATE: создание\\r\\n DELETE: удаление\\r\\n DISABLED: запрещено\\r\\n ENABLED: разрешено\\r\\n EXPORT: экспорт\\r\\n FULL_ACCESS: Полный доступ\\r\\n IMPORT: импорт\\r\\n PAGE:\\r\\n REF: Справочники\\r\\n REPORTS: Отчёты\\r\\n SYSTEM_TASKS: Системные задачи\\r\\n FEATURES: Прочее\\r\\n READ: просмотр\\r\\n TITLE: Права доступа\\r\\n UPDATE: изменение\\r\\n'@ACCOUNT':\\r\\n '@ENUMS':\\r\\n EVENTTYPE:\\r\\n BADREQUEST: Неуспешно\\r\\n LOGIN: Вход\\r\\n LOGOUT: Выход\\r\\n INVALID_LOGIN: '`{{userName}}`: Неверное имя пользователя или пароль.'\\r\\n LOCKOUT: '`{{userName}}`: Учётная запись заблокирована.'\\r\\n NOT_ALLOWED: >-\\r\\n `{{userName}}`: Учётная запись не активирована. Активируйте вашу учётную\\r\\n запись, следуя инструкциям, отправленным вам на почтовый ящик, указанный при\\r\\n регистрации.\\r\\n PASSWORD_MISMATCH: Incorrect password.\\r\\n TWO_FACTOR: '`{{userName}}`: Учётная запись требует двухфакторной аутентификации.'\\r\\n'@COMMON':\\r\\n '@ENUMS':\\r\\n GENDER:\\r\\n FEMALE: Жен.\\r\\n MALE: Муж.\\r\\n BEGIN: Начало\\r\\n END: Конец\\r\\n FIO: ФИО\\r\\n'@COMPONENTS':\\r\\n MAP:\\r\\n ADDRESS_SEARCH:\\r\\n INPUT_PLACEHOLDER: Поиск aдреса...\\r\\n TAG_LIST:\\r\\n ADD_TAG: Создать тэг\\r\\n ASSIGN_TAGS: Назначить теги\\r\\n REMOVE_TAG: Убрать тэги\\r\\n TAGS: Тэги\\r\\n'@DATE_TIME':\\r\\n PERIOD:\\r\\n AT: в\\r\\n DAY: День/Дня/Дней\\r\\n HOUR: Час/Часа/Часов\\r\\n MINUTE: Минуту/Минуты/Минут\\r\\n MONTH: Месяц/Месяца/Месяцев\\r\\n SECOND: Секунду/Секунды/Секунд\\r\\n WEEK: Неделю/Недели\\r\\n YEAR: Год(а)\\r\\n PERIOD_TYPE:\\r\\n CURRENT: За текущий/текущую/текущие\\r\\n CURRENTS: За последние ...\\r\\n PREVIOUS: За предыдущий/предыдущую/предыдущие\\r\\n PREVIOUSES: За предыдущие ...\\r\\n'@DIALOG':\\r\\n '@CONFIRMATIONS':\\r\\n CLOSE_UNSAVED: Сделанные изменения не сохранены. Сохранить изменения?\\r\\n DELETE: Удалить элемент?\\r\\n DELETE_ITEM: 'Удалить {{item}}?'\\r\\n DELETE_ITEMS: Удалить выбранные объекты?\\r\\n ALERT: Предупреждение\\r\\n ALL: Все\\r\\n APPLY: Применить\\r\\n BY_DEFAULT: По умолчанию\\r\\n CANCEL: Отмена\\r\\n CANNOT_SAVE_READ_ONLY: Вы можете только просматривать данные.\\r\\n CANT_SAVE_NO_VALIDATION: 'Не заполнены необходимые поля: {{fields}}'\\r\\n CLEAR: Очистить\\r\\n CLOSE: Закрыть\\r\\n CLOSE_NO_SAVE: Сохранить сделанные изменения?\\r\\n CONFIRMATION: Подтверждение\\r\\n CONNECTION_TO_API_LOST: Ошибка подключения к серверу. Попробуйте перегрузить страницу.\\r\\n DELETE: Удалить\\r\\n DOWNLOAD: Скачать\\r\\n ERROR: Ошибка\\r\\n EXCEPT: кроме\\r\\n EXECUTE: Выполнить\\r\\n EXPORT:\\r\\n TITLE: Экспорт\\r\\n REPORT_NAME: Имя отчета\\r\\n PAGE_ONLY: Только текущая страница\\r\\n FOR_IMPORT: Использовать формат для импорта (*.csv)\\r\\n FAILED_LOAD_DATA: 'Ошибка подключения к
{{address}}.'\\r\\n INFORMATION: Информация\\r\\n INVALID_DATE: Некорректный формат даты\\r\\n LOADING: Загрузка...\\r\\n 'NO': Нет\\r\\n NO_DATA: Данные отсутствуют\\r\\n OK: OK\\r\\n PRINT: Печать\\r\\n READ_ONLY: только просмотр\\r\\n REFRESH: Обновить\\r\\n REQUIRED: Требуется значение\\r\\n SAVE_AND_PRINT: Сохранить и распечатать\\r\\n SAVE_CHANGES: Сохранить\\r\\n SAVE_TO_CONTINUE: Для выполнения действия необходимо сохранить данные. Продолжить?\\r\\n SAVING: Сохранение...\\r\\n SELECT: Выбрать\\r\\n SPINNER_PLACEHOLDER: Введите число...\\r\\n WARNING: Внимание\\r\\n 'YES': Да\\r\\n'@ENTITY_COMMON':\\r\\n '@COLUMNS':\\r\\n DATE: Дата\\r\\n NUMBER: Номер\\r\\n NAME: Наименование\\r\\n NOTE: Примечание\\r\\n CREATED_BY: Создатель\\r\\n CREATED_DATE: Дата создания\\r\\n IMPORTED_DB_ID: Код внешней БД\\r\\n IMPORTED_ID: Внешний код\\r\\n IMPORTED_DATE: Дата импорта\\r\\n MODIFIED_BY: Изменил\\r\\n MODIFIED_DATE: Дата изменения\\r\\n'@ENTITY_GROUPS':\\r\\n ADMIN: Администрирование\\r\\n DATA_FILTERS: Фильтры данных\\r\\n PERSONNEL: Штат\\r\\n SETTINGS: Настройки\\r\\n STORE: Склад\\r\\n ZONES: Зоны и маршруты\\r\\n'@FEATURES':\\r\\n ZONE_IN_OUT: Настройка контроля посещения зон\\r\\n DASHBOARD: Панель мониторинга\\r\\n MAP: Карта\\r\\n'@FORMS':\\r\\n VALIDATORS:\\r\\n CUSTOM: Неверное значение\\r\\n EMAIL: Неверный email\\r\\n MAX: 'Значение {{actual}} больше допустимого {{max}}'\\r\\n MAX_LENGTH: 'Длина строки {{actualLength} больше допустимой {{requiredLength}}'\\r\\n MIN: 'Значение {{actual}} меньше допустимого {{min}}'\\r\\n MIN_LENGTH: 'Длина строки {{actualLength} меньше допустимой {{requiredLength}}'\\r\\n PATTERN: Неверный формат\\r\\n REQUIRED: Требуется значение\\r\\n REQUIRED_TRUE: Требуется согласие\\r\\n'@MENU':\\r\\n ABOUT: О программе\\r\\n COMPONENTS: Компоненты\\r\\n DASHBOARD: Панель мониторинга\\r\\n DOCS: Документы\\r\\n MAP: Карта\\r\\n REFS: Справочники\\r\\n REPORTS: Отчёты\\r\\n TEST: Для тестов\\r\\n'@OBJECT_LIST':\\r\\n ACTIONS:\\r\\n ADD: Добавить\\r\\n COPY: Создать копию\\r\\n DELETE: Удалить\\r\\n EDIT: Изменить\\r\\n EXPORT: Экспорт\\r\\n IMPORT: Импорт\\r\\n READ: Просмотреть\\r\\n REFRESH: Обновить\\r\\n SEARCH: Поиск\\r\\n SELECT_ALL: Выбрать все\\r\\n SETTINGS: Параметры\\r\\n LOADING: Загрузка...\\r\\n NO_DATA: Нет данных\\r\\n SEARCH: Поиск...\\r\\n SETTINGS:\\r\\n COLUMNS:\\r\\n TITLE: Колонки\\r\\n RESET: По умолчанию\\r\\n TITLE: Параметры\\r\\n'@REPORTS':\\r\\n BY_DEFAULT: По умолчанию\\r\\n COMMON:\\r\\n ALL_TRACKING_OBJECTS: Все объекты мониторинга\\r\\n ALL_ZONES: Все зоны\\r\\n BUILDING: Построение отчёта...\\r\\n BY_DEFAULT: По умолчанию\\r\\n CANCELLED: Построение отчёта отменено\\r\\n COMPLETED: Построение отчёта завершено\\r\\n DATE: Дата\\r\\n DATE_FROM: С\\r\\n DATE_TO: По\\r\\n DUT_FILTER: Фильтр ДУТ\\r\\n FAULTED: Ошибка при построении отчёта\\r\\n FINISHED: Отчёт построен\\r\\n LOADING: Загрузка данных...\\r\\n MAKING: Формирование отчёта...\\r\\n PREPARING: Подготовка к построению отчёта...\\r\\n PROCESSING: Обработка данных...\\r\\n PROCESSING_STATUS: 'Обработка данных: {{status}}'\\r\\n TRACKING_OBJECT: Объект мониторинга\\r\\n TRACKING_OBJECTS: Объекты мониторинга\\r\\n TRACKING_OBJECT_TAGS: Группы объектов мониторинга\\r\\n TRACK_FILTER: Фильтр данных трека\\r\\n ZONE: Зона\\r\\n ZONES: Зоны\\r\\n ZONE_TAGS: Группы зон\\r\\n RESULT:\\r\\n EMAIL: EMail\\r\\n FILE: Файл\\r\\n TELEGRAM: Телеграм\\r\\n SENSORS_CHART: Данные датчиков\\r\\n TRACK_FILTER: Фильтр данных трека\\r\\n'@SYSTEM_TASK':\\r\\n COMMON:\\r\\n PREPARING: Подготовка к выполнению задачи\\r\\n PROCESSING: Выполнение задачи...\\r\\n FINISHED: Задача выполнена\\r\\n CANCELLED: Задача отменена\\r\\n FAULTED: Ошибка при выполнении задачи\\r\\n IMPORT:\\r\\n TITLE: Импорт данных\\r\\n CREATED: Создано записей\\r\\n DUPLICATE_ENTRY: >-\\r\\n Уже была импортирована запись с таким же набором ключевых полей.\\r\\n Пропуск...\\r\\n FAILED: Не импортировано\\r\\n IMPORTING: Импорт данных из файла\\r\\n NO_DATA: Отсутствуют данные для импорта.\\r\\n SUCCESS: Успешно импортировано\\r\\n TOTAL: Всего обработано записей\\r\\n UPDATED: Обновлено записей\\r\\n'@UNITS':\\r\\n HOUR: ч\\r\\n KILOMETRES: км\\r\\n KMH: км/ч\\r\\n LITER: л\\r\\n METRES: м\\r\\n MINUTE: мин\\r\\n PIECE: шт.\\r\\n SECOND: сек\\r\\n VOLT: V\\r\\nUPLOAD_COMPONENT:\\r\\n SELECT_FILE: Выберите файл...\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/translate.module/l10n/ru.yml\n// module id = 2365\n// module chunks = 1","module.exports = \"'@ACCESS_RIGHTS':\\r\\n ACCESS_DENIED: '{{accessRight}}: У доступі відмовлено (Користувач: {{userName}}).'\\r\\n BY_DEFAULT: за замовчуванням\\r\\n CREATE: створення\\r\\n DELETE: видалення\\r\\n DISABLED: заборонено\\r\\n ENABLED: дозволено\\r\\n EXPORT: експорт\\r\\n FULL_ACCESS: Повний доступ\\r\\n IMPORT: імпорт\\r\\n PAGE:\\r\\n REF: Довідники\\r\\n REPORTS: Звіти\\r\\n SYSTEM_TASKS: Системні завдання\\r\\n FEATURES: Інше\\r\\n READ: перегляд\\r\\n TITLE: Права доступу\\r\\n UPDATE: зміна\\r\\n'@ACCOUNT':\\r\\n '@ENUMS':\\r\\n EVENTTYPE:\\r\\n BADREQUEST: Неуспішно\\r\\n LOGIN: Вхід\\r\\n LOGOUT: Вихід\\r\\n INVALID_LOGIN: '`{{userName}}`: Невірне им''я користувача або пароль.'\\r\\n LOCKOUT: '`{{userName}}`: Обліковий запис заблоковано.'\\r\\n NOT_ALLOWED: >-\\r\\n `{{userName}}`: Обліковий запис не активовано. Активуйте ваш обліковий запис\\r\\n за допомогою інструкції, яку було надіслано на поштову скриньку, вказану при\\r\\n реєстрації.\\r\\n PASSWORD_MISMATCH: Incorrect password.\\r\\n TWO_FACTOR: '`{{userName}}`: Обліковий запис потребує двохфакторної аутентифікації.'\\r\\n'@COMMON':\\r\\n '@ENUMS':\\r\\n GENDER:\\r\\n FEMALE: Жін.\\r\\n MALE: Чол.\\r\\n BEGIN: Початок\\r\\n END: Кінець\\r\\n FIO: ПІБ\\r\\n'@COMPONENTS':\\r\\n MAP:\\r\\n ADDRESS_SEARCH:\\r\\n INPUT_PLACEHOLDER: Пошук адреси...\\r\\n TAG_LIST:\\r\\n ADD_TAG: Створити тег\\r\\n ASSIGN_TAGS: Призначити теги\\r\\n REMOVE_TAG: Видалити тег\\r\\n TAGS: Теги\\r\\n'@DATE_TIME':\\r\\n PERIOD:\\r\\n AT: в\\r\\n DAY: День/Дня/Днів\\r\\n HOUR: Годину/Години/Годин\\r\\n MINUTE: Хвилину/Хвилини/Хвилин\\r\\n MONTH: Місяць/Місяця/Місяців\\r\\n SECOND: Секунду/Секунди/Секунд\\r\\n WEEK: Тиждень/Тижня/Тижнів\\r\\n YEAR: Рік\\r\\n PERIOD_TYPE:\\r\\n CURRENT: За поточний/поточну/поточні\\r\\n CURRENTS: За останні ...\\r\\n PREVIOUS: За попередній/попередню/попередні\\r\\n PREVIOUSES: За попередні ...\\r\\n'@DIALOG':\\r\\n '@CONFIRMATIONS':\\r\\n CLOSE_UNSAVED: Внесені зміни не збережено. Зберегти зміни?\\r\\n DELETE: Видалити елемент?\\r\\n DELETE_ITEM: 'Видалити {{item}}?'\\r\\n DELETE_ITEMS: Видалити обрані об'єкти?\\r\\n ALERT: Попереждення\\r\\n ALL: Усі\\r\\n APPLY: Застосувати\\r\\n BY_DEFAULT: За замовчуванням\\r\\n CANCEL: Скасувати\\r\\n CANNOT_SAVE_READ_ONLY: Ви можете тільки переглядати дані.\\r\\n CANT_SAVE_NO_VALIDATION: 'Не заповнені необхідні поля: {{fields}}'\\r\\n CLEAR: Очистити\\r\\n CLOSE: Закрити\\r\\n CLOSE_NO_SAVE: Зберегти зміни?\\r\\n CONFIRMATION: Підтвердження\\r\\n CONNECTION_TO_API_LOST: Помилка підключення до сервера. Спробуйте перезавантажити сторінку.\\r\\n DELETE: Видалити\\r\\n DOWNLOAD: Завантажити\\r\\n ERROR: Помилка\\r\\n EXCEPT: окрім\\r\\n EXECUTE: Виконати\\r\\n EXPORT:\\r\\n TITLE: Експорт\\r\\n REPORT_NAME: Ім'я звіту\\r\\n PAGE_ONLY: Тільки поточна сторінка\\r\\n FOR_IMPORT: Використовувати формат імпорту (*.csv)\\r\\n FAILED_LOAD_DATA: 'Помилка підключення до
{{address}}.'\\r\\n INFORMATION: Інформація\\r\\n INVALID_DATE: Некоректний формат дати\\r\\n LOADING: Завантаження...\\r\\n 'NO': Ні\\r\\n NO_DATA: Відсутні дані\\r\\n OK: OK\\r\\n PRINT: Друкувати\\r\\n READ_ONLY: тільки перегляд\\r\\n REFRESH: Оновити\\r\\n REQUIRED: Потребує значення\\r\\n SAVE_AND_PRINT: Зберегти та роздрукувати\\r\\n SAVE_CHANGES: Зберегти\\r\\n SAVE_TO_CONTINUE: Для виконання дії необхідно зберегти дані. Продовжити?\\r\\n SAVING: Збереження...\\r\\n SELECT: Обрати\\r\\n SPINNER_PLACEHOLDER: Введіть число...\\r\\n WARNING: Увага\\r\\n 'YES': Так\\r\\n'@ENTITY_COMMON':\\r\\n '@COLUMNS':\\r\\n DATE: Дата\\r\\n NUMBER: Номер\\r\\n NAME: Найменування\\r\\n NOTE: Примітка\\r\\n CREATED_BY: Хто створив\\r\\n CREATED_DATE: Дата створення\\r\\n IMPORTED_DB_ID: Код зовнішньої БД\\r\\n IMPORTED_ID: Зовнішній код\\r\\n IMPORTED_DATE: Дата імпорту\\r\\n MODIFIED_DATE: Дата останніх змін\\r\\n MODIFIED_BY: Хто змінив\\r\\n'@ENTITY_GROUPS':\\r\\n ADMIN: ' Адміністрування'\\r\\n DATA_FILTERS: ' Фільтри даних'\\r\\n PERSONNEL: Штат\\r\\n SETTINGS: Налаштування\\r\\n STORE: Склад\\r\\n ZONES: Зони та маршрути\\r\\n'@FEATURES':\\r\\n ZONE_IN_OUT: Налаштування контролю відвідування зон\\r\\n DASHBOARD: Панель мониторингу\\r\\n MAP: Мапа\\r\\n'@FORMS':\\r\\n VALIDATORS:\\r\\n CUSTOM: Невірне значення\\r\\n EMAIL: Невірний email\\r\\n MAX: 'Значення {{actual}} більше за допустиме {{max}}'\\r\\n MAX_LENGTH: 'Довжина рядка {{actualLength}} більша за допустиму {{requiredLength}}'\\r\\n MIN: 'Значення {{actual}} менше за допустиме {{min}}'\\r\\n MIN_LENGTH: 'Довжина рядка {{actualLength}} менша за допустиму {{requiredLength}}'\\r\\n PATTERN: Невірний формат\\r\\n REQUIRED: ' Потребує значення'\\r\\n REQUIRED_TRUE: Потребує згоди\\r\\n'@MENU':\\r\\n ABOUT: Про програму\\r\\n COMPONENTS: Компоненти\\r\\n DASHBOARD: Панель моніторингу\\r\\n DOCS: Документи\\r\\n MAP: Мапа\\r\\n REFS: Довідники\\r\\n REPORTS: Звіти\\r\\n TEST: Для тестів\\r\\n'@OBJECT_LIST':\\r\\n ACTIONS:\\r\\n ADD: Додати\\r\\n COPY: Створити копію\\r\\n DELETE: Видалити\\r\\n EDIT: Редагувати\\r\\n EXPORT: Експортувати\\r\\n IMPORT: Імпортувати\\r\\n READ: Переглянути\\r\\n REFRESH: Оновити\\r\\n SEARCH: Пошук\\r\\n SELECT_ALL: Вибрати все\\r\\n SETTINGS: Параметри\\r\\n LOADING: Завантаження...\\r\\n NO_DATA: Відсутні дані\\r\\n SEARCH: Пошук...\\r\\n SETTINGS:\\r\\n COLUMNS:\\r\\n TITLE: Колонки\\r\\n RESET: За замовчуванням\\r\\n TITLE: Параметри\\r\\n'@REPORTS':\\r\\n BY_DEFAULT: За замовчуванням\\r\\n COMMON:\\r\\n ALL_TRACKING_OBJECTS: Всі об’єкти моніторингу\\r\\n ALL_ZONES: Всі зони\\r\\n BUILDING: Побудова звіту...\\r\\n BY_DEFAULT: 'За замовчуванням '\\r\\n CANCELLED: Побудову звіту скасовано\\r\\n COMPLETED: Побудову звіту завершено\\r\\n DATE: Дата\\r\\n DATE_FROM: З\\r\\n DATE_TO: По\\r\\n DUT_FILTER: Фільтр ДРП\\r\\n LOADING: Завантаження даних...\\r\\n MAKING: Формування звіту...\\r\\n FAULTED: Помилка при створенні звіту\\r\\n FINISHED: Звіт створено\\r\\n PREPARING: Підготовка до побудови звіту...\\r\\n PROCESSING: Обробка даних...\\r\\n PROCESSING_STATUS: 'Обробка даних: {{status}}'\\r\\n TRACKING_OBJECT: Об’єкт моніторингу\\r\\n TRACKING_OBJECTS: Об’єкти моніторингу\\r\\n TRACKING_OBJECT_TAGS: Групи об’єктів моніторингу\\r\\n TRACK_FILTER: Фільтр даних треку\\r\\n ZONE: Зона\\r\\n ZONES: Зони\\r\\n ZONE_TAGS: Групи зон\\r\\n RESULT:\\r\\n EMAIL: EMail\\r\\n FILE: Файл\\r\\n TELEGRAM: Телеграм\\r\\n SENSORS_CHART: Дані датчиків\\r\\n TRACK_FILTER: Фільтр даних треку\\r\\n'@SYSTEM_TASK':\\r\\n COMMON:\\r\\n PREPARING: Підготовка до виконання завдання\\r\\n PROCESSING: Виконання завдання...\\r\\n FINISHED: Завдання виконано\\r\\n CANCELLED: Завдання скасовано\\r\\n FAULTED: Помилка під час виконання завдання\\r\\n IMPORT:\\r\\n TITLE: Імпорт даних\\r\\n CREATED: Створено записів\\r\\n DUPLICATE_ENTRY: Вже було імпортовано запис із тім самим набором ключових полів. Пропуск...\\r\\n FAILED: Не імпортовано\\r\\n IMPORTING: Імпорт даних з файлу\\r\\n NO_DATA: Дані для імпорту відсутні.\\r\\n SUCCESS: Успішно імпортовано\\r\\n TOTAL: Всього оброблено записів\\r\\n UPDATED: Оновлено записів\\r\\n'@UNITS':\\r\\n HOUR: г\\r\\n KILOMETRES: км\\r\\n KMH: км/г\\r\\n LITER: л\\r\\n METRES: м\\r\\n MINUTE: хв\\r\\n PIECE: шт.\\r\\n SECOND: сек\\r\\n VOLT: V\\r\\nUPLOAD_COMPONENT:\\r\\n SELECT_FILE: Виберіть файл...\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/translate.module/l10n/ua.yml\n// module id = 2366\n// module chunks = 1","import { dialog, ApiAnswer, ApiQuestion, IApiQuestionHandler, ApiError, ApiResponse } from '../../../../core.module';\r\nimport { UssApiQuestionDialog } from './api-question.dialog';\r\n\r\nexport class UssDialogsApiQuestionHandler implements IApiQuestionHandler\r\n{\r\n getAnswer(q: ApiQuestion | ApiError | ApiResponse): any {\r\n return new Promise(resolve => dialog.show(UssApiQuestionDialog, { msg: q })\r\n .onClose.subscribe(res => {\r\n let r = res;\r\n if (!(r instanceof ApiAnswer)) {\r\n r = new ApiAnswer();\r\n r.result = res;\r\n }\r\n resolve(r);\r\n }));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/api-question/api-question.handler.ts","import { Component, OnInit } from '@angular/core';\r\nimport { SystemComponent } from '../../../internals';\r\nimport { UssDialog } from '../common/UssDialog';\r\nimport { Api, ApiAnswer, ApiMessage, ApiResponse, ApiQuestion, ApiError, Reflection, IApiQuestionHandler, isEmpty, isNotEmpty, API_SERVICE_QUESTION_HANDLER_TOKEN } from '../../../../core.module';\r\n\r\n\r\n@Component({\r\n template: require('./api-question.dialog.html'),\r\n styles: [require('./api-question.dialog.scss')]\r\n})\r\n@SystemComponent()\r\nexport class UssApiQuestionDialog extends UssDialog implements OnInit, Api.ApiQuestion {\r\n\r\n public static show(msg: ApiQuestion): Promise | ApiAnswer | void;\r\n public static show(msg: ApiError): Promise | boolean | void;\r\n public static show(msg: ApiResponse): Promise | any | void;\r\n public static show(p: any): any {\r\n const apiQuestionHandler: IApiQuestionHandler = Reflection.get(API_SERVICE_QUESTION_HANDLER_TOKEN);\r\n if (apiQuestionHandler && p instanceof ApiResponse && p.isValid) {\r\n return apiQuestionHandler.getAnswer(p);\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n public msg: ApiResponse;\r\n\r\n public caption: ApiMessage;\r\n public type: string;\r\n public text: string;\r\n public args: any;\r\n public cancelButton: boolean;\r\n\r\n public buttons: ApiAnswer[] = [];\r\n public okButton: ApiAnswer;\r\n public actions: ApiAnswer[] = [];\r\n public result: any = null;\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.msg = this.msg || new ApiResponse();\r\n this.text = this.msg.text;\r\n this.args = this.msg.args;\r\n if (this.msg instanceof ApiQuestion) {\r\n this.type = 'confirmation';\r\n this.caption = this.msg.caption || new ApiMessage('@DIALOG.CONFIRMATION|Подтверждение');\r\n this.cancelButton = this.msg.cancelButton;\r\n // если нет ни одной кнопки без результата - по умолчанию добавим кнопку ОТМЕНИТЬ\r\n if (isEmpty(this.cancelButton) && this.msg.answers.all(x => isNotEmpty(x.result))) {\r\n this.cancelButton = true;\r\n }\r\n this.buttons = this.msg.answers.where(x => x.type === Api.AnswerType.Button && x.result !== 'ok').toArray();\r\n this.okButton = this.msg.answers.firstOrDefault(x => x.type === Api.AnswerType.Button && x.result === 'ok');\r\n this.actions = this.msg.answers.where(x => x.type !== Api.AnswerType.Button).toArray();\r\n // если есть хотя бы один ответ некнопка, необходимо добавить кнопку выбора (это кнопка с результатом 'ok')\r\n if (this.actions.length > 0 && this.actions.all(x => x.type !== Api.AnswerType.Action) && !this.okButton) {\r\n this.okButton = new ApiAnswer({ message: '@DIALOG.OK|OK', result: 'ok', kind: 'ok' });\r\n }\r\n this.hideCloseInTitle = !(this.cancelButton || this.msg.answers.any(x => isEmpty(x.result)));\r\n } else if (this.msg instanceof ApiError) {\r\n this.type = 'error';\r\n this.caption = new ApiMessage('@DIALOG.ERROR|Ошибка');\r\n this.okButton = new ApiAnswer({ message: '@DIALOG.OK|OK', result: true, kind: 'close' });\r\n this.result = true;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/components/dialogs/api-question/api-question.dialog.ts","module.exports = \"\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{action.text|translate:action.args}}\\r\\n \\r\\n {{action.text|translate:action.args}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n 0 || okButton || cancelButton\\\">\\r\\n
\\r\\n {{answer.text|translate:answer.args}}\\r\\n {{okButton.text|translate:okButton.args}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/api-question/api-question.dialog.html\n// module id = 2369\n// module chunks = 1","module.exports = \".uss-question-dialog .question-text {\\n margin-bottom: 0.5em; }\\n\\n.uss-question-dialog .question-selectors .question-selector {\\n display: block; }\\n\\n.uss-question-dialog .question-selectors uss-checkbox.question-selector {\\n margin-top: 0.2em; }\\n\\n.uss-question-dialog .question-selectors uss-button.question-selector/deep/ {\\n margin-top: 0.5em; }\\n .uss-question-dialog .question-selectors uss-button.question-selector/deep/ button {\\n margin: 0 !important; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/components/dialogs/api-question/api-question.dialog.scss\n// module id = 2370\n// module chunks = 1","export * from './object-list-panel.decorator';\r\nexport * from './page-panel.decorator';\r\n//export * from './subscribe.decorator';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/decorators/index.ts","import { Type, ViewContainerRef } from '@angular/core';\r\nimport { AppBase, appComponents } from '@core.module';\r\nimport { UssComponent2 } from '../components';\r\nimport { UssDialogsService } from '@dialogs.module';\r\n\r\n/**\r\n * Список помеченных данным декоратором компонентов добавляется в словарь pagePanels.\r\n * Также данные компоненты автоматически попадают в список appComponents, так что их не нужно дополнительно регистрировать\r\n * при помощи декоратора @AppComponent() или в модуле приложения.\r\n * Эти компоненты регистрируются для использования на других страницах.\r\n * Страницы обязаны знать про такие компоненты (точнее интерфейсы, реализуемые этими компонентами).\r\n * Например, некая страница с именем TestPage ожидает возможности добавления произвольного кол-ва кнопок с действиями.\r\n * Для этого она получает все зарегистрированные pagePanel-и для страницы TestPage и вызывает у них метод getActions().\r\n */\r\nexport const PagePanel = (pageType: string | Type) => target => {\r\n if (typeof pageType !== 'string') {\r\n pageType = `page@${pageType.name}`;\r\n }\r\n pagePanels[pageType] = pagePanels[pageType] || [];\r\n pagePanels[pageType].unshift(target);\r\n if (!appComponents.contains(target)) {\r\n appComponents.push(target);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Список всех компонентов для редактирования бизнес-объектов.\r\n */\r\nexport const pagePanels: { [pageTypeName: string]: Type[] } = { };\r\n\r\n\r\nexport function createPagePanelComponent(panel: Type, container?: ViewContainerRef, parameters?: any): UssComponent2 {\r\n let res = null;\r\n if (panel) {\r\n res = UssDialogsService.createComponent(panel, container, parameters) as UssComponent2;\r\n container.element.nativeElement['__pagePanel'] = res;\r\n }\r\n return res;\r\n}\r\n\r\nexport function createPagePanelComponents(page: AppBase, container?: ViewContainerRef, parameters?: any): T[];\r\nexport function createPagePanelComponents(pageType: string | Type, container?: ViewContainerRef, parameters?: any): UssComponent2[];\r\nexport function createPagePanelComponents(p1, container?: ViewContainerRef, parameters?: any) {\r\n let res = null;\r\n let pageType = p1;\r\n if (p1 instanceof AppBase) {\r\n pageType = `page@${p1.constructor.name}`;\r\n container = container || p1.viewContainer;\r\n }\r\n else if (typeof p1 !== 'string') {\r\n pageType = `page@${pageType.name}`;\r\n }\r\n const panels = pagePanels[pageType] || [];\r\n return panels\r\n .select(p => {\r\n const res = createPagePanelComponent(p, container, parameters);\r\n if (p1 instanceof AppBase) {\r\n res['page'] = p1;\r\n }\r\n if (typeof res['init'] === 'function') {\r\n res['init'](p1);\r\n }\r\n return res;\r\n }).where(p => !!p).toArray();\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/decorators/page-panel.decorator.ts","export * from './autocomplete.directive';\r\nexport * from './directive.base';\r\nexport * from './label.directive';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/directives/index.ts","import * as ng from '@angular/core';\r\nimport { extendForPropertyChanges, OData, ODataLike, isNotEmpty, debounce, ifEmpty, UssHttp, auth, clone, translate } from '@core.module';\r\nimport { ussExpression, IEntityMetadata } from '@metadata.module';\r\nimport { SystemComponent } from '../internals';\r\nimport { UssDataSourceComponent } from '../components/common/UssDataSourceComponent';\r\nimport { UssObjectSelectComponent } from '../components/object-select/object-select.component';\r\nimport { UssInputComponent } from '../components/input/inputs.component';\r\nimport { objectListPanels } from '../decorators/object-list-panel.decorator';\r\nimport { UssDataSourcePDataTableDirective } from '../components/data-source/data-source.p-dataTable.directive';\r\n\r\nexport module App {\r\n export enum AutoCompleteCategory {\r\n Name = 0,\r\n Surname = 1,\r\n Patronymic = 2\r\n }\r\n}\r\n\r\nexport interface ISemanticApiSettings {\r\n action?: string;\r\n url?: string;\r\n beforeSend?: (settings: ISemanticApiSettings) => ISemanticApiSettings;\r\n beforeXHR?: Function;\r\n onResponse?: (response: any) => any;\r\n dataType?: 'json' | 'jsonp' | 'html' | 'xml' | 'script';\r\n}\r\n\r\nexport interface ISemanticAutoCompleteFields {\r\n /**\r\n * array of results (standard)\r\n * Default: 'results'\r\n */\r\n results?: string;\r\n\r\n /**\r\n * result title field name\r\n * Default: 'title'\r\n */\r\n title?: string;\r\n\r\n /**\r\n * result description field name\r\n * Default: 'description'\r\n */\r\n description?: string;\r\n\r\n /**\r\n * result url field name\r\n * the URL to open when result is clicked/\r\n */\r\n url?: string;\r\n\r\n\r\n\r\n /**\r\n * array of categories (category view)\r\n * Default: 'results'\r\n */\r\n categories?: string;\r\n /**\r\n * name of category (category view)\r\n * Default: 'name'\r\n */\r\n categoryName?: string;\r\n /**\r\n * array of results (category view)\r\n * Default: 'results'\r\n */\r\n categoryResults?: string;\r\n /**\r\n * result image\r\n * Default: 'image'\r\n */\r\n image?: string;\r\n /**\r\n * result price\r\n * Default: 'price'\r\n */\r\n price?: string;\r\n /**\r\n * \"view more\" object name\r\n * Default: 'action'\r\n */\r\n action?: string; \r\n /**\r\n * \"view more\" text\r\n * Default: 'text'\r\n */\r\n actionText?: string;\r\n /**\r\n * \"view more\" url\r\n * Default: 'url'\r\n */\r\n actionURL?: string,\r\n\r\n /**\r\n * \r\n * Default: true\r\n */\r\n searchOnFocus?: boolean;\r\n}\r\n\r\nexport interface ISemanticAutoCompleteSettings {\r\n /**\r\n * Settings for API call.\r\n * Default: { action: 'search' }\r\n */\r\n apiSettings?: ISemanticApiSettings;\r\n\r\n /**\r\n * Minimum characters to query for results\r\n * Default: 1\r\n */\r\n minCharacters?: number;\r\n\r\n /**\r\n * Whether search should show results on focus (must also match min character length)\r\n * Default: true\r\n */\r\n searchOnFocus?: boolean;\r\n\r\n /**\r\n * Named transition to use when animating menu in and out. Fade and slide down are available without including ui transitions\r\n * Default: fade\r\n */\r\n transition?: string;\r\n /**\r\n * Duration of animation events\r\n * Default: 300\r\n */\r\n duration?: number;\r\n /**\r\n * Maximum results to display when using local and simple search, maximum category count for category search\r\n * Default: 7\r\n */\r\n maxResults?: number;\r\n /**\r\n * Caches results locally to avoid requerying server\r\n * Default: true\r\n */\r\n cache?: boolean;\r\n /**\r\n * Specify a Javascript object which will be searched locally\r\n */\r\n source?: any[];\r\n /**\r\n * Whether the search should automatically select the first search result after searching\r\n * Default: true\r\n */\r\n selectFirstResult?: boolean;\r\n /**\r\n * Whether a \"no results\" message should be shown if no results are found. (These messages can be modified using the template object specified below)\r\n * Default: false\r\n */\r\n showNoResults?: boolean;\r\n /**\r\n * Return local results that match anywhere inside your content\r\n * Default: false\r\n */\r\n fullTextSearch?: boolean;\r\n /**\r\n * List mapping display content to JSON property, either with API or source.\r\n * Default: \r\n */\r\n fields?: ISemanticAutoCompleteFields;\r\n /**\r\n * Specify object properties inside local source object which will be searched\r\n * Default: ['title', 'description']\r\n */\r\n searchFields?: string[];\r\n /**\r\n * Delay before hiding results after search blur\r\n * Default: 0\r\n */\r\n hideDelay?: number;\r\n /**\r\n * Delay before querying results on inputchange\r\n * Default: 100\r\n */\r\n searchDelay?: number;\r\n /**\r\n * Easing equation when using fallback Javascript animation\r\n * Default: easeOutExpo\r\n */\r\n easing?: string;\r\n}\r\n\r\nexport interface IUssAutoCompleteSettings extends ISemanticAutoCompleteSettings {\r\n /**\r\n * Selector for the grouping control of the autocomplete element. If not found the host element will be used.\r\n * Default: .ui.input\r\n */\r\n controlSelector?: string;\r\n\r\n /**\r\n * Selector for the input control of the autocomplete element. If not found the first child input element of the host element will be used.\r\n * Default: .ui.input input\r\n */\r\n inputSelector?: string;\r\n\r\n /**\r\n * Whether USS auth header should be added to the request.\r\n * Default: true\r\n */\r\n authHeader?: boolean;\r\n\r\n /**\r\n * The name of the source OData data controller.\r\n * Default: 'AutoComplete'\r\n */\r\n odataController?: string;\r\n\r\n /**\r\n * The category field name.\r\n * (Only for ODATA Controller)\r\n * Default: 'Category'\r\n */\r\n categoryFieldName?: string;\r\n\r\n /**\r\n * The category value.\r\n * Default: App.AutoCompleteCategory.Name\r\n * (Only for ODATA Controller)\r\n */\r\n category?: App.AutoCompleteCategory | any;\r\n\r\n /**\r\n * Result field name. The value of this propery will be set as a result.\r\n * Default: 'Value'\r\n */\r\n fieldName?: string;\r\n\r\n /**\r\n * Expression to display in aoutocomplete list.\r\n * Default: equals to {fieldName}.\r\n * (Only for ODATA Controller)\r\n */\r\n displayExpression?: string;\r\n\r\n /**\r\n * Defines list of the sort clause if OData controller is set.\r\n * Default: 'Weight desc, Name'\r\n * (Only for ODATA Controller)\r\n */\r\n sortFields?: string;\r\n\r\n /**\r\n * The entity metadata. Applies to uss-select-object only.\r\n * (Only for ODATA Controller)\r\n */\r\n metadata?: IEntityMetadata;\r\n\r\n /**\r\n * Custom OData query.\r\n * (Only for ODATA Controller)\r\n */\r\n odata?: ODataLike;\r\n\r\n /**\r\n * Callback on element selection by user. The first parameter includes the filtered response results for that element.\r\n * The function should return false to prevent default action (closing search results and selecting value).\r\n */\r\n onSelect?: (result: any, response: any) => boolean | void;\r\n\r\n /**\r\n * Callback after processing element template to add HTML to results.\r\n * Function should return false to prevent default actions.\r\n */\r\n onResultsAdd?: (html: string) => boolean | void;\r\n\r\n /**\r\n * Callback on search query.\r\n */\r\n onSearchQuery?: (query: string) => void;\r\n\r\n /**\r\n * Callback on server response.\r\n */\r\n onResults?: (response: any) => void;\r\n\r\n /**\r\n * Callback when results are opened.\r\n */\r\n onResultsOpen?: () => void;\r\n\r\n /**\r\n * Callback when results are closed.\r\n */\r\n onResultsClose?: () => void;\r\n\r\n /**\r\n * These templates are used to generate the HTML structures for search results.\r\n * By specifying a search as type: 'customType', and a custom template under $.fn.search.settings.templates.customType you can create\r\n * custom search results. Keep in mind that .title will be used for matching results onSelect.\r\n */\r\n templates?: {\r\n /**\r\n * Returns escaped string for injected results.\r\n */\r\n escape?: (s: string) => string;\r\n /**\r\n * Returns html for message with given message and type.\r\n */\r\n message?: (message: string, type: 'standard' | 'category' | 'empty' | string) => string;\r\n /**\r\n * Returns results html for category results.\r\n */\r\n category?: (response: any, fields: ISemanticAutoCompleteFields) => string;\r\n /**\r\n * Returns results html for standard results.\r\n */\r\n standard?: (response: any, fields: ISemanticAutoCompleteFields) => string;\r\n }\r\n}\r\n\r\n\r\n@ng.Directive({\r\n selector: '[ussAutoComplete], uss-object-select'\r\n})\r\n@SystemComponent()\r\nexport class UssAutoCompleteDirective implements ng.OnChanges, ng.AfterViewInit {\r\n\r\n public static categoryNames = {\r\n 'Name': App.AutoCompleteCategory.Name,\r\n 'Surname': App.AutoCompleteCategory.Surname,\r\n 'Patronymic': App.AutoCompleteCategory.Patronymic\r\n }\r\n\r\n /**\r\n * Параметры автодополнения или отслеживаемое значение (не для uss-object-select)\r\n * Если указана строка, то она трактуется одним из двух способов:\r\n * 1. CategoryName[:minCharacters] (Name:3) - подстановка значений категории Name из справочника Autocomplete (указанного в IUssAutoCompleteSettings.odataController)\r\n * 2. EntityClassName.FieldName[:minCharacters] (Sensor.ManufacturerName:1) - подстановка значений поля ManufacturerName из справочника Sensor\r\n */\r\n @ng.Input('ussAutoComplete') value: IUssAutoCompleteSettings | string;\r\n\r\n @ng.Input('readonly') readonly;\r\n @ng.Input('filter') filter;\r\n @ng.Input('quickSearchFilter') quickSearchFilter;\r\n\r\n constructor(public elementRef: ng.ElementRef, public renderer: ng.Renderer2, public changeDetector: ng.ChangeDetectorRef) {\r\n }\r\n\r\n private _settings: IUssAutoCompleteSettings;\r\n\r\n private _wasInit = false;\r\n\r\n ngOnChanges(changes) {\r\n if (this._wasInit && (changes.value || changes.filter || changes.quickSearchFilter || changes.readonly || changes._readonly)) {\r\n debounce(() => this.initControl(), 500, this);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n debounce(() => this.initControl(), 500, this);\r\n this._wasInit = true;\r\n }\r\n\r\n createDefaultSettings(): IUssAutoCompleteSettings {\r\n return {\r\n controlSelector: '.ui.input',\r\n inputSelector: '.ui.input input',\r\n authHeader: true,\r\n odataController: 'Autocompletes',\r\n categoryFieldName: 'AutocompleteType',\r\n category: App.AutoCompleteCategory.Name,\r\n fieldName: 'Value',\r\n\r\n apiSettings: { action: 'search' },\r\n fields: { searchOnFocus: true },\r\n minCharacters: 1,\r\n maxResults: 7,\r\n selectFirstResult: true,\r\n showNoResults: false,\r\n fullTextSearch: false,\r\n sortFields: 'Weight desc'\r\n }\r\n }\r\n\r\n get hostComponent(): UssInputComponent | UssObjectSelectComponent {\r\n return this.elementRef.nativeElement.$ussControl instanceof UssDataSourceComponent ? this.elementRef.nativeElement.$ussControl : null;\r\n }\r\n\r\n setSelectedValue(result: any, settings: IUssAutoCompleteSettings, input: JQuery) {\r\n const val = result[settings.fieldName];\r\n const hostComponent = this.hostComponent;\r\n if (hostComponent instanceof UssDataSourceComponent) {\r\n if (hostComponent instanceof UssObjectSelectComponent) {\r\n //setTimeout(() => hostComponent.value = val, 50); // необходима задержка для того, чтобы текст не стирался в onInputElementChange()\r\n hostComponent.skipClearingInputText = true;\r\n hostComponent.value = val;\r\n } else {\r\n hostComponent.value = val;\r\n }\r\n } else {\r\n input.val(val);\r\n }\r\n }\r\n\r\n filterChange: ng.EventEmitter;\r\n\r\n initControl() {\r\n if (this.hostComponent?.isReadOnly()) return;\r\n const defaultSettings = this.createDefaultSettings();\r\n let currentSettings;\r\n if (this.hostComponent instanceof UssObjectSelectComponent) {\r\n // для компонента uss-object-select\r\n if (!this.filterChange) {\r\n this.filterChange = new ng.EventEmitter();\r\n this.filterChange.subscribe(x => {\r\n x.$source = this.hostComponent;\r\n this.ngOnChanges(x);\r\n });\r\n extendForPropertyChanges(this.hostComponent, 'filter', this.filterChange);\r\n }\r\n currentSettings = clone(this.value) || { };\r\n currentSettings.metadata = currentSettings.metadata || this.hostComponent.getEntityMetadata();\r\n currentSettings.odata = OData.createFrom(currentSettings.odata);\r\n (currentSettings.odata as OData).appendFrom(this.quickSearchFilter || this.hostComponent.filter);\r\n let panel = this.hostComponent.listPanel;\r\n if (!panel && currentSettings.metadata && currentSettings.metadata.Name) {\r\n const PanelType = objectListPanels[currentSettings.metadata.Name];\r\n if (PanelType) {\r\n panel = new PanelType();\r\n panel.skipCheckingNgEvents();\r\n }\r\n }\r\n if (panel) {\r\n if (typeof panel.prepareQuery === 'function')\r\n panel.prepareQuery(currentSettings.odata, true);\r\n if (typeof panel.ngOnDestroy === 'function')\r\n panel.ngOnDestroy();\r\n }\r\n \r\n currentSettings.fullTextSearch = ifEmpty(currentSettings.fullTextSearch, true);\r\n const fields = currentSettings.searchFields || UssDataSourcePDataTableDirective.extractParserFields(currentSettings.metadata);\r\n const globalFilterProps = fields.distinct().select(x => `${currentSettings.fullTextSearch ? '*' : ''}${x}*`).toArray().join(',');\r\n (currentSettings.odata as OData).appendQuery(globalFilterProps, '{query}', false);\r\n currentSettings.odataController = currentSettings.odataController || currentSettings.metadata.ODataUrl;\r\n currentSettings.fieldName = currentSettings.fieldName || this.hostComponent.valueFieldName || 'Id';\r\n currentSettings.displayExpression = currentSettings.displayExpression || currentSettings.metadata.RepresentExpression;\r\n currentSettings.sortFields = currentSettings.sortFields || UssDataSourcePDataTableDirective.extractParserFields(currentSettings.metadata, currentSettings.displayExpression) || 'Name';\r\n currentSettings.cache = false;\r\n }\r\n else {\r\n // для компонента input\r\n currentSettings = clone(this.value);\r\n if (typeof currentSettings === 'string') {\r\n let arr = currentSettings.split(':');\r\n let minCharacters = parseInt(arr[1]);\r\n if (isNaN(minCharacters)) minCharacters = 0;\r\n minCharacters = minCharacters || defaultSettings.minCharacters;\r\n arr = arr[0].replace('/', '.').split('.');\r\n if (arr.length === 1) {\r\n const categoryName = arr[0];\r\n currentSettings = { minCharacters, category: UssAutoCompleteDirective.categoryNames[categoryName] || 0 }\r\n } else {\r\n currentSettings = { minCharacters, odataController: `${defaultSettings.odataController}/${arr[0]}/${arr[1]}`, categoryFieldName: null, fieldName: arr[1], sortFields:arr[1] }\r\n }\r\n }\r\n }\r\n const settings = _extend(defaultSettings, currentSettings);\r\n this._settings = settings;\r\n const input = $(this.elementRef.nativeElement.querySelector(settings.inputSelector) || this.elementRef.nativeElement.querySelector('input'));\r\n\r\n if (!settings.apiSettings.url && settings.odataController) {\r\n settings.sortFields = settings.sortFields ? `${settings.sortFields}, ${settings.fieldName}` : settings.fieldName;\r\n settings.fields.results = 'value';\r\n settings.fields.title = null;\r\n settings.fields.description = settings.fieldName;\r\n let odata = OData.createFrom(settings.odata)\r\n .$top(settings.maxResults)\r\n .$orderBy(settings.sortFields)\r\n .$inlinecount();\r\n if (!settings.odata) {\r\n odata.$distinct(settings.fieldName);\r\n if (settings.categoryFieldName && isNotEmpty(settings.category)) {\r\n odata.eq(settings.categoryFieldName, settings.category, true);\r\n }\r\n if (settings.fullTextSearch) {\r\n odata.prop(settings.fieldName).contains('{query}');\r\n } else {\r\n odata.prop(settings.fieldName).startswith('{query}');\r\n }\r\n }\r\n if (!settings.odataController.startsWith('api$/'))\r\n settings.odataController = `api$/${settings.odataController}`;\r\n settings.apiSettings.url = UssHttp.updateUrl(`${settings.odataController}?${odata.query}`);\r\n } else {\r\n settings.fields.description = settings.fields.description || settings.fieldName;\r\n }\r\n if (settings.authHeader && !settings.apiSettings.beforeXHR) {\r\n settings.apiSettings.beforeXHR = (xhr) => {\r\n xhr.setRequestHeader('Authorization', `Bearer ${auth.accessToken}`);\r\n if (translate.currentLang) {\r\n xhr.setRequestHeader('X-Language', translate.currentLang);\r\n }\r\n }\r\n }\r\n if (!settings.onSelect) {\r\n settings.onSelect = result => this.setSelectedValue(result, settings, input);\r\n }\r\n\r\n if (!settings.apiSettings.onResponse) {\r\n settings.apiSettings.onResponse = response => this.translateResponse(response);\r\n settings.apiSettings.beforeSend = x => this.beforeSend(x);\r\n }\r\n\r\n if (settings.displayExpression && settings.displayExpression !== settings.fieldName) {\r\n settings.templates = settings.templates || {};\r\n if (!settings.templates.standard) {\r\n settings.templates.standard = (response, fields) => {\r\n let html = '';\r\n if (response[fields.results] !== undefined) {\r\n // each result\r\n $.each(response[fields.results], (index, result) => {\r\n html += '';\r\n html += `
${ussExpression(result, settings.displayExpression)}
`;\r\n html += '';\r\n html += '
';\r\n });\r\n }\r\n return html;\r\n }\r\n }\r\n }\r\n const onOpen = settings.onResultsOpen;\r\n const onClose = settings.onResultsClose;\r\n settings.onResultsOpen = () => {\r\n this.hostComponent && (this.hostComponent['isAutoCompleteOpen'] = true);\r\n onOpen && onOpen();\r\n }\r\n settings.onResultsClose = () => {\r\n this.hostComponent && (this.hostComponent['isAutoCompleteOpen'] = false);\r\n onClose && onClose();\r\n }\r\n if (input.length === 1) {\r\n const control = $(this.elementRef.nativeElement.querySelector(settings.controlSelector) || this.elementRef.nativeElement);\r\n control.addClass('ui search');\r\n input.addClass('prompt');\r\n control.search(settings);\r\n input.attr('autocomplete', 'new-password');\r\n }\r\n }\r\n\r\n beforeSend(apiSettings: ISemanticApiSettings) {\r\n const res = apiSettings;\r\n const settings = this._settings;\r\n if (settings) {\r\n if (settings.odata) {\r\n let query = (res).urlData?.query;\r\n if (query === \"'\") (res).urlData.query = '';\r\n if (typeof query === 'string' && query !== \"'\" && (query.startsWith(\"'\") || query.endsWith(\"'\") || query.endsWith(\"!\"))) {\r\n const odata = OData.createFrom(settings.odata)\r\n .$top(settings.maxResults)\r\n .$orderBy(settings.sortFields)\r\n .$inlinecount();\r\n odata.clearFilters();\r\n let q = '{query}';\r\n if (query.startsWith(\"'\")) {\r\n q = `'${q}`;\r\n query = query.substr(1, query.length - 1);\r\n }\r\n if (query.endsWith(\"'\")) {\r\n q = `${q}'`;\r\n query = query.substr(0, query.length - 1);\r\n }\r\n else if (query.endsWith(\"'!\")) {\r\n q = `${q}'!`;\r\n query = query.substr(0, query.length - 2);\r\n }\r\n else if (query.endsWith(\"!\")) {\r\n q = `${q}!`;\r\n query = query.substr(0, query.length - 1);\r\n }\r\n (res).urlData.query = query;\r\n odata.appendQuery((settings.fullTextSearch ? '*' : '') + settings.fieldName + '*', q, true);\r\n apiSettings.url = UssHttp.updateUrl(`${settings.odataController}?${odata.query}`);\r\n }\r\n }\r\n }\r\n (res).urlData.query = typeof (res).urlData.query === 'string' ? (res).urlData.query.replace(/\\'/g, \"''\") : (res).urlData.query;\r\n return res;\r\n }\r\n\r\n\r\n translateResponse(response: any) {\r\n let res = response;\r\n if (response && response.value === undefined) {\r\n res = { value: [] };\r\n for (let r of response) {\r\n if (!r) break;\r\n res.value.push({ Value: r.Value });\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/directives/autocomplete.directive.ts","import { Directive, Input, OnChanges } from '@angular/core';\r\n\r\nimport { translate } from '@core.module';\r\n\r\nimport {SystemComponent} from '../internals';\r\nimport { UssComponent2 } from '../components/common/base.component';\r\nimport { UssInputComponent, UssTextAreaComponent, UssCheckBoxComponent } from '../components/input/inputs.component';\r\nimport { UssDataSourceComponent } from '../components/common/UssDataSourceComponent';\r\nimport { UssDatetimePickerComponent } from '../components/datetime-picker/datetime-picker.component';\r\nimport { UssEnumSelectComponent } from '../components/enum-select/enum-select.component';\r\nimport { UssSpinnerComponent } from '../components/spinner/spinner.component';\r\nimport { UssObjectDropdownSelectComponent } from '../components/object-dropdown-select/object-dropdown-select.component';\r\nimport { UssObjectSelectComponent } from '../components/object-select/object-select.component';\r\nimport { UssUploadComponent } from '../components/upload/upload.component';\r\nimport { UssColorPickerComponent } from '../components/color-picker/color-picker.component';\r\nimport { UssSelectComponent } from '../components/select/select.component';\r\nimport { UssMultiSelectComponent } from '../components/multi-select/multi-select.component';\r\n\r\nexport class UssLabelDirectiveBase extends UssComponent2 implements OnChanges {\r\n\r\n @Input('label') value: string;\r\n\r\n checkIfVisibility = true;\r\n\r\n constructor(private hostComponent: UssDataSourceComponent) {\r\n super(hostComponent.viewContainer);\r\n this.subscribe(translate.onLangChange, () => this.updateLabel());\r\n }\r\n\r\n ngOnChanges(ch) {\r\n if (ch.value) {\r\n this.updateLabel();\r\n }\r\n }\r\n\r\n onVisibilityInit() {\r\n super.onVisibilityInit();\r\n this.updateLabel();\r\n }\r\n\r\n updateLabel() {\r\n if (this.value) {\r\n this.hostComponent.label = translate.instant(this.value);\r\n }\r\n if (this.hostComponent.propertyMetadata) {\r\n if (!this.value) {\r\n let label = this.hostComponent.propertyMetadata.Description;\r\n label = translate.instant(label);\r\n this.hostComponent.label = label || this.hostComponent.propertyMetadata.Name;\r\n }\r\n if (!this.hostComponent.title) {\r\n let title = translate.instant(this.hostComponent.propertyMetadata.Note);\r\n if (!title) {\r\n title = translate.instant(this.hostComponent.label);\r\n }\r\n this.hostComponent.title = title || '';\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n@Directive({ selector: 'uss-select[label]' }) @SystemComponent() export class UssSelectLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssSelectComponent) { super(hostComponent); } }\r\n@Directive({ selector: 'uss-multi-select[label]' }) @SystemComponent() export class UssMultiSelectLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssMultiSelectComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-input[label]' }) @SystemComponent() export class UssInputLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssInputComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-textarea[label]' }) @SystemComponent() export class UssTextAreaLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssTextAreaComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-checkbox[label]' }) @SystemComponent() export class UssCheckBoxLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssCheckBoxComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-datetime-picker[label]' }) @SystemComponent() export class UssDatetimePickerLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssDatetimePickerComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-enum-select[label]' }) @SystemComponent() export class UssEnumSelectLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssEnumSelectComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-object-dropdown-select[label]' }) @SystemComponent() export class UssObjectDropdownSelectLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssObjectDropdownSelectComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-object-select[label]' }) @SystemComponent() export class UssObjectSelectLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssObjectSelectComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-spinner[label]' }) @SystemComponent() export class UssSpinnerLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssSpinnerComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-upload[label]' }) @SystemComponent() export class UssUploadLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssUploadComponent) { super(hostComponent); } }\r\n\r\n@Directive({ selector: 'uss-color-picker[label]' }) @SystemComponent() export class UssColorPickerLabelDirective extends UssLabelDirectiveBase { constructor(hostComponent: UssColorPickerComponent) { super(hostComponent); } }\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/directives/label.directive.ts","export * from './asyncTask.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/services/index.ts","export * from './import.system-task/import-systemTask.page';\r\nexport * from './system-task.component/system-task.component';\r\nexport * from './system-task.dialog/system-task.dialog';\r\nexport * from './systemTask-params/systemTask-params.component';\r\nexport * from './system-task.page';\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/index.ts","import { Component, ChangeDetectionStrategy, Input, OnInit, OnChanges, ViewChild, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { bool, clearPrivateProperties, Inject, AppComponent, download, translate, ifEmpty, dialog } from '@core.module';\r\nimport { UssSystemTaskPageBase } from '../system-task.page';\r\nimport { UssComponent2 } from '../../components/common/base.component';\r\nimport { TProgressType, UssAsyncTasksService, OnSystemTaskProgress } from '../../services/asyncTask.service';\r\nimport { AppPageBase } from '../../components/common/base.page';\r\n\r\nexport interface IAppSystemTaskPage {\r\n title: string;\r\n form: FormGroup;\r\n makeSystemTaskParams(): any;\r\n startTask?(params: any): Promise;\r\n handleResult?(taskResult: TResult): TResult;\r\n model: any;\r\n isEmbedded: boolean;\r\n isReadOnly: boolean | (() => boolean);\r\n}\r\n\r\n@Component({\r\n selector: 'uss-system-task',\r\n template: require('./system-task.component.html'),\r\n styles: [require('./system-task.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n@AppComponent()\r\nexport class UssSystemTaskComponent extends UssComponent2 implements OnInit {\r\n\r\n @Input('h100') h100: boolean;\r\n @Input('readonly') _readonly: boolean;\r\n public get isReadOnly() {\r\n return ifEmpty(this._readonly, this.systemTaskPage\r\n && typeof this.systemTaskPage.isReadOnly === 'function' && this.systemTaskPage.isReadOnly()\r\n || typeof this.systemTaskPage.isReadOnly === 'boolean' && this.systemTaskPage.isReadOnly\r\n );\r\n }\r\n\r\n @ViewChild('formRef') formElementRef: ElementRef;\r\n\r\n public title: string;\r\n public form = new FormGroup({});\r\n\r\n private _taskId: string;\r\n public isExecuting: Subscription;\r\n public isCancelling: boolean;\r\n public progressType: TProgressType;\r\n public taskResult: Uss.SystemTaskResult;\r\n public currentProgressPercent: number = -1;\r\n public currentProgressMessage: string;\r\n\r\n @Inject(UssAsyncTasksService) asyncTasksService: UssAsyncTasksService;\r\n\r\n public systemTaskPage: IAppSystemTaskPage;\r\n\r\n init(systemTaskPage: IAppSystemTaskPage) {\r\n this.systemTaskPage = systemTaskPage;\r\n this.title = systemTaskPage.title;\r\n this.form = systemTaskPage.form;\r\n this.formElementRef.nativeElement['_ussDataSource'] = this;\r\n this.form.valueChanges.subscribe(() => {\r\n this.debounce(() => this.markForCheck(), 10, 'form.valueChanges');\r\n });\r\n }\r\n\r\n createControls(systemTaskId: string, extraFields?: any) {\r\n return Object.assign({\r\n SystemTaskId: [systemTaskId, Validators.required],\r\n }, extraFields);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n constructor(vc: ViewContainerRef) {\r\n super(vc);\r\n if (this.parentComponent instanceof UssSystemTaskPageBase && !this.systemTaskPage) {\r\n this.parentComponent.systemTaskComponent = this;\r\n }\r\n }\r\n\r\n applyQueryParams(p: { [index: string]: any }, immediately?: boolean): void {\r\n this.wasInit = false;\r\n if (!immediately) {\r\n this.debounce(() => this.applyQueryParams(p, true), 0, 'applyQueryParams');\r\n return;\r\n }\r\n this.clearDebounce('applyQueryParams');\r\n setTimeout(() => this.wasInit = true);\r\n }\r\n\r\n updateRoute(parent: AppPageBase) {\r\n }\r\n\r\n toArray(value) {\r\n if (typeof value === 'string') {\r\n value = value.split(',');\r\n } else {\r\n value = value || [];\r\n }\r\n if (value.length === 1 && value[0] === '') value = [];\r\n return value;\r\n }\r\n\r\n onProgress(e: OnSystemTaskProgress) {\r\n if (e.TaskId !== this._taskId) return;\r\n e.Task && (this.title = e.Task['Name'] || this.title);\r\n this.progressType = e.Type;\r\n if (this.progressType === 'run') {\r\n //if (this.currentProgressPercent < e.Progress || (e.Progress || 0) <= 0)\r\n this.currentProgressPercent = e.Progress;\r\n this.currentProgressMessage = e.StatusText || this.currentProgressMessage;\r\n } else {\r\n this.taskResult = e.Result;\r\n if (this.taskResult && this.taskResult.ValueType === Uss.SystemTaskResult.Type.File) {\r\n download(this.taskResult.Result, this.taskResult.Result.fileName || (translate.instant(this.title) + '.xlsx'));\r\n }\r\n if (this.progressType === 'init') {\r\n this.currentProgressMessage = e.StatusText || this.currentProgressMessage;\r\n }\r\n else {\r\n this.endExecuting();\r\n }\r\n if (this.progressType === 'fault' && typeof this.taskResult === 'object') {\r\n this.taskResult.Result = this.taskResult.Result || this.taskResult['Message'];\r\n }\r\n else if (this.progressType === 'complete') {\r\n if (typeof this.systemTaskPage?.handleResult === 'function') {\r\n this.taskResult = this.systemTaskPage?.handleResult(this.taskResult);\r\n }\r\n if (typeof this.taskResult === 'string') {\r\n this.taskResult = { Result: this.taskResult, ValueType: Uss.SystemTaskResult.Type.Message };\r\n }\r\n else if (typeof this.taskResult === 'object' && this.taskResult.Result) {\r\n if (this.taskResult.ValueType === Uss.SystemTaskResult.Type.Error) {\r\n dialog.error(this.taskResult.Result, null, { height: 500, resizable: true });\r\n }\r\n else if (this.taskResult.ValueType === Uss.SystemTaskResult.Type.Html) {\r\n dialog.warning(this.taskResult.Result, null, { height: 500, resizable: true });\r\n }\r\n }\r\n }\r\n }\r\n this.markForCheck();\r\n }\r\n\r\n public async execute() {\r\n this.progressType = 'init';\r\n this.taskResult = null;\r\n this.currentProgressPercent = -1;\r\n this.currentProgressMessage = '';\r\n this.isCancelling = false;\r\n this.isExecuting = this.asyncTasksService.onProgress.subscribe(e => this.onProgress(e));\r\n let params = clearPrivateProperties(this.makeSystemTaskParams());\r\n try {\r\n if (typeof this.systemTaskPage?.startTask === 'function') {\r\n const taskId = await this.systemTaskPage.startTask(params);\r\n if (typeof taskId === 'string') {\r\n params = taskId;\r\n }\r\n }\r\n const res = await this.asyncTasksService.startTask(params);\r\n this._taskId = res.TaskId;\r\n this.onProgress(res);\r\n } catch (e) {\r\n this.endExecuting();\r\n throw e;\r\n } \r\n }\r\n\r\n makeSystemTaskParams() {\r\n const res = this.systemTaskPage.makeSystemTaskParams();\r\n return res;\r\n }\r\n\r\n public endExecuting() {\r\n if (this.isExecuting) {\r\n this.isExecuting.unsubscribe();\r\n this.isExecuting = null;\r\n this.isCancelling = false;\r\n this.markForCheck();\r\n }\r\n }\r\n\r\n public cancel() {\r\n if (this.isExecuting) {\r\n if (this.isCancelling) {\r\n this.endExecuting();\r\n } else {\r\n this.isCancelling = true;\r\n this.asyncTasksService.CancelTask(this._taskId);\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/components.module/systemTasks/system-task.component/system-task.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/system-task.component/system-task.component.html\n// module id = 2379\n// module chunks = 1","module.exports = \"/* components.module */\\n:host .system-task-component {\\n width: 100%;\\n height: 100%; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/components.module/systemTasks/system-task.component/system-task.component.scss\n// module id = 2380\n// module chunks = 1","/*\r\n Angular\r\n*/\r\nimport { NgModule } from '@angular/core';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\n/*\r\n 3rd party\r\n*/\r\nimport { ToastModule, ToastOptions } from 'ng2-toastr';\r\n\r\n/*\r\n Messages\r\n*/\r\nimport * as core from '../core.module';\r\nimport { UssMessagesService, ToastrCustomOptions } from './messages.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [],\r\n imports: [\r\n BrowserAnimationsModule,\r\n core.UssCoreModule,\r\n ToastModule.forRoot()\r\n ],\r\n providers: [\r\n // UssMessagesService,\r\n { provide: core.MESSAGES_SERVICE_TOKEN, useClass: UssMessagesService },\r\n {\r\n provide: ToastOptions,\r\n useFactory: () => new ToastrCustomOptions(\r\n {\r\n animate: 'flyRight',\r\n positionClass: 'toast-bottom-right',\r\n dismiss: 'click'\r\n })\r\n }\r\n ],\r\n schemas: []\r\n})\r\nexport class UssMessagesModule {\r\n constructor() {\r\n window.alert = msg => core.info(msg);\r\n }\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/messages.module/messages.module.ts","import { Injectable, Sanitizer, SecurityContext } from '@angular/core';\r\nimport { Toast, ToastsManager, ToastOptions } from 'ng2-toastr';\r\nimport * as core from '@core.module';\r\nimport { IUssMessagesService, MessageType, isDevMode } from '@core.module';\r\n\r\ndeclare type TToastrAnimation = 'fade' | 'flyRight' | 'flyLeft';\r\ndeclare type TToastrPositionClass = 'toast-top-left' | 'toast-top-center' | 'toast-top-right' | 'toast-top-full-width' | 'toast-bottom-left' | 'toast-bottom-center' | 'toast-bottom-right' | 'toast-bottom-full-width';\r\ndeclare type TToastrDismissType = 'auto' | 'click' | 'controlled';\r\n\r\nexport interface IToastrCustomOptions {\r\n // for manager\r\n animate?: TToastrAnimation;\r\n positionClass?: TToastrPositionClass;\r\n maxShown?: number;\r\n newestOnTop?: boolean;\r\n\r\n // for toast\r\n dismiss?: TToastrDismissType;\r\n enableHTML?: boolean;\r\n messageClass?: string;\r\n showCloseButton?: boolean;\r\n titleClass?: string;\r\n toastLife?: number;\r\n\r\n // custom not toastr options\r\n runtimeErrorCloseAfter?: number;\r\n errorCloseAfter?: number;\r\n warningCloseAfter?: number;\r\n successCloseAfter?: number;\r\n infoCloseAfter?: number;\r\n\r\n customShowMessage?: (message: string, type: MessageType, closeAfter?: number) => boolean;\r\n}\r\n\r\nexport class ToastrCustomOptions extends ToastOptions implements IToastrCustomOptions {\r\n\r\n animate: TToastrAnimation = 'flyRight';\r\n positionClass: TToastrPositionClass = 'toast-top-right';\r\n dismiss: TToastrDismissType = 'auto';\r\n\r\n constructor(customOptions?: IToastrCustomOptions) {\r\n super();\r\n if (customOptions) {\r\n if (customOptions.animate !== undefined) this.animate = customOptions.animate;\r\n if (customOptions.positionClass !== undefined) this.positionClass = customOptions.positionClass;\r\n if (customOptions.maxShown !== undefined) this.maxShown = customOptions.maxShown;\r\n if (customOptions.newestOnTop !== undefined) this.newestOnTop = customOptions.newestOnTop;\r\n\r\n if (customOptions.dismiss !== undefined) this.dismiss = customOptions.dismiss;\r\n if (customOptions.enableHTML !== undefined) this.enableHTML = customOptions.enableHTML;\r\n if (customOptions.messageClass !== undefined) this.messageClass = customOptions.messageClass;\r\n if (customOptions.showCloseButton !== undefined) this.showCloseButton = customOptions.showCloseButton;\r\n if (customOptions.titleClass !== undefined) this.titleClass = customOptions.titleClass;\r\n if (customOptions.toastLife !== undefined) this.toastLife = customOptions.toastLife;\r\n }\r\n }\r\n}\r\n\r\nexport const DefaultMessagesOptions: IToastrCustomOptions = {\r\n // toastr default options\r\n dismiss: 'click',\r\n enableHTML: true,\r\n messageClass: 'app-message',\r\n showCloseButton: true,\r\n titleClass: 'app-message-title',\r\n toastLife: null,\r\n\r\n // not toastr options\r\n runtimeErrorCloseAfter: 5000,\r\n errorCloseAfter: 5000,\r\n warningCloseAfter: 5000,\r\n successCloseAfter: 5000,\r\n infoCloseAfter: 3000,\r\n\r\n customShowMessage: undefined\r\n};\r\n\r\n// ReSharper disable once InconsistentNaming\r\n@Injectable()\r\nexport class UssMessagesService implements IUssMessagesService {\r\n\r\n// public static get Instance(): UssMessagesService { return core.Reflection.get(UssMessagesService); }\r\n\r\n public static error(err): void {\r\n if (this.isDebug) {\r\n let toastr = null;\r\n try { toastr = core.Reflection.get(ToastsManager); } catch (e) { }\r\n (new UssMessagesService(toastr)).runtimeError(err, 0);\r\n } else {\r\n console.log(err);\r\n }\r\n }\r\n\r\n /**\r\n * Debug mode flag. \r\n * In this mode messages will be send to console by debug() method\r\n * If false - debug() call are ignored.\r\n * By default uses value from angulars isDevMode() function\r\n */\r\n static isDebug: boolean = isDevMode();\r\n\r\n /**\r\n * The suffix added to all the messages befor wtitting to log. Could be line break.\r\n */\r\n logMessageStringSuffix: string = '';\r\n\r\n /**\r\n * If true - all the messages will be send to console by console.log()\r\n */\r\n useOnlyConsoleLog: boolean = false;\r\n\r\n private lastToast: Toast;\r\n\r\n constructor(public toastr?: ToastsManager, private sanitizer?: Sanitizer) { }\r\n\r\n //rawErrorContainer: HTMLElement;\r\n\r\n priorMessage: string;\r\n\r\n logMessage(message: string | Object, type: MessageType = MessageType.Info, closeAfter?: number | boolean): void {\r\n if (!message) return;\r\n// let me = this;\r\n\r\n function errorHtml(logMessage: string, errorType?: string): string {\r\n errorType = errorType || 'negative';\r\n const message = `
`\r\n + ``\r\n + `${logMessage}`\r\n + `
`;\r\n return message;\r\n }\r\n function showError(messageContent: HTMLElement, logMessage: string) {\r\n let errorType = '';\r\n switch (type) {\r\n case MessageType.Error: case MessageType.RuntimeError: errorType = 'negative'; break;\r\n case MessageType.Info: errorType = 'info'; break;\r\n case MessageType.Warning: errorType = 'warning'; break;\r\n case MessageType.Success: errorType = 'success'; break;\r\n }\r\n const div = document.createElement('div');\r\n // Используем шаблон semantic-ui\r\n div.innerHTML = errorHtml(logMessage, errorType);\r\n const contentElement = div.children[0];\r\n const lastMsgElement = messageContent.children[messageContent.children.length - 1];\r\n if (lastMsgElement && lastMsgElement.classList.contains(`${errorType}`)) {\r\n const lastMsg = lastMsgElement.innerHTML;\r\n contentElement.innerHTML = `${lastMsg}
${contentElement.innerHTML}`;\r\n messageContent.removeChild(lastMsgElement);\r\n }\r\n\r\n messageContent.appendChild(contentElement);\r\n $('.message .close').on('click', () => messageContent.innerHTML = '');\r\n if (closeAfter > 0) {\r\n setTimeout(() => {\r\n contentElement.remove();\r\n }, +closeAfter);\r\n }\r\n }\r\n\r\n function rawOutput(logMessage: string) {\r\n let rawErrorContainer = document.querySelector(`div.raw-${type}-container`); // me.rawErrorContainer;\r\n if (!rawErrorContainer) {\r\n rawErrorContainer = document.createElement('div');\r\n rawErrorContainer.style.position = 'absolute';\r\n rawErrorContainer.style.left = '2em';\r\n rawErrorContainer.style.right = '2em';\r\n rawErrorContainer.style.top = '1em';\r\n rawErrorContainer.style.zIndex = '999999';\r\n rawErrorContainer.style.color = 'red';\r\n rawErrorContainer.className = `raw-${type}-container`;\r\n document.body.appendChild(rawErrorContainer);\r\n } else {\r\n logMessage = `
${logMessage}`;\r\n }\r\n/*\r\n if (!me.rawErrorContainer) {\r\n me.rawErrorContainer = document.createElement('div');\r\n me.rawErrorContainer.style.position = 'absolute';\r\n me.rawErrorContainer.style.left = '2em';\r\n me.rawErrorContainer.style.right = '2em';\r\n me.rawErrorContainer.style.top = '1em';\r\n me.rawErrorContainer.style.zIndex = '999999';\r\n me.rawErrorContainer.style.color = 'red';\r\n document.body.appendChild(me.rawErrorContainer);\r\n }\r\n showError(me.rawErrorContainer, logMessage);\r\n*/\r\n showError(rawErrorContainer, logMessage);\r\n }\r\n\r\n if ((type === MessageType.Error || type === MessageType.RuntimeError) && typeof message == 'object') {\r\n // Проверка, если сюда передали ajax-ответ с ошибкой\r\n message = core.UssErrorHandler.ExtractError(message);\r\n if (!message) return;\r\n if (message instanceof Promise) {\r\n message.then(e => this.logMessage(e));\r\n return;\r\n }\r\n }\r\n if (typeof closeAfter === 'boolean')\r\n closeAfter = closeAfter ? undefined : -1;\r\n else if (closeAfter === 0 || closeAfter === null)\r\n closeAfter = -1;\r\n\r\n var logMessage = message + (this.logMessageStringSuffix || '');\r\n\r\n if (logMessage === this.priorMessage) {\r\n return;\r\n }\r\n this.priorMessage = logMessage;\r\n core.debounce(() => this.priorMessage = null, 500, 'message.service.clear_prior_message');\r\n\r\n if (type === MessageType.RuntimeError) {\r\n closeAfter = closeAfter || DefaultMessagesOptions.runtimeErrorCloseAfter;\r\n this.useOnlyConsoleLog ? console.log(`***Runtime Error*** ${logMessage}`) : console.error(logMessage);\r\n // не выводим RuntimeError - по идее они должны обрабатываться отдельно\r\n//ToDo: Remove if (!this.isDebug)\r\n {\r\n this.priorMessage = null;\r\n return;\r\n }\r\n } else if (type === MessageType.Error) {\r\n closeAfter = closeAfter || DefaultMessagesOptions.errorCloseAfter;\r\n this.useOnlyConsoleLog ? console.log(`***Error*** ${logMessage}`) : console.error(logMessage);\r\n } else if (type === MessageType.Warning) {\r\n closeAfter = closeAfter || DefaultMessagesOptions.warningCloseAfter;\r\n this.useOnlyConsoleLog ? console.log(`***Warning*** ${logMessage}`) : console.warn(logMessage);\r\n } else if (type === MessageType.Success) {\r\n closeAfter = closeAfter || DefaultMessagesOptions.successCloseAfter;\r\n this.useOnlyConsoleLog ? console.log(`***Success*** ${logMessage}`) : console.info(logMessage);\r\n } else if (type === MessageType.Info) {\r\n closeAfter = closeAfter || DefaultMessagesOptions.infoCloseAfter;\r\n this.useOnlyConsoleLog ? console.log(logMessage) : console.info(logMessage);\r\n } else\r\n console.log(logMessage);\r\n\r\n const origMessage = (logMessage || '').toString();\r\n if (this.sanitizer) {\r\n logMessage = this.sanitizer.sanitize(SecurityContext.HTML, logMessage);\r\n }\r\n \r\n\r\n\r\n if (type !== MessageType.Log) {\r\n var messageContent = document['getElementById']('messages-content');\r\n let isHandled = false;\r\n if (messageContent) {\r\n showError(messageContent, logMessage);\r\n } else if (typeof DefaultMessagesOptions.customShowMessage === 'function') {\r\n isHandled = DefaultMessagesOptions.customShowMessage(origMessage, type, closeAfter);\r\n }\r\n if (!isHandled) {\r\n if (this.toastr) {\r\n let errorType: string = '';\r\n switch (type) {\r\n case MessageType.Error:\r\n case MessageType.RuntimeError:\r\n errorType = 'error';\r\n break;\r\n case MessageType.Info:\r\n errorType = 'info';\r\n break;\r\n case MessageType.Warning:\r\n errorType = 'warning';\r\n break;\r\n case MessageType.Success:\r\n errorType = 'success';\r\n break;\r\n }\r\n\r\n if (this.toastr.container &&\r\n this.toastr.container.instance &&\r\n this.lastToast &&\r\n this.lastToast['__msg_type'] === type &&\r\n this.toastr.container.instance.toasts.contains(this.lastToast)) {\r\n var passTime = (Date.now() - this.lastToast['__msg_time']);\r\n if (passTime < 500) {\r\n this.lastToast['__msg_time'] = Date.now();\r\n this.lastToast.message = `${this.lastToast.message}

${logMessage}`;\r\n if (this.lastToast.config.toastLife > 0) {\r\n if (this.lastToast.timeoutId) clearTimeout(this.lastToast.timeoutId);\r\n this.lastToast.timeoutId = this.toastr.createTimeout(this.lastToast);\r\n }\r\n return;\r\n } else if (type === MessageType.RuntimeError) {\r\n this.toastr.clearToast(this.lastToast);\r\n }\r\n }\r\n const toast = new Toast(errorType, logMessage);\r\n toast['__msg_type'] = type;\r\n toast['__msg_time'] = Date.now();\r\n try {\r\n const options = new ToastrCustomOptions(DefaultMessagesOptions);\r\n options.toastLife = closeAfter;\r\n this.toastr.show(toast, options).then((t: Toast) => {\r\n if (t.config.toastLife > 0) {\r\n if (t.timeoutId) clearTimeout(t.timeoutId);\r\n t.timeoutId = this.toastr.createTimeout(t);\r\n }\r\n });\r\n } catch (e) {\r\n rawOutput(logMessage);\r\n } \r\n this.lastToast = toast;\r\n } else {\r\n rawOutput(logMessage);\r\n }\r\n }\r\n } \r\n }\r\n\r\n /**\r\n * Displays informational message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n info(message: string, closeAfter?: number | boolean): void {\r\n this.logMessage(message, MessageType.Info, closeAfter);\r\n }\r\n\r\n /**\r\n * Displays informational message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n success(message: string, closeAfter?: number | boolean): void {\r\n this.logMessage(message, MessageType.Success, closeAfter);\r\n }\r\n\r\n /**\r\n * Displays warning message to console and to informational messages panel, if it is avaliable.\r\n * @param message informational message text\r\n * @param closeAfter Time to wait for closing the message\r\n */\r\n warning(message: string, closeAfter?: number | boolean): void {\r\n this.logMessage(message, MessageType.Warning, closeAfter);\r\n }\r\n \r\n /**\r\n * Displays error message to console and to informational messages panel, if it is avaliable.\r\n * @param message Error text or object from which the text will be extracted as obj.responseText or obj.status + ' ' + obj.statusText\r\n * @param closeAfter Время, после которого окно с ошибкой будет закрыто\r\n */\r\n error(message: string | Object | any, closeAfter?: number | boolean): void {\r\n this.logMessage(message, MessageType.Error, closeAfter);\r\n }\r\n\r\n /**\r\n * Displays runtime error message to console and to informational messages panel, if it is avaliable.\r\n * Use this type exactly for runtime errors, not for application errors.\r\n * These error displays only in debug mode.\r\n * @param message Error text or object from which the text will be extracted as obj.responseText or obj.status + ' ' + obj.statusText\r\n * @param closeAfter Время, после которого окно с ошибкой будет закрыто\r\n */\r\n runtimeError(message: string | Object, closeAfter?: number | boolean): void {\r\n this.logMessage(message, MessageType.RuntimeError, closeAfter);\r\n }\r\n\r\n /**\r\n * Displays string in console.\r\n * @param message Text to display in console.\r\n */\r\n log(message: string): void {\r\n this.logMessage(message, MessageType.Log);\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n /**\r\n * Displays string in console only in debug mode (if App.IsDebug == true).\r\n * @param message Text to display in console.\r\n */\r\n debug(message: string) {\r\n if (UssMessagesService.isDebug)\r\n this.logMessage(message, MessageType.Log);\r\n }\r\n\r\n /**\r\n * Removes all messages of particular type.\r\n * If no types not set - all messages will be removed.\r\n */\r\n clear(types?: MessageType): void {\r\n if (!types)\r\n this.toastr.clearAllToasts();\r\n else if (this.toastr.container && this.toastr.container.instance && this.toastr.container.instance.toasts) {\r\n for (const toast of this.toastr.container.instance.toasts) {\r\n if (toast && toast['__msg_type'] && toast['__msg_type'] & types) {\r\n this.toastr.clearToast(toast.id); \r\n }\r\n }\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/messages.module/messages.service.ts","export * from './search/search-base.component';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/components/index.ts","import { Directive, ChangeDetectorRef, Input, EventEmitter, Inject } from '@angular/core';\r\nimport { LeafletDirective } from '@asymmetrik/ngx-leaflet';\r\nimport { Address } from '../address';\r\nimport { IAppAddressService, APP_ADDRESS_SERVICE_TOKEN } from '../services';\r\nimport { GeoJSON, Layer, Marker, featureGroup, LatLng, LatLngExpression } from 'leaflet';\r\nimport { Feature, Geometry } from 'geojson';\r\nimport { LeafletHelper } from '../utils/LeafletHelper';\r\nimport { AddressSource } from '../address/AddressSource';\r\nimport { guid, debounce, clearDebounce } from '@core.module';\r\n\r\n/** Автоматическое определение адреса при клике на карту */\r\n@Directive({\r\n selector: '[leaflet][mapAddress]'\r\n})\r\nexport class MapAddressDirective {\r\n\r\n @Input('mapAddress') address: Address;\r\n @Input('mapAddressChange') addressChange = new EventEmitter
();\r\n\r\n public selectedAddressMarker: Marker;\r\n public selectedAddressGeometry: Layer;\r\n\r\n private mapLayers: Layer[] = [];\r\n\r\n constructor(private leaflet: LeafletDirective, private changeDetector: ChangeDetectorRef, @Inject(APP_ADDRESS_SERVICE_TOKEN) private addressService: IAppAddressService) {\r\n }\r\n\r\n private id = guid();\r\n\r\n ngOnInit() {\r\n this.address = this.address || new Address();\r\n this.leaflet.map.whenReady(() => this.onMapReady());\r\n }\r\n\r\n onMapReady() {\r\n this.updateLayers();\r\n this.leaflet.onResize();\r\n this.leaflet.map\r\n .on('click', (e: any) => debounce(() => this.setPoint(e.latlng), 200, `${this.id}_map_click`))\r\n .on('dblclick', () => clearDebounce(`${this.id}_map_click`));\r\n setTimeout(() => this.setPoint(this.address.center), 100);\r\n }\r\n\r\n updateLayers() {\r\n const currentLayers = [];\r\n this.selectedAddressGeometry && currentLayers.push(this.selectedAddressGeometry);\r\n this.selectedAddressMarker && currentLayers.push(this.selectedAddressMarker);\r\n // удалить ненужные\r\n for (let l of this.mapLayers.toArray()) {\r\n if (!currentLayers.includes(l)) {\r\n this.leaflet.map.removeLayer(l);\r\n this.mapLayers.Remove(l);\r\n }\r\n }\r\n // добавить новые\r\n for (let l of currentLayers) {\r\n if (!this.mapLayers.includes(l)) {\r\n this.leaflet.map.addLayer(l);\r\n this.mapLayers.push(l);\r\n }\r\n }\r\n }\r\n\r\n detectChanges() {\r\n this.changeDetector && !(this.changeDetector).destroyed && this.changeDetector.detectChanges();\r\n }\r\n\r\n addressChanges() {\r\n this.addressChange.emit(this.address);\r\n this.detectChanges();\r\n }\r\n\r\n fitToLayer(l: Layer) {\r\n this.leaflet.map.fitBounds(featureGroup([l]).getBounds());\r\n }\r\n\r\n createGeometryLayer(addr: Address | LatLng | Feature | Geometry | string) {\r\n let geometry = (addr instanceof Address) ? addr.Source : addr;\r\n if (addr instanceof LatLng) {\r\n // ????\r\n }\r\n else if (geometry instanceof AddressSource) {\r\n if (geometry.source) {\r\n if (!geometry.source.geometry) {\r\n const id = geometry.getSourceId();\r\n id && this.addressService.feature$(id, this.leaflet.map['$addressService']).subscribe(f => this.createGeometryLayer(f));\r\n } else {\r\n this.createGeometryLayer(geometry.source.geometry);\r\n }\r\n }\r\n } else {\r\n if (typeof geometry === 'string') {\r\n geometry = LeafletHelper.fromWKT(geometry);\r\n }\r\n if (!LeafletHelper.isFeature(geometry)) {\r\n geometry = { geometry: geometry, type: 'Feature' };\r\n }\r\n const featureGeometry = geometry;\r\n if (featureGeometry.geometry && featureGeometry.geometry.type !== 'Point') {\r\n this.selectedAddressGeometry = GeoJSON.geometryToLayer(featureGeometry);\r\n this.updateLayers();\r\n this.fitToLayer(this.selectedAddressGeometry);\r\n }\r\n this.detectChanges();\r\n }\r\n }\r\n\r\n createMarker(address: Address | LatLng): Marker {\r\n let res = null;\r\n if (address) {\r\n res = LeafletHelper.createMarker([address.lat, address.lng])\r\n .withDraggable()\r\n .on('click', () => this.setAddress(null))\r\n .on('dragend', (e) => this.setPoint(e.target.getLatLng()))\r\n .once('add', () => {\r\n // отцентрировать карту на объекте\r\n this.fitToLayer(this.selectedAddressMarker);\r\n // подсветить геометрию\r\n this.createGeometryLayer(address);\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n public setAddress(addr: Address, addMarker: boolean = true) {\r\n if (addMarker) {\r\n this.selectedAddressMarker = this.createMarker(addr);\r\n this.selectedAddressGeometry = null;\r\n this.updateLayers();\r\n }\r\n if (addr && this.selectedAddressMarker) {\r\n LeafletHelper.setTitle(this.selectedAddressMarker, addr.Address);\r\n }\r\n this.address.Address = '';\r\n this.address.assign(addr ? addr.Source : null);\r\n this.addressChanges();\r\n }\r\n\r\n setPoint(latlng: LatLngExpression): any {\r\n const point = LeafletHelper.latLng(latlng);\r\n this.address.assign(point);\r\n this.selectedAddressGeometry = null;\r\n this.selectedAddressMarker = !point ? null : this.createMarker(point)\r\n .once('add', () => {\r\n this.addressService.get$(point, this.leaflet.map['$addressService']).subscribe(addr => {\r\n if (addr) addr.center = point;\r\n this.setAddress(addr, false);\r\n // подсветить геометрию\r\n this.createGeometryLayer(addr);\r\n });\r\n });\r\n this.updateLayers();\r\n this.addressChanges();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/directives/address.directive.ts","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Address } from '../address/Address';\r\nimport { Point, Feature, LineString } from 'geojson';\r\nimport { LatLngExpression, Map } from 'leaflet';\r\nimport { AppOsmService } from './osm/osm.service';\r\nimport { AppVisicomService } from './visicom/visicom.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { LeafletHelper } from '../utils/LeafletHelper';\r\nimport { MapDirective } from '../directives/map.directive';\r\nimport { IAppAddressService, TAddressSourceName } from './IAppAddressService';\r\nimport { IGeoAddressService } from './IGeoAddressService';\r\nimport { isArray } from '@core.module';\r\n\r\n@Injectable()\r\nexport class AppAddressService implements IAppAddressService {\r\n\r\n defaultSource: TAddressSourceName = LeafletHelper.Defaults.defaultAddressService;\r\n\r\n constructor(private osm: AppOsmService, private visicom: AppVisicomService) {\r\n }\r\n\r\n /** Возвращает гео сервис для работы с адресами */\r\n geoService(source?: TAddressSourceName): IGeoAddressService {\r\n if (source && source['_map']) {\r\n source = source['_map'];\r\n }\r\n if (source instanceof Map) {\r\n source = source['$mapDirective'];\r\n }\r\n // ReSharper disable once TypeGuardProducesNeverType\r\n if (source instanceof MapDirective) {\r\n const layerName = source.defaultLayer;\r\n const layer = Enumerable.from(source.map['_layers']).select(kv => kv.value).firstOrDefault(v => v.$id === layerName);\r\n source = (layer && layer.options && layer.options.$addressService);\r\n }\r\n switch (source || this.defaultSource) {\r\n case 'Nominatim': return this.osm;\r\n case 'Visicom': return this.visicom;\r\n default:\r\n throw new Error('Unknow address provider');\r\n }\r\n }\r\n\r\n /**\r\n * Ищет адреса по названию. Возвращает список адресов, в названии которых встречаются указанные слова в виде подстроки.\r\n * @param query перечень искомых подстрок, разделённых пробелом или запятой.\r\n * @param source название сервиса для получения данных. По умолчанию берётся из LeafletHelper.Defaults.defaultAddressService.\r\n * @param limit ограничение на кол-во выдаваемых адресов. По умолчанию равно 50.\r\n */\r\n get$(query: string, source?: TAddressSourceName, limit?: number): Observable;\r\n /**\r\n * Выполняет поиск адреса по координатам (обратное геокодирование).\r\n * Возвращает ближайший к точке адрес или ничего, если адрес не найден.\r\n * @param coordinate точка для координат которой необходимо выполнить поиск адреса.\r\n * @param radius радиус в котором необходимо искать адрес.\r\n */\r\n get$(coordinate: Point | LatLngExpression, source?: TAddressSourceName, radius?: number): Observable
;\r\n get$(query, source?, radius?): Observable {\r\n return this.geoService(source).getAddress$(query, radius).pipe(\r\n map(r => {\r\n let res;\r\n if (isArray(r)) {\r\n res = r.map(x => {\r\n const r = new Address(x);\r\n r.AddressServiceType = source === 'Nominatim' ? App.AddressServiceType.Nominatim : source === 'Visicom' ? App.AddressServiceType.Visicom : null;\r\n return r;\r\n });\r\n } else {\r\n res = new Address(r || query);\r\n res.AddressServiceType = source === 'Nominatim' ? App.AddressServiceType.Nominatim : source === 'Visicom' ? App.AddressServiceType.Visicom : null;\r\n };\r\n return res;\r\n }));\r\n }\r\n\r\n /**\r\n * Получение геометрии по объекту.\r\n * Если объект с указанным id не найден — возвращается пустой обсервер.\r\n */\r\n feature$(id: string | number, source?: TAddressSourceName, params?: object): Observable {\r\n return this.geoService(source).feature$(id, params);\r\n }\r\n\r\n /**\r\n * Прокладывает маршрут из одной точки в другую.\r\n * @param origin Точка от которой нужно проложить маршрут\r\n * @param destination Точка куда нужно проложить маршрут\r\n * @param wayPoints Список промежуточных точек, через которые должен пройти маршрут\r\n * @param locks Список промежуточных точек, через которые не должен проходить маршрут\r\n * @param source Какой адресный сервис использовать\r\n */\r\n getRoute$(origin: Point | LatLngExpression, destination: Point | LatLngExpression,\r\n wayPoints?: (Point | LatLngExpression)[], locks?: (Point | LatLngExpression)[],\r\n source?: TAddressSourceName): Observable {\r\n //console.log('getRoute$: ', source);\r\n return this.geoService(source).getRoute$(origin, destination, wayPoints, locks);\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/address.service.ts","import { VisicomApiParams } from './VisicomApiParams';\r\nimport { merge } from '@core.module';\r\n\r\nexport declare type IncludeGeometry = 'no' | 'centroid' | 'path';\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class FeatureParams extends VisicomApiParams {\r\n /** Идентификатор объекта. Пример: POIA1KIGKN */\r\n id: string | number;\r\n\r\n /**\r\n * Параметр указывет, возвращать ли в ответе геометрию объекта. Может принимать значения:\r\n * no - не возвращать геометрию (поле geometry отсутсвует)\r\n * centroid - не возвращать всю геометрию, а только geo_centroid.\r\n * Если параметр не указан, то геометрия в ответе присутствует.\r\n */\r\n geometry?: IncludeGeometry;\r\n\r\n static create(id: string | number, source?: FeatureParams | object | IncludeGeometry): FeatureParams {\r\n let res = (source || {});\r\n if (!(source instanceof FeatureParams)) {\r\n res = new FeatureParams(id, source);\r\n } else {\r\n res.id = id || res.id;\r\n }\r\n return res;\r\n }\r\n\r\n constructor(id: string | number, source?: FeatureParams | object | IncludeGeometry) {\r\n super();\r\n this.id = id;\r\n if (typeof source === 'string') {\r\n this.geometry = source;\r\n } else {\r\n merge(this, source);\r\n }\r\n }\r\n\r\n /** Идентификатор объекта. Пример: POIA1KIGKN */\r\n withId(id: string | number): FeatureParams { this.id = id; return this; }\r\n\r\n /**\r\n * Параметр указывет, возвращать ли в ответе геометрию объекта. Может принимать значения:\r\n * no - не возвращать геометрию (поле geometry отсутсвует)\r\n * centroid - не возвращать всю геометрию, а только geo_centroid.\r\n * Если параметр не указан, то геометрия в ответе присутствует.\r\n */\r\n withGeometry(geometry: IncludeGeometry): FeatureParams { this.geometry = geometry; return this; }\r\n\r\n /** Не возвращать геометрию */\r\n withNoGeometry(): FeatureParams { this.geometry = 'no'; return this; }\r\n /** Возвращать только geo_centroid */\r\n withCentroidOnly(): FeatureParams { this.geometry = 'centroid'; return this; }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/FeatureParams.ts","import { VisicomApiParams } from './VisicomApiParams';\r\nimport { IncludeGeometry } from './FeatureParams';\r\nimport { Point } from 'geojson';\r\nimport { LatLngExpression, latLng } from 'leaflet';\r\nimport { isArray } from '@core.module';\r\n\r\nexport declare type DistanceMode = 'driving' | 'driving-shortest' | 'direct';\r\n\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class DistanceParams extends VisicomApiParams {\r\n\r\n /** Стартовая точка */\r\n origin: string;\r\n /** Финишная точка */\r\n destination: string;\r\n /** Список промежуточных точек (не более 25) */\r\n waypoints?: string;\r\n /** Массив координат блокировок проездов. */\r\n locks?: string;\r\n\r\n /** Режим расчета маршрута. По умолчанию расчет происходит в режиме 'driving'. */\r\n mode?: DistanceMode;\r\n\r\n /** Параметр указывет, возвращать ли в ответе геометрию маршрута. Может принимать значения: 'no', 'path' */\r\n geometry?: IncludeGeometry;\r\n\r\n /** Генерализация геометрии маршрута в метрах. По умолчанию принимается 10 м. */\r\n accuracy?: number;\r\n\r\n static create(origin?, destination?): DistanceParams {\r\n return (new DistanceParams()).withOrigin(origin).withDestination(destination);\r\n }\r\n\r\n static pointToString(point: Point | LatLngExpression): string {\r\n let res = undefined;\r\n if (!!point) {\r\n const ll = latLng((point).coordinates || point);\r\n res = `${ll.lng},${ll.lat}`;\r\n }\r\n return res;\r\n }\r\n\r\n withOrigin(point: Point | LatLngExpression): this {\r\n this.origin = DistanceParams.pointToString(point);\r\n return this;\r\n }\r\n withDestination(point: Point | LatLngExpression): this {\r\n this.destination = DistanceParams.pointToString(point);\r\n return this;\r\n }\r\n withMode(mode: DistanceMode): this {\r\n this.mode = mode;\r\n return this;\r\n }\r\n withWayPoints(wayPoints: Point | LatLngExpression | (Point | LatLngExpression)[]): this {\r\n if (wayPoints) {\r\n if (!isArray(wayPoints)) wayPoints = <(Point | LatLngExpression)[]>[wayPoints];\r\n this.waypoints = (<(Point | LatLngExpression)[]>wayPoints).select(wp => DistanceParams.pointToString(wp)).toArray().join('|');\r\n }\r\n return this;\r\n }\r\n withLocks(locks: Point | LatLngExpression | (Point | LatLngExpression)[]): this {\r\n if (locks) {\r\n if (!isArray(locks)) locks = <(Point | LatLngExpression)[]>[locks];\r\n this.locks = (<(Point | LatLngExpression)[]>locks).select(wp => DistanceParams.pointToString(wp)).toArray().join('|');\r\n }\r\n return this;\r\n }\r\n withGeometry(): this {\r\n this.geometry = 'path';\r\n return this;\r\n }\r\n withAccuracy(accuracy: number): this {\r\n this.accuracy = accuracy;\r\n return this;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/params/DistanceParams.ts","import { Control, ControlOptions, Util, Map, DomUtil, DomEvent } from 'leaflet';\r\nimport { Screenfull } from 'screenfull';\r\nconst screenfull: Screenfull = require('screenfull');\r\n\r\nimport { createStyle, translate } from '@core.module';\r\n\r\nexport interface FullScreenControlOptions extends ControlOptions\r\n{\r\n titleOn?: string;\r\n titleOff?: string;\r\n fullScreen?: boolean;\r\n}\r\n\r\nexport class FullScreenControl extends Control {\r\n\r\n private _container: HTMLElement;\r\n private _map: Map;\r\n\r\n options: FullScreenControlOptions;\r\n\r\n constructor(options?: FullScreenControlOptions) {\r\n super(options);\r\n Util.setOptions(this, options || { position: 'topright' });\r\n }\r\n\r\n onAdd(map: Map): HTMLElement {\r\n this._container = DomUtil.create('div', 'leaflet-control-full-screen leaflet-bar');\r\n DomEvent.disableClickPropagation(this._container);\r\n this._update();\r\n return this._container;\r\n }\r\n\r\n private _update() {\r\n if (!this._map) {\r\n return;\r\n }\r\n createStyle(`\r\n.leaflet-control-full-screen-toggle {\r\n width: 36px;\r\n height: 36px;\r\n background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%201%2C3%20H%206%20V%204%20H%201%20z%22%20fill%3D%22%23fff%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%206%2C1%20H%201%20V%206%20H%203%20V%203%20h%203%20z%20m%204%2C14%20h%205%20v%20-5%20h%20-2%20v%203%20h%20-3%20z%22%20fill%3D%22%236c6c6c%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22m%2010%2C3%20h%205%20v%201%20h%20-5%20z%22%20fill%3D%22%23fff%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%2015%2C6%20V%201%20h%20-5%20v%202%20h%203%20V%206%20z%20M%201%2C10%20v%205%20H%206%20V%2013%20H%203%20v%20-3%20z%22%20fill%3D%22%236c6c6c%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%201%2C1%20H%206%20V%202%20H%201%20z%20m%209%2C0%20h%205%20v%201%20h%20-5%20z%20m%203%2C9%20h%202%20v%201%20h%20-2%20z%20m%20-3%2C3%20h%203%20v%201%20h%20-3%20z%20m%20-7%2C0%20h%203%20v%201%20H%203%20z%20M%201%2C10%20h%202%20v%201%20H%201%20z%22%20fill%3D%22%234b4b4b%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%201%2C6%20H%203%20V%207%20H%201%20z%20m%2012%2C0%20h%202%20V%207%20H%2013%20z%20M%201%2C15%20h%205%20v%201%20H%201%20z%20m%209%2C0%20h%205%20v%201%20h%20-5%20z%22%20fill%3D%22%23fff%22%2F%3E%0A%3C%2Fsvg%3E%0A);\r\n}\r\n.leaflet-control-full-screen-toggle.full-screen{\r\n background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%206%2C1%20H%201%20V%206%20H%203%20V%203%20h%203%20z%20m%204%2C14%20h%205%20v%20-5%20h%20-2%20v%203%20H%2010%20z%20M%2015%2C6%20V%201%20h%20-5%20v%202%20h%203%20V%206%20z%20M%201%2C10%20v%205%20H%206%20V%2013%20H%203%20v%20-3%20z%22%20fill%3D%22%230da4d4%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%201%2C1%20H%206%20V%202%20H%201%20z%20m%209%2C0%20h%205%20v%201%20h%20-5%20z%20m%203%2C9%20h%202%20v%201%20h%20-2%20z%20m%20-3%2C3%20h%203%20v%201%20h%20-3%20z%20m%20-7%2C0%20h%203%20v%201%20H%203%20z%20M%201%2C10%20h%202%20v%201%20H%201%20z%22%20fill%3D%22%230a84ab%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M%201%2C6%20H%203%20V%207%20H%201%20z%20m%2012%2C0%20h%202%20V%207%20H%2013%20z%20M%201%2C15%20h%205%20v%201%20H%201%20z%20m%209%2C0%20h%205%20v%201%20h%20-5%20z%22%20fill%3D%22%23fff%22%2F%3E%0A%3C%2Fsvg%3E%0A);\r\n}\r\n.leaflet-touch .leaflet-control-full-screen-toggle {\r\n width: 44px !important;\r\n height: 44px !important;\r\n}\r\n\r\n`);\r\n const titleOn = translate.instant(this.options.titleOn || '@LEAFLET.@CONTROL.FULL_SCREEN.ON|Развернуть');\r\n const titleOff = translate.instant(this.options.titleOff || '@LEAFLET.@CONTROL.FULL_SCREEN.OFF|Восстановить');\r\n this._container.innerHTML = ``;\r\n this._container.firstChild.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.options.fullScreen = !this.options.fullScreen;\r\n this._update();\r\n });\r\n if (screenfull.enabled) {\r\n if (this.options.fullScreen) {\r\n screenfull.request(this._map['_container']);\r\n } else if (screenfull.isFullscreen){\r\n screenfull.exit();\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n// ReSharper disable once InconsistentNaming\r\nexport function fullScreen(options?: FullScreenControlOptions) {\r\n return new FullScreenControl(options);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/controls/fullScreen.control.ts","import { ComponentFactoryResolver, Type } from '@angular/core';\r\nimport { Control, Marker, Map } from 'leaflet';\r\nimport { detectChanges, Reflection } from '@core.module';\r\nimport { Address } from '../address/Address';\r\n\r\nimport { MapDirective, UssControlOptions } from '../directives/map.directive';\r\nimport { IMapSearchComponent } from '../interfaces';\r\n\r\nexport interface UssSearchControlOptions extends UssControlOptions, L.ControlOptions {\r\n /** При успешном поиске автоматически ставит маркер на карте. */\r\n autoSetMarker?: boolean;\r\n /** Событие, вызываемое если найден адрес. Если возвращает `true` - считается, что событие обработано и обработчик по умолчанию не вызывается */\r\n onSetAddress?: (address: Address, map: Map) => boolean | void;\r\n /** Автоматически устанавливает фокус на контрол поиска при открытии страницы */\r\n autoFocusControl?: boolean;\r\n /** Поиск будет вестись относительно центра карты, а не параметров, указанных в LeafletHelper.Defaults.center */\r\n useMapCenter?: boolean;\r\n /** Вызывается при создании контрола для дополнительной настройки компонента */\r\n searchControlCreated?: (c: IMapSearchComponent) => void;\r\n\r\n /** Если установлено - задаёт фиксированную ширину компонента */\r\n width?: number | string;\r\n\r\n /** Если установлено - задаёт минимальную ширину компонента */\r\n minWidth?: number | string;\r\n\r\n /** Если установлено - задаёт максимальную ширину компонента */\r\n maxWidth?: number | string;\r\n\r\n /** Если установлено - задаёт максимальную высоту выпадающего списка поиска */\r\n popupHeight?: number | string;\r\n\r\n /** Текст, выводимый в качестве подсказки/заголовка у компонента */\r\n placeholder?: string;\r\n\r\n /** Наименование иконки, выводимой в контроле */\r\n icon?: string;\r\n\r\n /** Следует ли очищать поиск при потере фокуса */\r\n clearOnFocusOut?: boolean;\r\n\r\n /** Следует ли оставлять выбранный адрес в строке поиска */\r\n leaveSelectedAddress?: boolean;\r\n\r\n /** Выводить в результатах поиска строку \"Моё местоположение\" */\r\n useCurrentLocation?: boolean;\r\n\r\n /** Выводить текущий набранный текст в результатах поиска как строку с этим текстом */\r\n useTextAddress?: boolean;\r\n}\r\n\r\nexport function ussSearchControl(mapDirective: MapDirective, componentType: Type , settings?: UssSearchControlOptions): Control {\r\n const control = new Control({position: 'topleft'});\r\n control.onAdd = () => {\r\n const resolver = Reflection.get(ComponentFactoryResolver); \r\n const cf = resolver.resolveComponentFactory(componentType);\r\n const mapAddressSearchComponentRef = mapDirective.viewContainer.createComponent(cf);\r\n detectChanges(mapAddressSearchComponentRef.changeDetectorRef);\r\n mapAddressSearchComponentRef.instance.settings = settings;\r\n mapAddressSearchComponentRef.instance.leaflet = mapDirective.leaflet;\r\n mapAddressSearchComponentRef.instance.addressChange.subscribe((a: Address) => {\r\n try {\r\n if (!a.isEmpty) {\r\n let handled = false;\r\n if (settings?.onSetAddress)\r\n {\r\n handled = !!settings?.onSetAddress(a, mapDirective.leaflet.map);\r\n }\r\n\r\n if (!handled && settings?.autoSetMarker)\r\n {\r\n setAddress(a);\r\n // отцентрировать карту на объекте\r\n mapDirective.leaflet.map.fitBounds([[a.lat, a.lng],[a.lat, a.lng]], { maxZoom: 17 });\r\n }\r\n }\r\n } catch (e) {} \r\n });\r\n if (typeof settings?.searchControlCreated === 'function') {\r\n settings?.searchControlCreated(mapAddressSearchComponentRef.instance);\r\n }\r\n if (settings?.autoFocusControl)\r\n {\r\n mapAddressSearchComponentRef.instance.focus();\r\n }\r\n return mapAddressSearchComponentRef.location.nativeElement; \r\n }; \r\n return control;\r\n\r\n function createMarker(addr: Address/* | LatLng*/): Marker {\r\n let res = null;\r\n if (addr && addr.lat && addr.lng) {\r\n res = mapDirective.addPointMarker([addr.lat, addr.lng], true, addr.Address, true);\r\n }\r\n return res;\r\n }\r\n\r\n function setAddress(addr: Address, addMarker: boolean = true) {\r\n if (addMarker) {\r\n createMarker(addr);\r\n } else {\r\n // отцентрировать карту на объекте\r\n mapDirective.leaflet.map.fitBounds([[addr.lat, addr.lng],[addr.lat, addr.lng]]);\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/controls/search.control.ts","export * from './NominatimAddressSource';\r\nexport * from './NominatimResult';\r\nexport * from './osm.service';\r\nexport * from './OsmSearchParams';\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/osm/index.ts","import { NominatimResult } from '.';\r\nimport { Address, AddressSource, KnownAddressSource } from '../../address';\r\nimport { isNotEmpty } from '@core.module';\r\nimport { LatLngLiteral } from 'leaflet';\r\n\r\n// ReSharper disable InconsistentNaming\r\n@KnownAddressSource()\r\nexport class NominatimAddressSource extends AddressSource {\r\n\r\n static getSource(address: Address, source: NominatimResult | App.AddressServiceType, action?: (s: AddressSource) => void): AddressSource {\r\n let res = null;\r\n if (source instanceof NominatimAddressSource) {\r\n res = source;\r\n } else if (source === App.AddressServiceType.Nominatim || source && typeof source === 'object' && isNotEmpty(source.osm_id) && isNotEmpty(source.lat) && isNotEmpty(source.lon)) {\r\n res = new NominatimAddressSource(address, typeof source === 'object' ? source : null);\r\n }\r\n if (res && action) action(res);\r\n return res;\r\n }\r\n\r\n assignAddress(address?: Address) {\r\n super.assignAddress(address);\r\n if (this.owner && this.source) {\r\n this.owner.Address = this.source.display_name;\r\n this.owner.Lat = +this.source.lat;\r\n this.owner.Lng = +this.source.lon;\r\n }\r\n }\r\n\r\n /** Идентификатор исходного объекта */\r\n getSourceId(): string | number { return this.source && this.source.osm_id; }\r\n\r\n setCenter(p: LatLngLiteral) {\r\n if (this.source) {\r\n this.source.lat = p ? p.lat : null;\r\n this.source.lon = p ? p.lng : null;\r\n\r\n if (this.source.address) {\r\n // парсинг\r\n this.owner.CountryCode = this.source.address.country_code; // код страны\r\n this.owner.Country = this.source.address.country; // страна\r\n this.owner.Region = this.source.address.state; // область\r\n this.owner.Area = this.source.address.state_district; // областной район\r\n this.owner.Level3 = this.source.address.county; // level3\r\n this.owner.CityType = this.source.address.city ? App.CityType.City : App.CityType.Town;\r\n this.owner.City = this.source.address.city || this.source.address.town;\r\n this.owner.District = ''; // ?\r\n this.owner.PostCode = this.source.address.postcode;\r\n this.owner.HouseNumber = this.source.address.house_number || this.source.address.building;\r\n this.owner.Street = this.source.address.road;// ?\r\n }\r\n this.owner.Address = this.owner.displayAddress(false, true);\r\n }\r\n } \r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/osm/NominatimAddressSource.ts","export * from './classes';\r\nexport * from './params';\r\nexport * from './visicom.service';\r\nexport * from './classes/VisicomAddressSource';\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/index.ts","// ReSharper disable InconsistentNaming\r\nexport * from './Category';\r\n\r\nexport * from './FeatureProperties';\r\nexport * from './AdmCountryProperties';\r\nexport * from './AdmDistrictProperties';\r\nexport * from './AdmLevel1Properties';\r\nexport * from './AdmLevel2Properties';\r\nexport * from './AdmLevel3Properties';\r\nexport * from './AdmSettlementProperties';\r\nexport * from './AdrAddressProperties';\r\nexport * from './AdrStreetProperties';\r\nexport * from './DistancePathProperties';\r\nexport * from './PoiProperties';\r\nexport * from './VisicomAddressSource';\r\n\r\n\r\nimport { AdmCountryProperties } from './AdmCountryProperties';\r\nimport { AdmDistrictProperties } from './AdmDistrictProperties';\r\nimport { AdmLevel1Properties } from './AdmLevel1Properties';\r\nimport { AdmLevel2Properties } from './AdmLevel2Properties';\r\nimport { AdmLevel3Properties } from './AdmLevel3Properties';\r\nimport { AdmSettlementProperties } from './AdmSettlementProperties';\r\nimport { AdrAddressProperties } from './AdrAddressProperties';\r\nimport { AdrStreetProperties } from './AdrStreetProperties';\r\nimport { DistancePathProperties } from './DistancePathProperties';\r\nimport { PoiProperties } from './PoiProperties';\r\n\r\nexport interface VisicomFeature extends GeoJSON.Feature {\r\n id?: string;\r\n bbox?: [number, number, number, number];\r\n /** Точка, которая находится внутри или совпадает с геометрией данного объекта */\r\n geo_centroid?: GeoJSON.Point;\r\n /** Прямая ссылка на объект */\r\n url?: string;\r\n}\r\n\r\nexport interface DistancePath extends GeoJSON.Feature { }\r\nexport interface AdmCountry extends VisicomFeature { }\r\nexport interface AdmDistrict extends VisicomFeature { }\r\nexport interface AdmLevel1 extends VisicomFeature { }\r\nexport interface AdmLevel2 extends VisicomFeature { }\r\nexport interface AdmLevel3 extends VisicomFeature { }\r\nexport interface AdmSettlement extends VisicomFeature { }\r\nexport interface AdrAddress extends VisicomFeature { }\r\nexport interface AdrStreet extends VisicomFeature { }\r\nexport interface Poi extends VisicomFeature { }\r\nexport interface Route extends DistancePath\r\n{\r\n geometry: GeoJSON.LineString;\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/classes/index.ts","import { AdmDistrictProperties } from \"./AdmDistrictProperties\";\r\nimport { AdmSettlementProperties } from \"./AdmSettlementProperties\";\r\nimport { AdrAddressProperties } from \"./AdrAddressProperties\";\r\nimport { AdrStreetProperties } from \"./AdrStreetProperties\";\r\n\r\nexport class VisicomUtils {\r\n\r\n private static readonly SETTLEMENT_TYPES = {\r\n 'uk': {\r\n 'місто': App.CityType.City,\r\n 'смт': App.CityType.Town,\r\n 'село': App.CityType.Village,\r\n },\r\n 'ru': {\r\n 'город': App.CityType.City,\r\n 'пгт': App.CityType.Town,\r\n 'село': App.CityType.Village,\r\n },\r\n 'en': {\r\n 'city': App.CityType.City,\r\n 'town': App.CityType.Town,\r\n 'village': App.CityType.Village,\r\n }\r\n }\r\n\r\n static getCityType(s: AdmSettlementProperties | AdmDistrictProperties | AdrStreetProperties | AdrAddressProperties): App.CityType {\r\n const sTypes = this.SETTLEMENT_TYPES[s.lang];\r\n return sTypes ? sTypes[s.type || s.settlement_type] || App.CityType.Village : null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/services/visicom/classes/VisicomUtils.ts","import { LatLng, Map, latLng, LineUtil, point, LatLngExpression, Point, PointExpression, Polyline } from 'leaflet';\r\nimport { LeafletHelper, toRadians } from './LeafletHelper';\r\nimport { isArray, isNumbersEqual, isEmpty, TO_DEGREES, TO_RADIANS, translate } from '@core.module';\r\nimport { Coordinate, CoordinatePoints, CoordinatePoint, updateCoordinatePoint, isLongStop } from '@telematics.module';\r\n\r\nexport function updateLongStop(cp: CoordinatePoint, transport: App.TrackingObject): void {\r\n if (cp && transport) {\r\n cp.isLongStop = isLongStop(cp.stopEndDate, cp.stopStartDate,\r\n LeafletHelper.appMapSettings.overrideLongStopDuration || !transport.LongStopDuration ? LeafletHelper.appMapSettings.longStopDuration : transport.LongStopDuration);\r\n }\r\n}\r\n\r\nexport declare type TInterpolatedPointInfo = {\r\n segment: CoordinatePointSegment;\r\n latLng: LatLng;\r\n timeInPoint: DateTime;\r\n speedInPoint: number;\r\n distanceFromStart: number;\r\n timeFromStart: number;\r\n isLongStop: boolean;\r\n stopDuration: number;\r\n};\r\n\r\nexport interface PointSegment {\r\n /** Начало сегмента */\r\n point1: Point;\r\n /** Конец сегмента сегмента */\r\n point2: Point;\r\n /** Ортогональная проекция точки на сегмент (ближайшая точка сегмента к указанной точке) */\r\n projection?: Point;\r\n}\r\n\r\nexport interface LatLngSegment {\r\n /** Начало сегмента */\r\n point1: LatLng;\r\n /** Конец сегмента сегмента */\r\n point2: LatLng;\r\n /** Ортогональная проекция точки на сегмент (ближайшая точка сегмента к указанной точке) */\r\n projection?: LatLng;\r\n}\r\n\r\nexport interface CoordinatePointSegment {\r\n /** Начало сегмента */\r\n point1: CoordinatePoint;\r\n /** Конец сегмента сегмента */\r\n point2: CoordinatePoint;\r\n /** Ортогональная проекция точки на сегмент (ближайшая точка сегмента к указанной точке) */\r\n projection?: CoordinatePoint;\r\n\r\n}\r\n\r\nexport function latLngRad(lat: number, lng: number): LatLng;\r\nexport function latLngRad(coordinatePoint: TotalApi.CoordinatePoint): LatLng;\r\nexport function latLngRad(coordinate: TotalApi.Coordinate): LatLng;\r\nexport function latLngRad(lat, lng?): LatLng {\r\n let res = null;\r\n if (typeof lat === 'object') {\r\n const coord = (lat['Coordinate'] ? lat['Coordinate'] : lat);\r\n res = coord.latLng;\r\n if (isEmpty(res)) {\r\n lng = coord.Longitude || 0;\r\n lat = coord.Latitude || 0;\r\n res = this.latLngRad(lat, lng);\r\n coord.latLng = res;\r\n }\r\n }\r\n if (isEmpty(res)) {\r\n res = latLng((lat || 0)*TO_DEGREES, (lng || 0)*TO_DEGREES);\r\n }\r\n return res;\r\n}\r\n\r\nexport class Geo {\r\n\r\n /** Радиус Земли, м */\r\n //static R = 6372795.0;\r\n static R = 6371000.0;\r\n \r\n /** Радиус Земли в квадрате, м^2 */\r\n static RR = Geo.R*Geo.R;\r\n\r\n /**\r\n * Returns cureent map scale in meters per pixel\r\n */\r\n static getMapScale(map: Map): number {\r\n const y = map.getSize().y, x = map.getSize().x;\r\n // calculate the distance the one side of the map to the other using the haversine formula\r\n const maxMeters = map.containerPointToLatLng([0, y]).distanceTo(map.containerPointToLatLng([x, y]));\r\n // calculate how many meters each pixel represents\r\n const meterPerPixel = maxMeters / x;\r\n return meterPerPixel;\r\n }\r\n\r\n static metersToPixels(map: Map, meters: number): number {\r\n return meters / this.getMapScale(map);\r\n }\r\n\r\n static pixelsToMeters(map: Map, pixels: number): number {\r\n return this.getMapScale(map) * pixels;\r\n }\r\n\r\n static latLngToPoint(latlng: LatLngExpression, map: Map): Point {\r\n let res = null;\r\n if (latlng) {\r\n if (map instanceof Map) {\r\n let maxzoom = map.getMaxZoom();\r\n if (maxzoom === Infinity)\r\n maxzoom = map.getZoom();\r\n res = map.project(latlng, maxzoom);\r\n } else {\r\n const ll = latLng(latlng);\r\n res = point(ll.lat, ll.lng);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n static point2LatLng(p: PointExpression, map: Map): LatLng {\r\n let res = null;\r\n if (p) {\r\n if (map instanceof Map) {\r\n let maxzoom = map.getMaxZoom();\r\n if (maxzoom === Infinity)\r\n maxzoom = map.getZoom();\r\n res = map.unproject(p, maxzoom);\r\n } else {\r\n const pp = point(p);\r\n res = latLng(pp.x, pp.y);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n static getClosestSegment(point: LatLngExpression, coordinatePoints: CoordinatePoints | CoordinatePoint[], map: Map): CoordinatePointSegment;\r\n static getClosestSegment(point: PointExpression, sourcePoints: Point[]): PointSegment;\r\n static getClosestSegment(point: LatLngExpression, sourcePoints: LatLng[], map: Map): LatLngSegment;\r\n static getClosestSegment(p, sourcePoints, map?: Map) {\r\n let res;\r\n let closestSegmnet = { point1: null, point2: null };\r\n if (!sourcePoints) return closestSegmnet;\r\n if (isArray((sourcePoints as CoordinatePoints).Points)) {\r\n sourcePoints = (sourcePoints as CoordinatePoints).Points;\r\n }\r\n if (sourcePoints.length === 0) return closestSegmnet;\r\n let isLatLng;\r\n let isCoordinatePoint = false;\r\n let point: Point;\r\n let points: Point[];\r\n if (sourcePoints[0] instanceof LatLng) {\r\n isLatLng = true;\r\n point = Geo.latLngToPoint(p, map);\r\n points = (sourcePoints).select(x => Geo.latLngToPoint(x, map)).toArray();\r\n }\r\n else if (sourcePoints[0].Coordinate) {\r\n isLatLng = true;\r\n isCoordinatePoint = true;\r\n point = Geo.latLngToPoint(p, map);\r\n points = (sourcePoints).select(x => {\r\n const p = Geo.latLngToPoint(x.Coordinate.latLng, map);\r\n p['$cp'] = x;\r\n return p;\r\n }).toArray();\r\n } else {\r\n isLatLng = false;\r\n point = LeafletHelper.toPoint(p);\r\n points = sourcePoints;\r\n }\r\n let minRatioToLine = Infinity;\r\n let currentRatio: number;\r\n let i: number;\r\n for (i = 0; i < points.length - 1; i++) {\r\n currentRatio = LineUtil.pointToSegmentDistance(point, points[i], points[i + 1]);\r\n if (currentRatio < minRatioToLine) {\r\n minRatioToLine = currentRatio;\r\n closestSegmnet.point1 = points[i];\r\n closestSegmnet.point2 = points[i + 1];\r\n }\r\n }\r\n if (closestSegmnet.point1 && closestSegmnet.point2) {\r\n closestSegmnet.projection = LineUtil.closestPointOnSegment(point, closestSegmnet.point1, closestSegmnet.point2);\r\n }\r\n if (isLatLng) {\r\n if (isCoordinatePoint) {\r\n res = this.updateCoordinatePointSegment(closestSegmnet, map);\r\n } else {\r\n res = {\r\n point1: Geo.point2LatLng(closestSegmnet.point1, map),\r\n point2: Geo.point2LatLng(closestSegmnet.point2, map),\r\n projection: Geo.point2LatLng(closestSegmnet.projection, map)\r\n };\r\n }\r\n } else {\r\n res = closestSegmnet;\r\n }\r\n return res;\r\n }\r\n\r\n\r\n /**\r\n * Calculates coordinates of coordinate point on the distance along the angle.\r\n * @param source source coordinate\r\n * @param from start coordinate from \r\n * @param distance distance in meters\r\n */\r\n static setCoordinateByDirection(source: Coordinate, from: Coordinate, distance: number): void {\r\n source.latLng = GeometryUtil.destination(from.latLng, source.Direction, distance);\r\n source.Latitude = source.latLng.lat * TO_RADIANS;\r\n source.Longitude = source.latLng.lng * TO_RADIANS;\r\n }\r\n\r\n static getClosestSegmentByTime(time: moment.Moment, coordinatePoints: CoordinatePoints | CoordinatePoint[]): CoordinatePointSegment {\r\n let res = { point1: null, point2: null };\r\n if (isArray((coordinatePoints as CoordinatePoints).Points)) {\r\n coordinatePoints = (coordinatePoints as CoordinatePoints).Points;\r\n }\r\n const sourcePoints = coordinatePoints;\r\n if (sourcePoints.length > 0) {\r\n const points = sourcePoints;\r\n\r\n const minRatio = { value: Infinity, index: null };\r\n let currentRatio: number;\r\n let i = points.length - 1;\r\n\r\n for (i; i >= 0; i--) {\r\n currentRatio = time.diff(points[i].Coordinate.UtcDate);\r\n if (currentRatio >= 0 && currentRatio < minRatio.value) {\r\n minRatio.value = currentRatio;\r\n minRatio.index = i;\r\n }\r\n }\r\n if (minRatio.index !== null) {\r\n res.point1 = points[minRatio.index];\r\n res.point2 = points[minRatio.index + 1] || points[minRatio.index];\r\n if (res.point1 === res.point2) {\r\n res.projection = res.point1;\r\n } else {\r\n res.projection = {\r\n Index: res.point1.Index + 0.5,\r\n CoordinatePoints: res.point1.CoordinatePoints,\r\n Coordinate: { UtcDate: time }\r\n };\r\n const angle = GeometryUtil.bearing(res.point1.Coordinate.latLng, res.point2.Coordinate.latLng);\r\n res.projection.Coordinate.Direction = angle;\r\n const t = (res.point2.Coordinate.UtcDate).diff(res.point1.Coordinate.UtcDate) / 1000; // время между точками сегмента в секундах\r\n if (t > 0) {\r\n const t0 = time.diff(res.point1.Coordinate.UtcDate) / 1000; // время пробега до точки проекции в секундах\r\n const v1 = (res.point1.Coordinate.Velocity || 0) / 3.6; // начальная скорость м/с\r\n const v2 = (res.point2.Coordinate.Velocity || 0) / 3.6; // конечная скорость м/с\r\n const a = (v2 - v1) / t; // ускорение м/с^2\r\n const s = res.point2.Coordinate.latLng.distanceTo(res.point1.Coordinate.latLng); // расстояние между точками в метрах\r\n const s0 = s*t0/t; // расстояние от начала сегмента до точки проекции в метрах\r\n this.setCoordinateByDirection(res.projection.Coordinate, res.point1.Coordinate, s0);\r\n res.projection.Coordinate.Velocity = Math.round((v1 + a*t0)*100*3.6) / 100; // расчитанная скорость в точке, км/ч\r\n res.projection = updateCoordinatePoint(res.projection, res.point1.CoordinatePoints);\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Returns length of the line in meters.\r\n */\r\n static getLineLength(coords: CoordinatePoints | CoordinatePoint[] | Polyline | Point[] | LatLng[]): number {\r\n let total = 0;\r\n if (isArray((coords as CoordinatePoints).Points)) {\r\n coords = (coords as CoordinatePoints).Points;\r\n }\r\n else if (typeof (coords as Polyline).getLatLngs == 'function') {\r\n coords = (coords as Polyline).getLatLngs() as LatLng[];\r\n }\r\n for (var i = 0, n = (coords).length - 1; i < n; i++) {\r\n const p1 = (coords[i] as CoordinatePoint).Coordinate ? (coords[i] as CoordinatePoint).Coordinate.latLng : coords[i] as LatLng;\r\n const p2 = (coords[i+1] as CoordinatePoint).Coordinate ? (coords[i+1] as CoordinatePoint).Coordinate.latLng : coords[i+1] as LatLng;\r\n total += p1.distanceTo(p2);\r\n }\r\n return total;\r\n }\r\n\r\n /**\r\n * Возвращает CoordinatePointSegment для указанного сегмента.\r\n * Концы сегмента будут указывать на точки трека и для них можно найти соответствующие TotalApi.CoordinatePoint,\r\n * Однако проекция точки на сегмент, скорее всего не попадёт на точку трека, поэтому данные для этой точки нужно интерполировать.\r\n */\r\n private static updateCoordinatePointSegment(pointSegment: PointSegment, map: Map): CoordinatePointSegment {\r\n const pr = pointSegment.projection ? toRadians(Geo.point2LatLng(pointSegment.projection, map)) : {};\r\n const point1: CoordinatePoint = pointSegment.point1['$cp'];\r\n const point2: CoordinatePoint = pointSegment.point2['$cp'];\r\n const res = {\r\n point1,\r\n point2,\r\n projection: {\r\n Index: point1.Index + 0.5,\r\n CoordinatePoints: point1.CoordinatePoints,\r\n Coordinate: { Latitude: pr.lat, Longitude: pr.lng, latLng: latLngRad(pr.lat, pr.lng) }\r\n }\r\n };\r\n if (res.point1.Coordinate.UtcDate.isAfter(res.point2.Coordinate.UtcDate)) {\r\n [pointSegment.point1, pointSegment.point2] = [pointSegment.point2, pointSegment.point1];\r\n [res.point1, res.point2] = [res.point2, res.point1];\r\n }\r\n\r\n if (pointSegment.projection && isNumbersEqual(pointSegment.point1.x, pointSegment.projection.x) && isNumbersEqual(pointSegment.point1.y, pointSegment.projection.y)) {\r\n res.projection = res.point1;\r\n }\r\n else if (pointSegment.projection && isNumbersEqual(pointSegment.point2.x, pointSegment.projection.x) &&\r\n isNumbersEqual(pointSegment.point2.y, pointSegment.projection.y)) {\r\n res.projection = res.point2;\r\n } else {\r\n res.projection.Coordinate.Direction = res.point1.Coordinate.Direction || 0;\r\n const t = (res.point2.Coordinate.UtcDate).diff(res.point1.Coordinate.UtcDate) / 1000; // время между точками сегмента в секундах\r\n if (t > 0) {\r\n const v1 = (res.point1.Coordinate.Velocity || 0) / 3.6; // начальная скорость м/с\r\n const v2 = (res.point2.Coordinate.Velocity || 0) / 3.6; // конечная скорость м/с\r\n const s0 = res.projection.Coordinate.latLng.distanceTo(res.point1.Coordinate.latLng); // расстояние от начала до проекции\r\n const s = res.point2.Coordinate.latLng.distanceTo(res.point1.Coordinate.latLng); // расстояние между точками сегмента в метрах\r\n const a = (v2 - v1) / t; // ускорение м/с^2\r\n const t0 = s0*t/s; // время пробега до точки проекции в секундах\r\n res.projection.Coordinate.UtcDate = moment(res.point1.Coordinate.UtcDate).add(t0, 'seconds');\r\n res.projection.Coordinate.Velocity = Math.round((v1 + a*t0)*100*3.6) / 100; // расчитанная скорость в точке, км/ч\r\n res.projection = updateCoordinatePoint(res.projection, point1.CoordinatePoints);\r\n } else {\r\n res.projection = res.point1;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Format meters to readable format like:\r\n * \"15.57 км.\" or \"315 м.\"\r\n * @param meters\r\n */\r\n static metersToReadableFormat(meters: number): string {\r\n const km = meters / 1000;\r\n\r\n return km < 1\r\n ? meters.toFixed(0) + ' ' + translate.instant('@UNITS.METRES|м')\r\n : km.toFixed(2) + ' ' + translate.instant('@UNITS.KILOMETRES|км');\r\n }\r\n\r\n static interpolatePointInfo(latlng: LatLng, coordPoints: CoordinatePoint[], map: Map): TInterpolatedPointInfo {\r\n let res = null;\r\n if (coordPoints.all(cp => !!cp.Coordinate.UtcDate)) {\r\n const segment = Geo.getClosestSegment(latlng, coordPoints, map);\r\n const point = segment.projection;\r\n res = { latLng: point.Coordinate.latLng, segment };\r\n res.timeInPoint = point.Coordinate.UtcDate;\r\n res.speedInPoint = point.Coordinate.Velocity;\r\n res.distanceFromStart = point.distanceFromStart;\r\n res.timeFromStart = point.timeFromStart;\r\n if (point.IsStop) {\r\n res.isLongStop = point.isLongStop;\r\n res.stopDuration = point.stopDuration;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /*\r\n static circleToWKT(source: Circle, map: Map): string {\r\n let res = null;\r\n if (source && map) {\r\n const p0 = this.latLngToPoint(source.getLatLng(), map);\r\n const pr = this.latLngToPoint(GeometryUtil.destination(source.getLatLng(), 0, source.getRadius()), map);\r\n const r = Math.abs(pr.y - p0.y);\r\n const p1 = point(p0.x, p0.y + r);\r\n const p2 = point(p0.x + r, p0.y);\r\n const p3 = point(p0.x, p0.y - r);\r\n const p4 = point(p0.x - r, p0.y);\r\n const ll1 = Geo.point2LatLng(p1, map);\r\n const ll2 = Geo.point2LatLng(p2, map);\r\n const ll3 = Geo.point2LatLng(p3, map);\r\n const ll4 = Geo.point2LatLng(p4, map);\r\n res = `CURVEPOLYGON(CIRCULARSTRING(${ll1.lng} ${ll1.lat}, ${ll2.lng} ${ll2.lat}, ${ll3.lng} ${ll3.lat}, ${ll4.lng} ${ll4.lat}, ${ll1.lng} ${ll1.lat}))`;\r\n }\r\n return res;\r\n }\r\n\r\n static circleFromWKT(wkt: string, map: Map): Circle {\r\n const token = 'CURVEPOLYGON(CIRCULARSTRING(';\r\n let res = null;\r\n if (wkt && map) {\r\n wkt = wkt.trim().toUpperCase();\r\n if (wkt.startsWith(token) && wkt.endsWith(')')) {\r\n const points = wkt.substr(token.length, wkt.length - token.length - 1).trim().split(',')\r\n .select(s => {\r\n const arr = s.trim().split(' ');\r\n return latLng(+(arr[1].trim()), +(arr[0].trim()));\r\n }).toArray();\r\n if (points.length === 5 && points[0].distanceTo(points[4]) < 0.0001) {\r\n const p1 = this.latLngToPoint(points[0], map);\r\n const p2 = this.latLngToPoint(points[1], map);\r\n const p3 = this.latLngToPoint(points[2], map);\r\n const p4 = this.latLngToPoint(points[3], map);\r\n if (p1.x === p3.x &&\r\n p2.y === p4.y &&\r\n (p2.x - p1.x - p1.y + p2.y) < 0.0001 &&\r\n (p2.y - p3.y - p2.x + p3.x) < 0.0001) {\r\n const pr = p1.y - p2.y;\r\n const p0 = point(p1.x, p1.y - pr);\r\n const ll0 = this.point2LatLng(p0, map);\r\n const radius = ll0.distanceTo(points[0]);\r\n res = circle(ll0, radius);\r\n res['$point2'] = points[0];\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n */\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/utils/Geo.ts","/* Angular */\r\nimport { NgModule, Type, Injector } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n/* 3rd party */\r\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\r\nimport 'leaflet.polylinemeasure';\r\nimport 'leaflet-polylinedecorator';\r\nimport 'leaflet.locatecontrol';\r\n\r\n/* System */\r\nimport { isAppInitialized, IUssInitModule, UssInitModule } from '@core.module';\r\nimport { Reflection } from '@core.module';\r\n\r\n\r\n\r\n/* Map */\r\nimport * as directives from './directives';\r\nimport * as services from './services';\r\nimport { LeafletHelper } from './utils/LeafletHelper';\r\nimport { UssSettingsModule } from '@settings.module';\r\n\r\nconst moduleComponents = [\r\n directives.MapDirective,\r\n directives.MapAddressDirective,\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n LeafletModule,\r\n UssSettingsModule\r\n ],\r\n\r\n exports: [\r\n moduleComponents,\r\n LeafletModule\r\n ],\r\n declarations: [ moduleComponents ],\r\n\r\n providers: [\r\n { provide: services.APP_ADDRESS_SERVICE_TOKEN, useClass: services.AppAddressService },\r\n services.AppOsmService,\r\n services.AppVisicomService\r\n ]\r\n})\r\n@UssInitModule()\r\nexport class UssMapModule implements IUssInitModule {\r\n private static _preInited: boolean;\r\n\r\n constructor(public injector: Injector) {\r\n Reflection.setInjector(injector);\r\n if (isAppInitialized && !UssMapModule._preInited) {\r\n this.onInitModule();\r\n }\r\n }\r\n\r\n onInitModule() {\r\n // настройка умолчаний для карты\r\n LeafletHelper.setDefaults($appSettings.mapDefaults);\r\n UssMapModule._preInited = true;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/map.module/map.module.ts","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(require('leaflet')) :\n\ttypeof define === 'function' && define.amd ? define(['leaflet'], factory) :\n\t(factory(global.L));\n}(this, (function (L$1) { 'use strict';\n\nL$1 = L$1 && L$1.hasOwnProperty('default') ? L$1['default'] : L$1;\n\n// functional re-impl of L.Point.distanceTo,\n// with no dependency on Leaflet for easier testing\nfunction pointDistance(ptA, ptB) {\n var x = ptB.x - ptA.x;\n var y = ptB.y - ptA.y;\n return Math.sqrt(x * x + y * y);\n}\n\nvar computeSegmentHeading = function computeSegmentHeading(a, b) {\n return (Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI + 90 + 360) % 360;\n};\n\nvar asRatioToPathLength = function asRatioToPathLength(_ref, totalPathLength) {\n var value = _ref.value,\n isInPixels = _ref.isInPixels;\n return isInPixels ? value / totalPathLength : value;\n};\n\nfunction parseRelativeOrAbsoluteValue(value) {\n if (typeof value === 'string' && value.indexOf('%') !== -1) {\n return {\n value: parseFloat(value) / 100,\n isInPixels: false\n };\n }\n var parsedValue = value ? parseFloat(value) : 0;\n return {\n value: parsedValue,\n isInPixels: parsedValue > 0\n };\n}\n\nvar pointsEqual = function pointsEqual(a, b) {\n return a.x === b.x && a.y === b.y;\n};\n\nfunction pointsToSegments(pts) {\n return pts.reduce(function (segments, b, idx, points) {\n // this test skips same adjacent points\n if (idx > 0 && !pointsEqual(b, points[idx - 1])) {\n var a = points[idx - 1];\n var distA = segments.length > 0 ? segments[segments.length - 1].distB : 0;\n var distAB = pointDistance(a, b);\n segments.push({\n a: a,\n b: b,\n distA: distA,\n distB: distA + distAB,\n heading: computeSegmentHeading(a, b)\n });\n }\n return segments;\n }, []);\n}\n\nfunction projectPatternOnPointPath(pts, pattern) {\n // 1. split the path into segment infos\n var segments = pointsToSegments(pts);\n var nbSegments = segments.length;\n if (nbSegments === 0) {\n return [];\n }\n\n var totalPathLength = segments[nbSegments - 1].distB;\n\n var offset = asRatioToPathLength(pattern.offset, totalPathLength);\n var endOffset = asRatioToPathLength(pattern.endOffset, totalPathLength);\n var repeat = asRatioToPathLength(pattern.repeat, totalPathLength);\n\n var repeatIntervalPixels = totalPathLength * repeat;\n var startOffsetPixels = offset > 0 ? totalPathLength * offset : 0;\n var endOffsetPixels = endOffset > 0 ? totalPathLength * endOffset : 0;\n\n // 2. generate the positions of the pattern as offsets from the path start\n var positionOffsets = [];\n var positionOffset = startOffsetPixels;\n do {\n positionOffsets.push(positionOffset);\n positionOffset += repeatIntervalPixels;\n } while (repeatIntervalPixels > 0 && positionOffset < totalPathLength - endOffsetPixels);\n\n // 3. projects offsets to segments\n var segmentIndex = 0;\n var segment = segments[0];\n return positionOffsets.map(function (positionOffset) {\n // find the segment matching the offset,\n // starting from the previous one as offsets are ordered\n while (positionOffset > segment.distB && segmentIndex < nbSegments - 1) {\n segmentIndex++;\n segment = segments[segmentIndex];\n }\n\n var segmentRatio = (positionOffset - segment.distA) / (segment.distB - segment.distA);\n return {\n pt: interpolateBetweenPoints(segment.a, segment.b, segmentRatio),\n heading: segment.heading\n };\n });\n}\n\n/**\n* Finds the point which lies on the segment defined by points A and B,\n* at the given ratio of the distance from A to B, by linear interpolation.\n*/\nfunction interpolateBetweenPoints(ptA, ptB, ratio) {\n if (ptB.x !== ptA.x) {\n return {\n x: ptA.x + ratio * (ptB.x - ptA.x),\n y: ptA.y + ratio * (ptB.y - ptA.y)\n };\n }\n // special case where points lie on the same vertical axis\n return {\n x: ptA.x,\n y: ptA.y + (ptB.y - ptA.y) * ratio\n };\n}\n\n(function() {\r\n // save these original methods before they are overwritten\r\n var proto_initIcon = L.Marker.prototype._initIcon;\r\n var proto_setPos = L.Marker.prototype._setPos;\r\n\r\n var oldIE = (L.DomUtil.TRANSFORM === 'msTransform');\r\n\r\n L.Marker.addInitHook(function () {\r\n var iconOptions = this.options.icon && this.options.icon.options;\r\n var iconAnchor = iconOptions && this.options.icon.options.iconAnchor;\r\n if (iconAnchor) {\r\n iconAnchor = (iconAnchor[0] + 'px ' + iconAnchor[1] + 'px');\r\n }\r\n this.options.rotationOrigin = this.options.rotationOrigin || iconAnchor || 'center bottom' ;\r\n this.options.rotationAngle = this.options.rotationAngle || 0;\r\n\r\n // Ensure marker keeps rotated during dragging\r\n this.on('drag', function(e) { e.target._applyRotation(); });\r\n });\r\n\r\n L.Marker.include({\r\n _initIcon: function() {\r\n proto_initIcon.call(this);\r\n },\r\n\r\n _setPos: function (pos) {\r\n proto_setPos.call(this, pos);\r\n this._applyRotation();\r\n },\r\n\r\n _applyRotation: function () {\r\n if(this.options.rotationAngle) {\r\n this._icon.style[L.DomUtil.TRANSFORM+'Origin'] = this.options.rotationOrigin;\r\n\r\n if(oldIE) {\r\n // for IE 9, use the 2D rotation\r\n this._icon.style[L.DomUtil.TRANSFORM] = 'rotate(' + this.options.rotationAngle + 'deg)';\r\n } else {\r\n // for modern browsers, prefer the 3D accelerated version\r\n this._icon.style[L.DomUtil.TRANSFORM] += ' rotateZ(' + this.options.rotationAngle + 'deg)';\r\n }\r\n }\r\n },\r\n\r\n setRotationAngle: function(angle) {\r\n this.options.rotationAngle = angle;\r\n this.update();\r\n return this;\r\n },\r\n\r\n setRotationOrigin: function(origin) {\r\n this.options.rotationOrigin = origin;\r\n this.update();\r\n return this;\r\n }\r\n });\r\n})();\n\nL$1.Symbol = L$1.Symbol || {};\n\n/**\n* A simple dash symbol, drawn as a Polyline.\n* Can also be used for dots, if 'pixelSize' option is given the 0 value.\n*/\nL$1.Symbol.Dash = L$1.Class.extend({\n options: {\n pixelSize: 10,\n pathOptions: {}\n },\n\n initialize: function initialize(options) {\n L$1.Util.setOptions(this, options);\n this.options.pathOptions.clickable = false;\n },\n\n buildSymbol: function buildSymbol(dirPoint, latLngs, map, index, total) {\n var opts = this.options;\n var d2r = Math.PI / 180;\n\n // for a dot, nothing more to compute\n if (opts.pixelSize <= 1) {\n return L$1.polyline([dirPoint.latLng, dirPoint.latLng], opts.pathOptions);\n }\n\n var midPoint = map.project(dirPoint.latLng);\n var angle = -(dirPoint.heading - 90) * d2r;\n var a = L$1.point(midPoint.x + opts.pixelSize * Math.cos(angle + Math.PI) / 2, midPoint.y + opts.pixelSize * Math.sin(angle) / 2);\n // compute second point by central symmetry to avoid unecessary cos/sin\n var b = midPoint.add(midPoint.subtract(a));\n return L$1.polyline([map.unproject(a), map.unproject(b)], opts.pathOptions);\n }\n});\n\nL$1.Symbol.dash = function (options) {\n return new L$1.Symbol.Dash(options);\n};\n\nL$1.Symbol.ArrowHead = L$1.Class.extend({\n options: {\n polygon: true,\n pixelSize: 10,\n headAngle: 60,\n pathOptions: {\n stroke: false,\n weight: 2\n }\n },\n\n initialize: function initialize(options) {\n L$1.Util.setOptions(this, options);\n this.options.pathOptions.clickable = false;\n },\n\n buildSymbol: function buildSymbol(dirPoint, latLngs, map, index, total) {\n return this.options.polygon ? L$1.polygon(this._buildArrowPath(dirPoint, map), this.options.pathOptions) : L$1.polyline(this._buildArrowPath(dirPoint, map), this.options.pathOptions);\n },\n\n _buildArrowPath: function _buildArrowPath(dirPoint, map) {\n var d2r = Math.PI / 180;\n var tipPoint = map.project(dirPoint.latLng);\n var direction = -(dirPoint.heading - 90) * d2r;\n var radianArrowAngle = this.options.headAngle / 2 * d2r;\n\n var headAngle1 = direction + radianArrowAngle;\n var headAngle2 = direction - radianArrowAngle;\n var arrowHead1 = L$1.point(tipPoint.x - this.options.pixelSize * Math.cos(headAngle1), tipPoint.y + this.options.pixelSize * Math.sin(headAngle1));\n var arrowHead2 = L$1.point(tipPoint.x - this.options.pixelSize * Math.cos(headAngle2), tipPoint.y + this.options.pixelSize * Math.sin(headAngle2));\n\n return [map.unproject(arrowHead1), dirPoint.latLng, map.unproject(arrowHead2)];\n }\n});\n\nL$1.Symbol.arrowHead = function (options) {\n return new L$1.Symbol.ArrowHead(options);\n};\n\nL$1.Symbol.Marker = L$1.Class.extend({\n options: {\n markerOptions: {},\n rotate: false\n },\n\n initialize: function initialize(options) {\n L$1.Util.setOptions(this, options);\n this.options.markerOptions.clickable = false;\n this.options.markerOptions.draggable = false;\n },\n\n buildSymbol: function buildSymbol(directionPoint, latLngs, map, index, total) {\n if (this.options.rotate) {\n this.options.markerOptions.rotationAngle = directionPoint.heading + (this.options.angleCorrection || 0);\n }\n return L$1.marker(directionPoint.latLng, this.options.markerOptions);\n }\n});\n\nL$1.Symbol.marker = function (options) {\n return new L$1.Symbol.Marker(options);\n};\n\nvar isCoord = function isCoord(c) {\n return c instanceof L$1.LatLng || Array.isArray(c) && c.length === 2 && typeof c[0] === 'number';\n};\n\nvar isCoordArray = function isCoordArray(ll) {\n return Array.isArray(ll) && isCoord(ll[0]);\n};\n\nL$1.PolylineDecorator = L$1.FeatureGroup.extend({\n options: {\n patterns: []\n },\n\n initialize: function initialize(paths, options) {\n L$1.FeatureGroup.prototype.initialize.call(this);\n L$1.Util.setOptions(this, options);\n this._map = null;\n this._paths = this._initPaths(paths);\n this._bounds = this._initBounds();\n this._patterns = this._initPatterns(this.options.patterns);\n },\n\n /**\n * Deals with all the different cases. input can be one of these types:\n * array of LatLng, array of 2-number arrays, Polyline, Polygon,\n * array of one of the previous.\n */\n _initPaths: function _initPaths(input, isPolygon) {\n var _this = this;\n\n if (isCoordArray(input)) {\n // Leaflet Polygons don't need the first point to be repeated, but we do\n var coords = isPolygon ? input.concat([input[0]]) : input;\n return [coords];\n }\n if (input instanceof L$1.Polyline) {\n // we need some recursivity to support multi-poly*\n return this._initPaths(input.getLatLngs(), input instanceof L$1.Polygon);\n }\n if (Array.isArray(input)) {\n // flatten everything, we just need coordinate lists to apply patterns\n return input.reduce(function (flatArray, p) {\n return flatArray.concat(_this._initPaths(p, isPolygon));\n }, []);\n }\n return [];\n },\n\n // parse pattern definitions and precompute some values\n _initPatterns: function _initPatterns(patternDefs) {\n return patternDefs.map(this._parsePatternDef);\n },\n\n /**\n * Changes the patterns used by this decorator\n * and redraws the new one.\n */\n setPatterns: function setPatterns(patterns) {\n this.options.patterns = patterns;\n this._patterns = this._initPatterns(this.options.patterns);\n this.redraw();\n },\n\n /**\n * Changes the patterns used by this decorator\n * and redraws the new one.\n */\n setPaths: function setPaths(paths) {\n this._paths = this._initPaths(paths);\n this._bounds = this._initBounds();\n this.redraw();\n },\n\n /**\n * Parse the pattern definition\n */\n _parsePatternDef: function _parsePatternDef(patternDef, latLngs) {\n return {\n symbolFactory: patternDef.symbol,\n // Parse offset and repeat values, managing the two cases:\n // absolute (in pixels) or relative (in percentage of the polyline length)\n offset: parseRelativeOrAbsoluteValue(patternDef.offset),\n endOffset: parseRelativeOrAbsoluteValue(patternDef.endOffset),\n repeat: parseRelativeOrAbsoluteValue(patternDef.repeat)\n };\n },\n\n onAdd: function onAdd(map) {\n this._map = map;\n this._draw();\n this._map.on('moveend', this.redraw, this);\n },\n\n onRemove: function onRemove(map) {\n this._map.off('moveend', this.redraw, this);\n this._map = null;\n L$1.FeatureGroup.prototype.onRemove.call(this, map);\n },\n\n /**\n * As real pattern bounds depends on map zoom and bounds,\n * we just compute the total bounds of all paths decorated by this instance.\n */\n _initBounds: function _initBounds() {\n var allPathCoords = this._paths.reduce(function (acc, path) {\n return acc.concat(path);\n }, []);\n return L$1.latLngBounds(allPathCoords);\n },\n\n getBounds: function getBounds() {\n return this._bounds;\n },\n\n /**\n * Returns an array of ILayers object\n */\n _buildSymbols: function _buildSymbols(latLngs, symbolFactory, directionPoints) {\n var _this2 = this;\n\n return directionPoints.map(function (directionPoint, i) {\n return symbolFactory.buildSymbol(directionPoint, latLngs, _this2._map, i, directionPoints.length);\n });\n },\n\n /**\n * Compute pairs of LatLng and heading angle,\n * that define positions and directions of the symbols on the path\n */\n _getDirectionPoints: function _getDirectionPoints(latLngs, pattern) {\n var _this3 = this;\n\n if (latLngs.length < 2) {\n return [];\n }\n var pathAsPoints = latLngs.map(function (latLng) {\n return _this3._map.project(latLng);\n });\n return projectPatternOnPointPath(pathAsPoints, pattern).map(function (point) {\n return {\n latLng: _this3._map.unproject(L$1.point(point.pt)),\n heading: point.heading\n };\n });\n },\n\n redraw: function redraw() {\n if (!this._map) {\n return;\n }\n this.clearLayers();\n this._draw();\n },\n\n /**\n * Returns all symbols for a given pattern as an array of FeatureGroup\n */\n _getPatternLayers: function _getPatternLayers(pattern) {\n var _this4 = this;\n\n var mapBounds = this._map.getBounds().pad(0.1);\n return this._paths.map(function (path) {\n var directionPoints = _this4._getDirectionPoints(path, pattern)\n // filter out invisible points\n .filter(function (point) {\n return mapBounds.contains(point.latLng);\n });\n return L$1.featureGroup(_this4._buildSymbols(path, pattern.symbolFactory, directionPoints));\n });\n },\n\n /**\n * Draw all patterns\n */\n _draw: function _draw() {\n var _this5 = this;\n\n this._patterns.map(function (pattern) {\n return _this5._getPatternLayers(pattern);\n }).forEach(function (layers) {\n _this5.addLayer(L$1.featureGroup(layers));\n });\n }\n});\n/*\n * Allows compact syntax to be used\n */\nL$1.polylineDecorator = function (paths, options) {\n return new L$1.PolylineDecorator(paths, options);\n};\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/leaflet-polylinedecorator/dist/leaflet.polylineDecorator.js\n// module id = 2399\n// module chunks = 1","/*!\nCopyright (c) 2016 Dominik Moritz\n\nThis file is part of the leaflet locate control. It is licensed under the MIT license.\nYou can find the project at: https://github.com/domoritz/leaflet-locatecontrol\n*/\n(function (factory, window) {\n // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders\n // for details on how to structure a leaflet plugin.\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n if (typeof window !== 'undefined' && window.L) {\n module.exports = factory(L);\n } else {\n module.exports = factory(require('leaflet'));\n }\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L){\n window.L.Control.Locate = factory(L);\n }\n} (function (L) {\n const LDomUtilApplyClassesMethod = (method, element, classNames) => {\n classNames = classNames.split(' ');\n classNames.forEach(function(className) {\n L.DomUtil[method].call(this, element, className);\n });\n };\n\n const addClasses = (el, names) => LDomUtilApplyClassesMethod('addClass', el, names);\n const removeClasses = (el, names) => LDomUtilApplyClassesMethod('removeClass', el, names);\n\n /**\n * Compatible with L.Circle but a true marker instead of a path\n */\n const LocationMarker = L.Marker.extend({\n initialize(latlng, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this.createIcon();\n },\n\n /**\n * Create a styled circle location marker\n */\n createIcon() {\n const opt = this.options;\n\n let style = '';\n\n if (opt.color !== undefined) {\n style += `stroke:${opt.color};`;\n }\n if (opt.weight !== undefined) {\n style += `stroke-width:${opt.weight};`;\n }\n if (opt.fillColor !== undefined) {\n style += `fill:${opt.fillColor};`;\n }\n if (opt.fillOpacity !== undefined) {\n style += `fill-opacity:${opt.fillOpacity};`;\n }\n if (opt.opacity !== undefined) {\n style += `opacity:${opt.opacity};`;\n }\n\n const icon = this._getIconSVG(opt, style);\n\n this._locationIcon = L.divIcon({\n className: icon.className,\n html: icon.svg,\n iconSize: [icon.w,icon.h],\n });\n\n this.setIcon(this._locationIcon);\n },\n\n /**\n * Return the raw svg for the shape\n *\n * Split so can be easily overridden\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.weight;\n const s = r + w;\n const s2 = s * 2;\n const svg = `` +\n '' +\n '';\n return {\n className: 'leaflet-control-locate-location',\n svg,\n w: s2,\n h: s2\n };\n },\n\n setStyle(style) {\n L.Util.setOptions(this, style);\n this.createIcon();\n }\n });\n\n const CompassMarker = LocationMarker.extend({\n initialize(latlng, heading, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this._heading = heading;\n this.createIcon();\n },\n\n setHeading(heading) {\n this._heading = heading;\n },\n\n /**\n * Create a styled arrow compass marker\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = (options.width + options.weight);\n const h = (r+options.depth + options.weight)*2;\n const path = `M0,0 l${options.width/2},${options.depth} l-${w},0 z`;\n const svgstyle = `transform: rotate(${this._heading}deg)`;\n const svg = ``+\n ''+\n '';\n return {\n className: 'leaflet-control-locate-heading',\n svg,\n w,\n h\n };\n },\n });\n\n\n const LocateControl = L.Control.extend({\n options: {\n /** Position of the control */\n position: 'topleft',\n /** The layer that the user's location should be drawn on. By default creates a new layer. */\n layer: undefined,\n /**\n * Automatically sets the map view (zoom and pan) to the user's location as it updates.\n * While the map is following the user's location, the control is in the `following` state,\n * which changes the style of the control and the circle marker.\n *\n * Possible values:\n * - false: never updates the map view when location changes.\n * - 'once': set the view when the location is first determined\n * - 'always': always updates the map view when location changes.\n * The map view follows the user's location.\n * - 'untilPan': like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n * - 'untilPanOrZoom': (default) like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n */\n setView: 'untilPanOrZoom',\n /** Keep the current map zoom level when setting the view and only pan. */\n keepCurrentZoomLevel: false,\n /** After activating the plugin by clicking on the icon, zoom to the selected zoom level, even when keepCurrentZoomLevel is true. Set to 'false' to disable this feature. */\n initialZoomLevel: false,\n /**\n * This callback can be used to override the viewport tracking\n * This function should return a LatLngBounds object.\n *\n * For example to extend the viewport to ensure that a particular LatLng is visible:\n *\n * getLocationBounds: function(locationEvent) {\n * return locationEvent.bounds.extend([-33.873085, 151.219273]);\n * },\n */\n getLocationBounds(locationEvent) {\n return locationEvent.bounds;\n },\n /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */\n flyTo: false,\n /**\n * The user location can be inside and outside the current view when the user clicks on the\n * control that is already active. Both cases can be configures separately.\n * Possible values are:\n * - 'setView': zoom and pan to the current location\n * - 'stop': stop locating and remove the location marker\n */\n clickBehavior: {\n /** What should happen if the user clicks on the control while the location is within the current view. */\n inView: 'stop',\n /** What should happen if the user clicks on the control while the location is outside the current view. */\n outOfView: 'setView',\n /**\n * What should happen if the user clicks on the control while the location is within the current view\n * and we could be following but are not. Defaults to a special value which inherits from 'inView';\n */\n inViewNotFollowing: 'inView',\n },\n /**\n * If set, save the map bounds just before centering to the user's\n * location. When control is disabled, set the view back to the\n * bounds that were saved.\n */\n returnToPrevBounds: false,\n /**\n * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait\n * until the locate API returns a new location before they see where they are again.\n */\n cacheLocation: true,\n /** If set, a circle that shows the location accuracy is drawn. */\n drawCircle: true,\n /** If set, the marker at the users' location is drawn. */\n drawMarker: true,\n /** If set and supported then show the compass heading */\n showCompass: true,\n /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */\n markerClass: LocationMarker,\n /** The class us be used to create the compass bearing arrow */\n compassClass: CompassMarker,\n /** Accuracy circle style properties. NOTE these styles should match the css animations styles */\n circleStyle: {\n className: 'leaflet-control-locate-circle',\n color: '#136AEC',\n fillColor: '#136AEC',\n fillOpacity: 0.15,\n weight: 0\n },\n /** Inner marker style properties. Only works if your marker class supports `setStyle`. */\n markerStyle: {\n className: 'leaflet-control-locate-marker',\n color: '#fff',\n fillColor: '#2A93EE',\n fillOpacity: 1,\n weight: 3,\n opacity: 1,\n radius: 9\n },\n /** Compass */\n compassStyle: {\n fillColor: '#2A93EE',\n fillOpacity: 1,\n weight: 0,\n color: '#fff',\n opacity: 1,\n radius: 9, // How far is the arrow is from the center of of the marker\n width: 9, // Width of the arrow\n depth: 6 // Length of the arrow\n },\n /**\n * Changes to accuracy circle and inner marker while following.\n * It is only necessary to provide the properties that should change.\n */\n followCircleStyle: {},\n followMarkerStyle: {\n // color: '#FFA500',\n // fillColor: '#FFB000'\n },\n followCompassStyle: {},\n /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */\n icon: 'leaflet-control-locate-location-arrow',\n iconLoading: 'leaflet-control-locate-spinner',\n /** The element to be created for icons. For example span or i */\n iconElementTag: 'span',\n /** The element to be created for the text. For example small or span */\n textElementTag: 'small',\n /** Padding around the accuracy circle. */\n circlePadding: [0, 0],\n /** Use metric units. */\n metric: true,\n /**\n * This callback can be used in case you would like to override button creation behavior.\n * This is useful for DOM manipulation frameworks such as angular etc.\n * This function should return an object with HtmlElement for the button (link property) and the icon (icon property).\n */\n createButtonCallback(container, options) {\n const link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container);\n link.title = options.strings.title;\n link.href = '#';\n link.setAttribute('role', 'button');\n const icon = L.DomUtil.create(options.iconElementTag, options.icon, link);\n\n if (options.strings.text !== undefined) {\n const text = L.DomUtil.create(options.textElementTag, 'leaflet-locate-text', link);\n text.textContent = options.strings.text;\n link.classList.add('leaflet-locate-text-active');\n link.parentNode.style.display = \"flex\";\n if (options.icon.length > 0) {\n icon.classList.add('leaflet-locate-icon');\n }\n }\n\n return { link, icon };\n },\n /** This event is called in case of any location error that is not a time out error. */\n onLocationError(err, control) {\n alert(err.message);\n },\n /**\n * This event is called when the user's location is outside the bounds set on the map.\n * The event is called repeatedly when the location changes.\n */\n onLocationOutsideMapBounds(control) {\n control.stop();\n alert(control.options.strings.outsideMapBoundsMsg);\n },\n /** Display a pop-up when the user click on the inner marker. */\n showPopup: true,\n strings: {\n title: \"Show me where I am\",\n metersUnit: \"meters\",\n feetUnit: \"feet\",\n popup: \"You are within {distance} {unit} from this point\",\n outsideMapBoundsMsg: \"You seem located outside the boundaries of the map\"\n },\n /** The default options passed to leaflets locate method. */\n locateOptions: {\n maxZoom: Infinity,\n watch: true, // if you overwrite this, visualization cannot be updated\n setView: false // have to set this to false because we have to\n // do setView manually\n }\n },\n\n initialize(options) {\n // set default options if nothing is set (merge one step deep)\n for (const i in options) {\n if (typeof this.options[i] === 'object') {\n L.extend(this.options[i], options[i]);\n } else {\n this.options[i] = options[i];\n }\n }\n\n // extend the follow marker style and circle from the normal style\n this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle);\n this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle);\n this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle);\n },\n\n /**\n * Add control to map. Returns the container for the control.\n */\n onAdd(map) {\n const container = L.DomUtil.create('div',\n 'leaflet-control-locate leaflet-bar leaflet-control');\n this._container = container;\n this._map = map;\n this._layer = this.options.layer || new L.LayerGroup();\n this._layer.addTo(map);\n this._event = undefined;\n this._compassHeading = null;\n this._prevBounds = null;\n\n const linkAndIcon = this.options.createButtonCallback(container, this.options);\n this._link = linkAndIcon.link;\n this._icon = linkAndIcon.icon;\n\n L.DomEvent.on(\n this._link,\n \"click\",\n function (ev) {\n L.DomEvent.stopPropagation(ev);\n L.DomEvent.preventDefault(ev);\n this._onClick();\n },\n this\n ).on(this._link, \"dblclick\", L.DomEvent.stopPropagation);\n\n this._resetVariables();\n\n this._map.on('unload', this._unload, this);\n\n return container;\n },\n\n /**\n * This method is called when the user clicks on the control.\n */\n _onClick() {\n this._justClicked = true;\n const wasFollowing = this._isFollowing();\n this._userPanned = false;\n this._userZoomed = false;\n\n if (this._active && !this._event) {\n // click while requesting\n this.stop();\n } else if (this._active) {\n const behaviors = this.options.clickBehavior;\n let behavior = behaviors.outOfView;\n if (this._map.getBounds().contains(this._event.latlng)) {\n behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing;\n }\n\n // Allow inheriting from another behavior\n if (behaviors[behavior]) {\n behavior = behaviors[behavior];\n }\n\n switch (behavior) {\n case 'setView':\n this.setView();\n break;\n case 'stop':\n this.stop();\n if (this.options.returnToPrevBounds) {\n const f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n f.bind(this._map)(this._prevBounds);\n }\n break;\n }\n } else {\n if (this.options.returnToPrevBounds) {\n this._prevBounds = this._map.getBounds();\n }\n this.start();\n }\n\n this._updateContainerStyle();\n },\n\n /**\n * Starts the plugin:\n * - activates the engine\n * - draws the marker (if coordinates available)\n */\n start() {\n this._activate();\n\n if (this._event) {\n this._drawMarker(this._map);\n\n // if we already have a location but the user clicked on the control\n if (this.options.setView) {\n this.setView();\n }\n }\n this._updateContainerStyle();\n },\n\n /**\n * Stops the plugin:\n * - deactivates the engine\n * - reinitializes the button\n * - removes the marker\n */\n stop() {\n this._deactivate();\n\n this._cleanClasses();\n this._resetVariables();\n\n this._removeMarker();\n },\n\n /**\n * Keep the control active but stop following the location\n */\n stopFollowing() {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n },\n\n /**\n * This method launches the location engine.\n * It is called before the marker is updated,\n * event if it does not mean that the event will be ready.\n *\n * Override it if you want to add more functionalities.\n * It should set the this._active to true and do nothing if\n * this._active is true.\n */\n _activate() {\n if (!this._active) {\n this._map.locate(this.options.locateOptions);\n this._map.fire('locateactivate', this);\n this._active = true;\n\n // bind event listeners\n this._map.on('locationfound', this._onLocationFound, this);\n this._map.on('locationerror', this._onLocationError, this);\n this._map.on('dragstart', this._onDrag, this);\n this._map.on('zoomstart', this._onZoom, this);\n this._map.on('zoomend', this._onZoomEnd, this);\n if (this.options.showCompass) {\n const oriAbs = 'ondeviceorientationabsolute' in window;\n if (oriAbs || ('ondeviceorientation' in window)) {\n const _this = this;\n const deviceorientation = function () {\n L.DomEvent.on(window, oriAbs ? 'deviceorientationabsolute' : 'deviceorientation', _this._onDeviceOrientation, _this);\n };\n if (DeviceOrientationEvent && typeof DeviceOrientationEvent.requestPermission === 'function') {\n DeviceOrientationEvent.requestPermission().then(function (permissionState) {\n if (permissionState === 'granted') {\n deviceorientation();\n }\n });\n } else {\n deviceorientation();\n }\n }\n }\n }\n },\n\n /**\n * Called to stop the location engine.\n *\n * Override it to shutdown any functionalities you added on start.\n */\n _deactivate() {\n this._map.stopLocate();\n this._map.fire('locatedeactivate', this);\n this._active = false;\n\n if (!this.options.cacheLocation) {\n this._event = undefined;\n }\n\n // unbind event listeners\n this._map.off('locationfound', this._onLocationFound, this);\n this._map.off('locationerror', this._onLocationError, this);\n this._map.off('dragstart', this._onDrag, this);\n this._map.off('zoomstart', this._onZoom, this);\n this._map.off('zoomend', this._onZoomEnd, this);\n if (this.options.showCompass) {\n this._compassHeading = null;\n if ('ondeviceorientationabsolute' in window) {\n L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this);\n } else if ('ondeviceorientation' in window) {\n L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this);\n }\n }\n },\n\n /**\n * Zoom (unless we should keep the zoom level) and an to the current view.\n */\n setView() {\n this._drawMarker();\n if (this._isOutsideMapBounds()) {\n this._event = undefined; // clear the current location so we can get back into the bounds\n this.options.onLocationOutsideMapBounds(this);\n } else {\n if (this._justClicked && this.options.initialZoomLevel !== false) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.setView;\n f.bind(this._map)([this._event.latitude, this._event.longitude], this.options.initialZoomLevel);\n } else if (this.options.keepCurrentZoomLevel) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;\n f.bind(this._map)([this._event.latitude, this._event.longitude]);\n } else {\n var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n // Ignore zoom events while setting the viewport as these would stop following\n this._ignoreEvent = true;\n f.bind(this._map)(this.options.getLocationBounds(this._event), {\n padding: this.options.circlePadding,\n maxZoom: this.options.initialZoomLevel || this.options.locateOptions.maxZoom\n });\n L.Util.requestAnimFrame(function(){\n // Wait until after the next animFrame because the flyTo can be async\n this._ignoreEvent = false;\n }, this);\n\n }\n }\n },\n\n /**\n *\n */\n _drawCompass() {\n if (!this._event) {\n return;\n }\n\n const latlng = this._event.latlng;\n\n if (this.options.showCompass && latlng && this._compassHeading !== null) {\n const cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle;\n if (!this._compass) {\n this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer);\n } else {\n this._compass.setLatLng(latlng);\n this._compass.setHeading(this._compassHeading);\n // If the compassClass can be updated with setStyle, update it.\n if (this._compass.setStyle) {\n this._compass.setStyle(cStyle);\n }\n }\n //\n }\n if (this._compass && (!this.options.showCompass || this._compassHeading === null)) {\n this._compass.removeFrom(this._layer);\n this._compass = null;\n }\n },\n\n /**\n * Draw the marker and accuracy circle on the map.\n *\n * Uses the event retrieved from onLocationFound from the map.\n */\n _drawMarker() {\n if (this._event.accuracy === undefined) {\n this._event.accuracy = 0;\n }\n\n const radius = this._event.accuracy;\n const latlng = this._event.latlng;\n\n // circle with the radius of the location's accuracy\n if (this.options.drawCircle) {\n const style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;\n\n if (!this._circle) {\n this._circle = L.circle(latlng, radius, style).addTo(this._layer);\n } else {\n this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);\n }\n }\n\n let distance;\n let unit;\n if (this.options.metric) {\n distance = radius.toFixed(0);\n unit = this.options.strings.metersUnit;\n } else {\n distance = (radius * 3.2808399).toFixed(0);\n unit = this.options.strings.feetUnit;\n }\n\n // small inner marker\n if (this.options.drawMarker) {\n const mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;\n if (!this._marker) {\n this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);\n } else {\n this._marker.setLatLng(latlng);\n // If the markerClass can be updated with setStyle, update it.\n if (this._marker.setStyle) {\n this._marker.setStyle(mStyle);\n }\n }\n }\n\n this._drawCompass();\n\n const t = this.options.strings.popup;\n function getPopupText() {\n if (typeof t === 'string') {\n return L.Util.template(t, {distance, unit});\n } else if (typeof t === 'function') {\n return t({distance, unit});\n } else {\n return t;\n }\n }\n if (this.options.showPopup && t && this._marker) {\n this._marker\n .bindPopup(getPopupText())\n ._popup.setLatLng(latlng);\n }\n if (this.options.showPopup && t && this._compass) {\n this._compass\n .bindPopup(getPopupText())\n ._popup.setLatLng(latlng);\n }\n },\n\n /**\n * Remove the marker from map.\n */\n _removeMarker() {\n this._layer.clearLayers();\n this._marker = undefined;\n this._circle = undefined;\n },\n\n /**\n * Unload the plugin and all event listeners.\n * Kind of the opposite of onAdd.\n */\n _unload() {\n this.stop();\n this._map.off('unload', this._unload, this);\n },\n\n /**\n * Sets the compass heading\n */\n _setCompassHeading(angle) {\n if (!isNaN(parseFloat(angle)) && isFinite(angle)) {\n angle = Math.round(angle);\n\n this._compassHeading = angle;\n L.Util.requestAnimFrame(this._drawCompass, this);\n } else {\n this._compassHeading = null;\n }\n },\n\n /**\n * If the compass fails calibration just fail safely and remove the compass\n */\n _onCompassNeedsCalibration() {\n this._setCompassHeading();\n },\n\n /**\n * Process and normalise compass events\n */\n _onDeviceOrientation(e) {\n if (!this._active) {\n return;\n }\n\n if (e.webkitCompassHeading) {\n // iOS\n this._setCompassHeading(e.webkitCompassHeading);\n } else if (e.absolute && e.alpha) {\n // Android\n this._setCompassHeading(360 - e.alpha)\n }\n },\n\n /**\n * Calls deactivate and dispatches an error.\n */\n _onLocationError(err) {\n // ignore time out error if the location is watched\n if (err.code == 3 && this.options.locateOptions.watch) {\n return;\n }\n\n this.stop();\n this.options.onLocationError(err, this);\n },\n\n /**\n * Stores the received event and updates the marker.\n */\n _onLocationFound(e) {\n // no need to do anything if the location has not changed\n if (this._event &&\n (this._event.latlng.lat === e.latlng.lat &&\n this._event.latlng.lng === e.latlng.lng &&\n this._event.accuracy === e.accuracy)) {\n return;\n }\n\n if (!this._active) {\n // we may have a stray event\n return;\n }\n\n this._event = e;\n\n this._drawMarker();\n this._updateContainerStyle();\n\n switch (this.options.setView) {\n case 'once':\n if (this._justClicked) {\n this.setView();\n }\n break;\n case 'untilPan':\n if (!this._userPanned) {\n this.setView();\n }\n break;\n case 'untilPanOrZoom':\n if (!this._userPanned && !this._userZoomed) {\n this.setView();\n }\n break;\n case 'always':\n this.setView();\n break;\n case false:\n // don't set the view\n break;\n }\n\n this._justClicked = false;\n },\n\n /**\n * When the user drags. Need a separate event so we can bind and unbind event listeners.\n */\n _onDrag() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * When the user zooms. Need a separate event so we can bind and unbind event listeners.\n */\n _onZoom() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userZoomed = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * After a zoom ends update the compass and handle sideways zooms\n */\n _onZoomEnd() {\n if (this._event) {\n this._drawCompass();\n }\n\n if (this._event && !this._ignoreEvent) {\n // If we have zoomed in and out and ended up sideways treat it as a pan\n if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n }\n },\n\n /**\n * Compute whether the map is following the user location with pan and zoom.\n */\n _isFollowing() {\n if (!this._active) {\n return false;\n }\n\n if (this.options.setView === 'always') {\n return true;\n } else if (this.options.setView === 'untilPan') {\n return !this._userPanned;\n } else if (this.options.setView === 'untilPanOrZoom') {\n return !this._userPanned && !this._userZoomed;\n }\n },\n\n /**\n * Check if location is in map bounds\n */\n _isOutsideMapBounds() {\n if (this._event === undefined) {\n return false;\n }\n return this._map.options.maxBounds &&\n !this._map.options.maxBounds.contains(this._event.latlng);\n },\n\n /**\n * Toggles button class between following and active.\n */\n _updateContainerStyle() {\n if (!this._container) {\n return;\n }\n\n if (this._active && !this._event) {\n // active but don't have a location yet\n this._setClasses('requesting');\n } else if (this._isFollowing()) {\n this._setClasses('following');\n } else if (this._active) {\n this._setClasses('active');\n } else {\n this._cleanClasses();\n }\n },\n\n /**\n * Sets the CSS classes for the state.\n */\n _setClasses(state) {\n if (state == 'requesting') {\n removeClasses(this._container, \"active following\");\n addClasses(this._container, \"requesting\");\n\n removeClasses(this._icon, this.options.icon);\n addClasses(this._icon, this.options.iconLoading);\n } else if (state == 'active') {\n removeClasses(this._container, \"requesting following\");\n addClasses(this._container, \"active\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n } else if (state == 'following') {\n removeClasses(this._container, \"requesting\");\n addClasses(this._container, \"active following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n }\n },\n\n /**\n * Removes all classes from button.\n */\n _cleanClasses() {\n L.DomUtil.removeClass(this._container, \"requesting\");\n L.DomUtil.removeClass(this._container, \"active\");\n L.DomUtil.removeClass(this._container, \"following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n },\n\n /**\n * Reinitializes state variables.\n */\n _resetVariables() {\n // whether locate is active or not\n this._active = false;\n\n // true if the control was clicked for the first time\n // we need this so we can pan and zoom once we have the location\n this._justClicked = false;\n\n // true if the user has panned the map after clicking the control\n this._userPanned = false;\n\n // true if the user has zoomed the map after clicking the control\n this._userZoomed = false;\n }\n });\n\n L.control.locate = (options) => new L.Control.Locate(options);\n\n return LocateControl;\n}, window));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/leaflet.locatecontrol/src/L.Control.Locate.js\n// module id = 2400\n// module chunks = 1","module.exports = \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/pages/map/components/map-settings/map-settings.dialog.html\n// module id = 2401\n// module chunks = 1","module.exports = \"/* app */\\n/* components.module */\\n.map-settings-dialog .fluid {\\n width: 100%; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/pages/map/components/map-settings/map-settings.dialog.scss\n// module id = 2402\n// module chunks = 1","import { NgModule } from '@angular/core';\r\nimport { UssCoreModule } from '@core.module';\r\nimport { UssTelematicsApiService } from './telematics-api.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [],\r\n imports: [UssCoreModule],\r\n providers: [UssTelematicsApiService]\r\n})\r\nexport class UssTelematicsModule {\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/telematics.module/telematics.module.ts","import { WebWorkersManager } from './WebWorkersManager';\r\nimport { TypedEventEmitter } from '../core.module';\r\nimport { ObservableEventType } from '../core.module';\r\n\r\nexport class EventedWorker {\r\n\r\n private workers: Worker[]; \r\n private channel: string; \r\n\r\n constructor(channel: string, workers: Worker[]) {\r\n this.workers = workers;\r\n\r\n this.workers.forEach((worker) => worker.onmessage = (e) => {\r\n WebWorkersManager.$toMain(channel).emit(e.data.message);\r\n });\r\n\r\n this.channel = channel;\r\n }\r\n\r\n public static init(path: string, channel: string): EventedWorker {\r\n return new EventedWorker(channel, [require(`worker-loader?name=[name].js!${path}'`)]);\r\n }\r\n\r\n public send(type: string, value?: any): TypedEventEmitter {\r\n return WebWorkersManager.$fromMain(type, this.workers).emit(value);\r\n }\r\n\r\n public receive(type: string): TypedEventEmitter {\r\n return WebWorkersManager.$toMain(type, this.workers);\r\n }\r\n\r\n public request(type: string, callback: (val?: T) => void, value?: any) {\r\n WebWorkersManager.$toMain(type, this.workers).subscribe(x => {\r\n callback(x);\r\n WebWorkersManager.Instance.removeObserver(type);\r\n });\r\n\r\n WebWorkersManager.$fromMain(type, this.workers).emit(value);\r\n }\r\n\r\n public onRequest(type: string, callback: (val?: T) => any) {\r\n this.receive(type).subscribe(x => {\r\n this.send(type, callback(x));\r\n WebWorkersManager.Instance.removeObserver(type);\r\n });\r\n }\r\n\r\n public add(value: any) {\r\n WebWorkersManager.$fromMain(`${this.channel}_${ObservableEventType.Add}`, this.workers).emit(value);\r\n }\r\n\r\n public addRange(value: any) {\r\n WebWorkersManager.$fromMain(`${this.channel}_${ObservableEventType.AddRange}`, this.workers).emit(value);\r\n }\r\n\r\n public remove(value: any) {\r\n WebWorkersManager.$fromMain(`${this.channel}_${ObservableEventType.Remove}`, this.workers).emit(value);\r\n }\r\n\r\n public update(value: any) {\r\n WebWorkersManager.$fromMain(`${this.channel}_${ObservableEventType.Update}`, this.workers).emit(value);\r\n }\r\n\r\n public terminate() {\r\n this.workers.forEach((w) => w.terminate());\r\n WebWorkersManager.Instance.unsubscribe(this.channel);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/web-worker.module/EventedWorker.ts","function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 2405;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/system/web-worker.module ^worker\\-loader\\?name=\\[name\\]\\.js!.*'$\n// module id = 2405\n// module chunks = 1","import * as WorkersManager from './WebWorkersManager';\r\nimport { TypedEventEmitter, ObservableCollection, ObservableEventType } from '../core.module';\r\n\r\nexport abstract class ObservableWorker {\r\n public items: ObservableCollection = new ObservableCollection(undefined, 'id');\r\n \r\n public $add: TypedEventEmitter;\r\n public $remove: TypedEventEmitter;\r\n public $update: TypedEventEmitter;\r\n public $addRange: TypedEventEmitter;\r\n\r\n public channel: string;\r\n\r\n constructor(channel: string) {\r\n this.channel = channel;\r\n\r\n this.$add = WorkersManager.WebWorkersManager.$fromMain(`${channel}_${ObservableEventType.Add}`);\r\n this.$remove = WorkersManager.WebWorkersManager.$fromMain(`${channel}_${ObservableEventType.Remove}`);\r\n this.$update = WorkersManager.WebWorkersManager.$fromMain(`${channel}_${ObservableEventType.Update}`);\r\n this.$addRange = WorkersManager.WebWorkersManager.$fromMain(`${channel}_${ObservableEventType.AddRange}`);\r\n\r\n this.items.on(ObservableEventType.Add)\r\n .subscribe((x: T) => {\r\n this.add(x);\r\n });\r\n\r\n this.items.on(ObservableEventType.Remove)\r\n .subscribe((x: T) => {\r\n this.remove(x);\r\n });\r\n\r\n this.items.on(ObservableEventType.Update)\r\n .subscribe((x: T) => {\r\n this.update(x);\r\n });\r\n\r\n this.items.on(ObservableEventType.AddRange)\r\n .subscribe((x: T[]) => {\r\n this.addRange(x);\r\n });\r\n\r\n this.$add.subscribe((x: T) => {\r\n this.items.add(x);\r\n });\r\n\r\n this.$addRange.subscribe((x: T[]) => {\r\n this.items.addRange(x);\r\n });\r\n\r\n this.$update.subscribe((x: T) => {\r\n this.items.update(x);\r\n });\r\n\r\n this.$remove.subscribe((x: T) => {\r\n this.items.remove(x);\r\n });\r\n }\r\n\r\n public add(item: T) {\r\n throw Error(\"Must be implemented in derived class!\");\r\n }\r\n\r\n public remove(item: T) {\r\n throw Error(\"Must be implemented in derived class!\");\r\n }\r\n\r\n public update(item: T) {\r\n throw Error(\"Must be implemented in derived class!\");\r\n }\r\n\r\n public addRange(items: T[]) {\r\n throw Error(\"Must be implemented in derived class!\");\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/web-worker.module/ObservableWorker.ts","import { NgModule } from '@angular/core';\r\nimport { UssCoreModule } from '../core.module';\r\n\r\n@NgModule({\r\n declarations: [ ],\r\n exports: [ ],\r\n imports: [UssCoreModule],\r\n providers: [ ],\r\n schemas: []\r\n})\r\nexport class UssWebWorkerModule {\r\n\r\n}\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/angular2-template-loader!./src/system/web-worker.module/web-worker.module.ts"],"sourceRoot":""}