@ng-atomic/components 18.4.0 → 18.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.
- package/atoms/atoms.module.d.ts +6 -2
- package/atoms/smart-menu-button/smart-menu-button.atom.d.ts +8 -7
- package/components.module.d.ts +0 -15
- package/esm2022/atoms/atoms.module.mjs +7 -2
- package/esm2022/atoms/icon/icon.atom.mjs +2 -2
- package/esm2022/atoms/smart-menu-button/smart-menu-button.atom.mjs +27 -22
- package/esm2022/components.module.mjs +19 -44
- package/esm2022/frames/app/app.frame.mjs +5 -3
- package/esm2022/frames/auto-layout/auto-layout.frame.mjs +2 -2
- package/esm2022/frames/columns/columns.frame.mjs +2 -2
- package/esm2022/frames/divider/divider.frame.mjs +2 -2
- package/esm2022/frames/drawer/drawer.frame.mjs +2 -2
- package/esm2022/frames/entrance/entrance.frame.mjs +2 -2
- package/esm2022/frames/fab/fab.frame.mjs +2 -2
- package/esm2022/frames/frames.module.mjs +19 -14
- package/esm2022/frames/line-up/line-up.frame.mjs +2 -2
- package/esm2022/frames/loading/loading.frame.mjs +2 -2
- package/esm2022/frames/router-outlet/router-outlet.frame.mjs +2 -2
- package/esm2022/frames/scroll/scroll.frame.mjs +2 -2
- package/esm2022/frames/side-nav/side-nav.frame.mjs +2 -2
- package/esm2022/frames/smart-menu/smart-menu.frame.mjs +2 -2
- package/esm2022/frames/vertical-hide/vertical-hide.frame.mjs +2 -2
- package/esm2022/molecules/date-input-field/date-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/date-range-input-field/date-range-input-field.molecule.mjs +2 -2
- package/esm2022/molecules/grid-item/grid-item.molecule.mjs +2 -2
- package/esm2022/molecules/loading-box/loading-box.molecule.mjs +2 -2
- package/esm2022/molecules/molecules.module.mjs +18 -16
- package/esm2022/molecules/navigation-list-item/navigation-list-item.molecule.mjs +2 -2
- package/esm2022/molecules/select-input-field/select-input-field.molecule.mjs +2 -2
- package/esm2022/organisms/action-buttons-section/action-buttons-section.organism.mjs +2 -2
- package/esm2022/organisms/action-input-section/action-input-section.organism.mjs +2 -2
- package/esm2022/organisms/card-input-section/card-input-section.organism.mjs +2 -2
- package/esm2022/organisms/cvc-and-exp-input-section/cvc-and-exp-input-section.organism.mjs +2 -2
- package/esm2022/organisms/date-input-section/date-input-section.organism.mjs +2 -2
- package/esm2022/organisms/date-range-input-section/date-range-input-section.organism.mjs +2 -2
- package/esm2022/organisms/definition-list/definition-list.organism.mjs +2 -2
- package/esm2022/organisms/file-input-section/file-input-section.organism.mjs +2 -2
- package/esm2022/organisms/grid-cards-section/grid-cards-section.organism.mjs +2 -2
- package/esm2022/organisms/heading/heading.organism.mjs +2 -2
- package/esm2022/organisms/menu-footer/menu-footer.organism.mjs +2 -2
- package/esm2022/organisms/menu-header/menu-header.organism.mjs +2 -2
- package/esm2022/organisms/messages-section/messages-section.organism.mjs +2 -2
- package/esm2022/organisms/navigation-list/navigation-list.organism.mjs +2 -2
- package/esm2022/organisms/navigator/navigator.organism.mjs +20 -31
- package/esm2022/organisms/number-input-section/number-input-section.organism.mjs +2 -2
- package/esm2022/organisms/organisms.module.mjs +66 -61
- package/esm2022/organisms/paginator/paginator.organism.mjs +2 -2
- package/esm2022/organisms/password-input-section/password-input-section.organism.mjs +2 -2
- package/esm2022/organisms/select-input-section/select-input-section.organism.mjs +2 -2
- package/esm2022/organisms/slider-input-section/slider-input-section.organism.mjs +2 -2
- package/esm2022/organisms/social-login-section/social-login-section.organism.mjs +2 -2
- package/esm2022/organisms/table/table.organism.mjs +2 -2
- package/esm2022/organisms/text-input-section/text-input-section.organism.mjs +2 -2
- package/esm2022/organisms/textarea-section/textarea-section.organism.mjs +2 -2
- package/esm2022/organisms/thread-messages-section/thread-messages-section.organism.mjs +2 -2
- package/esm2022/pages/_index/index.page.mjs +8 -13
- package/esm2022/pages/columns/columns.page.mjs +2 -2
- package/esm2022/pages/form/form.page.mjs +8 -6
- package/esm2022/pages/pages.module.mjs +10 -7
- package/esm2022/templates/_index/index.template.mjs +7 -7
- package/esm2022/templates/background/background.template.mjs +2 -2
- package/esm2022/templates/code-editor/code-editor.template.mjs +2 -2
- package/esm2022/templates/columns/columns.template.mjs +3 -3
- package/esm2022/templates/entrance/entrance.template.mjs +19 -17
- package/esm2022/templates/form/form.builder.mjs +2 -2
- package/esm2022/templates/form/form.template.mjs +3 -3
- package/esm2022/templates/icon-button-menu/icon-button-menu.template.mjs +2 -2
- package/esm2022/templates/menu/menu.template.mjs +2 -2
- package/esm2022/templates/selection/selection.template.mjs +2 -2
- package/esm2022/templates/settings/settings.template.mjs +2 -2
- package/esm2022/templates/templates.module.mjs +17 -25
- package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
- package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs +25 -21
- package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-atoms.mjs +7 -2
- package/fesm2022/ng-atomic-components-atoms.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-app.mjs +4 -2
- package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-line-up.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-scroll.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames.mjs +19 -14
- package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules.mjs +18 -16
- package/fesm2022/ng-atomic-components-molecules.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs +19 -30
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-table.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms.mjs +66 -61
- package/fesm2022/ng-atomic-components-organisms.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-_index.mjs +7 -12
- package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-pages-form.mjs +7 -5
- package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages.mjs +10 -7
- package/fesm2022/ng-atomic-components-pages.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-_index.mjs +6 -6
- package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-entrance.mjs +18 -16
- package/fesm2022/ng-atomic-components-templates-entrance.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-form.mjs +4 -4
- package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates.mjs +17 -25
- package/fesm2022/ng-atomic-components-templates.mjs.map +1 -1
- package/fesm2022/ng-atomic-components.mjs +19 -44
- package/fesm2022/ng-atomic-components.mjs.map +1 -1
- package/frames/app/app.frame.d.ts +1 -0
- package/frames/frames.module.d.ts +3 -20
- package/molecules/molecules.module.d.ts +22 -0
- package/organisms/navigator/navigator.organism.d.ts +4 -3
- package/organisms/organisms.module.d.ts +56 -1
- package/package.json +19 -19
- package/pages/form/form.page.d.ts +9 -9
- package/pages/pages.module.d.ts +1 -0
- package/templates/templates.module.d.ts +24 -1
package/atoms/atoms.module.d.ts
CHANGED
|
@@ -4,10 +4,14 @@ export declare class NgAtomicAtomsModule {
|
|
|
4
4
|
ngModule: typeof NgAtomicAtomsModule;
|
|
5
5
|
providers: {
|
|
6
6
|
provide: any;
|
|
7
|
-
useValue: () => Promise<import("@angular/core").Type<import("@ng-atomic/components/atoms/smart-menu-button").
|
|
8
|
-
}[];
|
|
7
|
+
useValue: () => Promise<import("@angular/core").Type<import("@ng-atomic/components/atoms/smart-menu-button").MenuButtonAtom>>;
|
|
8
|
+
}[][];
|
|
9
9
|
};
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicAtomsModule, never>;
|
|
11
11
|
static ɵmod: i0.ɵɵNgModuleDeclaration<NgAtomicAtomsModule, never, never, never>;
|
|
12
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<NgAtomicAtomsModule>;
|
|
13
13
|
}
|
|
14
|
+
export declare function provideAtoms(): {
|
|
15
|
+
provide: any;
|
|
16
|
+
useValue: () => Promise<import("@angular/core").Type<import("@ng-atomic/components/atoms/smart-menu-button").MenuButtonAtom>>;
|
|
17
|
+
}[];
|
|
@@ -6,15 +6,16 @@ export declare class StopPipe implements PipeTransform {
|
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<StopPipe, never>;
|
|
7
7
|
static ɵpipe: i0.ɵɵPipeDeclaration<StopPipe, "stope", true>;
|
|
8
8
|
}
|
|
9
|
-
export declare class
|
|
9
|
+
export declare class MenuButtonAtomStore extends InjectableComponent {
|
|
10
10
|
readonly actions: import("@angular/core").InputSignal<Action<any>[]>;
|
|
11
11
|
readonly type: import("@angular/core").InputSignal<"button" | "icon-button">;
|
|
12
12
|
readonly action: import("@angular/core").InputSignal<Action<any>>;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuButtonAtomStore, never>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuButtonAtomStore, "atoms-smart-menu-button, atoms-menu-button", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
15
15
|
}
|
|
16
|
-
export declare class
|
|
17
|
-
protected store:
|
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
16
|
+
export declare class MenuButtonAtom extends NgAtomicComponent {
|
|
17
|
+
protected store: MenuButtonAtomStore;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuButtonAtom, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuButtonAtom, "atoms-smart-menu-button, atoms-menu-button", never, {}, {}, never, never, true, [{ directive: typeof MenuButtonAtomStore; inputs: { "actions": "actions"; "action": "action"; "type": "type"; }; outputs: {}; }]>;
|
|
20
20
|
}
|
|
21
|
+
export { MenuButtonAtomStore as SmartMenuButtonAtomStore, MenuButtonAtom as SmartMenuButtonAtom };
|
package/components.module.d.ts
CHANGED
|
@@ -1,17 +1,2 @@
|
|
|
1
1
|
import { EnvironmentProviders } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/material/dialog";
|
|
4
|
-
import * as i2 from "@angular/material/snack-bar";
|
|
5
|
-
/**
|
|
6
|
-
* @deprecated use `provideNgAtomicComponents()` instead
|
|
7
|
-
*/
|
|
8
|
-
export declare class NgAtomicComponentsModule {
|
|
9
|
-
static forRoot(): {
|
|
10
|
-
ngModule: typeof NgAtomicComponentsModule;
|
|
11
|
-
providers: (import("@angular/core").Provider | EnvironmentProviders)[];
|
|
12
|
-
};
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgAtomicComponentsModule, never>;
|
|
14
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NgAtomicComponentsModule, never, [typeof i1.MatDialogModule, typeof i2.MatSnackBarModule], never>;
|
|
15
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<NgAtomicComponentsModule>;
|
|
16
|
-
}
|
|
17
2
|
export declare function provideNgAtomicComponents(): EnvironmentProviders;
|
|
@@ -7,7 +7,7 @@ export class NgAtomicAtomsModule {
|
|
|
7
7
|
return {
|
|
8
8
|
ngModule: NgAtomicAtomsModule,
|
|
9
9
|
providers: [
|
|
10
|
-
|
|
10
|
+
provideAtoms(),
|
|
11
11
|
]
|
|
12
12
|
};
|
|
13
13
|
}
|
|
@@ -19,4 +19,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
19
19
|
type: NgModule,
|
|
20
20
|
args: [{}]
|
|
21
21
|
}] });
|
|
22
|
-
|
|
22
|
+
export function provideAtoms() {
|
|
23
|
+
return [
|
|
24
|
+
provideComponent(SmartMenuButtonAtomStore, () => import('@ng-atomic/components/atoms/smart-menu-button').then(m => m.SmartMenuButtonAtom)),
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvYXRvbXMvYXRvbXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBR3pGLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1QsWUFBWSxFQUFFO2FBQ2Y7U0FDRixDQUFBO0lBQ0gsQ0FBQzs4R0FSVSxtQkFBbUI7K0dBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixRQUFRO21CQUFDLEVBQUU7O0FBWVosTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTztRQUNMLGdCQUFnQixDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQzNJLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVDb21wb25lbnQgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRNZW51QnV0dG9uQXRvbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2F0b21zL3NtYXJ0LW1lbnUtYnV0dG9uJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljQXRvbXNNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5nQXRvbWljQXRvbXNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUF0b21zKCksXG4gICAgICBdXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXRvbXMoKSB7XG4gIHJldHVybiBbXG4gICAgcHJvdmlkZUNvbXBvbmVudChTbWFydE1lbnVCdXR0b25BdG9tU3RvcmUsICgpID0+IGltcG9ydCgnQG5nLWF0b21pYy9jb21wb25lbnRzL2F0b21zL3NtYXJ0LW1lbnUtYnV0dG9uJykudGhlbihtID0+IG0uU21hcnRNZW51QnV0dG9uQXRvbSkpLFxuICBdO1xufVxuIl19
|
|
@@ -20,7 +20,7 @@ export class IconAtom extends NgAtomicComponent {
|
|
|
20
20
|
} @else {
|
|
21
21
|
<mat-icon>{{ name() }}</mat-icon>
|
|
22
22
|
}
|
|
23
|
-
`, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-
|
|
23
|
+
`, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-VE1b: var(--primary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-icon-VE1b: var(--surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-icon-VE1b: var(--background-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-VE1b: var(--on-primary-color);--on-background-color: #404040;--on-background-color-SCOPED-IN-icon-VE1b: var(--on-background-color);--on-surface-color: #404040;--on-surface-color-SCOPED-IN-icon-VE1b: var(--on-surface-color);--color: inherit;--color-SCOPED-IN-icon-VE1b: var(--color)}:host mat-icon{color:var(--on-background-color-SCOPED-IN-icon-VE1b)}:host mat-icon ::ng-deep svg .filled{transition:fill .5s;fill:var(--color-SCOPED-IN-icon-VE1b)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
24
|
}
|
|
25
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IconAtom, decorators: [{
|
|
26
26
|
type: Component,
|
|
@@ -32,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
32
32
|
} @else {
|
|
33
33
|
<mat-icon>{{ name() }}</mat-icon>
|
|
34
34
|
}
|
|
35
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-
|
|
35
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-VE1b: var(--primary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-icon-VE1b: var(--surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-icon-VE1b: var(--background-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-VE1b: var(--on-primary-color);--on-background-color: #404040;--on-background-color-SCOPED-IN-icon-VE1b: var(--on-background-color);--on-surface-color: #404040;--on-surface-color-SCOPED-IN-icon-VE1b: var(--on-surface-color);--color: inherit;--color-SCOPED-IN-icon-VE1b: var(--color)}:host mat-icon{color:var(--on-background-color-SCOPED-IN-icon-VE1b)}:host mat-icon ::ng-deep svg .filled{transition:fill .5s;fill:var(--color-SCOPED-IN-icon-VE1b)}\n"] }]
|
|
36
36
|
}], propDecorators: { color: [{
|
|
37
37
|
type: HostBinding,
|
|
38
38
|
args: ['style.--color']
|
|
@@ -21,18 +21,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
21
21
|
type: Pipe,
|
|
22
22
|
args: [{ standalone: true, name: 'stope' }]
|
|
23
23
|
}] });
|
|
24
|
-
let
|
|
24
|
+
let MenuButtonAtomStore = class MenuButtonAtomStore extends InjectableComponent {
|
|
25
25
|
constructor() {
|
|
26
26
|
super(...arguments);
|
|
27
27
|
this.actions = input([]);
|
|
28
28
|
this.type = input('icon-button');
|
|
29
29
|
this.action = input(_computed(() => {
|
|
30
|
-
if (this.actions()
|
|
30
|
+
if (this.actions()?.length === 1) {
|
|
31
31
|
return this.actions()[0];
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
return {
|
|
35
|
-
id: '
|
|
35
|
+
id: 'more_vert',
|
|
36
36
|
name: 'メニューを開く',
|
|
37
37
|
icon: 'more_vert',
|
|
38
38
|
children: this.actions(),
|
|
@@ -40,36 +40,36 @@ let SmartMenuButtonAtomStore = class SmartMenuButtonAtomStore extends Injectable
|
|
|
40
40
|
}
|
|
41
41
|
}));
|
|
42
42
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type:
|
|
44
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type:
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MenuButtonAtomStore, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
44
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: MenuButtonAtomStore, isStandalone: true, selector: "atoms-smart-menu-button, atoms-menu-button", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
MenuButtonAtomStore = __decorate([
|
|
47
47
|
TokenizedType()
|
|
48
|
-
],
|
|
49
|
-
export {
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type:
|
|
48
|
+
], MenuButtonAtomStore);
|
|
49
|
+
export { MenuButtonAtomStore };
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MenuButtonAtomStore, decorators: [{
|
|
51
51
|
type: Directive,
|
|
52
52
|
args: [{ standalone: true, selector: 'atoms-smart-menu-button, atoms-menu-button' }]
|
|
53
53
|
}] });
|
|
54
|
-
export class
|
|
54
|
+
export class MenuButtonAtom extends NgAtomicComponent {
|
|
55
55
|
constructor() {
|
|
56
56
|
super(...arguments);
|
|
57
|
-
this.store = inject(
|
|
57
|
+
this.store = inject(MenuButtonAtomStore);
|
|
58
58
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type:
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type:
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MenuButtonAtom, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: MenuButtonAtom, isStandalone: true, selector: "atoms-smart-menu-button, atoms-menu-button", usesInheritance: true, hostDirectives: [{ directive: MenuButtonAtomStore, inputs: ["actions", "actions", "action", "action", "type", "type"] }], ngImport: i0, template: `
|
|
61
61
|
@if (store.action()?.children?.length) {
|
|
62
62
|
<button
|
|
63
63
|
mat-icon-button
|
|
64
64
|
[color]="store.action()?.color"
|
|
65
65
|
[disabled]="store.action().disabled"
|
|
66
66
|
[matMenuTriggerFor]="menu"
|
|
67
|
-
(click)="
|
|
67
|
+
(click)="$event.stopPropagation();"
|
|
68
68
|
>
|
|
69
69
|
<mat-icon>{{ store.action()?.icon }}</mat-icon>
|
|
70
70
|
</button>
|
|
71
71
|
<mat-menu #menu="matMenu">
|
|
72
|
-
@for (action of store.action()
|
|
72
|
+
@for (action of store.action()?.children; track action) {
|
|
73
73
|
<button
|
|
74
74
|
mat-menu-item
|
|
75
75
|
[disabled]="action.disabled"
|
|
@@ -89,12 +89,12 @@ export class SmartMenuButtonAtom extends NgAtomicComponent {
|
|
|
89
89
|
}
|
|
90
90
|
`, isInline: true, styles: [":host{display:block;width:48px;height:48px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
|
|
91
91
|
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type:
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MenuButtonAtom, decorators: [{
|
|
93
93
|
type: Component,
|
|
94
94
|
args: [{ selector: 'atoms-smart-menu-button, atoms-menu-button', standalone: true, imports: [
|
|
95
95
|
MatButtonModule,
|
|
96
96
|
MatIconModule,
|
|
97
|
-
MatMenuModule
|
|
97
|
+
MatMenuModule,
|
|
98
98
|
], template: `
|
|
99
99
|
@if (store.action()?.children?.length) {
|
|
100
100
|
<button
|
|
@@ -102,12 +102,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
102
102
|
[color]="store.action()?.color"
|
|
103
103
|
[disabled]="store.action().disabled"
|
|
104
104
|
[matMenuTriggerFor]="menu"
|
|
105
|
-
(click)="
|
|
105
|
+
(click)="$event.stopPropagation();"
|
|
106
106
|
>
|
|
107
107
|
<mat-icon>{{ store.action()?.icon }}</mat-icon>
|
|
108
108
|
</button>
|
|
109
109
|
<mat-menu #menu="matMenu">
|
|
110
|
-
@for (action of store.action()
|
|
110
|
+
@for (action of store.action()?.children; track action) {
|
|
111
111
|
<button
|
|
112
112
|
mat-menu-item
|
|
113
113
|
[disabled]="action.disabled"
|
|
@@ -127,9 +127,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
127
127
|
}
|
|
128
128
|
`, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [
|
|
129
129
|
{
|
|
130
|
-
directive:
|
|
131
|
-
inputs: [
|
|
130
|
+
directive: MenuButtonAtomStore,
|
|
131
|
+
inputs: [
|
|
132
|
+
'actions',
|
|
133
|
+
'action',
|
|
134
|
+
'type'
|
|
135
|
+
],
|
|
132
136
|
}
|
|
133
137
|
], styles: [":host{display:block;width:48px;height:48px}\n"] }]
|
|
134
138
|
}] });
|
|
135
|
-
|
|
139
|
+
export { MenuButtonAtomStore as SmartMenuButtonAtomStore, MenuButtonAtom as SmartMenuButtonAtom };
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbWVudS1idXR0b24uYXRvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL2F0b21zL3NtYXJ0LW1lbnUtYnV0dG9uL3NtYXJ0LW1lbnUtYnV0dG9uLmF0b20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFVLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUczRyxNQUFNLE9BQU8sUUFBUTtJQUNuQixTQUFTLENBQUMsTUFBYTtRQUNyQixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBTFUsUUFBUTs0R0FBUixRQUFROzsyRkFBUixRQUFRO2tCQURwQixJQUFJO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFOztBQVdsQyxJQUFNLG1CQUFtQixHQUF6QixNQUFNLG1CQUFvQixTQUFRLG1CQUFtQjtJQUFyRDs7UUFDSSxZQUFPLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxLQUFLLENBQTJCLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELFdBQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPO29CQUNMLEVBQUUsRUFBRSxXQUFXO29CQUNmLElBQUksRUFBRSxTQUFTO29CQUNmLElBQUksRUFBRSxXQUFXO29CQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtpQkFDekIsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ0w7OEdBZlksbUJBQW1CO2tHQUFuQixtQkFBbUI7O0FBQW5CLG1CQUFtQjtJQUYvQixhQUFhLEVBQUU7R0FFSCxtQkFBbUIsQ0FlL0I7OzJGQWZZLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLDRDQUE0QyxFQUFFOztBQXNFdkYsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUFwRHJEOztRQXFEWSxVQUFLLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDL0M7OEdBRlksY0FBYztrR0FBZCxjQUFjLG1JQXJFZCxtQkFBbUIsaUdBeUJwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJULHNIQWxDQyxlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsYUFBYTs7MkZBOENKLGNBQWM7a0JBcEQxQixTQUFTOytCQUNFLDRDQUE0QyxjQUMxQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7cUJBQ2QsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJULG1CQUVnQix1QkFBdUIsQ0FBQyxPQUFPLGtCQUNoQzt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsbUJBQW1COzRCQUM5QixNQUFNLEVBQUU7Z0NBQ04sU0FBUztnQ0FDVCxRQUFRO2dDQUNSLE1BQU07NkJBQ1A7eUJBQ0Y7cUJBQ0Y7O0FBTUgsT0FBTyxFQUNMLG1CQUFtQixJQUFJLHdCQUF3QixFQUMvQyxjQUFjLElBQUksbUJBQW1CLEVBQ3RDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEaXJlY3RpdmUsIFBpcGUsIGluamVjdCwgaW5wdXQsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBfY29tcHV0ZWQsIEFjdGlvbiwgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIFRva2VuaXplZFR5cGUgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuXG5AUGlwZSh7IHN0YW5kYWxvbmU6IHRydWUsIG5hbWU6ICdzdG9wZScgfSlcbmV4cG9ydCBjbGFzcyBTdG9wUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gJGV2ZW50O1xuICB9XG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ2F0b21zLXNtYXJ0LW1lbnUtYnV0dG9uLCBhdG9tcy1tZW51LWJ1dHRvbicgfSlcbmV4cG9ydCBjbGFzcyBNZW51QnV0dG9uQXRvbVN0b3JlIGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGFjdGlvbnMgPSBpbnB1dDxBY3Rpb25bXT4oW10pO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8J2J1dHRvbicgfCAnaWNvbi1idXR0b24nPignaWNvbi1idXR0b24nKTtcbiAgcmVhZG9ubHkgYWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5hY3Rpb25zKCk/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogJ21vcmVfdmVydCcsXG4gICAgICAgIG5hbWU6ICfjg6Hjg4vjg6Xjg7zjgpLplovjgY8nLFxuICAgICAgICBpY29uOiAnbW9yZV92ZXJ0JyxcbiAgICAgICAgY2hpbGRyZW46IHRoaXMuYWN0aW9ucygpLFxuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdG9tcy1zbWFydC1tZW51LWJ1dHRvbiwgYXRvbXMtbWVudS1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgQGlmIChzdG9yZS5hY3Rpb24oKT8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgIDxidXR0b25cbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW2NvbG9yXT1cInN0b3JlLmFjdGlvbigpPy5jb2xvclwiXG4gICAgICBbZGlzYWJsZWRdPVwic3RvcmUuYWN0aW9uKCkuZGlzYWJsZWRcIlxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj57eyBzdG9yZS5hY3Rpb24oKT8uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgQGZvciAoYWN0aW9uIG9mIHN0b3JlLmFjdGlvbigpPy5jaGlsZHJlbjsgdHJhY2sgYWN0aW9uKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRpc3BhdGNoKGFjdGlvbilcIlxuICAgICAgICA+e3sgYWN0aW9uLm5hbWUgfX08L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L21hdC1tZW51PlxuICB9IEBlbHNlIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFtjb2xvcl09XCJzdG9yZS5hY3Rpb24oKT8uY29sb3JcIlxuICAgICAgW2Rpc2FibGVkXT1cInN0b3JlLmFjdGlvbigpLmRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJkaXNwYXRjaChzdG9yZS5hY3Rpb24oKSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj57eyBzdG9yZS5hY3Rpb24oKT8uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtbWVudS1idXR0b24uYXRvbS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IE1lbnVCdXR0b25BdG9tU3RvcmUsXG4gICAgICBpbnB1dHM6IFtcbiAgICAgICAgJ2FjdGlvbnMnLFxuICAgICAgICAnYWN0aW9uJyxcbiAgICAgICAgJ3R5cGUnXG4gICAgICBdLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51QnV0dG9uQXRvbSBleHRlbmRzIE5nQXRvbWljQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KE1lbnVCdXR0b25BdG9tU3RvcmUpO1xufVxuXG5leHBvcnQge1xuICBNZW51QnV0dG9uQXRvbVN0b3JlIGFzIFNtYXJ0TWVudUJ1dHRvbkF0b21TdG9yZSxcbiAgTWVudUJ1dHRvbkF0b20gYXMgU21hcnRNZW51QnV0dG9uQXRvbVxufVxuIl19
|
|
@@ -1,49 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { importProvidersFrom } from "@angular/core";
|
|
2
|
+
import { provideAtoms } from "@ng-atomic/components/atoms";
|
|
3
|
+
import { provideMolecules } from "@ng-atomic/components/molecules";
|
|
4
|
+
import { provideOrganisms } from "@ng-atomic/components/organisms";
|
|
5
|
+
import { provideTemplates } from "@ng-atomic/components/templates";
|
|
6
|
+
import { provideFrames } from "@ng-atomic/components/frames";
|
|
7
|
+
import { providePages } from "@ng-atomic/components/pages";
|
|
8
8
|
import { MatDialogModule } from '@angular/material/dialog';
|
|
9
9
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
10
10
|
import { provideRootProperty, RootPropertyService } from '@ng-atomic/common/services/root-property';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
/**
|
|
13
|
-
* @deprecated use `provideNgAtomicComponents()` instead
|
|
14
|
-
*/
|
|
15
|
-
export class NgAtomicComponentsModule {
|
|
16
|
-
static forRoot() {
|
|
17
|
-
return {
|
|
18
|
-
ngModule: NgAtomicComponentsModule,
|
|
19
|
-
providers: [
|
|
20
|
-
RootPropertyService.Config.provide(),
|
|
21
|
-
provideRootProperty(),
|
|
22
|
-
importProvidersFrom(NgAtomicAtomsModule.forRoot()),
|
|
23
|
-
importProvidersFrom(NgAtomicMoleculesModule.forRoot()),
|
|
24
|
-
importProvidersFrom(NgAtomicOrganismsModule.forRoot()),
|
|
25
|
-
importProvidersFrom(NgAtomicTemplatesModule.forRoot()),
|
|
26
|
-
importProvidersFrom(NgAtomicPagesModule.forRoot()),
|
|
27
|
-
importProvidersFrom(NgAtomicFramesModule.forRoot()),
|
|
28
|
-
],
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
32
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicComponentsModule, imports: [MatDialogModule,
|
|
33
|
-
MatSnackBarModule] }); }
|
|
34
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicComponentsModule, imports: [MatDialogModule,
|
|
35
|
-
MatSnackBarModule] }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicComponentsModule, decorators: [{
|
|
38
|
-
type: NgModule,
|
|
39
|
-
args: [{
|
|
40
|
-
imports: [
|
|
41
|
-
MatDialogModule,
|
|
42
|
-
MatSnackBarModule,
|
|
43
|
-
]
|
|
44
|
-
}]
|
|
45
|
-
}] });
|
|
46
11
|
export function provideNgAtomicComponents() {
|
|
47
|
-
return
|
|
12
|
+
return [
|
|
13
|
+
importProvidersFrom(MatDialogModule, MatSnackBarModule),
|
|
14
|
+
RootPropertyService.Config.provide(),
|
|
15
|
+
provideRootProperty(),
|
|
16
|
+
provideAtoms(),
|
|
17
|
+
provideMolecules(),
|
|
18
|
+
provideOrganisms(),
|
|
19
|
+
provideTemplates(),
|
|
20
|
+
providePages(),
|
|
21
|
+
provideFrames(),
|
|
22
|
+
];
|
|
48
23
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVwRyxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU87UUFDTCxtQkFBbUIsQ0FDakIsZUFBZSxFQUNmLGlCQUFpQixDQUNsQjtRQUNELG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDcEMsbUJBQW1CLEVBQUU7UUFDckIsWUFBWSxFQUFFO1FBQ2QsZ0JBQWdCLEVBQUU7UUFDbEIsZ0JBQWdCLEVBQUU7UUFDbEIsZ0JBQWdCLEVBQUU7UUFDbEIsWUFBWSxFQUFFO1FBQ2QsYUFBYSxFQUFFO0tBQ2lCLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBpbXBvcnRQcm92aWRlcnNGcm9tIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHByb3ZpZGVBdG9tcyB9IGZyb20gXCJAbmctYXRvbWljL2NvbXBvbmVudHMvYXRvbXNcIjtcbmltcG9ydCB7IHByb3ZpZGVNb2xlY3VsZXMgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21wb25lbnRzL21vbGVjdWxlc1wiO1xuaW1wb3J0IHsgcHJvdmlkZU9yZ2FuaXNtcyB9IGZyb20gXCJAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zXCI7XG5pbXBvcnQgeyBwcm92aWRlVGVtcGxhdGVzIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXNcIjtcbmltcG9ydCB7IHByb3ZpZGVGcmFtZXMgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lc1wiO1xuaW1wb3J0IHsgcHJvdmlkZVBhZ2VzIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlc1wiO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IHByb3ZpZGVSb290UHJvcGVydHksIFJvb3RQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9yb290LXByb3BlcnR5JztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0F0b21pY0NvbXBvbmVudHMoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gW1xuICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oXG4gICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICBNYXRTbmFja0Jhck1vZHVsZSxcbiAgICApLFxuICAgIFJvb3RQcm9wZXJ0eVNlcnZpY2UuQ29uZmlnLnByb3ZpZGUoKSxcbiAgICBwcm92aWRlUm9vdFByb3BlcnR5KCksXG4gICAgcHJvdmlkZUF0b21zKCksXG4gICAgcHJvdmlkZU1vbGVjdWxlcygpLFxuICAgIHByb3ZpZGVPcmdhbmlzbXMoKSxcbiAgICBwcm92aWRlVGVtcGxhdGVzKCksXG4gICAgcHJvdmlkZVBhZ2VzKCksXG4gICAgcHJvdmlkZUZyYW1lcygpLFxuICBdIGFzIG5ldmVyIGFzIEVudmlyb25tZW50UHJvdmlkZXJzO1xufVxuIl19
|
|
@@ -22,6 +22,7 @@ var ActionId;
|
|
|
22
22
|
(function (ActionId) {
|
|
23
23
|
ActionId["SIGN_IN_WITH_GOOGLE"] = "[@ng-atomic/components:frames/app] Sign In With Google";
|
|
24
24
|
ActionId["SIGN_IN_WITH_TWITTER"] = "[@ng-atomic/components:frames/app] Sign In With Twitter";
|
|
25
|
+
ActionId["SIGN_IN_WITH_MICROSOFT"] = "[@ng-atomic/components:frames/app] Sign In With Microsoft";
|
|
25
26
|
ActionId["SIGN_IN_WITH_EMAIL"] = "[@ng-atomic/components:frames/app] Sign In With Email";
|
|
26
27
|
ActionId["SIGN_UP_WITH_EMAIL"] = "[@ng-atomic/components:frames/app] Sign Up With Email";
|
|
27
28
|
ActionId["NAVIGATE"] = "[@ng-atomic/components:frames/app] Navigate";
|
|
@@ -129,6 +130,7 @@ export class AppFrameStore extends InjectableComponent {
|
|
|
129
130
|
else {
|
|
130
131
|
app.sideApp.collapse();
|
|
131
132
|
const { commands, extras } = payload;
|
|
133
|
+
console.debug('commands', commands, extras);
|
|
132
134
|
app.router.navigate(commands, extras ?? {}).then(() => app.sideNav.collapse());
|
|
133
135
|
}
|
|
134
136
|
};
|
|
@@ -362,7 +364,7 @@ export class AppFrame extends NgAtomicComponent {
|
|
|
362
364
|
</frames-fab>
|
|
363
365
|
</frames-progress-bar>
|
|
364
366
|
</frames-loading>
|
|
365
|
-
`, isInline: true, styles: [":host{--primary-color-SCOPED-IN-frames-app-
|
|
367
|
+
`, isInline: true, styles: [":host{--primary-color-SCOPED-IN-frames-app-jYSG: var(--primary-color);--on-primary-color-SCOPED-IN-frames-app-jYSG: var(--on-primary-color);--surface-color-SCOPED-IN-frames-app-jYSG: var(--surface-color);--on-surface-color-SCOPED-IN-frames-app-jYSG: var(--on-surface-color);--background-color-SCOPED-IN-frames-app-jYSG: var(--background-color);--on-background-color-SCOPED-IN-frames-app-jYSG: var(--on-background-color);--menu-width-SCOPED-IN-frames-app-jYSG: var(--menu-width);--menu-background-color-SCOPED-IN-frames-app-jYSG: var(--menu-background-color);--menu-on-background-color-SCOPED-IN-frames-app-jYSG: var(--menu-on-background-color);--background-primary-color-SCOPED-IN-frames-app-jYSG: var(--background-primary-color);--background-on-primary-color-SCOPED-IN-frames-app-jYSG: var(--background-on-primary-color);--background-background-color-SCOPED-IN-frames-app-jYSG: var(--background-background-color);--loading-primary-color-SCOPED-IN-frames-app-jYSG: var(--loading-primary-color);--page-width-lv1-SCOPED-IN-frames-app-jYSG: var(--page-width-lv1);--menu-padding-top: 56px;--menu-padding-top-SCOPED-IN-frames-app-jYSG: var(--menu-padding-top);--loading-z-index: 1000;--loading-z-index-SCOPED-IN-frames-app-jYSG: var(--loading-z-index)}:host{display:block;width:100%;height:100%;position:fixed;color:var(--primary-color-SCOPED-IN-frames-app-jYSG);touch-action:none}:host *{--primary-color: var(--primary-color-SCOPED-IN-frames-app-jYSG);--on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-jYSG);--surface-color: var(--surface-color-SCOPED-IN-frames-app-jYSG);--on-surface-color: var(--on-surface-color-SCOPED-IN-frames-app-jYSG);--background-color: var(--background-color-SCOPED-IN-frames-app-jYSG);--on-background-color: var(--on-background-color-SCOPED-IN-frames-app-jYSG);--menu-background-color: var(--menu-background-color-SCOPED-IN-frames-app-jYSG);--menu-on-background-color: var(--menu-on-background-color-SCOPED-IN-frames-app-jYSG)}:host frames-side-nav{color:#000;--menu-width: var(--menu-width-SCOPED-IN-frames-app-jYSG)}:host frames-loading{--primary-color: var(--loading-primary-color-SCOPED-IN-frames-app-jYSG)}:host templates-background{--primary-color: var(--background-primary-color-SCOPED-IN-frames-app-jYSG);--on-primary-color: var(--background-on-primary-color-SCOPED-IN-frames-app-jYSG);--background-color: var(--background-background-color-SCOPED-IN-frames-app-jYSG);position:absolute;top:0;left:0}:host frames-side-nav .side-app{position:relative;width:var(--page-width-lv1-SCOPED-IN-frames-app-jYSG);height:100%}\n"], dependencies: [{ kind: "component", type: FabFrame, selector: "frames-fab" }, { kind: "component", type: LoadingFrame, selector: "frames-loading" }, { kind: "component", type: SideNavFrame, selector: "frames-side-nav" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: EntranceFrame, selector: "frames-entrance" }, { kind: "component", type:
|
|
366
368
|
// DrawerFrameStore,
|
|
367
369
|
DrawerFrame, selector: "frames-drawer" }, { kind: "component", type: ProgressBarFrame, selector: "frames-progress-bar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import("@ng-atomic/components/templates/background").then(m => m.BackgroundTemplateStore)]] }); }
|
|
368
370
|
}
|
|
@@ -425,6 +427,6 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
|
|
|
425
427
|
</frames-loading>
|
|
426
428
|
`, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
|
|
427
429
|
AppFrameStore,
|
|
428
|
-
], styles: [":host{--primary-color-SCOPED-IN-frames-app-
|
|
430
|
+
], styles: [":host{--primary-color-SCOPED-IN-frames-app-jYSG: var(--primary-color);--on-primary-color-SCOPED-IN-frames-app-jYSG: var(--on-primary-color);--surface-color-SCOPED-IN-frames-app-jYSG: var(--surface-color);--on-surface-color-SCOPED-IN-frames-app-jYSG: var(--on-surface-color);--background-color-SCOPED-IN-frames-app-jYSG: var(--background-color);--on-background-color-SCOPED-IN-frames-app-jYSG: var(--on-background-color);--menu-width-SCOPED-IN-frames-app-jYSG: var(--menu-width);--menu-background-color-SCOPED-IN-frames-app-jYSG: var(--menu-background-color);--menu-on-background-color-SCOPED-IN-frames-app-jYSG: var(--menu-on-background-color);--background-primary-color-SCOPED-IN-frames-app-jYSG: var(--background-primary-color);--background-on-primary-color-SCOPED-IN-frames-app-jYSG: var(--background-on-primary-color);--background-background-color-SCOPED-IN-frames-app-jYSG: var(--background-background-color);--loading-primary-color-SCOPED-IN-frames-app-jYSG: var(--loading-primary-color);--page-width-lv1-SCOPED-IN-frames-app-jYSG: var(--page-width-lv1);--menu-padding-top: 56px;--menu-padding-top-SCOPED-IN-frames-app-jYSG: var(--menu-padding-top);--loading-z-index: 1000;--loading-z-index-SCOPED-IN-frames-app-jYSG: var(--loading-z-index)}:host{display:block;width:100%;height:100%;position:fixed;color:var(--primary-color-SCOPED-IN-frames-app-jYSG);touch-action:none}:host *{--primary-color: var(--primary-color-SCOPED-IN-frames-app-jYSG);--on-primary-color: var(--on-primary-color-SCOPED-IN-frames-app-jYSG);--surface-color: var(--surface-color-SCOPED-IN-frames-app-jYSG);--on-surface-color: var(--on-surface-color-SCOPED-IN-frames-app-jYSG);--background-color: var(--background-color-SCOPED-IN-frames-app-jYSG);--on-background-color: var(--on-background-color-SCOPED-IN-frames-app-jYSG);--menu-background-color: var(--menu-background-color-SCOPED-IN-frames-app-jYSG);--menu-on-background-color: var(--menu-on-background-color-SCOPED-IN-frames-app-jYSG)}:host frames-side-nav{color:#000;--menu-width: var(--menu-width-SCOPED-IN-frames-app-jYSG)}:host frames-loading{--primary-color: var(--loading-primary-color-SCOPED-IN-frames-app-jYSG)}:host templates-background{--primary-color: var(--background-primary-color-SCOPED-IN-frames-app-jYSG);--on-primary-color: var(--background-on-primary-color-SCOPED-IN-frames-app-jYSG);--background-color: var(--background-background-color-SCOPED-IN-frames-app-jYSG);position:absolute;top:0;left:0}:host frames-side-nav .side-app{position:relative;width:var(--page-width-lv1-SCOPED-IN-frames-app-jYSG);height:100%}\n"] }]
|
|
429
431
|
}], ctorParameters: null, propDecorators: null }) });
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvZnJhbWVzL2FwcC9hcHAuZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFhLE1BQU0sK0JBQStCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FB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QWE7eUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBQTEFURk9STV9JRCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRpbmdGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvbG9hZGluZyc7XG5pbXBvcnQgeyBTaWRlTmF2RnJhbWUsIFNpZGVOYXZGcmFtZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9zaWRlLW5hdic7XG5pbXBvcnQgeyBFbnRyYW5jZUZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9lbnRyYW5jZSc7XG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbnMsIEluamVjdGFibGVDb21wb25lbnQsIE5nQXRvbWljQ29tcG9uZW50LCBfY29tcHV0ZWQsIGFwcGx5VG9JbnB1dCwgY3JlYXRlQWN0aW9uLCBwcm92aWRlRWZmZWN0IH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYWtlQ29uZmlnLCBOYXZBY3Rpb25JZCwgVUlDb250ZXh0IH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWknO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFja2dyb3VuZFRlbXBsYXRlU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2JhY2tncm91bmQnO1xuaW1wb3J0IHsgRHJhd2VyRnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2RyYXdlcic7XG5pbXBvcnQgeyBGYWJGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvZmFiJztcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9hcHAnO1xuaW1wb3J0IHsgU2lkZUFwcFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zaWRlLWFwcCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgUm9vdFByb3BlcnR5U2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3Jvb3QtcHJvcGVydHknO1xuaW1wb3J0IHsgbWFrZUluaXRpYWxpemVyQ29uZmlnIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgaW5qZWN0SGFzTmV4dCwgaW5qZWN0UHJpbWFyeVBhdGhzIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJGcmFtZSB9IGZyb20gXCJAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL3Byb2dyZXNzLWJhclwiO1xuXG5lbnVtIEFjdGlvbklkIHtcbiAgU0lHTl9JTl9XSVRIX0dPT0dMRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIFNpZ24gSW4gV2l0aCBHb29nbGUnLFxuICBTSUdOX0lOX1dJVEhfVFdJVFRFUiA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIFNpZ24gSW4gV2l0aCBUd2l0dGVyJyxcbiAgU0lHTl9JTl9XSVRIX0VNQUlMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBJbiBXaXRoIEVtYWlsJyxcbiAgU0lHTl9VUF9XSVRIX0VNQUlMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBVcCBXaXRoIEVtYWlsJyxcbiAgTkFWSUdBVEUgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czpmcmFtZXMvYXBwXSBOYXZpZ2F0ZScsXG4gIFNJR05fT1VUID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBPdXQnLFxuICBOQVZJR0FURV9TSURFX0FQUCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIE5hdmlnYXRlIFNpZGUgQXBwJyxcbiAgT1BFTl9TSURFX0FQUCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIE9wZW4gU2lkZSBBcHAnLFxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdmcmFtZXMtYXBwJyB9KVxuZXhwb3J0IGNsYXNzIEFwcEZyYW1lU3RvcmUgZXh0ZW5kcyBJbmplY3RhYmxlQ29tcG9uZW50IHtcbiAgc3RhdGljIHJlYWRvbmx5IEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHN0YXRpYyByZWFkb25seSBDb25maWcgPSBtYWtlQ29uZmlnKCgpID0+IHtcbiAgICByZXR1cm4gKGNvbnRleHQpID0+ICh7XG4gICAgICBmYWJBY3Rpb25zOiBbXSxcbiAgICAgIGZhYkhpZGU6IHRydWUsXG4gICAgICBpc0VudHJhbmNlOiB0cnVlLFxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGlzUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgc2lkZUFwcE9wZW5lZDogZmFsc2UsXG4gICAgICB0aXRsZTogJ3RpdGxlJyxcbiAgICAgIGZvcm06IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe30pIGFzIEFic3RyYWN0Q29udHJvbCxcbiAgICAgIGVudHJhbmNlQWN0aW9uczogW1xuICAgICAgICB7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfR09PR0xFLCBuYW1lOiAnR29vZ2xl44Gn44K144Kk44Oz44Kk44OzJywgaWNvbjogJycgfSxcbiAgICAgIF0gYXMgQWN0aW9ucyxcbiAgICAgIHNpZGVOYXZBY3Rpb25zOiBbXG4gICAgICAgIHsgaWQ6IEFjdGlvbklkLlNJR05fT1VULCBuYW1lOiAn44Ot44Kw44Ki44Km44OIJywgaWNvbjogJ2V4aXRfdG9fYXBwJyB9LFxuICAgICAgXSBhcyBBY3Rpb25zLFxuICAgICAgc2lkZU5hdkJvdHRvbUFjdGlvbnM6IFtdLFxuICAgICAgc2lkZU5hdk1vZGU6ICdjb2xsYXBzZWQnIGFzICdleHBhbmRlZCcgfCAnY29sbGFwc2VkJyxcbiAgICAgIHNpZGVOYXZNZW51VHlwZTogU2lkZU5hdkZyYW1lU3RvcmUuZ2V0TWVudVR5cGUoY29udGV4dCksXG4gICAgICBzaWRlTmF2TWVudVRpdGxlOiB1bmRlZmluZWQgYXMgc3RyaW5nLFxuICAgICAgc2lkZUFwcE91dGxldE5hbWU6ICdzaWRlJyxcbiAgICB9KTtcbiAgfSwgWydjb21wb25lbnRzJywgJ2ZyYW1lcycsICdhcHAnXSk7XG4gIHN0YXRpYyBwcm92aWRlQXBwU2VydmljZUNvbmZpZyA9ICgpID0+IEFwcEZyYW1lU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICBjb25zdCBmYWJIaWRlID0gY29tcHV0ZWQoKCkgPT4gYXBwLnNpZGVBcHAub3BlbmVkKCkpO1xuICAgIHJldHVybiAoY29uZmlnKSA9PiAoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgaXNMb2FkaW5nOiBhcHAubG9hZGluZy5pc0xvYWRpbmcoKSxcbiAgICAgIGlzUHJvZ3Jlc3M6IGFwcC5sb2FkaW5nLmlzUHJvZ3Jlc3MoKSxcbiAgICAgIHNpZGVOYXZNb2RlOiBhcHAuc2lkZU5hdk1vZGUuc2lkZU5hdk1vZGUoKSxcbiAgICAgIHNpZGVBcHBPcGVuZWQ6IGFwcC5zaWRlQXBwLm9wZW5lZCgpLFxuICAgICAgZmFiQWN0aW9uczogYXBwLmZhYi5hY3Rpb25zKCksXG4gICAgICBmYWJIaWRlOiBmYWJIaWRlKCksXG4gICAgfSk7XG4gIH0pO1xuICBzdGF0aWMgcHJvdmlkZUljb25CdXR0b25NZW51QXNEZWZhdWx0Q29uZmlnKCkge1xuICAgIHJldHVybiBbXG4gICAgICBSb290UHJvcGVydHlTZXJ2aWNlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2V0UHJvcHMgPSAoY29udGV4dDogVUlDb250ZXh0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChjb250ZXh0LmJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiB7ICctLW1lbnUtd2lkdGgnOiAnMjIwcHgnIH07XG4gICAgICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICAgICAgY2FzZSAneExhcmdlJzogcmV0dXJuIHsgJy0tbWVudS13aWR0aCc6ICc2NHB4JyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGNvbmZpZywgY29udGV4dCkgPT4gKHsuLi5jb25maWcsIC4uLmdldFByb3BzKGNvbnRleHQpfSk7XG4gICAgICB9KSxcbiAgICAgIEFwcEZyYW1lU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgICBjb25zdCBnZXRNZW51VHlwZSA9IChjb250ZXh0OiBVSUNvbnRleHQpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGNvbnRleHQuYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgY2FzZSAneFNtYWxsJzogcmV0dXJuICdtZW51JztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAnaWNvbi1idXR0b24tbWVudSc7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gKGNvbmZpZywgY29udGV4dCkgPT4gKHtcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgc2lkZU5hdk1lbnVUeXBlOiBnZXRNZW51VHlwZShjb250ZXh0KSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIF07XG4gIH1cbiAgc3RhdGljIEluaXRpYWxpemVyID0gbWFrZUluaXRpYWxpemVyQ29uZmlnKEFwcEZyYW1lU3RvcmUpO1xuICBzdGF0aWMgcHJvdmlkZUluaXRpYWxpemVyID0gQXBwRnJhbWVTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlO1xuICBzdGF0aWMgcHJvdmlkZUV4cGFuZFNpZGVBcHBPbkluaXQoKSB7XG4gICAgcmV0dXJuIEFwcEZyYW1lU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoKSA9PiB7XG4gICAgICBpbmplY3QoU2lkZUFwcFNlcnZpY2UpLmV4cGFuZCgpO1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lkZU5hdkFjdGlvbnNJbml0aWFsaXplcihhY3Rpb25zRmFjdG9yeTogKCkgPT4gQWN0aW9uW10pIHtcbiAgICByZXR1cm4gQXBwRnJhbWVTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgcGF0aHMgPSBpbmplY3RQcmltYXJ5UGF0aHMoKTtcbiAgICAgIGZ1bmN0aW9uIGNvbXBhcmUocGF0aHM6IHN0cmluZ1tdLCBwYXlsb2FkPzogc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKHBheWxvYWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gcGF5bG9hZC5ldmVyeSgocGF0aCwgaSkgPT4gcGF0aHNbaV0gPT09IHBhdGgpO1xuICAgICAgfVxuICAgICAgY29uc3QgYWN0aW9ucyA9IGFjdGlvbnNGYWN0b3J5KCk7XG5cbiAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ3NpZGVOYXZBY3Rpb25zJywgYWN0aW9ucy5tYXAoYWN0aW9uID0+ICh7XG4gICAgICAgICAgLi4uYWN0aW9uLCBkaXNhYmxlZDogY29tcGFyZShwYXRocygpLCBhY3Rpb24/LnBheWxvYWQpLFxuICAgICAgICB9KSkpO1xuICAgICAgfSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVOYXZpZ2F0ZUVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChBcHBGcmFtZVN0b3JlLkFjdGlvbklkLk5BVklHQVRFLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICByZXR1cm4gKHBheWxvYWQ6IHN0cmluZ1tdIHwge2NvbW1hbmRzOiBzdHJpbmdbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhc30pID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5jb2xsYXBzZSgpO1xuICAgICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUocGF5bG9hZCkudGhlbigoKSA9PiBhcHAuc2lkZU5hdi5jb2xsYXBzZSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5jb2xsYXBzZSgpO1xuICAgICAgICAgIGNvbnN0IHtjb21tYW5kcywgZXh0cmFzfSA9IHBheWxvYWQ7XG4gICAgICAgICAgYXBwLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywgZXh0cmFzID8/IHt9KS50aGVuKCgpID0+IGFwcC5zaWRlTmF2LmNvbGxhcHNlKCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVOYXZpZ2F0ZVNpZGVBcHBFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5OQVZJR0FURV9TSURFX0FQUCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuIChwYXlsb2FkOiBzdHJpbmdbXSB8IHtjb21tYW5kczogc3RyaW5nW10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgJiB7ZXhwYW5kZWQ/OiBib29sZWFufX0pID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5yb3V0ZXIubmF2aWdhdGUocGF5bG9hZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge2NvbW1hbmRzLCBleHRyYXN9ID0gcGF5bG9hZDtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIGV4dHJhcyA/PyB7fSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVNpZ25PdXRFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX09VVCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhdXRoLnNpZ25PdXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBhcHAuc2lkZU5hdi5jb2xsYXBzZSgpO1xuICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjgrXjgqTjg7PjgqLjgqbjg4jjgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlT3BlblNpZGVBcHBFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5PUEVOX1NJREVfQVBQLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhcHAuc2lkZUFwcC5leHBhbmQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgcHJvdmlkZUNsb3NlU2lkZUFwcEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChOYXZBY3Rpb25JZC5DTE9TRSwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVTaWduVXBXaXRoRW1haWxFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX1VQX1dJVEhfRU1BSUwsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEFwcEZyYW1lU3RvcmUpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUuZm9ybSgpLmdldFJhd1ZhbHVlKCkgYXMge2VtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmd9O1xuICAgICAgICBhcHAubG9hZGluZy5hd2FpdCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF1dGguY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGRhdGEuZW1haWwsIGRhdGEucGFzc3dvcmQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+aWsOimj+eZu+mMsuOBl+OBvuOBl+OBn+OAgicpO1xuICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aEVtYWlsRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEFwcEZyYW1lU3RvcmUuQWN0aW9uSWQuU0lHTl9JTl9XSVRIX0VNQUlMLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChBcHBGcmFtZVN0b3JlKTtcbiAgICAgIGNvbnN0IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLmZvcm0oKS5nZXRSYXdWYWx1ZSgpIGFzIHtlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nfTtcbiAgICAgICAgYXBwLmxvYWRpbmcuYXdhaXQoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBhdXRoLnNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKGRhdGEuZW1haWwsIGRhdGEucGFzc3dvcmQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aEdvb2dsZUVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChBcHBGcmFtZVN0b3JlLkFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgYXV0aC5zaWduSW5XaXRoR29vZ2xlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICBjb25zdCBfbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UubWF0Y2goL0hUVFAgQ2xvdWQgRnVuY3Rpb24gcmV0dXJuZWQgYW4gZXJyb3I6ICguKikgXFwoLiovKTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gX21lc3NhZ2UgPyBKU09OLnBhcnNlKF9tZXNzYWdlWzFdKS5lcnJvci5tZXNzYWdlIDogZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihtZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aFR3aXR0ZXJFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX0lOX1dJVEhfVFdJVFRFUiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhdXRoLnNpZ25JbldpdGhUd2l0dGVyKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZU5hdmlnYXRlRWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVTaWduT3V0RWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVPcGVuU2lkZUFwcEVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlQ2xvc2VTaWRlQXBwRWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVTaWduVXBXaXRoRW1haWxFZmZlY3QoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZVNpZ25JbldpdGhFbWFpbEVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlU2lnbkluV2l0aEdvb2dsZUVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlU2lnbkluV2l0aFR3aXR0ZXJFZmZlY3QoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZU5hdmlnYXRlU2lkZUFwcEVmZmVjdCgpLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHQoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZUFwcFNlcnZpY2VDb25maWcoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZUljb25CdXR0b25NZW51QXNEZWZhdWx0Q29uZmlnKCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVEZWZhdWx0RWZmZWN0cygpLFxuICAgIF1cbiAgfVxuXG4gIHN0YXRpYyBpbmplY3ROYXZBY3Rpb25GYWN0b3J5KCkge1xuICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIGNvbnN0IG5hdmlnYXRlQWN0aW9uQnVpbGRlciA9IGNyZWF0ZUFjdGlvbihBcHBGcmFtZVN0b3JlLkFjdGlvbklkLk5BVklHQVRFLCB1bmRlZmluZWQsIHtcbiAgICAgIGljb246ICdvcGVuX2luX25ldycsXG4gICAgfSk7XG4gICAgcmV0dXJuIChjb21tYW5kczogYW55W10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIG5hdmlnYXRlQWN0aW9uQnVpbGRlci5jcmVhdGUoe1xuICAgICAgICBjb21tYW5kcyxcbiAgICAgICAgZXh0cmFzOiB7IHJlbGF0aXZlVG86IHJvdXRlLCByZXBsYWNlVXJsOiBoYXNOZXh0KCkgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gQXBwRnJhbWVTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmlzTG9hZGluZykpO1xuICByZWFkb25seSBpc1Byb2dyZXNzID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXNQcm9ncmVzcykpO1xuICByZWFkb25seSBpc0VudHJhbmNlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXNFbnRyYW5jZSkpO1xuICByZWFkb25seSBzaWRlQXBwT3BlbmVkID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2lkZUFwcE9wZW5lZCkpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRpdGxlKSk7XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5mb3JtKSk7XG4gIHJlYWRvbmx5IGVudHJhbmNlQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmVudHJhbmNlQWN0aW9ucykpO1xuICByZWFkb25seSBzaWRlTmF2QWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNpZGVOYXZBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHNpZGVOYXZCb3R0b21BY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2lkZU5hdkJvdHRvbUFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgc2lkZU5hdk1vZGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlTmF2TW9kZSkpO1xuICByZWFkb25seSBzaWRlTmF2TWVudVR5cGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlTmF2TWVudVR5cGUpKTtcbiAgcmVhZG9ubHkgc2lkZU5hdk1lbnVUaXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNpZGVOYXZNZW51VGl0bGUpKTtcbiAgcmVhZG9ubHkgc2lkZUFwcE91dGxldE5hbWUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlQXBwT3V0bGV0TmFtZSkpO1xuICByZWFkb25seSBmYWJBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZmFiQWN0aW9ucykpO1xuICByZWFkb25seSBmYWJIaWRlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZmFiSGlkZSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgQXBwRnJhbWVTdG9yZS5Jbml0aWFsaXplci5pbml0aWFsaXplU3RvcmUodGhpcyk7XG4gIH1cbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcmFtZXMtYXBwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZhYkZyYW1lLFxuICAgIExvYWRpbmdGcmFtZSxcbiAgICBTaWRlTmF2RnJhbWUsXG4gICAgUm91dGVyT3V0bGV0LFxuICAgIEVudHJhbmNlRnJhbWUsXG4gICAgLy8gRHJhd2VyRnJhbWVTdG9yZSxcbiAgICBEcmF3ZXJGcmFtZSxcbiAgICBCYWNrZ3JvdW5kVGVtcGxhdGVTdG9yZSxcbiAgICBQcm9ncmVzc0JhckZyYW1lLFxuXSxcbiAgdGVtcGxhdGU6IGBcbiAgPHJvdXRlci1vdXRsZXQvPlxuICBAaWYgKGlzUGxhdGZvcm1Ccm93c2VyKCkpIHtcbiAgICBAZGVmZXIge1xuICAgICAgPHRlbXBsYXRlcy1iYWNrZ3JvdW5kIGluamVjdGFibGUvPlxuICAgIH1cbiAgfVxuICA8ZnJhbWVzLWxvYWRpbmcgW2lzTG9hZGluZ109XCJzdG9yZS5pc0xvYWRpbmcoKVwiPlxuICAgIDxmcmFtZXMtcHJvZ3Jlc3MtYmFyIFtpc1Byb2dyZXNzXT1cInN0b3JlLmlzUHJvZ3Jlc3MoKVwiIFttb2RlXT1cIidxdWVyeSdcIj5cbiAgICAgIDxmcmFtZXMtZmFiXG4gICAgICAgIFthY3Rpb25zXT1cInN0b3JlLmZhYkFjdGlvbnMoKVwiXG4gICAgICAgIFtoaWRlXT1cInN0b3JlLmZhYkhpZGUoKVwiXG4gICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxmcmFtZXMtZW50cmFuY2VcbiAgICAgICAgICBbaXNFbnRyYW5jZV09XCJzdG9yZS5pc0VudHJhbmNlKClcIlxuICAgICAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICAgICAgW3RpdGxlXT1cInN0b3JlLnRpdGxlKClcIlxuICAgICAgICAgIFthY3Rpb25zXT1cInN0b3JlLmVudHJhbmNlQWN0aW9ucygpXCJcbiAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGZyYW1lcy1kcmF3ZXJcbiAgICAgICAgICAgIFtvcGVuZWRdPVwic3RvcmUuc2lkZUFwcE9wZW5lZCgpXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCInZW5kJ1wiXG4gICAgICAgICAgICBbaGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxmcmFtZXMtc2lkZS1uYXZcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwic3RvcmUuc2lkZU5hdkFjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtib3R0b21BY3Rpb25zXT1cInN0b3JlLnNpZGVOYXZCb3R0b21BY3Rpb25zKClcIlxuICAgICAgICAgICAgICBbbW9kZV09XCJzdG9yZS5zaWRlTmF2TW9kZSgpXCJcbiAgICAgICAgICAgICAgW21lbnVUeXBlXT1cInN0b3JlLnNpZGVOYXZNZW51VHlwZSgpXCJcbiAgICAgICAgICAgICAgW21lbnVUaXRsZV09XCJzdG9yZS5zaWRlTmF2TWVudVRpdGxlKClcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgICBjb250ZW50c1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cm91dGVyLW91dGxldCBjb250ZW50cy8+XG4gICAgICAgICAgICA8L2ZyYW1lcy1zaWRlLW5hdj5cbiAgICAgICAgICAgIDxkaXYgZHJhd2VyIHN0eWxlPVwid2lkdGg6IHZhcigtLXBhZ2Utd2lkdGgtbHYxKTtoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cInN0b3JlLnNpZGVBcHBPdXRsZXROYW1lKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mcmFtZXMtZHJhd2VyPlxuICAgICAgICA8L2ZyYW1lcy1lbnRyYW5jZT5cbiAgICAgIDwvZnJhbWVzLWZhYj5cbiAgICA8L2ZyYW1lcy1wcm9ncmVzcy1iYXI+XG4gIDwvZnJhbWVzLWxvYWRpbmc+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9hcHAuZnJhbWUuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIEFwcEZyYW1lU3RvcmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZyYW1lIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoQXBwRnJhbWVTdG9yZSk7XG4gIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIHByb3RlY3RlZCBpc1BsYXRmb3JtU2VydmVyKCkge1xuICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNQbGF0Zm9ybUJyb3dzZXIoKSB7XG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cbn1cbiJdfQ==
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvZnJhbWVzL2FwcC9hcHAuZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFhLE1BQU0sK0JBQStCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxrQkFDL0I7NEJBQ2QsYUFBYTt5QkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFBMQVRGT1JNX0lELCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9hZGluZ0ZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9sb2FkaW5nJztcbmltcG9ydCB7IFNpZGVOYXZGcmFtZSwgU2lkZU5hdkZyYW1lU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL3NpZGUtbmF2JztcbmltcG9ydCB7IEVudHJhbmNlRnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2VudHJhbmNlJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9ucywgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIF9jb21wdXRlZCwgYXBwbHlUb0lucHV0LCBjcmVhdGVBY3Rpb24sIHByb3ZpZGVFZmZlY3QgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1ha2VDb25maWcsIE5hdkFjdGlvbklkLCBVSUNvbnRleHQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kVGVtcGxhdGVTdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvYmFja2dyb3VuZCc7XG5pbXBvcnQgeyBEcmF3ZXJGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvZHJhd2VyJztcbmltcG9ydCB7IEZhYkZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9mYWInO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2FwcCc7XG5pbXBvcnQgeyBTaWRlQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3NpZGUtYXBwJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXV0aCc7XG5pbXBvcnQgeyBSb290UHJvcGVydHlTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvcm9vdC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9pbml0aWFsaXplcic7XG5pbXBvcnQgeyBpbmplY3RIYXNOZXh0LCBpbmplY3RQcmltYXJ5UGF0aHMgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBQcm9ncmVzc0JhckZyYW1lIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvcHJvZ3Jlc3MtYmFyXCI7XG5cbmVudW0gQWN0aW9uSWQge1xuICBTSUdOX0lOX1dJVEhfR09PR0xFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBJbiBXaXRoIEdvb2dsZScsXG4gIFNJR05fSU5fV0lUSF9UV0lUVEVSID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBJbiBXaXRoIFR3aXR0ZXInLFxuICBTSUdOX0lOX1dJVEhfTUlDUk9TT0ZUID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gU2lnbiBJbiBXaXRoIE1pY3Jvc29mdCcsXG4gIFNJR05fSU5fV0lUSF9FTUFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIFNpZ24gSW4gV2l0aCBFbWFpbCcsXG4gIFNJR05fVVBfV0lUSF9FTUFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIFNpZ24gVXAgV2l0aCBFbWFpbCcsXG4gIE5BVklHQVRFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6ZnJhbWVzL2FwcF0gTmF2aWdhdGUnLFxuICBTSUdOX09VVCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOmZyYW1lcy9hcHBdIFNpZ24gT3V0JyxcbiAgTkFWSUdBVEVfU0lERV9BUFAgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czpmcmFtZXMvYXBwXSBOYXZpZ2F0ZSBTaWRlIEFwcCcsXG4gIE9QRU5fU0lERV9BUFAgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czpmcmFtZXMvYXBwXSBPcGVuIFNpZGUgQXBwJyxcbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnZnJhbWVzLWFwcCcgfSlcbmV4cG9ydCBjbGFzcyBBcHBGcmFtZVN0b3JlIGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBzdGF0aWMgcmVhZG9ubHkgQ29uZmlnID0gbWFrZUNvbmZpZygoKSA9PiB7XG4gICAgcmV0dXJuIChjb250ZXh0KSA9PiAoe1xuICAgICAgZmFiQWN0aW9uczogW10sXG4gICAgICBmYWJIaWRlOiB0cnVlLFxuICAgICAgaXNFbnRyYW5jZTogdHJ1ZSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBpc1Byb2dyZXNzOiBmYWxzZSxcbiAgICAgIHNpZGVBcHBPcGVuZWQ6IGZhbHNlLFxuICAgICAgdGl0bGU6ICd0aXRsZScsXG4gICAgICBmb3JtOiBpbmplY3QoRm9ybUJ1aWxkZXIpLmdyb3VwKHt9KSBhcyBBYnN0cmFjdENvbnRyb2wsXG4gICAgICBlbnRyYW5jZUFjdGlvbnM6IFtcbiAgICAgICAgeyBpZDogQWN0aW9uSWQuU0lHTl9JTl9XSVRIX0dPT0dMRSwgbmFtZTogJ0dvb2dsZeOBp+OCteOCpOODs+OCpOODsycsIGljb246ICcnIH0sXG4gICAgICBdIGFzIEFjdGlvbnMsXG4gICAgICBzaWRlTmF2QWN0aW9uczogW1xuICAgICAgICB7IGlkOiBBY3Rpb25JZC5TSUdOX09VVCwgbmFtZTogJ+ODreOCsOOCouOCpuODiCcsIGljb246ICdleGl0X3RvX2FwcCcgfSxcbiAgICAgIF0gYXMgQWN0aW9ucyxcbiAgICAgIHNpZGVOYXZCb3R0b21BY3Rpb25zOiBbXSxcbiAgICAgIHNpZGVOYXZNb2RlOiAnY29sbGFwc2VkJyBhcyAnZXhwYW5kZWQnIHwgJ2NvbGxhcHNlZCcsXG4gICAgICBzaWRlTmF2TWVudVR5cGU6IFNpZGVOYXZGcmFtZVN0b3JlLmdldE1lbnVUeXBlKGNvbnRleHQpLFxuICAgICAgc2lkZU5hdk1lbnVUaXRsZTogdW5kZWZpbmVkIGFzIHN0cmluZyxcbiAgICAgIHNpZGVBcHBPdXRsZXROYW1lOiAnc2lkZScsXG4gICAgfSk7XG4gIH0sIFsnY29tcG9uZW50cycsICdmcmFtZXMnLCAnYXBwJ10pO1xuICBzdGF0aWMgcHJvdmlkZUFwcFNlcnZpY2VDb25maWcgPSAoKSA9PiBBcHBGcmFtZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgY29uc3QgZmFiSGlkZSA9IGNvbXB1dGVkKCgpID0+IGFwcC5zaWRlQXBwLm9wZW5lZCgpKTtcbiAgICByZXR1cm4gKGNvbmZpZykgPT4gKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGlzTG9hZGluZzogYXBwLmxvYWRpbmcuaXNMb2FkaW5nKCksXG4gICAgICBpc1Byb2dyZXNzOiBhcHAubG9hZGluZy5pc1Byb2dyZXNzKCksXG4gICAgICBzaWRlTmF2TW9kZTogYXBwLnNpZGVOYXZNb2RlLnNpZGVOYXZNb2RlKCksXG4gICAgICBzaWRlQXBwT3BlbmVkOiBhcHAuc2lkZUFwcC5vcGVuZWQoKSxcbiAgICAgIGZhYkFjdGlvbnM6IGFwcC5mYWIuYWN0aW9ucygpLFxuICAgICAgZmFiSGlkZTogZmFiSGlkZSgpLFxuICAgIH0pO1xuICB9KTtcbiAgc3RhdGljIHByb3ZpZGVJY29uQnV0dG9uTWVudUFzRGVmYXVsdENvbmZpZygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdldFByb3BzID0gKGNvbnRleHQ6IFVJQ29udGV4dCkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoY29udGV4dC5icmVha3BvaW50KSB7XG4gICAgICAgICAgICBjYXNlICd4U21hbGwnOiByZXR1cm4geyAnLS1tZW51LXdpZHRoJzogJzIyMHB4JyB9O1xuICAgICAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgICAgIGNhc2UgJ3hMYXJnZSc6IHJldHVybiB7ICctLW1lbnUtd2lkdGgnOiAnNjRweCcgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7Li4uY29uZmlnLCAuLi5nZXRQcm9wcyhjb250ZXh0KX0pO1xuICAgICAgfSksXG4gICAgICBBcHBGcmFtZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2V0TWVudVR5cGUgPSAoY29udGV4dDogVUlDb250ZXh0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChjb250ZXh0LmJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiAnbWVudSc7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ2ljb24tYnV0dG9uLW1lbnUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHNpZGVOYXZNZW51VHlwZTogZ2V0TWVudVR5cGUoY29udGV4dCksXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICBdO1xuICB9XG4gIHN0YXRpYyBJbml0aWFsaXplciA9IG1ha2VJbml0aWFsaXplckNvbmZpZyhBcHBGcmFtZVN0b3JlKTtcbiAgc3RhdGljIHByb3ZpZGVJbml0aWFsaXplciA9IEFwcEZyYW1lU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZTtcbiAgc3RhdGljIHByb3ZpZGVFeHBhbmRTaWRlQXBwT25Jbml0KCkge1xuICAgIHJldHVybiBBcHBGcmFtZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgaW5qZWN0KFNpZGVBcHBTZXJ2aWNlKS5leHBhbmQoKTtcbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgcHJvdmlkZVNpZGVOYXZBY3Rpb25zSW5pdGlhbGl6ZXIoYWN0aW9uc0ZhY3Rvcnk6ICgpID0+IEFjdGlvbltdKSB7XG4gICAgcmV0dXJuIEFwcEZyYW1lU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcbiAgICAgIGNvbnN0IHBhdGhzID0gaW5qZWN0UHJpbWFyeVBhdGhzKCk7XG4gICAgICBmdW5jdGlvbiBjb21wYXJlKHBhdGhzOiBzdHJpbmdbXSwgcGF5bG9hZD86IHN0cmluZ1tdKSB7XG4gICAgICAgIGlmIChwYXlsb2FkID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQuZXZlcnkoKHBhdGgsIGkpID0+IHBhdGhzW2ldID09PSBwYXRoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGlvbnMgPSBhY3Rpb25zRmFjdG9yeSgpO1xuXG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdzaWRlTmF2QWN0aW9ucycsIGFjdGlvbnMubWFwKGFjdGlvbiA9PiAoe1xuICAgICAgICAgIC4uLmFjdGlvbiwgZGlzYWJsZWQ6IGNvbXBhcmUocGF0aHMoKSwgYWN0aW9uPy5wYXlsb2FkKSxcbiAgICAgICAgfSkpKTtcbiAgICAgIH0sIHthbGxvd1NpZ25hbFdyaXRlczogdHJ1ZX0pO1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlTmF2aWdhdGVFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5OQVZJR0FURSwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuIChwYXlsb2FkOiBzdHJpbmdbXSB8IHtjb21tYW5kczogc3RyaW5nW10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXN9KSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQpKSB7XG4gICAgICAgICAgYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgICAgICAgICBhcHAucm91dGVyLm5hdmlnYXRlKHBheWxvYWQpLnRoZW4oKCkgPT4gYXBwLnNpZGVOYXYuY29sbGFwc2UoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgICAgICAgICBjb25zdCB7Y29tbWFuZHMsIGV4dHJhc30gPSBwYXlsb2FkO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ2NvbW1hbmRzJywgY29tbWFuZHMsIGV4dHJhcyk7XG4gICAgICAgICAgYXBwLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywgZXh0cmFzID8/IHt9KS50aGVuKCgpID0+IGFwcC5zaWRlTmF2LmNvbGxhcHNlKCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVOYXZpZ2F0ZVNpZGVBcHBFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5OQVZJR0FURV9TSURFX0FQUCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuIChwYXlsb2FkOiBzdHJpbmdbXSB8IHtjb21tYW5kczogc3RyaW5nW10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgJiB7ZXhwYW5kZWQ/OiBib29sZWFufX0pID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5yb3V0ZXIubmF2aWdhdGUocGF5bG9hZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge2NvbW1hbmRzLCBleHRyYXN9ID0gcGF5bG9hZDtcbiAgICAgICAgICBhcHAuc2lkZUFwcC5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIGV4dHJhcyA/PyB7fSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVNpZ25PdXRFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX09VVCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhdXRoLnNpZ25PdXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBhcHAuc2lkZU5hdi5jb2xsYXBzZSgpO1xuICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjgrXjgqTjg7PjgqLjgqbjg4jjgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlT3BlblNpZGVBcHBFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5PUEVOX1NJREVfQVBQLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhcHAuc2lkZUFwcC5leHBhbmQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgcHJvdmlkZUNsb3NlU2lkZUFwcEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChOYXZBY3Rpb25JZC5DTE9TRSwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVTaWduVXBXaXRoRW1haWxFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX1VQX1dJVEhfRU1BSUwsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEFwcEZyYW1lU3RvcmUpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUuZm9ybSgpLmdldFJhd1ZhbHVlKCkgYXMge2VtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmd9O1xuICAgICAgICBhcHAubG9hZGluZy5hd2FpdCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF1dGguY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGRhdGEuZW1haWwsIGRhdGEucGFzc3dvcmQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+aWsOimj+eZu+mMsuOBl+OBvuOBl+OBn+OAgicpO1xuICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aEVtYWlsRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEFwcEZyYW1lU3RvcmUuQWN0aW9uSWQuU0lHTl9JTl9XSVRIX0VNQUlMLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChBcHBGcmFtZVN0b3JlKTtcbiAgICAgIGNvbnN0IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLmZvcm0oKS5nZXRSYXdWYWx1ZSgpIGFzIHtlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nfTtcbiAgICAgICAgYXBwLmxvYWRpbmcuYXdhaXQoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBhdXRoLnNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKGRhdGEuZW1haWwsIGRhdGEucGFzc3dvcmQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aEdvb2dsZUVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChBcHBGcmFtZVN0b3JlLkFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgYXV0aC5zaWduSW5XaXRoR29vZ2xlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICBjb25zdCBfbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UubWF0Y2goL0hUVFAgQ2xvdWQgRnVuY3Rpb24gcmV0dXJuZWQgYW4gZXJyb3I6ICguKikgXFwoLiovKTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gX21lc3NhZ2UgPyBKU09OLnBhcnNlKF9tZXNzYWdlWzFdKS5lcnJvci5tZXNzYWdlIDogZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihtZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlU2lnbkluV2l0aFR3aXR0ZXJFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoQXBwRnJhbWVTdG9yZS5BY3Rpb25JZC5TSUdOX0lOX1dJVEhfVFdJVFRFUiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhdXRoLnNpZ25JbldpdGhUd2l0dGVyKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+ODreOCsOOCpOODs+OBl+OBvuOBl+OBnycpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZU5hdmlnYXRlRWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVTaWduT3V0RWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVPcGVuU2lkZUFwcEVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlQ2xvc2VTaWRlQXBwRWZmZWN0KCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVTaWduVXBXaXRoRW1haWxFZmZlY3QoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZVNpZ25JbldpdGhFbWFpbEVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlU2lnbkluV2l0aEdvb2dsZUVmZmVjdCgpLFxuICAgICAgQXBwRnJhbWVTdG9yZS5wcm92aWRlU2lnbkluV2l0aFR3aXR0ZXJFZmZlY3QoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZU5hdmlnYXRlU2lkZUFwcEVmZmVjdCgpLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHQoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZUFwcFNlcnZpY2VDb25maWcoKSxcbiAgICAgIEFwcEZyYW1lU3RvcmUucHJvdmlkZUljb25CdXR0b25NZW51QXNEZWZhdWx0Q29uZmlnKCksXG4gICAgICBBcHBGcmFtZVN0b3JlLnByb3ZpZGVEZWZhdWx0RWZmZWN0cygpLFxuICAgIF1cbiAgfVxuXG4gIHN0YXRpYyBpbmplY3ROYXZBY3Rpb25GYWN0b3J5KCkge1xuICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIGNvbnN0IG5hdmlnYXRlQWN0aW9uQnVpbGRlciA9IGNyZWF0ZUFjdGlvbihBcHBGcmFtZVN0b3JlLkFjdGlvbklkLk5BVklHQVRFLCB1bmRlZmluZWQsIHtcbiAgICAgIGljb246ICdvcGVuX2luX25ldycsXG4gICAgfSk7XG4gICAgcmV0dXJuIChjb21tYW5kczogYW55W10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIG5hdmlnYXRlQWN0aW9uQnVpbGRlci5jcmVhdGUoe1xuICAgICAgICBjb21tYW5kcyxcbiAgICAgICAgZXh0cmFzOiB7IHJlbGF0aXZlVG86IHJvdXRlLCByZXBsYWNlVXJsOiBoYXNOZXh0KCkgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gQXBwRnJhbWVTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmlzTG9hZGluZykpO1xuICByZWFkb25seSBpc1Byb2dyZXNzID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXNQcm9ncmVzcykpO1xuICByZWFkb25seSBpc0VudHJhbmNlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXNFbnRyYW5jZSkpO1xuICByZWFkb25seSBzaWRlQXBwT3BlbmVkID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2lkZUFwcE9wZW5lZCkpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRpdGxlKSk7XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5mb3JtKSk7XG4gIHJlYWRvbmx5IGVudHJhbmNlQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmVudHJhbmNlQWN0aW9ucykpO1xuICByZWFkb25seSBzaWRlTmF2QWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNpZGVOYXZBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHNpZGVOYXZCb3R0b21BY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2lkZU5hdkJvdHRvbUFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgc2lkZU5hdk1vZGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlTmF2TW9kZSkpO1xuICByZWFkb25seSBzaWRlTmF2TWVudVR5cGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlTmF2TWVudVR5cGUpKTtcbiAgcmVhZG9ubHkgc2lkZU5hdk1lbnVUaXRsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnNpZGVOYXZNZW51VGl0bGUpKTtcbiAgcmVhZG9ubHkgc2lkZUFwcE91dGxldE5hbWUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5zaWRlQXBwT3V0bGV0TmFtZSkpO1xuICByZWFkb25seSBmYWJBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZmFiQWN0aW9ucykpO1xuICByZWFkb25seSBmYWJIaWRlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZmFiSGlkZSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgQXBwRnJhbWVTdG9yZS5Jbml0aWFsaXplci5pbml0aWFsaXplU3RvcmUodGhpcyk7XG4gIH1cbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcmFtZXMtYXBwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZhYkZyYW1lLFxuICAgIExvYWRpbmdGcmFtZSxcbiAgICBTaWRlTmF2RnJhbWUsXG4gICAgUm91dGVyT3V0bGV0LFxuICAgIEVudHJhbmNlRnJhbWUsXG4gICAgLy8gRHJhd2VyRnJhbWVTdG9yZSxcbiAgICBEcmF3ZXJGcmFtZSxcbiAgICBCYWNrZ3JvdW5kVGVtcGxhdGVTdG9yZSxcbiAgICBQcm9ncmVzc0JhckZyYW1lLFxuXSxcbiAgdGVtcGxhdGU6IGBcbiAgPHJvdXRlci1vdXRsZXQvPlxuICBAaWYgKGlzUGxhdGZvcm1Ccm93c2VyKCkpIHtcbiAgICBAZGVmZXIge1xuICAgICAgPHRlbXBsYXRlcy1iYWNrZ3JvdW5kIGluamVjdGFibGUvPlxuICAgIH1cbiAgfVxuICA8ZnJhbWVzLWxvYWRpbmcgW2lzTG9hZGluZ109XCJzdG9yZS5pc0xvYWRpbmcoKVwiPlxuICAgIDxmcmFtZXMtcHJvZ3Jlc3MtYmFyIFtpc1Byb2dyZXNzXT1cInN0b3JlLmlzUHJvZ3Jlc3MoKVwiIFttb2RlXT1cIidxdWVyeSdcIj5cbiAgICAgIDxmcmFtZXMtZmFiXG4gICAgICAgIFthY3Rpb25zXT1cInN0b3JlLmZhYkFjdGlvbnMoKVwiXG4gICAgICAgIFtoaWRlXT1cInN0b3JlLmZhYkhpZGUoKVwiXG4gICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxmcmFtZXMtZW50cmFuY2VcbiAgICAgICAgICBbaXNFbnRyYW5jZV09XCJzdG9yZS5pc0VudHJhbmNlKClcIlxuICAgICAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICAgICAgW3RpdGxlXT1cInN0b3JlLnRpdGxlKClcIlxuICAgICAgICAgIFthY3Rpb25zXT1cInN0b3JlLmVudHJhbmNlQWN0aW9ucygpXCJcbiAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGZyYW1lcy1kcmF3ZXJcbiAgICAgICAgICAgIFtvcGVuZWRdPVwic3RvcmUuc2lkZUFwcE9wZW5lZCgpXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCInZW5kJ1wiXG4gICAgICAgICAgICBbaGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxmcmFtZXMtc2lkZS1uYXZcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwic3RvcmUuc2lkZU5hdkFjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtib3R0b21BY3Rpb25zXT1cInN0b3JlLnNpZGVOYXZCb3R0b21BY3Rpb25zKClcIlxuICAgICAgICAgICAgICBbbW9kZV09XCJzdG9yZS5zaWRlTmF2TW9kZSgpXCJcbiAgICAgICAgICAgICAgW21lbnVUeXBlXT1cInN0b3JlLnNpZGVOYXZNZW51VHlwZSgpXCJcbiAgICAgICAgICAgICAgW21lbnVUaXRsZV09XCJzdG9yZS5zaWRlTmF2TWVudVRpdGxlKClcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgICBjb250ZW50c1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cm91dGVyLW91dGxldCBjb250ZW50cy8+XG4gICAgICAgICAgICA8L2ZyYW1lcy1zaWRlLW5hdj5cbiAgICAgICAgICAgIDxkaXYgZHJhd2VyIHN0eWxlPVwid2lkdGg6IHZhcigtLXBhZ2Utd2lkdGgtbHYxKTtoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0IFtuYW1lXT1cInN0b3JlLnNpZGVBcHBPdXRsZXROYW1lKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mcmFtZXMtZHJhd2VyPlxuICAgICAgICA8L2ZyYW1lcy1lbnRyYW5jZT5cbiAgICAgIDwvZnJhbWVzLWZhYj5cbiAgICA8L2ZyYW1lcy1wcm9ncmVzcy1iYXI+XG4gIDwvZnJhbWVzLWxvYWRpbmc+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9hcHAuZnJhbWUuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIEFwcEZyYW1lU3RvcmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZyYW1lIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoQXBwRnJhbWVTdG9yZSk7XG4gIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIHByb3RlY3RlZCBpc1BsYXRmb3JtU2VydmVyKCkge1xuICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNQbGF0Zm9ybUJyb3dzZXIoKSB7XG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cbn1cbiJdfQ==
|