ngx-sumax-erp-components 1.6.0 → 1.7.0

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.
@@ -0,0 +1,20 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { NgModule } from "@angular/core";
3
+ import { MatMenuModule } from "@angular/material/menu";
4
+ import { MatTooltipModule } from "@angular/material/tooltip";
5
+ import { ScCellRendererButtonComponent, ScMenuPanelComponent } from "./sc-cell-render-button.component";
6
+ import * as i0 from "@angular/core";
7
+ export class ScCellRendererButtonModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, declarations: [ScCellRendererButtonComponent, ScMenuPanelComponent], imports: [CommonModule, MatMenuModule, MatTooltipModule], exports: [ScCellRendererButtonComponent, ScMenuPanelComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, imports: [CommonModule, MatMenuModule, MatTooltipModule] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [ScCellRendererButtonComponent, ScMenuPanelComponent],
16
+ imports: [CommonModule, MatMenuModule, MatTooltipModule],
17
+ exports: [ScCellRendererButtonComponent, ScMenuPanelComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBT3hHLE1BQU0sT0FBTywwQkFBMEI7K0dBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCLGlCQUp0Qiw2QkFBNkIsRUFBRSxvQkFBb0IsYUFDeEQsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsYUFDN0MsNkJBQTZCLEVBQUUsb0JBQW9CO2dIQUVsRCwwQkFBMEIsWUFIM0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0I7OzRGQUc1QywwQkFBMEI7a0JBTHRDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsNkJBQTZCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLDZCQUE2QixFQUFFLG9CQUFvQixDQUFDO2lCQUMvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudCwgU2NNZW51UGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LCBTY01lbnVQYW5lbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGVdLFxuICBleHBvcnRzOiBbU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsIFNjTWVudVBhbmVsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyZXJCdXR0b25Nb2R1bGUge31cbiJdfQ==
@@ -1,27 +1,27 @@
1
- import { NoRowsOverlayDefaultComponent } from './no-rows-overlay/noRowsOverlayDefault.component';
2
- import { ScCellRendererButtonComponent, ScMenuPanelComponent } from './sc-cell-render-button/sc-cell-render-button.component';
3
- import { ScCellRenderCheckboxListComponent } from './sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component';
4
- import { ScCellRenderSelectComponent } from './sc-cell-render-select/sc-cell-render-select.component';
5
- import { ScCellRenderToggleComponent } from './sc-cell-render-toggle/sc-cell-render-toggle.component';
1
+ import { NoRowsOverlayDefaultComponent } from "./no-rows-overlay/noRowsOverlayDefault.component";
2
+ import { ScCellRendererButtonComponent, ScMenuPanelComponent } from "./sc-cell-render-button/sc-cell-render-button.component";
3
+ import { ScCellRenderCheckboxListComponent } from "./sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component";
4
+ import { ScCellRenderSelectComponent } from "./sc-cell-render-select/sc-cell-render-select.component";
5
+ import { ScCellRenderToggleComponent } from "./sc-cell-render-toggle/sc-cell-render-toggle.component";
6
6
  export const scCellRendererFramework = {
7
7
  scCellRendererButtonComponent: ScCellRendererButtonComponent,
8
8
  scCellRenderCheckboxListComponent: ScCellRenderCheckboxListComponent,
9
9
  scCellRenderSelectComponent: ScCellRenderSelectComponent,
10
10
  scCellRenderToggleComponent: ScCellRenderToggleComponent,
11
- noRowsOverlayDefault: NoRowsOverlayDefaultComponent
11
+ noRowsOverlayDefault: NoRowsOverlayDefaultComponent,
12
12
  };
13
13
  export const scCellRendererComponents = [
14
- ScCellRendererButtonComponent,
14
+ // ScCellRendererButtonComponent,
15
15
  ScCellRenderCheckboxListComponent,
16
16
  ScCellRenderSelectComponent,
17
17
  ScCellRenderToggleComponent,
18
- ScMenuPanelComponent
18
+ // ScMenuPanelComponent,
19
19
  ];
20
20
  export const scComponents = {
21
- 'scCellRendererButtonComponent': ScCellRendererButtonComponent,
22
- 'scCellRenderCheckboxListComponent': ScCellRenderCheckboxListComponent,
23
- 'scCellRenderSelectComponent': ScCellRenderSelectComponent,
24
- 'scCellRenderToggleComponent': ScCellRenderToggleComponent,
25
- 'noRowsOverlayDefault': ScMenuPanelComponent
21
+ scCellRendererButtonComponent: ScCellRendererButtonComponent,
22
+ scCellRenderCheckboxListComponent: ScCellRenderCheckboxListComponent,
23
+ scCellRenderSelectComponent: ScCellRenderSelectComponent,
24
+ scCellRenderToggleComponent: ScCellRenderToggleComponent,
25
+ noRowsOverlayDefault: ScMenuPanelComponent,
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUN0Qyw2QkFBNkIsRUFBRSw2QkFBNkI7SUFDNUQsaUNBQWlDLEVBQUUsaUNBQWlDO0lBQ3BFLDJCQUEyQixFQUFFLDJCQUEyQjtJQUN4RCwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsb0JBQW9CLEVBQUUsNkJBQTZCO0NBQ25ELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN2Qyw2QkFBNkI7SUFDN0IsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isb0JBQW9CO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDM0IsK0JBQStCLEVBQUcsNkJBQTZCO0lBQy9ELG1DQUFtQyxFQUFHLGlDQUFpQztJQUN2RSw2QkFBNkIsRUFBRywyQkFBMkI7SUFDM0QsNkJBQTZCLEVBQUcsMkJBQTJCO0lBQzNELHNCQUFzQixFQUFHLG9CQUFvQjtDQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQgfSBmcm9tICcuL25vLXJvd3Mtb3ZlcmxheS9ub1Jvd3NPdmVybGF5RGVmYXVsdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsIFNjTWVudVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQgfSBmcm9tICcuL3NjLWNlbGwtcmVuZGVyLWNoZWNrYm94LWxpc3Qvc2MtY2VsbC1yZW5kZXItY2hlY2tib3gtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zYy1jZWxsLXJlbmRlci1zZWxlY3Qvc2MtY2VsbC1yZW5kZXItc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL3NjLWNlbGwtcmVuZGVyLXRvZ2dsZS9zYy1jZWxsLXJlbmRlci10b2dnbGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHNjQ2VsbFJlbmRlcmVyRnJhbWV3b3JrID0ge1xuXHRzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudDogU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG5cdHNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudDogU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50LFxuXHRzY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcblx0c2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50OiBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG5cdG5vUm93c092ZXJsYXlEZWZhdWx0OiBOb1Jvd3NPdmVybGF5RGVmYXVsdENvbXBvbmVudFxufTtcbmV4cG9ydCBjb25zdCBzY0NlbGxSZW5kZXJlckNvbXBvbmVudHMgPSBbXG5cdFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuXHRTY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQsXG5cdFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcblx0U2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuXHRTY01lbnVQYW5lbENvbXBvbmVudFxuXTtcblxuZXhwb3J0IGNvbnN0IHNjQ29tcG9uZW50cyA9IHtcblx0J3NjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50JyA6IFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuXHQnc2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50JyA6IFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcblx0J3NjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCcgOiBTY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQsXG5cdCdzY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQnIDogU2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuXHQnbm9Sb3dzT3ZlcmxheURlZmF1bHQnIDogU2NNZW51UGFuZWxDb21wb25lbnRcbn07XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyw2QkFBNkIsRUFBRSw2QkFBNkI7SUFDNUQsaUNBQWlDLEVBQUUsaUNBQWlDO0lBQ3BFLDJCQUEyQixFQUFFLDJCQUEyQjtJQUN4RCwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsb0JBQW9CLEVBQUUsNkJBQTZCO0NBQ3BELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxpQ0FBaUM7SUFDakMsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsMEJBQTBCO0NBQzNCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsNkJBQTZCLEVBQUUsNkJBQTZCO0lBQzVELGlDQUFpQyxFQUFFLGlDQUFpQztJQUNwRSwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsMkJBQTJCLEVBQUUsMkJBQTJCO0lBQ3hELG9CQUFvQixFQUFFLG9CQUFvQjtDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQgfSBmcm9tIFwiLi9uby1yb3dzLW92ZXJsYXkvbm9Sb3dzT3ZlcmxheURlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudCwgU2NNZW51UGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2MtY2VsbC1yZW5kZXItY2hlY2tib3gtbGlzdC9zYy1jZWxsLXJlbmRlci1jaGVja2JveC1saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2MtY2VsbC1yZW5kZXItc2VsZWN0L3NjLWNlbGwtcmVuZGVyLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNjQ2VsbFJlbmRlclRvZ2dsZUNvbXBvbmVudCB9IGZyb20gXCIuL3NjLWNlbGwtcmVuZGVyLXRvZ2dsZS9zYy1jZWxsLXJlbmRlci10b2dnbGUuY29tcG9uZW50XCI7XG5cbmV4cG9ydCBjb25zdCBzY0NlbGxSZW5kZXJlckZyYW1ld29yayA9IHtcbiAgc2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQ6IFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuICBzY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcbiAgc2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50OiBTY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQsXG4gIHNjQ2VsbFJlbmRlclRvZ2dsZUNvbXBvbmVudDogU2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5RGVmYXVsdDogTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQsXG59O1xuZXhwb3J0IGNvbnN0IHNjQ2VsbFJlbmRlcmVyQ29tcG9uZW50cyA9IFtcbiAgLy8gU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG4gIFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcbiAgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50LFxuICBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG4gIC8vICAgU2NNZW51UGFuZWxDb21wb25lbnQsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2NDb21wb25lbnRzID0ge1xuICBzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudDogU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG4gIHNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudDogU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50LFxuICBzY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcbiAgc2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50OiBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG4gIG5vUm93c092ZXJsYXlEZWZhdWx0OiBTY01lbnVQYW5lbENvbXBvbmVudCxcbn07XG4iXX0=
@@ -0,0 +1,15 @@
1
+ export class FilterPaginable {
2
+ constructor(page, pageSize) {
3
+ this.page = page;
4
+ this.pageSize = pageSize;
5
+ this.sortBy = "";
6
+ this.sortDirection = "";
7
+ }
8
+ getPathFilter() {
9
+ if (this.sortBy === "") {
10
+ return `?page=${this.page}&size=${this.pageSize}`;
11
+ }
12
+ return `?page=${this.page}&size=${this.pageSize}&sortBy=${this.sortBy}&sortDirection=${this.sortDirection}`;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLWFnLWdyaWQtcGFnaW5hYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtcGFnaW5hYmxlL21vZGVscy1hZy1ncmlkLXBhZ2luYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxPQUFPLGVBQWU7SUFNMUIsWUFBWSxJQUFZLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdkIsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsUUFBUSxXQUFXLElBQUksQ0FBQyxNQUFNLGtCQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYWdpbmFibGU8VD4ge1xuICBkYXRhPzogVFtdO1xuICAvKipcbiAgICogVG90YWwgZGUgcmVnaXN0cm9zXG4gICAqL1xuICB0b3RhbEl0ZW1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTsO6bWVybyBkZSBww6FnaW5hIGxhIGFjdHVhbFxuICAgKi9cbiAgcGFnZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRhbWHDsW8gZGUgbGEgcMOhZ2luYVxuICAgKi9cbiAgc2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRvdGFsIGRlIHDDoWdpbmFzXG4gICAqL1xuICB0b3RhbFBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYWdpbmFibGUge1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgc29ydEJ5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcikge1xuICAgIHRoaXMucGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMuc29ydEJ5ID0gXCJcIjtcbiAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBcIlwiO1xuICB9XG5cbiAgZ2V0UGF0aEZpbHRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNvcnRCeSA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIGA/cGFnZT0ke3RoaXMucGFnZX0mc2l6ZT0ke3RoaXMucGFnZVNpemV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGA/cGFnZT0ke3RoaXMucGFnZX0mc2l6ZT0ke3RoaXMucGFnZVNpemV9JnNvcnRCeT0ke3RoaXMuc29ydEJ5fSZzb3J0RGlyZWN0aW9uPSR7dGhpcy5zb3J0RGlyZWN0aW9ufWA7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,351 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, EventEmitter, inject, Input, Output, ViewChild, } from "@angular/core";
3
+ import { AgGridModule } from "ag-grid-angular";
4
+ import { EMPTY, Subscription, tap } from "rxjs";
5
+ import { EnumButtonType } from "../../utils/IScAgGrid";
6
+ import { ScCellRenderButtonService } from "../cell-render/sc-cell-render-button/sc-cell-render-button.component";
7
+ import { ScCellRendererButtonModule } from "../cell-render/sc-cell-render-button/sc-cell-render-button.module";
8
+ import { scComponents } from "../cell-render/sc-cell-render-config";
9
+ import { FilterPaginable } from "./models-ag-grid-paginable";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "ag-grid-angular";
13
+ export class ScAgGridPaginableComponent {
14
+ /**
15
+ * @description Componentes de la `grilla`
16
+ * @default undefined
17
+ */
18
+ set frameworkComponents(value) {
19
+ this._frameworkComponents = { ...this._frameworkComponents, ...value };
20
+ }
21
+ /**
22
+ * @description Para poder agregar más objetos al contexto
23
+ */
24
+ set context(value) {
25
+ this._context = { ...this._context, ...value };
26
+ }
27
+ // GETTERS
28
+ getTotalPageList(currentPage) {
29
+ let start = currentPage - this.maxVisiblePages;
30
+ let end = currentPage + this.maxVisiblePages;
31
+ // Ajuste cuando está al inicio
32
+ if (start < 1) {
33
+ start = 1;
34
+ end = this.maxVisiblePages * 2 + 1;
35
+ }
36
+ // Ajuste cuando está al final
37
+ if (end > this.totalPage) {
38
+ end = this.totalPage;
39
+ start = Math.max(1, end - this.maxVisiblePages * 2);
40
+ }
41
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
42
+ }
43
+ get suppressRowClickSelection() {
44
+ return this.rowSelection === "single" ? false : true;
45
+ }
46
+ constructor(changeDetectorRef) {
47
+ this.changeDetectorRef = changeDetectorRef;
48
+ // INPUTS
49
+ /**
50
+ * @description Opciones de tamaño de página
51
+ * @default '[5, 10, 15, 20, 25]'
52
+ */
53
+ this.pageSizeOptions = [5, 10, 15, 20, 25, 50];
54
+ /**
55
+ * @description Tamaño de la página
56
+ * @default 15
57
+ * @options [5, 10, 15, 20, 25, 50]
58
+ */
59
+ this.pageSize = 15;
60
+ /**
61
+ * @description Array de columnas que se mostrara en la `grilla`
62
+ * @default undefined
63
+ */
64
+ this.columnDefs = [];
65
+ /**
66
+ * @description Función que determina si una fila es seleccionable
67
+ * @default () => true
68
+ */
69
+ this.isRowSelectable = () => true;
70
+ /**
71
+ * @description Configuración de selección de filas
72
+ * @default 'single'
73
+ * @enum {'single' | 'multiple'}
74
+ */
75
+ this.rowSelection = "single";
76
+ /**
77
+ * @description Configuración de layout de la `grilla`
78
+ * @default 'normal'
79
+ * @enum {'normal' | 'autoHeight'}
80
+ */
81
+ /**
82
+ * @description Tamaño de la `grilla`
83
+ * @default '20em'
84
+ */
85
+ this.height = "20em";
86
+ this.domLayout = "normal";
87
+ /**
88
+ * @description Función que determina el estilo de una fila
89
+ * @default () => undefined
90
+ */
91
+ this.getRowStyle = () => undefined;
92
+ /**
93
+ * @description Datos de la `grilla`
94
+ * @default undefined
95
+ */
96
+ this.serviceSearch = () => EMPTY;
97
+ /**
98
+ * @description Datos de la búsqueda
99
+ * @default undefined
100
+ */
101
+ this.requestBody = {};
102
+ // OUTPUTS
103
+ /**
104
+ * @description Evento que se dispara cuando se hace clic en una fila
105
+ * @default undefined
106
+ */
107
+ this.rowClicked = new EventEmitter();
108
+ /**
109
+ * @description Evento que se dispara cuando se hace clic doble en una fila
110
+ * @default undefined
111
+ */
112
+ this.rowDoubleClicked = new EventEmitter();
113
+ /**
114
+ * @description Evento que se dispara cuando se selecciona una fila
115
+ * @default undefined
116
+ */
117
+ this.rowSelected = new EventEmitter();
118
+ /**
119
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
120
+ * @default undefined
121
+ */
122
+ this.buttonActionAgGrid = new EventEmitter();
123
+ /**
124
+ * @description Evento que se dispara cuando se hace clic en una acción de la `cabecera`
125
+ * @default undefined
126
+ */
127
+ this.buttonActionHeader = new EventEmitter();
128
+ /**
129
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
130
+ * @default undefined
131
+ */
132
+ this.editRow = new EventEmitter();
133
+ /**
134
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
135
+ * @default undefined
136
+ */
137
+ this.deleteRow = new EventEmitter();
138
+ // VARIABLES
139
+ this.totalItems = 0;
140
+ this.currentPage = 0;
141
+ this.totalPage = 0;
142
+ this.filter = new FilterPaginable(this.currentPage, this.pageSize);
143
+ this._subscription$ = new Subscription();
144
+ this._frameworkComponents = { ...scComponents };
145
+ this._context = { componentParent: this };
146
+ this._configButtonsDefaultAgGrid = [];
147
+ this.columnDefsAndAddCellActions = [];
148
+ this._scCellRenderButtonService = inject(ScCellRenderButtonService);
149
+ this.maxVisiblePages = 2;
150
+ this.overlayNoRowsTemplate = `<span class="ag-overlay-loading-center border-0 bg-transparent shadow-none">
151
+ No se encontraron registros...
152
+ </span>`;
153
+ this.overlayLoadingTemplate = `<span class="ag-overlay-loading-top d-flex align-items-center border-0 bg-white shadow p-4 text-info" style="height: 20px;">
154
+ <img src="assets/media-demo/loading.gif" height="20" width="25" class="mr-2">
155
+ <strong>Cargando registros</strong>
156
+ </span>
157
+ `;
158
+ }
159
+ ngOnInit() {
160
+ this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action, isRightClick }) => {
161
+ if (action == null)
162
+ return;
163
+ if (action.trim() === "")
164
+ return;
165
+ if (index !== -1) {
166
+ this.onButtonActionAgGridEmit(index, action, isRightClick);
167
+ return;
168
+ }
169
+ this.onButtonActionHeaderEmit(action);
170
+ }));
171
+ }
172
+ ngOnChanges(changes) {
173
+ if (changes["configButtonsAction"]) {
174
+ this._initActionButton();
175
+ }
176
+ if (changes["requestBody"] && !changes["requestBody"].firstChange) {
177
+ this._fillAgGrid();
178
+ }
179
+ if (changes["pageSize"] && changes["pageSize"].firstChange) {
180
+ this.filter.pageSize = this.pageSize;
181
+ }
182
+ }
183
+ ngOnDestroy() {
184
+ this._subscriptionRowData$?.unsubscribe();
185
+ this._subscription$.unsubscribe();
186
+ }
187
+ onButtonActionHeaderEmit(typeButton) {
188
+ const rowsSelected = this.agGrid?.api?.getSelectedRows();
189
+ this.buttonActionHeader.emit([typeButton, rowsSelected]);
190
+ }
191
+ onGridReady() {
192
+ this._fillAgGrid();
193
+ }
194
+ _fillAgGrid() {
195
+ this._initActionButton();
196
+ if (this._subscriptionRowData$) {
197
+ this._subscriptionRowData$.unsubscribe();
198
+ this.agGrid?.api.setGridOption("rowData", []);
199
+ this.agGrid?.api?.showLoadingOverlay();
200
+ }
201
+ this._subscriptionRowData$ = this.serviceSearch(this.filter, this.requestBody)
202
+ .pipe(tap((data) => {
203
+ this.totalItems = data.totalItems ?? 0;
204
+ this.currentPage = Number(data.page ?? 0);
205
+ this.pageSize = Number(data.size ?? 0);
206
+ this.totalPage = Number(data.totalPage ?? 0);
207
+ this.agGrid?.api.setGridOption("rowData", data.data ?? []);
208
+ this.changeDetectorRef.detectChanges();
209
+ }))
210
+ .subscribe();
211
+ }
212
+ _initActionButton() {
213
+ this._configButtonsDefaultAgGrid = [...(this.configButtonsAction?.agGrid?.actions || [])];
214
+ if (!this.configButtonsAction?.agGrid?.actions?.length) {
215
+ this.columnDefsAndAddCellActions = [...this.columnDefs];
216
+ return;
217
+ }
218
+ const length = this._configButtonsDefaultAgGrid.filter(({ hide }) => {
219
+ return !this._hideFunc(hide);
220
+ }).length;
221
+ const width = length == 2 ? 90 : 80;
222
+ const minWidth = length > 2 ? length * 33 + 10 : width;
223
+ const newColumns = {
224
+ headerName: "Acciones",
225
+ headerClass: "ag-header__center",
226
+ field: "",
227
+ width: minWidth,
228
+ minWidth,
229
+ maxWidth: minWidth,
230
+ cellClass: ["d-flex", "justify-content-center", "align-items-center"],
231
+ cellStyle: { overflow: "visible" },
232
+ resizable: false,
233
+ sortable: false,
234
+ cellRenderer: "scCellRendererButtonComponent",
235
+ pinned: "right",
236
+ suppressMenu: true,
237
+ lockPosition: true,
238
+ };
239
+ this.columnDefsAndAddCellActions = this._hideAgGridMenuAction() ? [...this.columnDefs] : [...this.columnDefs, newColumns];
240
+ }
241
+ onButtonActionAgGridEmit(rowIndex, typeButton, isRightClick) {
242
+ const IRowNode = this.agGrid?.api?.getDisplayedRowAtIndex(rowIndex);
243
+ if (IRowNode) {
244
+ if (typeButton === EnumButtonType.TYPE_EDIT) {
245
+ this.editRow.emit(IRowNode);
246
+ return;
247
+ }
248
+ if (typeButton === EnumButtonType.TYPE_DELETE) {
249
+ this.deleteRow.emit([this.agGrid?.api, [IRowNode.data]]);
250
+ return;
251
+ }
252
+ this.buttonActionAgGrid.emit([typeButton, IRowNode, isRightClick]);
253
+ }
254
+ }
255
+ _hideFunc(hide) {
256
+ if (hide == null)
257
+ return false;
258
+ if (typeof hide == "function")
259
+ return hide();
260
+ return hide;
261
+ }
262
+ _hideAgGridMenuAction() {
263
+ if (this.configButtonsAction == null)
264
+ return true;
265
+ return (this.configButtonsAction?.agGrid?.actions.every(({ hide }) => {
266
+ return this._hideFunc(hide);
267
+ }) ?? true);
268
+ }
269
+ onSortChanged() {
270
+ const sortModel = this.agGrid.api
271
+ .getColumnState()
272
+ .filter((col) => col.sort != null)
273
+ .map((col) => ({
274
+ field: col.colId,
275
+ sort: col.sort,
276
+ }));
277
+ if (sortModel.length === 0) {
278
+ this.filter.sortBy = "";
279
+ this.filter.sortDirection = "";
280
+ }
281
+ else if (sortModel.length === 1 && sortModel[0].field !== "1") {
282
+ const sortBy = sortModel[0].field;
283
+ const sortDirection = sortModel[0].sort;
284
+ this.filter.sortBy = sortBy;
285
+ this.filter.sortDirection = sortDirection;
286
+ }
287
+ this._fillAgGrid();
288
+ }
289
+ // PAGINATION
290
+ goToPage(page) {
291
+ if (page - 1 === this.currentPage)
292
+ return;
293
+ this.filter.page = page - 1;
294
+ this.currentPage = page - 1;
295
+ this._fillAgGrid();
296
+ }
297
+ changePageSize(event) {
298
+ this.filter.pageSize = Number(event.target.value);
299
+ this._fillAgGrid();
300
+ }
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridPaginableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
302
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScAgGridPaginableComponent, isStandalone: true, selector: "sc-ag-grid-paginable", inputs: { pageSizeOptions: "pageSizeOptions", pageSize: "pageSize", configButtonsAction: "configButtonsAction", columnDefs: "columnDefs", isRowSelectable: "isRowSelectable", rowSelection: "rowSelection", height: "height", domLayout: "domLayout", getRowStyle: "getRowStyle", serviceSearch: "serviceSearch", requestBody: "requestBody", frameworkComponents: "frameworkComponents", context: "context" }, outputs: { rowClicked: "rowClicked", rowDoubleClicked: "rowDoubleClicked", rowSelected: "rowSelected", buttonActionAgGrid: "buttonActionAgGrid", buttonActionHeader: "buttonActionHeader", editRow: "editRow", deleteRow: "deleteRow" }, viewQueries: [{ propertyName: "agGrid", first: true, predicate: ["agGridPaginable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"{ width: '100%', height: this.height }\">\n <ag-grid-angular\n #agGridPaginable\n style=\"width: 100%; height: 100%\"\n class=\"ag-theme-balham\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"true\"\n [suppressMoveWhenRowDragging]=\"false\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"false\"\n [suppressRowTransform]=\"false\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [suppressPropertyNamesCheck]=\"true\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [paginationPageSize]=\"pageSize\"\n [pagination]=\"true\"\n [suppressPaginationPanel]=\"true\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"rowSelected.emit($event)\"\n (gridReady)=\"onGridReady()\"\n (sortChanged)=\"onSortChanged()\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n</div>\n\n<div class=\"d-flex mt-2 justify-content-center justify-content-sm-between sc-ag-grid__pagination\">\n <nav class=\"d-flex flex-wrap\" aria-label=\"AgGrid pagination\">\n <ul class=\"pagination p-0 m-0\">\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(1)\"><em class=\"fa fa-angle-double-left\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage)\"><em class=\"fa fa-angle-left\"></em></button>\n </li>\n <li *ngIf=\"currentPage > maxVisiblePages\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" *ngFor=\"let n of getTotalPageList(currentPage + 1)\" [ngClass]=\"currentPage === n - 1 ? 'active' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(n)\">{{ n }}</button>\n </li>\n <li *ngIf=\"currentPage < totalPage - maxVisiblePages - 1\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage + 2)\"><em class=\"fa fa-angle-right\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(totalPage)\"><em class=\"fa fa-angle-double-right\"></em></button>\n </li>\n </ul>\n <div class=\"d-flex mx-2 align-items-center input-group-sm\">\n Mostrar\n <select class=\"custom-select mx-2\" (change)=\"changePageSize($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\" [selected]=\"option === pageSize\">\n {{ option }}\n </option>\n </select>\n registros\n </div>\n </nav>\n\n <div class=\"d-flex justify-content-end mt-2 mt-sm-0\">\n <div class=\"sc-ag-grid__pagination--total d-flex align-items-center flex-nowrap\">\n <span class=\"value\">{{ totalItems }}&nbsp;{{ totalItems > 1 ? \"Registros.\" : \"Registro.\" }}</span>\n <span class=\"label\">&nbsp;P&aacute;gina&nbsp;</span>\n <span class=\"value\">\n {{ currentPage + 1 }}\n </span>\n <span class=\"label\">&nbsp;de&nbsp;</span>\n <span class=\"value\">\n {{ totalPage }}\n </span>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AgGridModule }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "ngmodule", type: ScCellRendererButtonModule }] }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridPaginableComponent, decorators: [{
305
+ type: Component,
306
+ args: [{ selector: "sc-ag-grid-paginable", standalone: true, imports: [CommonModule, AgGridModule, ScCellRendererButtonModule], template: "<div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"{ width: '100%', height: this.height }\">\n <ag-grid-angular\n #agGridPaginable\n style=\"width: 100%; height: 100%\"\n class=\"ag-theme-balham\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"true\"\n [suppressMoveWhenRowDragging]=\"false\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"false\"\n [suppressRowTransform]=\"false\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [suppressPropertyNamesCheck]=\"true\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [paginationPageSize]=\"pageSize\"\n [pagination]=\"true\"\n [suppressPaginationPanel]=\"true\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"rowSelected.emit($event)\"\n (gridReady)=\"onGridReady()\"\n (sortChanged)=\"onSortChanged()\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n</div>\n\n<div class=\"d-flex mt-2 justify-content-center justify-content-sm-between sc-ag-grid__pagination\">\n <nav class=\"d-flex flex-wrap\" aria-label=\"AgGrid pagination\">\n <ul class=\"pagination p-0 m-0\">\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(1)\"><em class=\"fa fa-angle-double-left\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage)\"><em class=\"fa fa-angle-left\"></em></button>\n </li>\n <li *ngIf=\"currentPage > maxVisiblePages\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" *ngFor=\"let n of getTotalPageList(currentPage + 1)\" [ngClass]=\"currentPage === n - 1 ? 'active' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(n)\">{{ n }}</button>\n </li>\n <li *ngIf=\"currentPage < totalPage - maxVisiblePages - 1\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage + 2)\"><em class=\"fa fa-angle-right\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(totalPage)\"><em class=\"fa fa-angle-double-right\"></em></button>\n </li>\n </ul>\n <div class=\"d-flex mx-2 align-items-center input-group-sm\">\n Mostrar\n <select class=\"custom-select mx-2\" (change)=\"changePageSize($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\" [selected]=\"option === pageSize\">\n {{ option }}\n </option>\n </select>\n registros\n </div>\n </nav>\n\n <div class=\"d-flex justify-content-end mt-2 mt-sm-0\">\n <div class=\"sc-ag-grid__pagination--total d-flex align-items-center flex-nowrap\">\n <span class=\"value\">{{ totalItems }}&nbsp;{{ totalItems > 1 ? \"Registros.\" : \"Registro.\" }}</span>\n <span class=\"label\">&nbsp;P&aacute;gina&nbsp;</span>\n <span class=\"value\">\n {{ currentPage + 1 }}\n </span>\n <span class=\"label\">&nbsp;de&nbsp;</span>\n <span class=\"value\">\n {{ totalPage }}\n </span>\n </div>\n </div>\n</div>\n" }]
307
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { pageSizeOptions: [{
308
+ type: Input
309
+ }], pageSize: [{
310
+ type: Input
311
+ }], configButtonsAction: [{
312
+ type: Input
313
+ }], columnDefs: [{
314
+ type: Input
315
+ }], isRowSelectable: [{
316
+ type: Input
317
+ }], rowSelection: [{
318
+ type: Input
319
+ }], height: [{
320
+ type: Input
321
+ }], domLayout: [{
322
+ type: Input
323
+ }], getRowStyle: [{
324
+ type: Input
325
+ }], serviceSearch: [{
326
+ type: Input
327
+ }], requestBody: [{
328
+ type: Input
329
+ }], frameworkComponents: [{
330
+ type: Input
331
+ }], context: [{
332
+ type: Input
333
+ }], rowClicked: [{
334
+ type: Output
335
+ }], rowDoubleClicked: [{
336
+ type: Output
337
+ }], rowSelected: [{
338
+ type: Output
339
+ }], buttonActionAgGrid: [{
340
+ type: Output
341
+ }], buttonActionHeader: [{
342
+ type: Output
343
+ }], editRow: [{
344
+ type: Output
345
+ }], deleteRow: [{
346
+ type: Output
347
+ }], agGrid: [{
348
+ type: ViewChild,
349
+ args: ["agGridPaginable"]
350
+ }] } });
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1wYWdpbmFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtcGFnaW5hYmxlL3NjLWFnLWdyaWQtcGFnaW5hYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLXBhZ2luYWJsZS9zYy1hZy1ncmlkLXBhZ2luYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBMEMsY0FBYyxFQUFzQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25JLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFVeEUsTUFBTSxPQUFPLDBCQUEwQjtJQTREckM7OztPQUdHO0lBQ0gsSUFDSSxtQkFBbUIsQ0FBQyxLQUFVO1FBQ2hDLElBQUks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Z0JBQWdCO3NCQUF6QixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUtHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFLRyxPQUFPO3NCQUFoQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyLCBBZ0dyaWRNb2R1bGUgfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XG5pbXBvcnQgeyBDb2xEZWYsIEdyaWRBcGksIElSb3dOb2RlLCBJc1Jvd1NlbGVjdGFibGUsIFJvd0NsaWNrZWRFdmVudCwgUm93RG91YmxlQ2xpY2tlZEV2ZW50LCBSb3dTZWxlY3RlZEV2ZW50IH0gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29uZmlnQnV0dG9uQWN0aW9uLCBDb25maWdCdXR0b25BZ0dyaWQsIEVudW1CdXR0b25UeXBlLCBHZXRSb3dTdHlsZSwgSGlkZUZ1YywgUm93U2VsZWN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0lTY0FnR3JpZFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSB9IGZyb20gXCIuLi9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyZXJCdXR0b25Nb2R1bGUgfSBmcm9tIFwiLi4vY2VsbC1yZW5kZXIvc2MtY2VsbC1yZW5kZXItYnV0dG9uL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi5tb2R1bGVcIjtcbmltcG9ydCB7IHNjQ29tcG9uZW50cyB9IGZyb20gXCIuLi9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1jb25maWdcIjtcbmltcG9ydCB7IEZpbHRlclBhZ2luYWJsZSwgUGFnaW5hYmxlIH0gZnJvbSBcIi4vbW9kZWxzLWFnLWdyaWQtcGFnaW5hYmxlXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJzYy1hZy1ncmlkLXBhZ2luYWJsZVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBZ0dyaWRNb2R1bGUsIFNjQ2VsbFJlbmRlcmVyQnV0dG9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9zYy1hZy1ncmlkLXBhZ2luYWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL3NjLWFnLWdyaWQtcGFnaW5hYmxlLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWdHcmlkUGFnaW5hYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8vIElOUFVUU1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uICBPcGNpb25lcyBkZSB0YW1hw7FvIGRlIHDDoWdpbmFcbiAgICogQGRlZmF1bHQgJ1s1LCAxMCwgMTUsIDIwLCAyNV0nXG4gICAqL1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMTAsIDE1LCAyMCwgMjUsIDUwXTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUYW1hw7FvIGRlIGxhIHDDoWdpbmFcbiAgICogQGRlZmF1bHQgMTVcbiAgICogQG9wdGlvbnMgWzUsIDEwLCAxNSwgMjAsIDI1LCA1MF1cbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTU7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhY2nDs24gZGUgYWNjaW9uZXMgZGUgbGEgYGdyaWxsYWBcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBjb25maWdCdXR0b25zQWN0aW9uITogQ29uZmlnQnV0dG9uQWN0aW9uO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IGRlIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRnVuY2nDs24gcXVlIGRldGVybWluYSBzaSB1bmEgZmlsYSBlcyBzZWxlY2Npb25hYmxlXG4gICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGlzUm93U2VsZWN0YWJsZTogSXNSb3dTZWxlY3RhYmxlID0gKCkgPT4gdHJ1ZTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmFjacOzbiBkZSBzZWxlY2Npw7NuIGRlIGZpbGFzXG4gICAqIEBkZWZhdWx0ICdzaW5nbGUnXG4gICAqIEBlbnVtIHsnc2luZ2xlJyB8ICdtdWx0aXBsZSd9XG4gICAqL1xuICBASW5wdXQoKSByb3dTZWxlY3Rpb246IFJvd1NlbGVjdGlvbiA9IFwic2luZ2xlXCI7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhY2nDs24gZGUgbGF5b3V0IGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0ICdub3JtYWwnXG4gICAqIEBlbnVtIHsnbm9ybWFsJyB8ICdhdXRvSGVpZ2h0J31cbiAgICovXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGFtYcOxbyBkZSBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCAnMjBlbSdcbiAgICovXG4gIEBJbnB1dCgpIGhlaWdodCA9IFwiMjBlbVwiO1xuICBASW5wdXQoKSBkb21MYXlvdXQ6IFwibm9ybWFsXCIgfCBcImF1dG9IZWlnaHRcIiA9IFwibm9ybWFsXCI7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRnVuY2nDs24gcXVlIGRldGVybWluYSBlbCBlc3RpbG8gZGUgdW5hIGZpbGFcbiAgICogQGRlZmF1bHQgKCkgPT4gdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBnZXRSb3dTdHlsZTogR2V0Um93U3R5bGUgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGF0b3MgZGUgbGEgYGdyaWxsYWBcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBzZXJ2aWNlU2VhcmNoOiAoZmlsdGVyOiBGaWx0ZXJQYWdpbmFibGUsIHNlYXJjaEJvZHk6IHVua25vd24pID0+IE9ic2VydmFibGU8UGFnaW5hYmxlPHVua25vd24+PiA9ICgpID0+IEVNUFRZO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERhdG9zIGRlIGxhIGLDunNxdWVkYVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHJlcXVlc3RCb2R5OiB1bmtub3duID0ge307XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZXMgZGUgbGEgYGdyaWxsYWBcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZnJhbWV3b3JrQ29tcG9uZW50cyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZnJhbWV3b3JrQ29tcG9uZW50cyA9IHsgLi4udGhpcy5fZnJhbWV3b3JrQ29tcG9uZW50cywgLi4udmFsdWUgfTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcmEgcG9kZXIgYWdyZWdhciBtw6FzIG9iamV0b3MgYWwgY29udGV4dG9cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjb250ZXh0KHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0geyAuLi50aGlzLl9jb250ZXh0LCAuLi52YWx1ZSB9O1xuICB9XG5cbiAgLy8gT1VUUFVUU1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaGFjZSBjbGljIGVuIHVuYSBmaWxhXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NsaWNrZWRFdmVudD4oKTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGhhY2UgY2xpYyBkb2JsZSBlbiB1bmEgZmlsYVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSByb3dEb3VibGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dEb3VibGVDbGlja2VkRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBzZWxlY2Npb25hIHVuYSBmaWxhXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIHJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PigpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaGFjZSBjbGljIGVuIHVuYSBhY2Npw7NuIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIGJ1dHRvbkFjdGlvbkFnR3JpZCA9IG5ldyBFdmVudEVtaXR0ZXI8W0VudW1CdXR0b25UeXBlIHwgc3RyaW5nLCBJUm93Tm9kZSwgYm9vbGVhbl0+KCk7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBoYWNlIGNsaWMgZW4gdW5hIGFjY2nDs24gZGUgbGEgYGNhYmVjZXJhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSBidXR0b25BY3Rpb25IZWFkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgYW55W11dPigpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaGFjZSBjbGljIGVuIHVuYSBhY2Npw7NuIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIGVkaXRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPElSb3dOb2RlPigpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaGFjZSBjbGljIGVuIHVuYSBhY2Npw7NuIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIGRlbGV0ZVJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8W0dyaWRBcGksIGFueVtdXT4oKTtcblxuICAvLyBWSUVXIENISUxEUkVOXG4gIEBWaWV3Q2hpbGQoXCJhZ0dyaWRQYWdpbmFibGVcIilcbiAgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcblxuICAvLyBWQVJJQUJMRVNcbiAgdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDA7XG4gIHRvdGFsUGFnZTogbnVtYmVyID0gMDtcbiAgZmlsdGVyOiBGaWx0ZXJQYWdpbmFibGUgPSBuZXcgRmlsdGVyUGFnaW5hYmxlKHRoaXMuY3VycmVudFBhZ2UsIHRoaXMucGFnZVNpemUpO1xuXG4gIF9zdWJzY3JpcHRpb24kID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBfc3Vic2NyaXB0aW9uUm93RGF0YSQ/OiBTdWJzY3JpcHRpb247XG4gIF9mcmFtZXdvcmtDb21wb25lbnRzID0geyAuLi5zY0NvbXBvbmVudHMgfTtcbiAgX2NvbnRleHQgPSB7IGNvbXBvbmVudFBhcmVudDogdGhpcyBhcyBhbnkgfTtcbiAgX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkOiBDb25maWdCdXR0b25BZ0dyaWRbXSA9IFtdO1xuICBjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnM6IENvbERlZltdID0gW107XG5cbiAgcHJpdmF0ZSBfc2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSA9IGluamVjdChTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlKTtcbiAgcmVhZG9ubHkgbWF4VmlzaWJsZVBhZ2VzID0gMjtcblxuICByZWFkb25seSBvdmVybGF5Tm9Sb3dzVGVtcGxhdGU6IHN0cmluZyA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgc2hhZG93LW5vbmVcIj5cblx0XHRcdE5vIHNlIGVuY29udHJhcm9uIHJlZ2lzdHJvcy4uLlxuXHRcdDwvc3Bhbj5gO1xuICByZWFkb25seSBvdmVybGF5TG9hZGluZ1RlbXBsYXRlOiBzdHJpbmcgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctdG9wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLTAgYmctd2hpdGUgc2hhZG93IHAtNCB0ZXh0LWluZm9cIiBzdHlsZT1cImhlaWdodDogMjBweDtcIj5cblx0XHRcdDxpbWcgc3JjPVwiYXNzZXRzL21lZGlhLWRlbW8vbG9hZGluZy5naWZcIiBoZWlnaHQ9XCIyMFwiIHdpZHRoPVwiMjVcIiBjbGFzcz1cIm1yLTJcIj5cblx0XHRcdDxzdHJvbmc+Q2FyZ2FuZG8gcmVnaXN0cm9zPC9zdHJvbmc+XG5cdFx0PC9zcGFuPlxuXHRcdGA7XG5cbiAgLy8gR0VUVEVSU1xuICBnZXRUb3RhbFBhZ2VMaXN0KGN1cnJlbnRQYWdlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgbGV0IHN0YXJ0ID0gY3VycmVudFBhZ2UgLSB0aGlzLm1heFZpc2libGVQYWdlcztcbiAgICBsZXQgZW5kID0gY3VycmVudFBhZ2UgKyB0aGlzLm1heFZpc2libGVQYWdlcztcblxuICAgIC8vIEFqdXN0ZSBjdWFuZG8gZXN0w6EgYWwgaW5pY2lvXG4gICAgaWYgKHN0YXJ0IDwgMSkge1xuICAgICAgc3RhcnQgPSAxO1xuICAgICAgZW5kID0gdGhpcy5tYXhWaXNpYmxlUGFnZXMgKiAyICsgMTtcbiAgICB9XG5cbiAgICAvLyBBanVzdGUgY3VhbmRvIGVzdMOhIGFsIGZpbmFsXG4gICAgaWYgKGVuZCA+IHRoaXMudG90YWxQYWdlKSB7XG4gICAgICBlbmQgPSB0aGlzLnRvdGFsUGFnZTtcbiAgICAgIHN0YXJ0ID0gTWF0aC5tYXgoMSwgZW5kIC0gdGhpcy5tYXhWaXNpYmxlUGFnZXMgKiAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sIChfLCBpKSA9PiBzdGFydCArIGkpO1xuICB9XG5cbiAgZ2V0IHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0aW9uID09PSBcInNpbmdsZVwiID8gZmFsc2UgOiB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC5hZGQoXG4gICAgICB0aGlzLl9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlLmhhbmRsZXJCdXR0b25BY3Rpb24kLnN1YnNjcmliZSgoeyBpbmRleCwgYWN0aW9uLCBpc1JpZ2h0Q2xpY2sgfSkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uID09IG51bGwpIHJldHVybjtcbiAgICAgICAgaWYgKGFjdGlvbi50cmltKCkgPT09IFwiXCIpIHJldHVybjtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KGluZGV4LCBhY3Rpb24sIGlzUmlnaHRDbGljayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkhlYWRlckVtaXQoYWN0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcImNvbmZpZ0J1dHRvbnNBY3Rpb25cIl0pIHtcbiAgICAgIHRoaXMuX2luaXRBY3Rpb25CdXR0b24oKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJyZXF1ZXN0Qm9keVwiXSAmJiAhY2hhbmdlc1tcInJlcXVlc3RCb2R5XCJdLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9maWxsQWdHcmlkKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wicGFnZVNpemVcIl0gJiYgY2hhbmdlc1tcInBhZ2VTaXplXCJdLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25CdXR0b25BY3Rpb25IZWFkZXJFbWl0KHR5cGVCdXR0b246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJvd3NTZWxlY3RlZCA9IHRoaXMuYWdHcmlkPy5hcGk/LmdldFNlbGVjdGVkUm93cygpO1xuICAgIHRoaXMuYnV0dG9uQWN0aW9uSGVhZGVyLmVtaXQoW3R5cGVCdXR0b24sIHJvd3NTZWxlY3RlZF0pO1xuICB9XG5cbiAgb25HcmlkUmVhZHkoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsbEFnR3JpZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsbEFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0QWN0aW9uQnV0dG9uKCk7XG5cbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmFnR3JpZD8uYXBpLnNldEdyaWRPcHRpb24oXCJyb3dEYXRhXCIsIFtdKTtcbiAgICAgIHRoaXMuYWdHcmlkPy5hcGk/LnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25Sb3dEYXRhJCA9IHRoaXMuc2VydmljZVNlYXJjaCh0aGlzLmZpbHRlciwgdGhpcy5yZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSBkYXRhLnRvdGFsSXRlbXMgPz8gMDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gTnVtYmVyKGRhdGEucGFnZSA/PyAwKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKGRhdGEuc2l6ZSA/PyAwKTtcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZSA9IE51bWJlcihkYXRhLnRvdGFsUGFnZSA/PyAwKTtcbiAgICAgICAgICB0aGlzLmFnR3JpZD8uYXBpLnNldEdyaWRPcHRpb24oXCJyb3dEYXRhXCIsIGRhdGEuZGF0YSA/PyBbXSk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QWN0aW9uQnV0dG9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkID0gWy4uLih0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24/LmFnR3JpZD8uYWN0aW9ucyB8fCBbXSldO1xuICAgIGlmICghdGhpcy5jb25maWdCdXR0b25zQWN0aW9uPy5hZ0dyaWQ/LmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnMgPSBbLi4udGhpcy5jb2x1bW5EZWZzXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLl9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZC5maWx0ZXIoKHsgaGlkZSB9KSA9PiB7XG4gICAgICByZXR1cm4gIXRoaXMuX2hpZGVGdW5jKGhpZGUpO1xuICAgIH0pLmxlbmd0aDtcblxuICAgIGNvbnN0IHdpZHRoID0gbGVuZ3RoID09IDIgPyA5MCA6IDgwO1xuICAgIGNvbnN0IG1pbldpZHRoID0gbGVuZ3RoID4gMiA/IGxlbmd0aCAqIDMzICsgMTAgOiB3aWR0aDtcblxuICAgIGNvbnN0IG5ld0NvbHVtbnM6IENvbERlZiA9IHtcbiAgICAgIGhlYWRlck5hbWU6IFwiQWNjaW9uZXNcIixcbiAgICAgIGhlYWRlckNsYXNzOiBcImFnLWhlYWRlcl9fY2VudGVyXCIsXG4gICAgICBmaWVsZDogXCJcIixcbiAgICAgIHdpZHRoOiBtaW5XaWR0aCxcbiAgICAgIG1pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IG1pbldpZHRoLFxuICAgICAgY2VsbENsYXNzOiBbXCJkLWZsZXhcIiwgXCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIsIFwiYWxpZ24taXRlbXMtY2VudGVyXCJdLFxuICAgICAgY2VsbFN0eWxlOiB7IG92ZXJmbG93OiBcInZpc2libGVcIiB9LFxuICAgICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIGNlbGxSZW5kZXJlcjogXCJzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFwiLFxuICAgICAgcGlubmVkOiBcInJpZ2h0XCIsXG4gICAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgICBsb2NrUG9zaXRpb246IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLmNvbHVtbkRlZnNBbmRBZGRDZWxsQWN0aW9ucyA9IHRoaXMuX2hpZGVBZ0dyaWRNZW51QWN0aW9uKCkgPyBbLi4udGhpcy5jb2x1bW5EZWZzXSA6IFsuLi50aGlzLmNvbHVtbkRlZnMsIG5ld0NvbHVtbnNdO1xuICB9XG5cbiAgb25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KHJvd0luZGV4OiBudW1iZXIsIHR5cGVCdXR0b246IHN0cmluZywgaXNSaWdodENsaWNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgSVJvd05vZGUgPSB0aGlzLmFnR3JpZD8uYXBpPy5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KHJvd0luZGV4KTtcblxuICAgIGlmIChJUm93Tm9kZSkge1xuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfRURJVCkge1xuICAgICAgICB0aGlzLmVkaXRSb3cuZW1pdChJUm93Tm9kZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlQnV0dG9uID09PSBFbnVtQnV0dG9uVHlwZS5UWVBFX0RFTEVURSkge1xuICAgICAgICB0aGlzLmRlbGV0ZVJvdy5lbWl0KFt0aGlzLmFnR3JpZD8uYXBpLCBbSVJvd05vZGUuZGF0YV1dKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJ1dHRvbkFjdGlvbkFnR3JpZC5lbWl0KFt0eXBlQnV0dG9uLCBJUm93Tm9kZSwgaXNSaWdodENsaWNrXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGlkZUZ1bmMoaGlkZTogSGlkZUZ1YyB8IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoaGlkZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBoaWRlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGhpZGUoKTtcblxuICAgIHJldHVybiBoaWRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGlkZUFnR3JpZE1lbnVBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb25maWdCdXR0b25zQWN0aW9uPy5hZ0dyaWQ/LmFjdGlvbnMuZXZlcnkoKHsgaGlkZSB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlRnVuYyhoaWRlKTtcbiAgICAgIH0pID8/IHRydWVcbiAgICApO1xuICB9XG5cbiAgb25Tb3J0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0TW9kZWwgPSB0aGlzLmFnR3JpZC5hcGlcbiAgICAgIC5nZXRDb2x1bW5TdGF0ZSgpXG4gICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5zb3J0ICE9IG51bGwpXG4gICAgICAubWFwKChjb2wpID0+ICh7XG4gICAgICAgIGZpZWxkOiBjb2wuY29sSWQsXG4gICAgICAgIHNvcnQ6IGNvbC5zb3J0LFxuICAgICAgfSkpO1xuXG4gICAgaWYgKHNvcnRNb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmlsdGVyLnNvcnRCeSA9IFwiXCI7XG4gICAgICB0aGlzLmZpbHRlci5zb3J0RGlyZWN0aW9uID0gXCJcIjtcbiAgICB9IGVsc2UgaWYgKHNvcnRNb2RlbC5sZW5ndGggPT09IDEgJiYgc29ydE1vZGVsWzBdLmZpZWxkICE9PSBcIjFcIikge1xuICAgICAgY29uc3Qgc29ydEJ5ID0gc29ydE1vZGVsWzBdLmZpZWxkO1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9IHNvcnRNb2RlbFswXS5zb3J0IGFzIHN0cmluZztcbiAgICAgIHRoaXMuZmlsdGVyLnNvcnRCeSA9IHNvcnRCeTtcbiAgICAgIHRoaXMuZmlsdGVyLnNvcnREaXJlY3Rpb24gPSBzb3J0RGlyZWN0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpbGxBZ0dyaWQoKTtcbiAgfVxuXG4gIC8vIFBBR0lOQVRJT05cblxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSAtIDEgPT09IHRoaXMuY3VycmVudFBhZ2UpIHJldHVybjtcbiAgICB0aGlzLmZpbHRlci5wYWdlID0gcGFnZSAtIDE7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2UgLSAxO1xuICAgIHRoaXMuX2ZpbGxBZ0dyaWQoKTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2VTaXplKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gTnVtYmVyKChldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLnZhbHVlKTtcbiAgICB0aGlzLl9maWxsQWdHcmlkKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiB0aGlzLmhlaWdodCB9XCI+XG4gICAgPGFnLWdyaWQtYW5ndWxhclxuICAgICAgI2FnR3JpZFBhZ2luYWJsZVxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlXCJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNBbmRBZGRDZWxsQWN0aW9uc1wiXG4gICAgICBbY29tcG9uZW50c109XCJfZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gICAgICBbY29udGV4dF09XCJfY29udGV4dFwiXG4gICAgICBbcm93U2VsZWN0aW9uXT1cInJvd1NlbGVjdGlvblwiXG4gICAgICBbaXNSb3dTZWxlY3RhYmxlXT1cImlzUm93U2VsZWN0YWJsZVwiXG4gICAgICBbZG9tTGF5b3V0XT1cImRvbUxheW91dFwiXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXG4gICAgICBbc3VwcHJlc3NNb3ZlV2hlblJvd0RyYWdnaW5nXT1cImZhbHNlXCJcbiAgICAgIFtnZXRSb3dTdHlsZV09XCJnZXRSb3dTdHlsZVwiXG4gICAgICBbZW5hYmxlUmFuZ2VTZWxlY3Rpb25dPVwiZmFsc2VcIlxuICAgICAgW3N1cHByZXNzUm93VHJhbnNmb3JtXT1cImZhbHNlXCJcbiAgICAgIFtvdmVybGF5Tm9Sb3dzVGVtcGxhdGVdPVwib3ZlcmxheU5vUm93c1RlbXBsYXRlXCJcbiAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cIm92ZXJsYXlMb2FkaW5nVGVtcGxhdGVcIlxuICAgICAgW3N1cHByZXNzUHJvcGVydHlOYW1lc0NoZWNrXT1cInRydWVcIlxuICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwic3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXG4gICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIlxuICAgICAgW3N1cHByZXNzUGFnaW5hdGlvblBhbmVsXT1cInRydWVcIlxuICAgICAgKHJvd0NsaWNrZWQpPVwicm93Q2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwicm93RG91YmxlQ2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICAgKHJvd1NlbGVjdGVkKT1cInJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KClcIlxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWQoKVwiXG4gICAgICBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiPlxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTIganVzdGlmeS1jb250ZW50LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiBzYy1hZy1ncmlkX19wYWdpbmF0aW9uXCI+XG4gIDxuYXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCIgYXJpYS1sYWJlbD1cIkFnR3JpZCBwYWdpbmF0aW9uXCI+XG4gICAgPHVsIGNsYXNzPVwicGFnaW5hdGlvbiBwLTAgbS0wXCI+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbbmdDbGFzc109XCJjdXJyZW50UGFnZSA9PT0gMCA/ICdkaXNhYmxlZCcgOiAnJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImdvVG9QYWdlKDEpXCI+PGVtIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLWxlZnRcIj48L2VtPjwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtuZ0NsYXNzXT1cImN1cnJlbnRQYWdlID09PSAwID8gJ2Rpc2FibGVkJyA6ICcnXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2UpXCI+PGVtIGNsYXNzPVwiZmEgZmEtYW5nbGUtbGVmdFwiPjwvZW0+PC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpICpuZ0lmPVwiY3VycmVudFBhZ2UgPiBtYXhWaXNpYmxlUGFnZXNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2UtbGluayBkaXNhYmxlZFwiPi4uLjwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBuIG9mIGdldFRvdGFsUGFnZUxpc3QoY3VycmVudFBhZ2UgKyAxKVwiIFtuZ0NsYXNzXT1cImN1cnJlbnRQYWdlID09PSBuIC0gMSA/ICdhY3RpdmUnIDogJydcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJnb1RvUGFnZShuKVwiPnt7IG4gfX08L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgKm5nSWY9XCJjdXJyZW50UGFnZSA8IHRvdGFsUGFnZSAtIG1heFZpc2libGVQYWdlcyAtIDFcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2UtbGluayBkaXNhYmxlZFwiPi4uLjwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtuZ0NsYXNzXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2UgLSAxID8gJ2Rpc2FibGVkJyA6ICcnXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2UgKyAyKVwiPjxlbSBjbGFzcz1cImZhIGZhLWFuZ2xlLXJpZ2h0XCI+PC9lbT48L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbbmdDbGFzc109XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlIC0gMSA/ICdkaXNhYmxlZCcgOiAnJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImdvVG9QYWdlKHRvdGFsUGFnZSlcIj48ZW0gY2xhc3M9XCJmYSBmYS1hbmdsZS1kb3VibGUtcmlnaHRcIj48L2VtPjwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXgtMiBhbGlnbi1pdGVtcy1jZW50ZXIgaW5wdXQtZ3JvdXAtc21cIj5cbiAgICAgIE1vc3RyYXJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJjdXN0b20tc2VsZWN0IG14LTJcIiAoY2hhbmdlKT1cImNoYW5nZVBhZ2VTaXplKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIiBbc2VsZWN0ZWRdPVwib3B0aW9uID09PSBwYWdlU2l6ZVwiPlxuICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgcmVnaXN0cm9zXG4gICAgPC9kaXY+XG4gIDwvbmF2PlxuXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0yIG10LXNtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2MtYWctZ3JpZF9fcGFnaW5hdGlvbi0tdG90YWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LW5vd3JhcFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHRvdGFsSXRlbXMgfX0mbmJzcDt7eyB0b3RhbEl0ZW1zID4gMSA/IFwiUmVnaXN0cm9zLlwiIDogXCJSZWdpc3Ryby5cIiB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj4mbmJzcDtQJmFhY3V0ZTtnaW5hJm5ic3A7PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICB7eyBjdXJyZW50UGFnZSArIDEgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj4mbmJzcDtkZSZuYnNwOzwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAge3sgdG90YWxQYWdlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=