UNPKG

33.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-perfect-scrollbar.es5.js","sources":["../src/lib/perfect-scrollbar.interfaces.ts","../src/lib/perfect-scrollbar.directive.ts","../node_modules/perfect-scrollbar/css/perfect-scrollbar.css","../src/lib/perfect-scrollbar.component.scss","../src/lib/perfect-scrollbar.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');\n\nexport class Geometry {\n public x: number;\n public y: number;\n\n public w: number;\n public h: number;\n\n constructor(x: number, y: number, w: number, h: number) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\n\nexport class Position {\n public x: number | 'start' | 'end';\n public y: number | 'start' | 'end';\n\n constructor(x: number | 'start' | 'end', y: number | 'start' | 'end') {\n this.x = x;\n this.y = y;\n }\n}\n\nexport type PerfectScrollbarEvent = 'psScrollY' | 'psScrollX' | 'psScrollUp'| 'psScrollDown' |\n 'psScrollLeft' | 'psScrollRight' | 'psYReachEnd' | 'psYReachStart' | 'psXReachEnd' | 'psXReachStart';\n\nexport const PerfectScrollbarEvents: PerfectScrollbarEvent[] = [\n 'psScrollY',\n 'psScrollX',\n\n 'psScrollUp',\n 'psScrollDown',\n 'psScrollLeft',\n 'psScrollRight',\n\n 'psYReachEnd',\n 'psYReachStart',\n 'psXReachEnd',\n 'psXReachStart'\n];\n\nexport interface PerfectScrollbarConfigInterface {\n handlers?: string[];\n\n wheelSpeed?: number;\n swipeEasing?: boolean;\n\n suppressScrollX?: boolean;\n suppressScrollY?: boolean;\n\n wheelPropagation?: boolean;\n useBothWheelAxes?: boolean;\n\n scrollingThreshold?: number;\n\n minScrollbarLength?: number;\n maxScrollbarLength?: number;\n\n scrollXMarginOffset?: number;\n scrollYMarginOffset?: number;\n}\n\nexport class PerfectScrollbarConfig implements PerfectScrollbarConfigInterface {\n public handlers?: string[];\n\n public wheelSpeed?: number;\n public swipeEasing?: boolean;\n\n public suppressScrollX?: boolean;\n public suppressScrollY?: boolean;\n\n public wheelPropagation?: boolean;\n public useBothWheelAxes?: boolean;\n\n public scrollingThreshold?: number;\n\n public minScrollbarLength?: number;\n public maxScrollbarLength?: number;\n\n public scrollXMarginOffset?: number;\n public scrollYMarginOffset?: number;\n\n constructor(config: PerfectScrollbarConfigInterface = {}) {\n this.assign(config);\n }\n\n public assign(config: PerfectScrollbarConfigInterface = {}) {\n for (const key in config) {\n this[key as keyof PerfectScrollbarConfig] = config[key as keyof PerfectScrollbarConfigInterface];\n }\n }\n}\n","import PerfectScrollbar from 'perfect-scrollbar';\n\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport { Subject, fromEvent } from 'rxjs';\n\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\nimport { PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgZone, Inject, Optional, ElementRef, Directive,\n OnInit, DoCheck, OnChanges, OnDestroy, Input, Output, EventEmitter,\n SimpleChanges, KeyValueDiffer, KeyValueDiffers } from '@angular/core';\n\nimport { Geometry, Position } from './perfect-scrollbar.interfaces';\n\nimport { PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarConfig, PerfectScrollbarConfigInterface,\n PerfectScrollbarEvent, PerfectScrollbarEvents } from './perfect-scrollbar.interfaces';\n\n@Directive({\n selector: '[perfectScrollbar]',\n exportAs: 'ngxPerfectScrollbar'\n})\nexport class PerfectScrollbarDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n private instance: PerfectScrollbar | null = null;\n\n private ro: ResizeObserver | null = null;\n\n private timeout: number | null = null;\n\n private configDiff: KeyValueDiffer<string, any> | null = null;\n\n private readonly ngDestroy: Subject<void> = new Subject();\n\n @Input() disabled: boolean = false;\n\n @Input('perfectScrollbar') config?: PerfectScrollbarConfigInterface;\n\n @Output() psScrollY: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollX: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psScrollUp: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollDown: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollLeft: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollRight: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psYReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psYReachStart: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachStart: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(private zone: NgZone, private differs: KeyValueDiffers,\n public elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(PERFECT_SCROLLBAR_CONFIG) private defaults: PerfectScrollbarConfigInterface) {}\n\n ngOnInit(): void {\n if (!this.disabled && isPlatformBrowser(this.platformId)) {\n const config = new PerfectScrollbarConfig(this.defaults);\n\n config.assign(this.config); // Custom configuration\n\n this.zone.runOutsideAngular(() => {\n this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);\n });\n\n if (!this.configDiff) {\n this.configDiff = this.differs.find(this.config || {}).create();\n\n this.configDiff.diff(this.config || {});\n }\n\n this.zone.runOutsideAngular(() => {\n this.ro = new ResizeObserver((entries, observer) => {\n this.update();\n });\n\n if (this.elementRef.nativeElement.children[0]) {\n this.ro.observe(this.elementRef.nativeElement.children[0]);\n }\n\n this.ro.observe(this.elementRef.nativeElement);\n });\n\n this.zone.runOutsideAngular(() => {\n PerfectScrollbarEvents.forEach((eventName: PerfectScrollbarEvent) => {\n const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);\n\n fromEvent<Event>(this.elementRef.nativeElement, eventType)\n .pipe(\n debounceTime(20),\n takeUntil(this.ngDestroy)\n )\n .subscribe((event: Event) => {\n this[eventName].emit(event);\n });\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.complete();\n\n if (this.ro) {\n this.ro.disconnect();\n }\n\n if (this.timeout && typeof window !== 'undefined') {\n window.clearTimeout(this.timeout);\n }\n\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.destroy();\n }\n });\n\n this.instance = null;\n }\n }\n\n ngDoCheck(): void {\n if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {\n const changes = this.configDiff.diff(this.config || {});\n\n if (changes) {\n this.ngOnDestroy();\n\n this.ngOnInit();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {\n if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {\n if (changes['disabled'].currentValue === true) {\n this.ngOnDestroy();\n } else if (changes['disabled'].currentValue === false) {\n this.ngOnInit();\n }\n }\n }\n }\n\n public ps(): PerfectScrollbar | null {\n return this.instance;\n }\n\n public update(): void {\n if (typeof window !== 'undefined') {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n\n this.timeout = window.setTimeout(() => {\n if (!this.disabled && this.configDiff) {\n try {\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.update();\n }\n });\n } catch (error) {\n // Update can be finished after destroy so catch errors\n }\n }\n }, 0);\n }\n }\n\n public geometry(prefix: string = 'scroll'): Geometry {\n return new Geometry(\n this.elementRef.nativeElement[prefix + 'Left'],\n this.elementRef.nativeElement[prefix + 'Top'],\n this.elementRef.nativeElement[prefix + 'Width'],\n this.elementRef.nativeElement[prefix + 'Height']\n );\n }\n\n public position(absolute: boolean = false): Position {\n if (!absolute && this.instance) {\n return new Position(\n this.instance.reach.x || 0,\n this.instance.reach.y || 0\n );\n } else {\n return new Position(\n this.elementRef.nativeElement.scrollLeft,\n this.elementRef.nativeElement.scrollTop\n );\n }\n }\n\n public scrollable(direction: string = 'any'): boolean {\n const element = this.elementRef.nativeElement;\n\n if (direction === 'any') {\n return element.classList.contains('ps--active-x') ||\n element.classList.contains('ps--active-y');\n } else if (direction === 'both') {\n return element.classList.contains('ps--active-x') &&\n element.classList.contains('ps--active-y');\n } else {\n return element.classList.contains('ps--active-' + direction);\n }\n }\n\n public scrollTo(x: number, y?: number, speed?: number): void {\n if (!this.disabled) {\n if (y == null && speed == null) {\n this.animateScrolling('scrollTop', x, speed);\n } else {\n if (x != null) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n\n if (y != null) {\n this.animateScrolling('scrollTop', y, speed);\n }\n }\n }\n }\n\n public scrollToX(x: number, speed?: number): void {\n this.animateScrolling('scrollLeft', x, speed);\n }\n\n public scrollToY(y: number, speed?: number): void {\n this.animateScrolling('scrollTop', y, speed);\n }\n\n public scrollToTop(offset?: number, speed?: number): void {\n this.animateScrolling('scrollTop', (offset || 0), speed);\n }\n\n public scrollToLeft(offset?: number, speed?: number): void {\n this.animateScrolling('scrollLeft', (offset || 0), speed);\n }\n\n public scrollToRight(offset?: number, speed?: number): void {\n const left = this.elementRef.nativeElement.scrollWidth -\n this.elementRef.nativeElement.clientWidth;\n\n this.animateScrolling('scrollLeft', left - (offset || 0), speed);\n }\n\n public scrollToBottom(offset?: number, speed?: number): void {\n const top = this.elementRef.nativeElement.scrollHeight -\n this.elementRef.nativeElement.clientHeight;\n\n this.animateScrolling('scrollTop', top - (offset || 0), speed);\n }\n\n public scrollToElement(qs: string, offset?: number, speed?: number): void {\n const element = this.elementRef.nativeElement.querySelector(qs);\n\n if (element) {\n const elementPos = element.getBoundingClientRect();\n\n const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {\n const currentPos = this.elementRef.nativeElement['scrollLeft'];\n\n const position = elementPos.left - scrollerPos.left + currentPos;\n\n this.animateScrolling('scrollLeft', position + (offset || 0), speed);\n }\n\n if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {\n const currentPos = this.elementRef.nativeElement['scrollTop'];\n\n const position = elementPos.top - scrollerPos.top + currentPos;\n\n this.animateScrolling('scrollTop', position + (offset || 0), speed);\n }\n }\n }\n\n private animateScrolling(target: string, value: number, speed?: number): void {\n if (!speed || typeof window === 'undefined') {\n const oldValue = this.elementRef.nativeElement[target];\n\n this.elementRef.nativeElement[target] = value;\n\n if (this.instance && value !== oldValue) {\n this.instance.update();\n }\n } else if (value !== this.elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n\n let oldTimestamp = performance.now();\n let oldValue = this.elementRef.nativeElement[target];\n\n const cosParameter = (oldValue - value) / 2;\n\n const step = (newTimestamp: number) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n // Only continue animation if scroll position has not changed\n if (this.elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n } else {\n this.elementRef.nativeElement[target] = newValue;\n\n // On a zoomed out page the resulting offset may differ\n oldValue = this.elementRef.nativeElement[target];\n\n if (this.instance) {\n this.instance.update();\n }\n\n oldTimestamp = newTimestamp;\n\n window.requestAnimationFrame(step);\n }\n }\n };\n\n window.requestAnimationFrame(step);\n }\n }\n}\n","/*\n * Container style\n */\n.ps {\n overflow: hidden !important;\n overflow-anchor: none;\n -ms-overflow-style: none;\n touch-action: auto;\n -ms-touch-action: auto;\n}\n\n/*\n * Scrollbar rail styles\n */\n.ps__rail-x {\n display: none;\n opacity: 0;\n transition: background-color .2s linear, opacity .2s linear;\n -webkit-transition: background-color .2s linear, opacity .2s linear;\n height: 15px;\n /* there must be 'bottom' or 'top' for ps__rail-x */\n bottom: 0px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__rail-y {\n display: none;\n opacity: 0;\n transition: background-color .2s linear, opacity .2s linear;\n -webkit-transition: background-color .2s linear, opacity .2s linear;\n width: 15px;\n /* there must be 'right' or 'left' for ps__rail-y */\n right: 0;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps--active-x > .ps__rail-x,\n.ps--active-y > .ps__rail-y {\n display: block;\n background-color: transparent;\n}\n\n.ps:hover > .ps__rail-x,\n.ps:hover > .ps__rail-y,\n.ps--focus > .ps__rail-x,\n.ps--focus > .ps__rail-y,\n.ps--scrolling-x > .ps__rail-x,\n.ps--scrolling-y > .ps__rail-y {\n opacity: 0.6;\n}\n\n.ps__rail-x:hover,\n.ps__rail-y:hover,\n.ps__rail-x:focus,\n.ps__rail-y:focus {\n background-color: #eee;\n opacity: 0.9;\n}\n\n/*\n * Scrollbar thumb styles\n */\n.ps__thumb-x {\n background-color: #aaa;\n border-radius: 6px;\n transition: background-color .2s linear, height .2s ease-in-out;\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\n height: 6px;\n /* there must be 'bottom' for ps__thumb-x */\n bottom: 2px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__thumb-y {\n background-color: #aaa;\n border-radius: 6px;\n transition: background-color .2s linear, width .2s ease-in-out;\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\n width: 6px;\n /* there must be 'right' for ps__thumb-y */\n right: 2px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__rail-x:hover > .ps__thumb-x,\n.ps__rail-x:focus > .ps__thumb-x {\n background-color: #999;\n height: 11px;\n}\n\n.ps__rail-y:hover > .ps__thumb-y,\n.ps__rail-y:focus > .ps__thumb-y {\n background-color: #999;\n width: 11px;\n}\n\n/* MS supports */\n@supports (-ms-overflow-style: none) {\n .ps {\n overflow: auto !important;\n }\n}\n\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .ps {\n overflow: auto !important;\n }\n}\n","@import '../../node_modules/perfect-scrollbar/css/perfect-scrollbar';\n\n/*\n TODO: Remove important flags after this bug if fixed:\n https://github.com/angular/flex-layout/issues/381\n*/\n\nperfect-scrollbar {\n position: relative;\n\n display: block;\n overflow: hidden;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n\n &[hidden] {\n display: none;\n }\n\n /* stylelint-disable */\n &[fxflex] {\n display: flex;\n flex-direction: column;\n -webkit-box-orient: column;\n -webkit-box-direction: column;\n height: auto;\n min-width: 0;\n min-height: 0;\n\n & > .ps {\n flex: 1 1 auto;\n -ms-flex: 1 1 auto;\n -webkit-box-flex: 1;\n width: auto;\n height: auto;\n min-width: 0;\n min-height: 0;\n }\n }\n\n &[fxlayout] {\n & > .ps,\n & > .ps > .ps-content {\n display: flex;\n flex: 1 1 auto;\n -ms-flex: 1 1 auto;\n -webkit-box-flex: 1;\n align-item: inherit;\n place-content: inherit;\n -webkit-box-pack: inherit;\n -webkit-box-align: inherit;\n flex-direction: inherit;\n -webkit-box-orient: inherit;\n -webkit-box-direction: inherit;\n width: 100%;\n height: 100%;\n }\n }\n\n &[fxlayout=\"row\"] {\n & > .ps,\n & > .ps > .ps-content {\n flex-direction: row !important;\n -webkit-box-orient: row !important;\n -webkit-box-direction: row !important;\n }\n }\n\n &[fxlayout=\"column\"] {\n & > .ps,\n & > .ps > .ps-content {\n flex-direction: column !important;\n -webkit-box-orient: column !important;\n -webkit-box-direction: column !important;\n }\n }\n /* stylelint-enable */\n\n & > .ps {\n position: static;\n\n display: block;\n width: inherit;\n height: inherit;\n max-width: inherit;\n max-height: inherit;\n\n & > .ps-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n display: block;\n overflow: hidden;\n\n pointer-events: none;\n\n .ps-indicator-top,\n .ps-indicator-left,\n .ps-indicator-right,\n .ps-indicator-bottom {\n position: absolute;\n\n opacity: 0;\n\n transition: opacity 300ms ease-in-out;\n }\n\n .ps-indicator-top,\n .ps-indicator-bottom {\n left: 0;\n\n min-width: 100%;\n min-height: 24px;\n }\n\n .ps-indicator-left,\n .ps-indicator-right {\n top: 0;\n\n min-width: 24px;\n min-height: 100%;\n }\n\n .ps-indicator-top {\n top: 0;\n }\n\n .ps-indicator-left {\n left: 0;\n }\n\n .ps-indicator-right {\n right: 0;\n }\n\n .ps-indicator-bottom {\n bottom: 0;\n }\n }\n\n &.ps--active-y {\n & > .ps__rail-y {\n top: 0 !important;\n right: 0 !important;\n left: auto !important;\n\n width: 10px;\n\n cursor: default;\n\n transition:\n width 200ms linear,\n opacity 200ms linear,\n background-color 200ms linear;\n\n &:hover {\n width: 15px;\n }\n }\n }\n\n &.ps--active-x {\n & > .ps__rail-x {\n top: auto !important;\n bottom: 0 !important;\n left: 0 !important;\n\n height: 10px;\n\n cursor: default;\n\n transition:\n height 200ms linear,\n opacity 200ms linear,\n background-color 200ms linear;\n\n &:hover {\n height: 15px;\n }\n }\n\n &.ps--active-y {\n & > .ps__rail-y {\n margin: 0 0 10px;\n }\n\n & > .ps__rail-x {\n margin: 0 10px 0 0;\n }\n }\n }\n\n &.ps--scrolling-y {\n & > .ps__rail-y {\n opacity: 0.9;\n\n background-color: #eee;\n }\n }\n\n &.ps--scrolling-x {\n & > .ps__rail-x {\n opacity: 0.9;\n\n background-color: #eee;\n }\n }\n }\n\n &.ps-show-always {\n & > .ps {\n &.ps--active-y {\n & > .ps__rail-y {\n opacity: 0.6;\n }\n }\n\n &.ps--active-x {\n & > .ps__rail-x {\n opacity: 0.6;\n }\n }\n }\n }\n\n &.ps-show-active {\n & > .ps {\n &.ps--active-y {\n & > .ps-overlay {\n &:not(.ps-at-top) {\n .ps-indicator-top {\n opacity: 1;\n\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 100%);\n }\n }\n\n &:not(.ps-at-bottom) {\n .ps-indicator-bottom {\n opacity: 1;\n\n background: linear-gradient(to top, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 100%);\n }\n }\n }\n }\n\n &.ps--active-x {\n & > .ps-overlay {\n &:not(.ps-at-left) {\n .ps-indicator-left {\n opacity: 1;\n\n background: linear-gradient(to right, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 100%);\n }\n }\n\n &:not(.ps-at-right) {\n .ps-indicator-right {\n opacity: 1;\n\n background: linear-gradient(to left, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 100%);\n }\n }\n }\n }\n }\n\n &.ps-show-limits {\n & > .ps {\n &.ps--active-y {\n & > .ps-overlay {\n &.ps-at-top {\n .ps-indicator-top {\n &.ps-indicator-show {\n opacity: 1;\n }\n\n background: linear-gradient(to bottom, rgba(170, 170, 170, 0.5) 0%, rgba(170, 170, 170, 0) 100%);\n }\n }\n\n &.ps-at-bottom {\n .ps-indicator-bottom {\n &.ps-indicator-show {\n opacity: 1;\n }\n\n background: linear-gradient(to top, rgba(170, 170, 170, 0.5) 0%, rgba(170, 170, 170, 0) 100%);\n }\n }\n }\n }\n\n &.ps--active-x {\n & > .ps-overlay {\n &.ps-at-left {\n .ps-indicator-left {\n &.ps-indicator-show {\n opacity: 1;\n }\n\n background: linear-gradient(to right, rgba(170, 170, 170, 0.5) 0%, rgba(170, 170, 170, 0) 100%);\n }\n }\n\n &.ps-at-right {\n .ps-indicator-right {\n &.ps-indicator-show {\n opacity: 1;\n }\n\n background: linear-gradient(to left, rgba(170, 170, 170, 0.5) 0%, rgba(170, 170, 170, 0) 100%);\n }\n }\n }\n }\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { PerfectScrollbarComponent } from './perfect-scrollbar.component';\nimport { PerfectScrollbarDirective } from './perfect-scrollbar.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective],\n exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]\n})\nexport class PerfectScrollbarModule {\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,qBAEa,wBAAwB,GAAG,IAAI,cAAc,CAAC,0BAA0B,CAAC,CAAC;AAEvF,IAAA;IAOE,kBAAY,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QACpD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;KACZ;mBAhBH;IAiBC,CAAA;AAbD,IAeA;IAIE,kBAAY,CAA2B,EAAE,CAA2B;QAClE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;KACZ;mBA1BH;IA2BC,CAAA;AARD,AAaO,qBAAM,sBAAsB,GAA4B;IAC7D,WAAW;IACX,WAAW;IAEX,YAAY;IACZ,cAAc;IACd,cAAc;IACd,eAAe;IAEf,aAAa;IACb,eAAe;IACf,aAAa;IACb,eAAe;CAChB,CAAC;IAuBF;IAoBE,gCAAY,MAA4C;QAA5C,uBAAA,EAAA,WAA4C;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACrB;;;;;IAEM,uCAAM;;;;cAAC,MAA4C;QAA5C,uBAAA,EAAA,WAA4C;QACxD,KAAK,qBAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,mBAAC,GAAmC,EAAC,GAAG,MAAM,mBAAC,GAA4C,EAAC,CAAC;SAClG;;iCA/FL;IAiGC;;;;;;ACjGD;IAmDE,mCAAoB,IAAY,EAAU,OAAwB,EACzD,YAAqD,YACN;QAFpC,SAAI,GAAJ,IAAI,CAAQ;QAAU,YAAO,GAAP,OAAO,CAAiB;QACzD,eAAU,GAAV,UAAU;QAA2C,eAAU,GAAV,UAAU;QAChB,aAAQ,GAAR,QAAQ;wBA7BpB,IAAI;kBAEZ,IAAI;uBAEP,IAAI;0BAEoB,IAAI;yBAEjB,IAAI,OAAO,EAAE;wBAE5B,KAAK;yBAIO,IAAI,YAAY,EAAO;yBACvB,IAAI,YAAY,EAAO;0BAEtB,IAAI,YAAY,EAAO;4BACrB,IAAI,YAAY,EAAO;4BACvB,IAAI,YAAY,EAAO;6BACtB,IAAI,YAAY,EAAO;2BAEzB,IAAI,YAAY,EAAO;6BACrB,IAAI,YAAY,EAAO;2BACzB,IAAI,YAAY,EAAO;6BACrB,IAAI,YAAY,EAAO;KAIiC;;;;IAErG,4CAAQ;;;IAAR;QAAA,iBA2CC;QA1CC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACxD,qBAAM,QAAM,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzD,QAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,KAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAM,CAAC,CAAC;aAC7E,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;gBAEhE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;aACzC;YAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,KAAI,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC,UAAC,OAAO,EAAE,QAAQ;oBAC7C,KAAI,CAAC,MAAM,EAAE,CAAC;iBACf,CAAC,CAAC;gBAEH,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC7C,KAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5D;gBAED,KAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAChD,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,sBAAsB,CAAC,OAAO,CAAC,UAAC,SAAgC;oBAC9D,qBAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,UAAC,CAAC,IAAK,OAAA,MAAI,CAAC,CAAC,WAAW,EAAI,GAAA,CAAC,CAAC;oBAE9E,SAAS,CAAQ,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;yBACvD,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,SAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;yBACA,SAAS,CAAC,UAAC,KAAY;wBACtB,KAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC7B,CAAC,CAAC;iBACN,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;KACF;;;;IAED,+CAAW;;;IAAX;QAAA,iBAqBC;QApBC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;aACtB;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnC;YAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,KAAI,CAAC,QAAQ,EAAE;oBACjB,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBACzB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;KACF;;;;IAED,6CAAS;;;IAAT;QACE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3E,qBAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAExD,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;KACF;;;;;IAED,+CAAW;;;;IAAX,UAAY,OAAsB;QAChC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE;gBAC1E,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE;oBAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;iBACnB;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;oBACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;aACF;SACF;KACF;;;;IAEM,sCAAE;;;;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;IAGhB,0CAAM;;;;;QACX,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnC;YAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC/B,IAAI,CAAC,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,UAAU,EAAE;oBACrC,IAAI;wBACF,KAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;4BAC1B,IAAI,KAAI,CAAC,QAAQ,EAAE;gCACjB,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;6BACxB;yBACF,CAAC,CAAC;qBACJ;oBAAC,wBAAO,KAAK,EAAE;;qBAEf;iBACF;aACF,EAAE,CAAC,CAAC,CAAC;SACP;;;;;;IAGI,4CAAQ;;;;cAAC,MAAyB;QAAzB,uBAAA,EAAA,iBAAyB;QACvC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,EAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,EAC/C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,CACjD,CAAC;;;;;;IAGG,4CAAQ;;;;cAAC,QAAyB;QAAzB,yBAAA,EAAA,gBAAyB;QACvC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC9B,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC3B,CAAC;SACH;aAAM;YACL,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,EACxC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CACxC,CAAC;SACH;;;;;;IAGI,8CAAU;;;;cAAC,SAAyB;QAAzB,0BAAA,EAAA,iBAAyB;QACzC,qBAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE9C,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC9C;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC9C;aAAM;YACL,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;SAC9D;;;;;;;;IAGI,4CAAQ;;;;;;cAAC,CAAS,EAAE,CAAU,EAAE,KAAc;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aAC9C;iBAAM;gBACL,IAAI,CAAC,IAAI,IAAI,EAAE;oBACb,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAC/C;gBAED,IAAI,CAAC,IAAI,IAAI,EAAE;oBACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAC9C;aACF;SACF;;;;;;;IAGI,6CAAS;;;;;cAAC,CAAS,EAAE,KAAc;QACxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;IAGzC,6CAAS;;;;;cAAC,CAAS,EAAE,KAAc;QACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;IAGxC,+CAAW;;;;;cAAC,MAAe,EAAE,KAAc;QAChD,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;;;;;;;IAGpD,gDAAY;;;;;cAAC,MAAe,EAAE,KAAc;QACjD,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;;;;;;;IAGrD,iDAAa;;;;;cAAC,MAAe,EAAE,KAAc;QAClD,qBAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;YACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;QAE5C,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;IAG5D,kDAAc;;;;;cAAC,MAAe,EAAE,KAAc;QACnD,qBAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;YACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;QAE7C,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;;IAG1D,mDAAe;;;;;;cAAC,EAAU,EAAE,MAAe,EAAE,KAAc;QAChE,qBAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAEhE,IAAI,OAAO,EAAE;YACX,qBAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAEnD,qBAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAE1E,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACpE,qBAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAE/D,qBAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC;gBAEjE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACtE;YAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACpE,qBAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAE9D,qBAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,UAAU,CAAC;gBAE/D,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACrE;SACF;;;;;;;;IAGK,oDAAgB;;;;;;cAAC,MAAc,EAAE,KAAa,EAAE,KAAc;;QACpE,IAAI,CAAC,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YAC3C,qBAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YAE9C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACxB;SACF;aAAM,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAC1D,qBAAI,UAAQ,GAAG,CAAC,CAAC;YACjB,qBAAI,aAAW,GAAG,CAAC,CAAC;YAEpB,qBAAI,cAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACrC,qBAAI,UAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAErD,qBAAM,cAAY,GAAG,CAAC,UAAQ,GAAG,KAAK,IAAI,CAAC,CAAC;YAE5C,qBAAM,MAAI,GAAG,UAAC,YAAoB;gBAChC,aAAW,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,YAAY,GAAG,cAAY,CAAC,CAAC,CAAC;gBAEjE,UAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAY,GAAG,cAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAW,CAAC,CAAC,CAAC;;gBAGnF,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,UAAQ,EAAE;oBACtD,IAAI,aAAW,IAAI,IAAI,CAAC,EAAE,EAAE;wBAC1B,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;qBACzC;yBAAM;wBACL,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,UAAQ,CAAC;;;wBAGjD,UAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;wBAEjD,IAAI,KAAI,CAAC,QAAQ,EAAE;4BACjB,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;yBACxB;wBAED,cAAY,GAAG,YAAY,CAAC;wBAE5B,MAAM,CAAC,qBAAqB,CAAC,MAAI,CAAC,CAAC;qBACpC;iBACF;aACF,CAAC;YAEF,MAAM,CAAC,qBAAqB,CAAC,MAAI,CAAC,CAAC;SACpC;;;gBApTJ,SAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,qBAAqB;iBAChC;;;;gBAZQ,MAAM;gBAEkB,eAAe;gBAFb,UAAU;6CA0CT,MAAM,SAAC,WAAW;gDACjD,QAAQ,YAAI,MAAM,SAAC,wBAAwB;;;6BAnB7C,KAAK;2BAEL,KAAK,SAAC,kBAAkB;8BAExB,MAAM;8BACN,MAAM;+BAEN,MAAM;iCACN,MAAM;iCACN,MAAM;kCACN,MAAM;gCAEN,MAAM;kCACN,MAAM;gCACN,MAAM;kCACN,MAAM;;oCAjDT;;;ACAA;;;;;;YAcY;;YAEA;YACA;;QAEJ;;QAEA,KAAK;;YAED;;YAGA;;YAEA;YACA;;aAEC;;;;YAID;;aAGC;aACA;;;;YAKD;YACA;aACC;aACA,WAAW;;;;;;;;;;iBAYvB;;;;;;oBAMmB;oBACA;;oBAEA;;;;;;;;;;;;;;;;;;iBAoBH;;oBAEG,IAAI;;;;iCAKS;;;;;6BAMJ;;6BAEA;;4CAIe;;;;;;;;;;;;;;;;;;4BC1FhC;;;iBAMK;oBACG,MAAM;;;;;;4BAFtB;;;yBAYqB;;;;;4BAQrB,OACO;4BADP,qBAEqB;;;;;;;;qBAQF,EAAE;oBACH;;yBAEK,SAAS;;;6BAMvB,KAAK;6BAAL,KAAK,UAEJ;;;;4BAOV;;;;;mBA/Da;;;;;;gBAgFD;;MAGV;;;;;;;;6BAVG;0BAAH;0BAAA;4CAwBA;gBACU;;;MAlGhB;;;;;;;;QAqHQ;;4CAIF;;;;;;;;;;;;;;;;;;;YAyCQ;;;YAKA;kBAGJ;8DAIK;;qBA9KE;YAqLD;;;;;;;;;;aA8BG,MACV;;IAKC;kCAMQ;;;;;;;;;;cAkCM;cAEA,EAAE;kCApCR,qCA8CJ;;IA7Qd;;;iGA8R6G;sDAnBnG,GAAG,yCAcC;gBAEc,GACX;mBA5RA;;;;;;qBAAA;;;;;;;;;;;;;ACPjB;;;;gBAOC,QAAQ,SAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;oBACpE,OAAO,EAAE,CAAC,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;iBAChF;;iCAXD;;;;;;;;;;;;;;;"}
\No newline at end of file