@testgorilla/tgo-ui 1.5.0 → 1.6.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.
Files changed (57) hide show
  1. package/components/badge/badge.component.d.ts +1 -1
  2. package/components/button/button.component.d.ts +20 -3
  3. package/components/button/button.model.d.ts +1 -0
  4. package/components/deprecated-paginator/deprecated-paginator.component.d.ts +38 -0
  5. package/components/deprecated-paginator/deprecated-paginator.component.module.d.ts +9 -0
  6. package/components/deprecated-table/deprecated-table.component.d.ts +91 -0
  7. package/components/deprecated-table/deprecated-table.component.module.d.ts +14 -0
  8. package/components/deprecated-table/deprecated-table.model.d.ts +45 -0
  9. package/components/{table → deprecated-table}/directives/dynamic-component.directive.d.ts +1 -1
  10. package/components/paginator/paginator.component.d.ts +13 -14
  11. package/components/skeleton/skeleton.component.d.ts +9 -0
  12. package/components/snackbar/snackbar.component.d.ts +1 -2
  13. package/components/table/ellipse-text.directive.d.ts +16 -0
  14. package/components/table/table.component.d.ts +29 -78
  15. package/components/table/table.component.module.d.ts +7 -8
  16. package/components/table/table.model.d.ts +26 -40
  17. package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
  18. package/esm2022/components/avatar/avatar.component.mjs +3 -3
  19. package/esm2022/components/badge/badge.component.mjs +3 -3
  20. package/esm2022/components/banner-action/banner-action.component.mjs +1 -1
  21. package/esm2022/components/button/button.component.mjs +34 -11
  22. package/esm2022/components/button/button.model.mjs +1 -1
  23. package/esm2022/components/create-account/create-account.component.mjs +1 -1
  24. package/esm2022/components/create-password/create-password.component.mjs +1 -1
  25. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +55 -0
  26. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +20 -0
  27. package/esm2022/components/deprecated-table/deprecated-table.component.mjs +158 -0
  28. package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +25 -0
  29. package/esm2022/components/deprecated-table/deprecated-table.model.mjs +13 -0
  30. package/esm2022/components/deprecated-table/directives/dynamic-component.directive.mjs +39 -0
  31. package/esm2022/components/deprecated-table/pipes/data-property-getter.mjs +32 -0
  32. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  33. package/esm2022/components/dropdown/dropdown.component.mjs +3 -3
  34. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  35. package/esm2022/components/field/field.component.mjs +3 -3
  36. package/esm2022/components/file-upload/file-upload.component.mjs +3 -3
  37. package/esm2022/components/forgot-password/forgot-password.component.mjs +1 -1
  38. package/esm2022/components/login/login.component.mjs +1 -1
  39. package/esm2022/components/paginator/paginator.component.mjs +21 -20
  40. package/esm2022/components/paginator/paginator.component.module.mjs +3 -4
  41. package/esm2022/components/skeleton/skeleton.component.mjs +25 -0
  42. package/esm2022/components/snackbar/snackbar.component.mjs +5 -5
  43. package/esm2022/components/table/ellipse-text.directive.mjs +36 -0
  44. package/esm2022/components/table/table.component.mjs +58 -140
  45. package/esm2022/components/table/table.component.module.mjs +10 -12
  46. package/esm2022/components/table/table.model.mjs +2 -13
  47. package/esm2022/public-api.mjs +18 -9
  48. package/fesm2022/testgorilla-tgo-ui.mjs +299 -72
  49. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  50. package/package.json +3 -2
  51. package/public-api.d.ts +12 -6
  52. package/src/assets/images/premium.svg +4 -0
  53. package/src/theme/_mat-paginator.scss +59 -0
  54. package/src/theme/theme.scss +2 -0
  55. package/esm2022/components/table/directives/dynamic-component.directive.mjs +0 -39
  56. package/esm2022/components/table/pipes/data-property-getter.mjs +0 -32
  57. /package/components/{table → deprecated-table}/pipes/data-property-getter.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testgorilla/tgo-ui",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "lint-staged": {
5
5
  "src/**/*.ts": [
6
6
  "eslint --fix",
@@ -31,7 +31,8 @@
31
31
  "@ngneat/transloco-messageformat": "^4.0.0",
32
32
  "@ngneat/until-destroy": "^10.0.0",
33
33
  "rxjs": "~7.8.0",
34
- "zone.js": "^0.13.1"
34
+ "zone.js": "^0.13.1",
35
+ "ngx-skeleton-loader": "^8.1.0"
35
36
  },
36
37
  "overrides": {
37
38
  "crypto-js": "4.2.0"
package/public-api.d.ts CHANGED
@@ -48,8 +48,8 @@ export * from './components/navbar/navbar.component.module';
48
48
  export * from './components/navbar/navbar.model';
49
49
  export * from './components/navigation/navigation.component';
50
50
  export * from './components/navigation/navigation.component.module';
51
- export * from './components/paginator/paginator.component';
52
- export * from './components/paginator/paginator.component.module';
51
+ export * from './components/deprecated-paginator/deprecated-paginator.component';
52
+ export * from './components/deprecated-paginator/deprecated-paginator.component.module';
53
53
  export * from './components/progress-bar/progress-bar.component';
54
54
  export * from './components/progress-bar/progress-bar.component.module';
55
55
  export * from './components/radio-button/radio-button.component';
@@ -58,10 +58,10 @@ export * from './components/snackbar/snackbar.component';
58
58
  export * from './components/snackbar/snackbar.component.module';
59
59
  export * from './components/snackbar/snackbar.model';
60
60
  export * from './components/snackbar/snackbar.service';
61
- export * from './components/table/pipes/data-property-getter';
62
- export * from './components/table/table.component';
63
- export * from './components/table/table.component.module';
64
- export * from './components/table/table.model';
61
+ export * from './components/deprecated-table/pipes/data-property-getter';
62
+ export * from './components/deprecated-table/deprecated-table.component';
63
+ export * from './components/deprecated-table/deprecated-table.component.module';
64
+ export * from './components/deprecated-table/deprecated-table.model';
65
65
  export * from './components/tag/tag.component';
66
66
  export * from './components/tag/tag.component.module';
67
67
  export * from './components/tag/tag.model';
@@ -98,3 +98,9 @@ export * from './components/radial-progress/radial-progress.component.module';
98
98
  export * from './components/radial-progress/radial-progress.model';
99
99
  export * from './components/empty-state/empty-state.component';
100
100
  export * from './components/empty-state/empty-state.component.module';
101
+ export * from './components/table/table.component';
102
+ export * from './components/table/table.component.module';
103
+ export * from './components/table/table.model';
104
+ export * from './components/paginator/paginator.component';
105
+ export * from './components/paginator/paginator.component.module';
106
+ export * from './components/skeleton/skeleton.component';
@@ -0,0 +1,4 @@
1
+ <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M24.5 12C24.5 18.6274 19.1274 24 12.5 24C5.87258 24 0.5 18.6274 0.5 12C0.5 5.37258 5.87258 0 12.5 0C19.1274 0 24.5 5.37258 24.5 12Z" fill="white"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M23 12C23 17.799 18.299 22.5 12.5 22.5C6.70101 22.5 2 17.799 2 12C2 6.20101 6.70101 1.5 12.5 1.5C18.299 1.5 23 6.20101 23 12ZM24.5 12C24.5 18.6274 19.1274 24 12.5 24C5.87258 24 0.5 18.6274 0.5 12C0.5 5.37258 5.87258 0 12.5 0C19.1274 0 24.5 5.37258 24.5 12ZM17.4015 5.25H7.59872L4.06543 10.5499L12.5001 20.6715L20.9348 10.5499L17.4015 5.25ZM6.40149 9.75L7.77352 7.69196L8.45953 9.75H6.40149ZM6.60138 11.25H8.95953L10.5316 15.9663L6.60138 11.25ZM18.3988 11.25L14.4686 15.9663L16.0407 11.25H18.3988ZM10.5407 11.25H14.4595L12.5001 17.1283L10.5407 11.25ZM10.0407 9.75H14.9595L15.9595 6.75H9.04067L10.0407 9.75ZM18.5987 9.75H16.5407L17.2267 7.69196L18.5987 9.75Z" fill="#CCA45F"/>
4
+ </svg>
@@ -0,0 +1,59 @@
1
+ @use "./variables" as *;
2
+
3
+ .mat-mdc-paginator {
4
+
5
+ .mdc-text-field--focused {
6
+ .mdc-notched-outline__leading, .mdc-notched-outline__trailing, .mdc-notched-outline__notch {
7
+ border-color: $tgo-petrol-default !important;
8
+ }
9
+ }
10
+
11
+ .mat-mdc-select {
12
+ &[aria-expanded="false"] {
13
+ .mat-mdc-select-arrow {
14
+ @extend .select-arrow;
15
+ background-image: url('/assets/icons/Arrow_down.svg');
16
+ }
17
+
18
+ &[aria-disabled="true"] {
19
+ .mat-mdc-select-arrow {
20
+ opacity: 0.2 !important;
21
+ }
22
+ }
23
+ }
24
+
25
+ &[aria-expanded="true"] {
26
+ .mat-mdc-select-arrow {
27
+ @extend .select-arrow;
28
+ background-image: url('/assets/icons/Arrow_up.svg');
29
+ }
30
+ }
31
+
32
+ svg {
33
+ display: none;
34
+ }
35
+ }
36
+ }
37
+
38
+ .mdc-menu-surface {
39
+ &[aria-labelledby*="mat-paginator"] {
40
+ mat-option {
41
+ &[aria-selected="true"] {
42
+ background: $tgo-petrol-90w!important;
43
+
44
+ .mdc-list-item__primary-text {
45
+ color: black!important;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ .select-arrow {
53
+ left: -4px;
54
+ top: 0;
55
+ width: 22px;
56
+ height: 23px;
57
+ background-repeat: no-repeat;
58
+ background-size: cover;
59
+ }
@@ -3,6 +3,8 @@
3
3
  @use "variables.scss" as *;
4
4
  @use "typography.scss" as *;
5
5
  @use "tooltip.scss" as *;
6
+ @use "mat-paginator.scss" as *;
7
+
6
8
  @import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap");
7
9
  @import url("https://fonts.googleapis.com/icon?family=Material+Icons");
8
10
 
@@ -1,39 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class DynamicComponentDirective {
5
- set dynamicComponent(componentRenderer) {
6
- if (componentRenderer.component) {
7
- this.compRef = this.vcr.createComponent(componentRenderer.component);
8
- if (componentRenderer.inputs) {
9
- Object.keys(componentRenderer.inputs).map(inputName => (this.compRef.instance[inputName] = componentRenderer.inputs[inputName]));
10
- }
11
- if (componentRenderer.outputs) {
12
- Object.keys(componentRenderer.outputs).map(output => {
13
- this.subscription.add(this.compRef.instance[output].subscribe(componentRenderer.outputs?.[output]));
14
- });
15
- }
16
- }
17
- }
18
- constructor(vcr) {
19
- this.vcr = vcr;
20
- this.subscription = new Subscription();
21
- }
22
- ngOnDestroy() {
23
- if (this.compRef) {
24
- this.compRef.destroy();
25
- }
26
- this.subscription.unsubscribe();
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DynamicComponentDirective, selector: "[dynamicComponent]", inputs: { dynamicComponent: "dynamicComponent" }, ngImport: i0 }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponentDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- selector: '[dynamicComponent]',
35
- }]
36
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { dynamicComponent: [{
37
- type: Input
38
- }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFibGUvZGlyZWN0aXZlcy9keW5hbWljLWNvbXBvbmVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWdCLEtBQUssRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNcEMsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxJQUFhLGdCQUFnQixDQUFDLGlCQUFxQztRQUNqRSxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXJFLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FDdkMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUN0RixDQUFDO2FBQ0g7WUFFRCxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQXVCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3BHLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXFCO1FBQXJCLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBdkJqQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUF1QkUsQ0FBQztJQUU3QyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7K0dBL0JVLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO3VHQUtjLGdCQUFnQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUNvbXBvbmVudFJlbmRlcmVyIH0gZnJvbSAnLi4vdGFibGUubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZHluYW1pY0NvbXBvbmVudF0nLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ29tcG9uZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgY29tcFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgQElucHV0KCkgc2V0IGR5bmFtaWNDb21wb25lbnQoY29tcG9uZW50UmVuZGVyZXI6IElDb21wb25lbnRSZW5kZXJlcikge1xuICAgIGlmIChjb21wb25lbnRSZW5kZXJlci5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMuY29tcFJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRSZW5kZXJlci5jb21wb25lbnQpO1xuXG4gICAgICBpZiAoY29tcG9uZW50UmVuZGVyZXIuaW5wdXRzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNvbXBvbmVudFJlbmRlcmVyLmlucHV0cykubWFwKFxuICAgICAgICAgIGlucHV0TmFtZSA9PiAodGhpcy5jb21wUmVmLmluc3RhbmNlW2lucHV0TmFtZV0gPSBjb21wb25lbnRSZW5kZXJlci5pbnB1dHNbaW5wdXROYW1lXSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvbmVudFJlbmRlcmVyLm91dHB1dHMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29tcG9uZW50UmVuZGVyZXIub3V0cHV0cykubWFwKG91dHB1dCA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgKHRoaXMuY29tcFJlZi5pbnN0YW5jZVtvdXRwdXRdIGFzIEV2ZW50RW1pdHRlcjxhbnk+KS5zdWJzY3JpYmUoY29tcG9uZW50UmVuZGVyZXIub3V0cHV0cz8uW291dHB1dF0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,32 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DataPropertyGetterPipe {
4
- transform(obj, keyName = '') {
5
- return this.getDeepVal(obj, keyName);
6
- }
7
- getDeepVal(obj, path) {
8
- if (typeof obj === 'undefined' || obj === null) {
9
- return '';
10
- }
11
- const splittedPath = path.split(/[\.\[\]\"\']{1,2}/);
12
- for (let i = 0, l = splittedPath.length; i < l; i++) {
13
- if (splittedPath[i] === '') {
14
- continue;
15
- }
16
- obj = obj[splittedPath[i]];
17
- if (typeof obj === 'undefined' || obj === null) {
18
- return '';
19
- }
20
- }
21
- return obj;
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPropertyGetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DataPropertyGetterPipe, name: "dataPropertyGetter" }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataPropertyGetterPipe, decorators: [{
27
- type: Pipe,
28
- args: [{
29
- name: 'dataPropertyGetter',
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm9wZXJ0eS1nZXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90YWJsZS9waXBlcy9kYXRhLXByb3BlcnR5LWdldHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFRcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxTQUFTLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQ3ZDLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDOUMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsU0FBUzthQUNWO1lBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUM5QyxPQUFPLEVBQUUsQ0FBQzthQUNYO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBcEJVLHNCQUFzQjs2R0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUhsQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxvQkFBb0I7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBUT0RPOiBDaGVjayB0eXBlIChiYWNrZW5kIGNvdWxkIHJldHVybiBhIG51bWJlcilcbnR5cGUgRGF0YVByb3BlcnR5R2V0dGVyVHlwZSA9IHN0cmluZztcblxuQFBpcGUoe1xuICBuYW1lOiAnZGF0YVByb3BlcnR5R2V0dGVyJyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVByb3BlcnR5R2V0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0ob2JqOiBvYmplY3QsIGtleU5hbWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGVlcFZhbChvYmosIGtleU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWVwVmFsKG9iajogYW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHNwbGl0dGVkUGF0aCA9IHBhdGguc3BsaXQoL1tcXC5cXFtcXF1cXFwiXFwnXXsxLDJ9Lyk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBzcGxpdHRlZFBhdGgubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoc3BsaXR0ZWRQYXRoW2ldID09PSAnJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIG9iaiA9IG9ialtzcGxpdHRlZFBhdGhbaV1dO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cbn1cbiJdfQ==