ontimize-web-ngx 15.5.2 → 15.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +19 -3
  2. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +17 -4
  3. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +7 -5
  4. package/esm2020/lib/components/grid/o-grid.component.mjs +17 -16
  5. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +12 -15
  6. package/esm2020/lib/components/index.mjs +2 -1
  7. package/esm2020/lib/components/list/o-list.component.mjs +24 -13
  8. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +12 -15
  9. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +33 -0
  10. package/esm2020/lib/components/o-skeleton.component.mjs +15 -6
  11. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +5 -19
  12. package/esm2020/lib/components/table/o-table.component.mjs +11 -2
  13. package/esm2020/lib/layouts/app-layout/o-app-layout-base.class.mjs +1 -1
  14. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +26 -9
  15. package/esm2020/lib/util/codes.mjs +3 -1
  16. package/fesm2015/ontimize-web-ngx.mjs +253 -166
  17. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  18. package/fesm2020/ontimize-web-ngx.mjs +252 -166
  19. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  20. package/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.d.ts +3 -0
  21. package/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.d.ts +1 -0
  22. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +2 -1
  23. package/lib/components/grid/skeketon/o-grid-skeleton.component.d.ts +4 -7
  24. package/lib/components/index.d.ts +1 -0
  25. package/lib/components/list/o-list.component.d.ts +2 -0
  26. package/lib/components/list/skeleton/o-list-skeleton.component.d.ts +4 -7
  27. package/lib/components/o-repeatable-skeleton.component.d.ts +9 -0
  28. package/lib/components/o-skeleton.component.d.ts +10 -5
  29. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -10
  30. package/lib/components/table/o-table.component.d.ts +1 -0
  31. package/lib/layouts/app-layout/o-app-layout-base.class.d.ts +1 -1
  32. package/lib/layouts/app-layout/o-app-layout.component.d.ts +7 -3
  33. package/lib/util/codes.d.ts +3 -0
  34. package/package.json +1 -1
@@ -1,25 +1,11 @@
1
- import { ChangeDetectorRef, Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
2
- import { OSkeletonComponent } from '../../../o-skeleton.component';
3
- import { of } from 'rxjs';
1
+ import { Component, ViewEncapsulation } from '@angular/core';
4
2
  import { Util } from '../../../../util/util';
3
+ import { OSkeletonComponent } from '../../../o-skeleton.component';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@angular/common";
7
6
  import * as i2 from "@angular/flex-layout/flex";
8
7
  import * as i3 from "ngx-skeleton-loader";
9
8
  export class OTableSkeletonComponent extends OSkeletonComponent {
10
- constructor(elRef, injector) {
11
- super(injector);
12
- this.elRef = elRef;
13
- this.injector = injector;
14
- this.cd = injector.get(ChangeDetectorRef);
15
- }
16
- ngOnInit() {
17
- this.rows$ = of([1]);
18
- }
19
- ngAfterViewInit() {
20
- this.cd.detectChanges();
21
- this.rows$ = of(this.getRows());
22
- }
23
9
  getRows() {
24
10
  const parentElement = this.elRef.nativeElement.parentElement;
25
11
  const header = parentElement.querySelector('div.o-table-skeleton-header');
@@ -46,12 +32,12 @@ export class OTableSkeletonComponent extends OSkeletonComponent {
46
32
  return Array.from(new Array(Math.floor(parentHeight / totalHeightItem)), (x, i) => i + 1);
47
33
  }
48
34
  }
49
- OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
35
+ OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
50
36
  OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableSkeletonComponent, selector: "o-table-skeleton", host: { properties: { "class.o-table-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of rows$ | async; \">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
51
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, decorators: [{
52
38
  type: Component,
53
39
  args: [{ selector: 'o-table-skeleton', encapsulation: ViewEncapsulation.None, host: {
54
40
  '[class.o-table-skeleton]': 'true'
55
41
  }, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of rows$ | async; \">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"] }]
56
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBYTdDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBa0I7SUFHN0QsWUFBc0IsS0FBaUIsRUFBWSxRQUFrQjtRQUNuRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVuRSxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFFTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFHN0QsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV0RSxJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksZUFBdUIsQ0FBQztRQUM1QixJQUFJLE1BQU0sRUFBRTtZQUVWLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2xFLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFFUixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2hFLGVBQWUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU1RixDQUFDOztxSEF0RFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMklDaEJwQyw4ekNBd0JBOzRGRFJhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXNrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXNrZWxldG9uXSc6ICd0cnVlJ1xuICB9XG5cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlU2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICByb3dzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy5jZCA9IGluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd3MkID0gb2YoWzFdKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsvLyBzdXJlIGRldGVjdCBjaGFuZ2VzXG4gICAgdGhpcy5yb3dzJCA9IG9mKHRoaXMuZ2V0Um93cygpKTtcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAvKiBhdmFpbGFibGUgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudCBoZWlnaHQgIC0gKGhlYWRlciB0YWJsZSBoZWFkZXIgaGVpZ2h0ICsgbWFyZ2luIGJvdHRvbSkqL1xuICAgIGNvbnN0IGhlYWRlciA9IHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tdGFibGUtc2tlbGV0b24taGVhZGVyJyk7XG4gICAgY29uc3QgaXRlbSA9IHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tdGFibGUtc2tlbGV0b24taXRlbScpO1xuXG4gICAgbGV0IHRvdGFsSGVpZ2h0SGVhZGVyOiBudW1iZXI7XG4gICAgbGV0IHRvdGFsSGVpZ2h0SXRlbTogbnVtYmVyO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIC8vIE9idMOpbiBsYXMgZGltZW5zaW9uZXMgeSBlc3RpbG9zIGNvbXB1dGFkb3MgZGVsIGVsZW1lbnRvXG4gICAgICBjb25zdCBoZWFkZXJDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShoZWFkZXIpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaGVhZGVyLm9mZnNldEhlaWdodDsgLy8gQWx0dXJhIGluY2x1eWVuZG8gcGFkZGluZ1xuICAgICAgY29uc3QgbWFyZ2luVG9wID0gcGFyc2VGbG9hdChoZWFkZXJDb21wdXRlZFN0eWxlLm1hcmdpblRvcCk7IC8vIE1hcmdlbiBzdXBlcmlvclxuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gcGFyc2VGbG9hdChoZWFkZXJDb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSk7IC8vIE1hcmdlbiBpbmZlcmlvclxuXG4gICAgICAvLyBDYWxjdWxhIGxhIGFsdHVyYSB0b3RhbFxuICAgICAgdG90YWxIZWlnaHRIZWFkZXIgPSBoZWlnaHQgKyBtYXJnaW5Cb3R0b20gKyBtYXJnaW5Ub3A7XG4gICAgfVxuICAgIGlmIChpdGVtKSB7XG4gICAgICAvLyBPYnTDqW4gbGFzIGRpbWVuc2lvbmVzIHkgZXN0aWxvcyBjb21wdXRhZG9zIGRlbCBlbGVtZW50b1xuICAgICAgY29uc3QgaXRlbUNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGl0ZW0pO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaXRlbS5vZmZzZXRIZWlnaHQ7IC8vIEFsdHVyYSBpbmNsdXllbmRvIHBhZGRpbmdcbiAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoaXRlbUNvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tKTsgLy8gTWFyZ2VuIGluZmVyaW9yXG5cbiAgICAgIC8vIENhbGN1bGEgbGEgYWx0dXJhIHRvdGFsXG4gICAgICB0b3RhbEhlaWdodEl0ZW0gPSBoZWlnaHQgKyBtYXJnaW5Cb3R0b207XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC0gdG90YWxIZWlnaHRIZWFkZXI7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwYXJlbnRIZWlnaHQpIHx8IHBhcmVudEhlaWdodCA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgQXJyYXkoTWF0aC5mbG9vcihwYXJlbnRIZWlnaHQgLyB0b3RhbEhlaWdodEl0ZW0pKSwgKHgsIGkpID0+IGkgKyAxKTtcblxuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tdGFibGUtc2tlbGV0b24taGVhZGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWl0ZW1cIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3MkIHwgYXN5bmM7IFwiPlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGZ4RmxleCBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMFwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQWFuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBRTdELE9BQU87UUFFTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFHN0QsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV0RSxJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksZUFBdUIsQ0FBQztRQUM1QixJQUFJLE1BQU0sRUFBRTtZQUVWLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2xFLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFFUixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2hFLGVBQWUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU1RixDQUFDOztxSEF2Q1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMklDaEJwQyw4ekNBd0JBOzRGRFJhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXNrZWxldG9uLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXNrZWxldG9uXSc6ICd0cnVlJ1xuICB9XG5cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlU2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPU2tlbGV0b25Db21wb25lbnQgIHtcblxuICBnZXRSb3dzKCkge1xuXG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyogYXZhaWxhYmxlIHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQgaGVpZ2h0ICAtIChoZWFkZXIgdGFibGUgaGVhZGVyIGhlaWdodCArIG1hcmdpbiBib3R0b20pKi9cbiAgICBjb25zdCBoZWFkZXIgPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5vLXRhYmxlLXNrZWxldG9uLWhlYWRlcicpO1xuICAgIGNvbnN0IGl0ZW0gPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5vLXRhYmxlLXNrZWxldG9uLWl0ZW0nKTtcblxuICAgIGxldCB0b3RhbEhlaWdodEhlYWRlcjogbnVtYmVyO1xuICAgIGxldCB0b3RhbEhlaWdodEl0ZW06IG51bWJlcjtcbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAvLyBPYnTDqW4gbGFzIGRpbWVuc2lvbmVzIHkgZXN0aWxvcyBjb21wdXRhZG9zIGRlbCBlbGVtZW50b1xuICAgICAgY29uc3QgaGVhZGVyQ29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoaGVhZGVyKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGhlYWRlci5vZmZzZXRIZWlnaHQ7IC8vIEFsdHVyYSBpbmNsdXllbmRvIHBhZGRpbmdcbiAgICAgIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoaGVhZGVyQ29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3ApOyAvLyBNYXJnZW4gc3VwZXJpb3JcbiAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoaGVhZGVyQ29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20pOyAvLyBNYXJnZW4gaW5mZXJpb3JcblxuICAgICAgLy8gQ2FsY3VsYSBsYSBhbHR1cmEgdG90YWxcbiAgICAgIHRvdGFsSGVpZ2h0SGVhZGVyID0gaGVpZ2h0ICsgbWFyZ2luQm90dG9tICsgbWFyZ2luVG9wO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgLy8gT2J0w6luIGxhcyBkaW1lbnNpb25lcyB5IGVzdGlsb3MgY29tcHV0YWRvcyBkZWwgZWxlbWVudG9cbiAgICAgIGNvbnN0IGl0ZW1Db21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShpdGVtKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGl0ZW0ub2Zmc2V0SGVpZ2h0OyAvLyBBbHR1cmEgaW5jbHV5ZW5kbyBwYWRkaW5nXG4gICAgICBjb25zdCBtYXJnaW5Cb3R0b20gPSBwYXJzZUZsb2F0KGl0ZW1Db21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSk7IC8vIE1hcmdlbiBpbmZlcmlvclxuXG4gICAgICAvLyBDYWxjdWxhIGxhIGFsdHVyYSB0b3RhbFxuICAgICAgdG90YWxIZWlnaHRJdGVtID0gaGVpZ2h0ICsgbWFyZ2luQm90dG9tO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIHRvdGFsSGVpZ2h0SGVhZGVyO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQocGFyZW50SGVpZ2h0KSB8fCBwYXJlbnRIZWlnaHQgPCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KE1hdGguZmxvb3IocGFyZW50SGVpZ2h0IC8gdG90YWxIZWlnaHRJdGVtKSksICh4LCBpKSA9PiBpICsgMSk7XG5cbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWhlYWRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiby10YWJsZS1za2VsZXRvbi1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzJCB8IGFzeW5jOyBcIj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBmeEZsZXggY291bnQ9XCIxXCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgZnhGbGV4PVwiMjAlXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgZnhGbGV4PVwiMjBcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19