valtech-components 2.0.929 → 2.0.931
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/esm2022/lib/components/atoms/pattern/pattern.component.mjs +15 -11
- package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs +5 -3
- package/esm2022/lib/services/auth/auth.service.mjs +26 -2
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +42 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/pattern/pattern.component.d.ts +1 -0
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +2 -2
- package/lib/components/atoms/text/text.component.d.ts +1 -1
- package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +1 -1
- package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +2 -2
- package/lib/components/molecules/features-list/features-list.component.d.ts +1 -1
- package/lib/components/organisms/article/article.component.d.ts +4 -4
- package/lib/components/organisms/landing-steps/landing-steps.component.d.ts +1 -1
- package/lib/services/auth/auth.service.d.ts +1 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, computed, effect, Input, signal } from '@angular/core';
|
|
2
|
+
import { Component, computed, effect, inject, Input, NgZone, signal } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { inject } from '@angular/core';
|
|
5
4
|
import { generatePatternTiles, generateRandomTile, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, renderPatternSvgInner, } from './motifs';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
/**
|
|
@@ -65,6 +64,7 @@ export class PatternComponent {
|
|
|
65
64
|
}
|
|
66
65
|
constructor() {
|
|
67
66
|
this.sanitizer = inject(DomSanitizer);
|
|
67
|
+
this.ngZone = inject(NgZone);
|
|
68
68
|
this.cols = signal(12);
|
|
69
69
|
this.rows = signal(4);
|
|
70
70
|
this.seed = signal(this.randomSeed());
|
|
@@ -115,6 +115,8 @@ export class PatternComponent {
|
|
|
115
115
|
// con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
|
|
116
116
|
// Si `tilesPerTick > 0` y < total tiles, hace staggered (reemplaza solo
|
|
117
117
|
// N tiles en vez de toda la grid). Default tilesPerTick=0 → reseed total.
|
|
118
|
+
// El setInterval corre FUERA de Zone.js para no disparar un CD completo
|
|
119
|
+
// de toda la app en cada tick — solo val-pattern se actualiza vía señales.
|
|
118
120
|
effect(onCleanup => {
|
|
119
121
|
const isAnimated = this.animated();
|
|
120
122
|
const interval = this.reshuffleInterval();
|
|
@@ -124,14 +126,16 @@ export class PatternComponent {
|
|
|
124
126
|
this.timer = undefined;
|
|
125
127
|
if (!isAnimated)
|
|
126
128
|
return;
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
this.ngZone.runOutsideAngular(() => {
|
|
130
|
+
this.timer = setInterval(() => {
|
|
131
|
+
if (perTick > 0) {
|
|
132
|
+
this.mutateRandomTiles(perTick);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.seed.set(this.randomSeed());
|
|
136
|
+
}
|
|
137
|
+
}, interval);
|
|
138
|
+
});
|
|
135
139
|
onCleanup(() => {
|
|
136
140
|
if (this.timer) {
|
|
137
141
|
clearInterval(this.timer);
|
|
@@ -187,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
187
191
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
188
192
|
type: Input
|
|
189
193
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUtyQixxQkFBcUIsR0FDdEIsTUFBTSxVQUFVLENBQUM7O0FBR2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFvQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIElucHV0LCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVBhdHRlcm5UaWxlcyxcbiAgZ2VuZXJhdGVSYW5kb21UaWxlLFxuICBQQVRURVJOX1BBTEVUVEVTLFxuICBQQVRURVJOX1NUWUxFX0NPTkZJR1MsXG4gIFBhdHRlcm5EZW5zaXR5Q29uZmlnLFxuICBQYXR0ZXJuUGFsZXR0ZUtleSxcbiAgUGF0dGVyblN0eWxlS2V5LFxuICBQYXR0ZXJuVGlsZSxcbiAgcmVuZGVyUGF0dGVyblN2Z0lubmVyLFxufSBmcm9tICcuL21vdGlmcyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBgdmFsLXBhdHRlcm5gXG4gKlxuICogQ29tcG9uZW50ZSBkZSBmb25kbyBnZW9tw6l0cmljbyBpbnNwaXJhZG8gZW4gZWwgc2lzdGVtYSBWYWx0ZWNoLiBSZW5kZXJpemEgdW5cbiAqIGdyaWQgZGUgdGlsZXMgMTAww5cxMDAgY29uIG1vdGlmcyAoY2hldnJvbnMsIHRyaWFuZ2xlcywgZGlhbW9uZHMsIGFycm93cykgZW5cbiAqIHVuIFNWRyBpbmxpbmUuIERldGVybWluaXN0YSB2w61hIGBzZWVkYCBvIGFuaW1hZG8gdsOtYSBgcmVzaHVmZmxlYC5cbiAqXG4gKiBDZXJvIGRlcGVuZGVuY2lhcyBleHRlcm5hcyDigJQgdG9kbyBTVkcuXG4gKlxuICogQGV4YW1wbGUgQ29tbyBmb25kbyBkZSBjYXJkIChDU1MgYWJzb2x1dGUpOlxuICogYGBgc2Nzc1xuICogLmNhcmQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAqIC5jYXJkIHZhbC1wYXR0ZXJuIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgei1pbmRleDogMDsgb3BhY2l0eTogMC40OyB9XG4gKiAuY2FyZCAuY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgfVxuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAqICAgPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiA2LCByb3dzOiAzLCBzZWVkOiA0MiB9XCIgLz5cbiAqICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5UdSBjb250ZW5pZG8gYXF1w608L2Rpdj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ29tbyBiYWNrZ3JvdW5kIGFuaW1hZG8gKGhlcm8vbG9naW4pOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdsYXZlbmRlcicsIGNvbHM6IDE2LCByb3dzOiA4LCBhbmltYXRlZDogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGF0dGVybicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwidmFsLXBhdHRlcm5cIiBbaW5uZXJIVE1MXT1cInN2Z0h0bWwoKVwiPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICAudmFsLXBhdHRlcm4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAvKiBTcGVjaWZpY2l0eSAwLDIsMCDigJQgYmVhdHMgVUEgZGVmYXVsdHMgcGFyYSBTVkcuIFdpZHRoL2hlaWdodCBmdWVyemFuXG4gICAgICAgKiBmaWxsIGRlbCBjb250YWluZXIuIHByZXNlcnZlQXNwZWN0UmF0aW89XCJzbGljZVwiIGVuIGVsIHZpZXdCb3ggaGFjZSBlbFxuICAgICAgICogY3JvcC9jb3Zlci4gU2luIGVzdG8sIGVsIFNWRyBjYWUgYSBzdSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIGRlbFxuICAgICAgICogdmlld0JveCB5IGRlamEgZnJhbmphcyBjdWFuZG8gZWwgY29udGFpbmVyIG5vIG1hdGNoZWEgKGVqLiBtb2JpbGVcbiAgICAgICAqIGNvbiBjb2xzL3Jvd3Mgd2lkZS1hc3BlY3QpLiAqL1xuICAgICAgLnZhbC1wYXR0ZXJuIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhdHRlcm5Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29scyA9IHNpZ25hbCgxMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93cyA9IHNpZ25hbCg0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWVkID0gc2lnbmFsKHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWxldHRlUmVmID0gc2lnbmFsPHN0cmluZ1tdPihQQVRURVJOX1BBTEVUVEVTLnB1cnBsZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hldnJvbkRlbnNpdHkgPSBzaWduYWwoMC41NSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF0dGVyblN0eWxlID0gc2lnbmFsPFBhdHRlcm5TdHlsZUtleSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVzZXJ2ZUFzcGVjdCA9IHNpZ25hbDwnc2xpY2UnIHwgJ21lZXQnPignc2xpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaHVmZmxlSW50ZXJ2YWwgPSBzaWduYWwoODAwMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGlsZXNQZXJUaWNrID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVSb3RhdGlvbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJpdmF0ZSB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFBhdHRlcm5NZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBpZiAodmFsdWUuY29scyAhPT0gdW5kZWZpbmVkKSB0aGlzLmNvbHMuc2V0KE1hdGgubWF4KDEsIHZhbHVlLmNvbHMpKTtcbiAgICBpZiAodmFsdWUucm93cyAhPT0gdW5kZWZpbmVkKSB0aGlzLnJvd3Muc2V0KE1hdGgubWF4KDEsIHZhbHVlLnJvd3MpKTtcbiAgICBpZiAodmFsdWUuc2VlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLnNlZWQuc2V0KHZhbHVlLnNlZWQpO1xuICAgIGlmICh2YWx1ZS5zdHlsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLnBhdHRlcm5TdHlsZS5zZXQodmFsdWUuc3R5bGUpO1xuICAgIGlmICh2YWx1ZS5jaGV2cm9uRGVuc2l0eSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnN0eWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hldnJvbkRlbnNpdHkuc2V0KE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHZhbHVlLmNoZXZyb25EZW5zaXR5KSkpO1xuICAgIH1cbiAgICBpZiAodmFsdWUucHJlc2VydmVBc3BlY3QgIT09IHVuZGVmaW5lZCkgdGhpcy5wcmVzZXJ2ZUFzcGVjdC5zZXQodmFsdWUucHJlc2VydmVBc3BlY3QpO1xuICAgIGlmICh2YWx1ZS5wYWxldHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGFsZXR0ZVJlZi5zZXQodGhpcy5yZXNvbHZlUGFsZXR0ZSh2YWx1ZS5wYWxldHRlKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnJlc2h1ZmZsZUludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5yZXNodWZmbGVJbnRlcnZhbC5zZXQodmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudGlsZXNQZXJUaWNrICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudGlsZXNQZXJUaWNrID49IDApIHtcbiAgICAgIHRoaXMudGlsZXNQZXJUaWNrLnNldChNYXRoLmZsb29yKHZhbHVlLnRpbGVzUGVyVGljaykpO1xuICAgIH1cbiAgICBpZiAodmFsdWUuYW5pbWF0ZWQgIT09IHVuZGVmaW5lZCkgdGhpcy5hbmltYXRlZC5zZXQoISF2YWx1ZS5hbmltYXRlZCk7XG4gICAgaWYgKHZhbHVlLnRpbGVSb3RhdGlvbiAhPT0gdW5kZWZpbmVkKSB0aGlzLnRpbGVSb3RhdGlvbi5zZXQoISF2YWx1ZS50aWxlUm90YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpbGVzIHNpZ25hbCDigJQgbXV0YWJsZS4gU2UgcmVnZW5lcmEgY29tcGxldGEgY3VhbmRvIGNhbWJpYSBzZWVkL2NvbHMvcm93cy9cbiAgICogcGFsZXR0ZS9kZW5zaXR5LiBFbiBtb2RvIGFuaW1hdGVkLCB0aWxlcyBpbmRpdmlkdWFsZXMgc2Ugc29icmVzY3JpYmVuIHNpblxuICAgKiB0b2NhciBlbCByZXN0byAoZWZlY3RvIHN0YWdnZXJlZCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzID0gc2lnbmFsPFBhdHRlcm5UaWxlW10+KFtdKTtcblxuICAvKiogU1ZHIGNvbXBsZXRvIGNvbW8gc3RyaW5nIHNhbml0aXplZCBwYXJhIGBbaW5uZXJIVE1MXWAuICovXG4gIHJlYWRvbmx5IHN2Z0h0bWwgPSBjb21wdXRlZDxTYWZlSHRtbD4oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGlubmVyID0gcmVuZGVyUGF0dGVyblN2Z0lubmVyKHRoaXMudGlsZXMoKSwgY29scywgcGFsZXR0ZVswXSEpO1xuICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMucHJlc2VydmVBc3BlY3QoKSA9PT0gJ21lZXQnID8gJ3hNaWRZTWlkIG1lZXQnIDogJ3hNaWRZTWlkIHNsaWNlJztcbiAgICAvLyB3aWR0aC9oZWlnaHQ9XCIxMDAlXCIgY29tbyBBVFJJQlVUT1MgKG5vIHNvbG8gQ1NTKSDigJQgYWxndW5vcyBicm93c2Vyc1xuICAgIC8vIChTYWZhcmkvaU9TKSBpZ25vcmFuIENTUyBoZWlnaHQgZW4gU1ZHIHNpbiBhdHJpYnV0b3MgeSBjYWVuIGFsIGludHJpbnNpY1xuICAgIC8vIGFzcGVjdCBkZWwgdmlld0JveCwgZGVqYW5kbyBmcmFuamFzIHZhY8OtYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBub1xuICAgIC8vIG1hdGNoZWEgZWwgcmF0aW8uXG4gICAgY29uc3Qgc3ZnID0gYDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgJHtjb2xzICogMTAwfSAke3Jvd3MgKiAxMDB9XCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIiR7YXNwZWN0fVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+JHtpbm5lcn08L3N2Zz5gO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWdlbmVyYSBncmlkIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWFuIHByb3BzIGVzdHJ1Y3R1cmFsZXMgKGNvbHMvcm93cy9cbiAgICAvLyBwYWxldHRlL2RlbnNpdHkvc2VlZCkuIEVsIHNlZWQgc29sbyBjYW1iaWEgZXhwbMOtY2l0YW1lbnRlIHZpYSBwcm9wcyBvXG4gICAgLy8gbW91bnQgaW5pY2lhbCDigJQgTk8gc2UgbXV0YSBlbiBtb2RvIGFuaW1hdGVkLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZWAgcmVxdWVyaWRvIGVuIEFuZ3VsYXIgMTg6IGVzY3JpYmltb3MgYSBgdGlsZXNgXG4gICAgLy8gc2lnbmFsIGRlbnRybyBkZWwgZWZmZWN0IChjb25zdW1pZG8gcG9yIHN2Z0h0bWwgY29tcHV0ZWQpLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgY29scyA9IHRoaXMuY29scygpO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlZWQgPSB0aGlzLnNlZWQoKTtcbiAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgICAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMucGF0dGVyblN0eWxlKCk7XG4gICAgICAgIGNvbnN0IHRpbGVSb3RhdGlvbiA9IHRoaXMudGlsZVJvdGF0aW9uKCk7XG4gICAgICAgIHRoaXMudGlsZXMuc2V0KFxuICAgICAgICAgIGdlbmVyYXRlUGF0dGVyblRpbGVzKHsgY29scywgcm93cywgc2VlZCwgcGFsZXR0ZSwgY2hldnJvbkRlbnNpdHk6IGRlbnNpdHksIHN0eWxlLCB0aWxlUm90YXRpb24gfSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gTW9kbyBhbmltYXRlZDogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgIG1zIHJlZ2VuZXJhIGVsIGdyaWQgY29tcGxldG9cbiAgICAvLyBjb24gdW4gc2VlZCBudWV2by4gVmlzdWFsbWVudGU6IGVsIHBhdHLDs24gY2FtYmlhIGRlIHZleiBlbiBjdWFuZG8uXG4gICAgLy8gU2kgYHRpbGVzUGVyVGljayA+IDBgIHkgPCB0b3RhbCB0aWxlcywgaGFjZSBzdGFnZ2VyZWQgKHJlZW1wbGF6YSBzb2xvXG4gICAgLy8gTiB0aWxlcyBlbiB2ZXogZGUgdG9kYSBsYSBncmlkKS4gRGVmYXVsdCB0aWxlc1BlclRpY2s9MCDihpIgcmVzZWVkIHRvdGFsLlxuICAgIGVmZmVjdChvbkNsZWFudXAgPT4ge1xuICAgICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMuYW5pbWF0ZWQoKTtcbiAgICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5yZXNodWZmbGVJbnRlcnZhbCgpO1xuICAgICAgY29uc3QgcGVyVGljayA9IHRoaXMudGlsZXNQZXJUaWNrKCk7XG4gICAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoIWlzQW5pbWF0ZWQpIHJldHVybjtcbiAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChwZXJUaWNrID4gMCkge1xuICAgICAgICAgIHRoaXMubXV0YXRlUmFuZG9tVGlsZXMocGVyVGljayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWVkLnNldCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGludGVydmFsKTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEgYGNvdW50YCB0aWxlcyByYW5kb20gZGVsIGdyaWQgYWN0dWFsIGNvbiB0aWxlcyBudWV2b3MgZ2VuZXJhZG9zLlxuICAgKiBVc2FkbyBwYXJhIHN0YWdnZXJlZCByZXNodWZmbGUgKG9wdC1pbiB2aWEgYHRpbGVzUGVyVGljayA+IDBgKS5cbiAgICovXG4gIHByaXZhdGUgbXV0YXRlUmFuZG9tVGlsZXMoY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnRpbGVzKCk7XG4gICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgbmV4dCA9IFsuLi5jdXJyZW50XTtcbiAgICBjb25zdCBwYWxldHRlID0gdGhpcy5wYWxldHRlUmVmKCk7XG4gICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMucGF0dGVyblN0eWxlKCk7XG4gICAgY29uc3QgZGVuc2l0eUNvbmZpZzogUGF0dGVybkRlbnNpdHlDb25maWcgfCB1bmRlZmluZWQgPSBzdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tzdHlsZV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgcm90YXRlID0gdGhpcy50aWxlUm90YXRpb24oKTtcbiAgICBjb25zdCBST1RTOiBBcnJheTwwIHwgOTAgfCAxODAgfCAyNzA+ID0gWzAsIDkwLCAxODAsIDI3MF07XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBjb3VudDsgbisrKSB7XG4gICAgICBjb25zdCBpZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZXh0Lmxlbmd0aCk7XG4gICAgICBjb25zdCB0aWxlID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHksIE1hdGgucmFuZG9tLCBkZW5zaXR5Q29uZmlnKTtcbiAgICAgIGlmIChyb3RhdGUpIHRpbGUucm90ID0gUk9UU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0KV07XG4gICAgICBuZXh0W2lkeF0gPSB0aWxlO1xuICAgIH1cbiAgICB0aGlzLnRpbGVzLnNldChuZXh0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUGFsZXR0ZShwOiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHApKSB7XG4gICAgICAvLyBBY2VwdGEgYXJyYXlzIGRlIGN1YWxxdWllciBsb25naXR1ZCDiiaUyOyB0aWxlIGNvbnRyYXN0IGxvZ2ljIHVzYSDDrW5kaWNlcy5cbiAgICAgIHJldHVybiBwLmxlbmd0aCA+PSAyID8gcCA6IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICAgIH1cbiAgICByZXR1cm4gUEFUVEVSTl9QQUxFVFRFU1twXSA/PyBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZG9tU2VlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxXzAwMF8wMDApO1xuICB9XG59XG4iXX0=
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUtyQixxQkFBcUIsR0FDdEIsTUFBTSxVQUFVLENBQUM7O0FBR2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFvQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWtCM0IsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FB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LGdCQUFnQjtrQkFuQzVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJEQUEyRDt3REFpRHhELEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVBhdHRlcm5UaWxlcyxcbiAgZ2VuZXJhdGVSYW5kb21UaWxlLFxuICBQQVRURVJOX1BBTEVUVEVTLFxuICBQQVRURVJOX1NUWUxFX0NPTkZJR1MsXG4gIFBhdHRlcm5EZW5zaXR5Q29uZmlnLFxuICBQYXR0ZXJuUGFsZXR0ZUtleSxcbiAgUGF0dGVyblN0eWxlS2V5LFxuICBQYXR0ZXJuVGlsZSxcbiAgcmVuZGVyUGF0dGVyblN2Z0lubmVyLFxufSBmcm9tICcuL21vdGlmcyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBgdmFsLXBhdHRlcm5gXG4gKlxuICogQ29tcG9uZW50ZSBkZSBmb25kbyBnZW9tw6l0cmljbyBpbnNwaXJhZG8gZW4gZWwgc2lzdGVtYSBWYWx0ZWNoLiBSZW5kZXJpemEgdW5cbiAqIGdyaWQgZGUgdGlsZXMgMTAww5cxMDAgY29uIG1vdGlmcyAoY2hldnJvbnMsIHRyaWFuZ2xlcywgZGlhbW9uZHMsIGFycm93cykgZW5cbiAqIHVuIFNWRyBpbmxpbmUuIERldGVybWluaXN0YSB2w61hIGBzZWVkYCBvIGFuaW1hZG8gdsOtYSBgcmVzaHVmZmxlYC5cbiAqXG4gKiBDZXJvIGRlcGVuZGVuY2lhcyBleHRlcm5hcyDigJQgdG9kbyBTVkcuXG4gKlxuICogQGV4YW1wbGUgQ29tbyBmb25kbyBkZSBjYXJkIChDU1MgYWJzb2x1dGUpOlxuICogYGBgc2Nzc1xuICogLmNhcmQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAqIC5jYXJkIHZhbC1wYXR0ZXJuIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgei1pbmRleDogMDsgb3BhY2l0eTogMC40OyB9XG4gKiAuY2FyZCAuY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgfVxuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAqICAgPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiA2LCByb3dzOiAzLCBzZWVkOiA0MiB9XCIgLz5cbiAqICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5UdSBjb250ZW5pZG8gYXF1w608L2Rpdj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ29tbyBiYWNrZ3JvdW5kIGFuaW1hZG8gKGhlcm8vbG9naW4pOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdsYXZlbmRlcicsIGNvbHM6IDE2LCByb3dzOiA4LCBhbmltYXRlZDogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGF0dGVybicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwidmFsLXBhdHRlcm5cIiBbaW5uZXJIVE1MXT1cInN2Z0h0bWwoKVwiPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICAudmFsLXBhdHRlcm4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAvKiBTcGVjaWZpY2l0eSAwLDIsMCDigJQgYmVhdHMgVUEgZGVmYXVsdHMgcGFyYSBTVkcuIFdpZHRoL2hlaWdodCBmdWVyemFuXG4gICAgICAgKiBmaWxsIGRlbCBjb250YWluZXIuIHByZXNlcnZlQXNwZWN0UmF0aW89XCJzbGljZVwiIGVuIGVsIHZpZXdCb3ggaGFjZSBlbFxuICAgICAgICogY3JvcC9jb3Zlci4gU2luIGVzdG8sIGVsIFNWRyBjYWUgYSBzdSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIGRlbFxuICAgICAgICogdmlld0JveCB5IGRlamEgZnJhbmphcyBjdWFuZG8gZWwgY29udGFpbmVyIG5vIG1hdGNoZWEgKGVqLiBtb2JpbGVcbiAgICAgICAqIGNvbiBjb2xzL3Jvd3Mgd2lkZS1hc3BlY3QpLiAqL1xuICAgICAgLnZhbC1wYXR0ZXJuIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhdHRlcm5Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29scyA9IHNpZ25hbCgxMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93cyA9IHNpZ25hbCg0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWVkID0gc2lnbmFsKHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWxldHRlUmVmID0gc2lnbmFsPHN0cmluZ1tdPihQQVRURVJOX1BBTEVUVEVTLnB1cnBsZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hldnJvbkRlbnNpdHkgPSBzaWduYWwoMC41NSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF0dGVyblN0eWxlID0gc2lnbmFsPFBhdHRlcm5TdHlsZUtleSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVzZXJ2ZUFzcGVjdCA9IHNpZ25hbDwnc2xpY2UnIHwgJ21lZXQnPignc2xpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaHVmZmxlSW50ZXJ2YWwgPSBzaWduYWwoODAwMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGlsZXNQZXJUaWNrID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVSb3RhdGlvbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJpdmF0ZSB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFBhdHRlcm5NZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBpZiAodmFsdWUuY29scyAhPT0gdW5kZWZpbmVkKSB0aGlzLmNvbHMuc2V0KE1hdGgubWF4KDEsIHZhbHVlLmNvbHMpKTtcbiAgICBpZiAodmFsdWUucm93cyAhPT0gdW5kZWZpbmVkKSB0aGlzLnJvd3Muc2V0KE1hdGgubWF4KDEsIHZhbHVlLnJvd3MpKTtcbiAgICBpZiAodmFsdWUuc2VlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLnNlZWQuc2V0KHZhbHVlLnNlZWQpO1xuICAgIGlmICh2YWx1ZS5zdHlsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLnBhdHRlcm5TdHlsZS5zZXQodmFsdWUuc3R5bGUpO1xuICAgIGlmICh2YWx1ZS5jaGV2cm9uRGVuc2l0eSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnN0eWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hldnJvbkRlbnNpdHkuc2V0KE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHZhbHVlLmNoZXZyb25EZW5zaXR5KSkpO1xuICAgIH1cbiAgICBpZiAodmFsdWUucHJlc2VydmVBc3BlY3QgIT09IHVuZGVmaW5lZCkgdGhpcy5wcmVzZXJ2ZUFzcGVjdC5zZXQodmFsdWUucHJlc2VydmVBc3BlY3QpO1xuICAgIGlmICh2YWx1ZS5wYWxldHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGFsZXR0ZVJlZi5zZXQodGhpcy5yZXNvbHZlUGFsZXR0ZSh2YWx1ZS5wYWxldHRlKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnJlc2h1ZmZsZUludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5yZXNodWZmbGVJbnRlcnZhbC5zZXQodmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudGlsZXNQZXJUaWNrICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudGlsZXNQZXJUaWNrID49IDApIHtcbiAgICAgIHRoaXMudGlsZXNQZXJUaWNrLnNldChNYXRoLmZsb29yKHZhbHVlLnRpbGVzUGVyVGljaykpO1xuICAgIH1cbiAgICBpZiAodmFsdWUuYW5pbWF0ZWQgIT09IHVuZGVmaW5lZCkgdGhpcy5hbmltYXRlZC5zZXQoISF2YWx1ZS5hbmltYXRlZCk7XG4gICAgaWYgKHZhbHVlLnRpbGVSb3RhdGlvbiAhPT0gdW5kZWZpbmVkKSB0aGlzLnRpbGVSb3RhdGlvbi5zZXQoISF2YWx1ZS50aWxlUm90YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpbGVzIHNpZ25hbCDigJQgbXV0YWJsZS4gU2UgcmVnZW5lcmEgY29tcGxldGEgY3VhbmRvIGNhbWJpYSBzZWVkL2NvbHMvcm93cy9cbiAgICogcGFsZXR0ZS9kZW5zaXR5LiBFbiBtb2RvIGFuaW1hdGVkLCB0aWxlcyBpbmRpdmlkdWFsZXMgc2Ugc29icmVzY3JpYmVuIHNpblxuICAgKiB0b2NhciBlbCByZXN0byAoZWZlY3RvIHN0YWdnZXJlZCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzID0gc2lnbmFsPFBhdHRlcm5UaWxlW10+KFtdKTtcblxuICAvKiogU1ZHIGNvbXBsZXRvIGNvbW8gc3RyaW5nIHNhbml0aXplZCBwYXJhIGBbaW5uZXJIVE1MXWAuICovXG4gIHJlYWRvbmx5IHN2Z0h0bWwgPSBjb21wdXRlZDxTYWZlSHRtbD4oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGlubmVyID0gcmVuZGVyUGF0dGVyblN2Z0lubmVyKHRoaXMudGlsZXMoKSwgY29scywgcGFsZXR0ZVswXSEpO1xuICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMucHJlc2VydmVBc3BlY3QoKSA9PT0gJ21lZXQnID8gJ3hNaWRZTWlkIG1lZXQnIDogJ3hNaWRZTWlkIHNsaWNlJztcbiAgICAvLyB3aWR0aC9oZWlnaHQ9XCIxMDAlXCIgY29tbyBBVFJJQlVUT1MgKG5vIHNvbG8gQ1NTKSDigJQgYWxndW5vcyBicm93c2Vyc1xuICAgIC8vIChTYWZhcmkvaU9TKSBpZ25vcmFuIENTUyBoZWlnaHQgZW4gU1ZHIHNpbiBhdHJpYnV0b3MgeSBjYWVuIGFsIGludHJpbnNpY1xuICAgIC8vIGFzcGVjdCBkZWwgdmlld0JveCwgZGVqYW5kbyBmcmFuamFzIHZhY8OtYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBub1xuICAgIC8vIG1hdGNoZWEgZWwgcmF0aW8uXG4gICAgY29uc3Qgc3ZnID0gYDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgJHtjb2xzICogMTAwfSAke3Jvd3MgKiAxMDB9XCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIiR7YXNwZWN0fVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+JHtpbm5lcn08L3N2Zz5gO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWdlbmVyYSBncmlkIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWFuIHByb3BzIGVzdHJ1Y3R1cmFsZXMgKGNvbHMvcm93cy9cbiAgICAvLyBwYWxldHRlL2RlbnNpdHkvc2VlZCkuIEVsIHNlZWQgc29sbyBjYW1iaWEgZXhwbMOtY2l0YW1lbnRlIHZpYSBwcm9wcyBvXG4gICAgLy8gbW91bnQgaW5pY2lhbCDigJQgTk8gc2UgbXV0YSBlbiBtb2RvIGFuaW1hdGVkLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZWAgcmVxdWVyaWRvIGVuIEFuZ3VsYXIgMTg6IGVzY3JpYmltb3MgYSBgdGlsZXNgXG4gICAgLy8gc2lnbmFsIGRlbnRybyBkZWwgZWZmZWN0IChjb25zdW1pZG8gcG9yIHN2Z0h0bWwgY29tcHV0ZWQpLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgY29scyA9IHRoaXMuY29scygpO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlZWQgPSB0aGlzLnNlZWQoKTtcbiAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgICAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMucGF0dGVyblN0eWxlKCk7XG4gICAgICAgIGNvbnN0IHRpbGVSb3RhdGlvbiA9IHRoaXMudGlsZVJvdGF0aW9uKCk7XG4gICAgICAgIHRoaXMudGlsZXMuc2V0KFxuICAgICAgICAgIGdlbmVyYXRlUGF0dGVyblRpbGVzKHsgY29scywgcm93cywgc2VlZCwgcGFsZXR0ZSwgY2hldnJvbkRlbnNpdHk6IGRlbnNpdHksIHN0eWxlLCB0aWxlUm90YXRpb24gfSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gTW9kbyBhbmltYXRlZDogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgIG1zIHJlZ2VuZXJhIGVsIGdyaWQgY29tcGxldG9cbiAgICAvLyBjb24gdW4gc2VlZCBudWV2by4gVmlzdWFsbWVudGU6IGVsIHBhdHLDs24gY2FtYmlhIGRlIHZleiBlbiBjdWFuZG8uXG4gICAgLy8gU2kgYHRpbGVzUGVyVGljayA+IDBgIHkgPCB0b3RhbCB0aWxlcywgaGFjZSBzdGFnZ2VyZWQgKHJlZW1wbGF6YSBzb2xvXG4gICAgLy8gTiB0aWxlcyBlbiB2ZXogZGUgdG9kYSBsYSBncmlkKS4gRGVmYXVsdCB0aWxlc1BlclRpY2s9MCDihpIgcmVzZWVkIHRvdGFsLlxuICAgIC8vIEVsIHNldEludGVydmFsIGNvcnJlIEZVRVJBIGRlIFpvbmUuanMgcGFyYSBubyBkaXNwYXJhciB1biBDRCBjb21wbGV0b1xuICAgIC8vIGRlIHRvZGEgbGEgYXBwIGVuIGNhZGEgdGljayDigJQgc29sbyB2YWwtcGF0dGVybiBzZSBhY3R1YWxpemEgdsOtYSBzZcOxYWxlcy5cbiAgICBlZmZlY3Qob25DbGVhbnVwID0+IHtcbiAgICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLmFuaW1hdGVkKCk7XG4gICAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMucmVzaHVmZmxlSW50ZXJ2YWwoKTtcbiAgICAgIGNvbnN0IHBlclRpY2sgPSB0aGlzLnRpbGVzUGVyVGljaygpO1xuICAgICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCFpc0FuaW1hdGVkKSByZXR1cm47XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHBlclRpY2sgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0ZVJhbmRvbVRpbGVzKHBlclRpY2spO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlZWQuc2V0KHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGludGVydmFsKTtcbiAgICAgIH0pO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBgY291bnRgIHRpbGVzIHJhbmRvbSBkZWwgZ3JpZCBhY3R1YWwgY29uIHRpbGVzIG51ZXZvcyBnZW5lcmFkb3MuXG4gICAqIFVzYWRvIHBhcmEgc3RhZ2dlcmVkIHJlc2h1ZmZsZSAob3B0LWluIHZpYSBgdGlsZXNQZXJUaWNrID4gMGApLlxuICAgKi9cbiAgcHJpdmF0ZSBtdXRhdGVSYW5kb21UaWxlcyhjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMudGlsZXMoKTtcbiAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBuZXh0ID0gWy4uLmN1cnJlbnRdO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5wYXR0ZXJuU3R5bGUoKTtcbiAgICBjb25zdCBkZW5zaXR5Q29uZmlnOiBQYXR0ZXJuRGVuc2l0eUNvbmZpZyB8IHVuZGVmaW5lZCA9IHN0eWxlID8gUEFUVEVSTl9TVFlMRV9DT05GSUdTW3N0eWxlXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByb3RhdGUgPSB0aGlzLnRpbGVSb3RhdGlvbigpO1xuICAgIGNvbnN0IFJPVFM6IEFycmF5PDAgfCA5MCB8IDE4MCB8IDI3MD4gPSBbMCwgOTAsIDE4MCwgMjcwXTtcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IGNvdW50OyBuKyspIHtcbiAgICAgIGNvbnN0IGlkeCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5leHQubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHRpbGUgPSBnZW5lcmF0ZVJhbmRvbVRpbGUocGFsZXR0ZSwgZGVuc2l0eSwgTWF0aC5yYW5kb20sIGRlbnNpdHlDb25maWcpO1xuICAgICAgaWYgKHJvdGF0ZSkgdGlsZS5yb3QgPSBST1RTW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpXTtcbiAgICAgIG5leHRbaWR4XSA9IHRpbGU7XG4gICAgfVxuICAgIHRoaXMudGlsZXMuc2V0KG5leHQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQYWxldHRlKHA6IFBhdHRlcm5QYWxldHRlS2V5IHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocCkpIHtcbiAgICAgIC8vIEFjZXB0YSBhcnJheXMgZGUgY3VhbHF1aWVyIGxvbmdpdHVkIOKJpTI7IHRpbGUgY29udHJhc3QgbG9naWMgdXNhIMOtbmRpY2VzLlxuICAgICAgcmV0dXJuIHAubGVuZ3RoID49IDIgPyBwIDogUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGU7XG4gICAgfVxuICAgIHJldHVybiBQQVRURVJOX1BBTEVUVEVTW3BdID8/IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb21TZWVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDFfMDAwXzAwMCk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs
CHANGED
|
@@ -6,6 +6,7 @@ import { ComponentStates, InputType } from '../../types';
|
|
|
6
6
|
import { FormComponent } from '../form/form.component';
|
|
7
7
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
8
8
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
9
|
+
import { TitleComponent } from '../../atoms/title/title.component';
|
|
9
10
|
import { AuthService } from '../../../services/auth';
|
|
10
11
|
import { I18nService, InputI18nHelper } from '../../../services/i18n';
|
|
11
12
|
import { ToastService } from '../../../services/toast.service';
|
|
@@ -267,7 +268,7 @@ export class ChangeEmailModalComponent {
|
|
|
267
268
|
this.toast.show({ message, duration: 3500 });
|
|
268
269
|
}
|
|
269
270
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
270
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-
|
|
271
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
271
272
|
}
|
|
272
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, decorators: [{
|
|
273
274
|
type: Component,
|
|
@@ -282,7 +283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
282
283
|
FormComponent,
|
|
283
284
|
DisplayComponent,
|
|
284
285
|
TextComponent,
|
|
285
|
-
|
|
286
|
+
TitleComponent,
|
|
287
|
+
], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
|
|
286
288
|
}], propDecorators: { isOpen: [{
|
|
287
289
|
type: Input
|
|
288
290
|
}], changed: [{
|
|
@@ -290,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
290
292
|
}], dismissed: [{
|
|
291
293
|
type: Output
|
|
292
294
|
}] } });
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVtYWlsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZUFBZSxFQUE0QixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUs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O0lBQy9DLENBQUM7K0dBalFVLHlCQUF5QjttR0FBekIseUJBQXlCLHlLQzNEdEMsbThDQWtDQSw0T0RXSSxTQUFTLG9QQUNULFVBQVUsOEVBQ1YsVUFBVSx3S0FDVixTQUFTLG9HQUNULFFBQVEsc0RBQ1IsVUFBVSx5R0FDVixVQUFVLG1GQUNWLGFBQWEsOEhBQ2IsZ0JBQWdCLDJFQUNoQixhQUFhOzs0RkFLSix5QkFBeUI7a0JBbEJyQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTtxQkFDZDs4QkFRRyxNQUFNO3NCQURULEtBQUs7Z0JBYUksT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25Nb2RhbCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IFNvbGlkRGVmYXVsdEJsb2NrIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbnR5cGUgRW1haWxNb2RhbFN0ZXAgPSAnbG9hZGluZycgfCAnbm8tcGFzc3dvcmQnIHwgJ3N0ZXAxJyB8ICdzdGVwMicgfCAnc3RlcDMnO1xuXG4vKipcbiAqIGB2YWwtY2hhbmdlLWVtYWlsLW1vZGFsYCDigJQgbW9kYWwgZGUgY2FtYmlvIGRlIGVtYWlsIGVuIDMgcGFzb3MuXG4gKlxuICogUGFzbyAxOiBjb250cmFzZcOxYSBhY3R1YWwgKyBudWV2byBlbWFpbCDihpIgYGluaXRpYXRlRW1haWxDaGFuZ2UoKWBcbiAqIFBhc28gMjogY8OzZGlnbyBlbnZpYWRvIGFsIGVtYWlsIGFjdHVhbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKClgXG4gKiBQYXNvIDM6IGPDs2RpZ28gZW52aWFkbyBhbCBudWV2byBlbWFpbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKClgXG4gKlxuICogU2kgZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYSAoY3VlbnRhIE9BdXRoLW9ubHkpLCBtdWVzdHJhIGF2aXNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzRW1haWxNb2RhbE9wZW4oKVwiXG4gKiAgIChjaGFuZ2VkKT1cImlzRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1lbWFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Nb2RhbCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgdGhpcy5yZXNvbHZlTW9kZSgpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogRW1pdGUgYWwgY29tcGxldGFyIGVsIGNhbWJpbyBkZSBlbWFpbCBjb24gw6l4aXRvLiBFbCBwYWRyZSBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcblxuICByZWFkb25seSBfc3RlcCA9IHNpZ25hbDxFbWFpbE1vZGFsU3RlcD4oJ2xvYWRpbmcnKTtcbiAgcmVhZG9ubHkgX3BlbmRpbmdFbWFpbCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdfYXV0aCcpO1xuICB9XG5cbiAgcmVhZG9ubHkgbm9QYXNzd29yZFRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdjaGFuZ2VFbWFpbE5vUGFzc3dvcmRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbm9QYXNzd29yZEhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoYW5nZUVtYWlsTm9QYXNzd29yZEhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgc3RlcDFQcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT5cbiAgICB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZUVtYWlsVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDFEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUEFTU1dPUkQsXG4gICAgICAgICAgICAgIG5hbWU6ICdjdXJyZW50UGFzc3dvcmQnLFxuICAgICAgICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuRU1BSUwsXG4gICAgICAgICAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLW5ldycsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxOZXdFbWFpbCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ2VtYWlsUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2VtYWlsUmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgIGVtYWlsOiAnY2hhbmdlRW1haWxOZXdFbWFpbEludmFsaWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1pbml0aWF0ZScsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbEluaXRpYXRlJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBzdGVwMlByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PlxuICAgIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwMlRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VFbWFpbFN0ZXAyRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtY3VycmVudCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxDb2RlQ3VycmVudCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJycsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ21mYUNvZGVJbnZhbGlkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICAgIGxlbmd0aDogNixcbiAgICAgICAgICAgICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgdG9rZW46ICdjaGFuZ2UtZW1haWwtY29uZmlybS0xJyxcbiAgICAgICAgdGV4dEtleTogJ2NoYW5nZUVtYWlsQ29uZmlybTEnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IHN0ZXAzUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuX3BlbmRpbmdFbWFpbCgpO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDNEZXNjcmlwdGlvbicpLnJlcGxhY2UoJ3tlbWFpbH0nLCBlbWFpbCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwM1RpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogZGVzYyxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtbmV3JyxcbiAgICAgICAgICAgICAgbGFiZWxLZXk6ICdjaGFuZ2VFbWFpbENvZGVOZXcnLFxuICAgICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJLZXk6ICcnLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHsgcmVxdWlyZWQ6ICdtZmFDb2RlSW52YWxpZCcgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgICBsZW5ndGg6IDYsXG4gICAgICAgICAgICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIC4uLlNvbGlkRGVmYXVsdEJsb2NrKCcnLCAnc3VibWl0JyksXG4gICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvbmZpcm0tMicsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbENvbmZpcm0yJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KCcnKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fc3RlcC5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ3N0ZXAxJyA6ICduby1wYXNzd29yZCcpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuX3N0ZXAuc2V0KCdzdGVwMScpLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3RlcDEoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld0VtYWlsID0gZXZlbnQuZmllbGRzWyduZXdFbWFpbCddO1xuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdFbWFpbCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmluaXRpYXRlRW1haWxDaGFuZ2UoY3VycmVudFBhc3N3b3JkLCBuZXdFbWFpbCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KHJlcy5wZW5kaW5nRW1haWwpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDInKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAyKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDMnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAzKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NoYW5nZUVtYWlsU3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9TQU1FX0FTX0NVUlJFTlQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckVtYWlsU2FtZUFzQ3VycmVudCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VNQUlMX0VYSVNUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRW1haWxBbHJlYWR5SW5Vc2UnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9DSEFOR0VfUEVORElOR19FWFBJUkVEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JFbWFpbENoYW5nZVBlbmRpbmdFeHBpcmVkJyk7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DT0RFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JJbnZhbGlkQ29kZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VYUElSRURfQ09ERSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRXhwaXJlZENvZGUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9UT09fTUFOWV9BVFRFTVBUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yVG9vTWFueUF0dGVtcHRzJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1mb3JtLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChfc3RlcCgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKF9zdGVwKCkgPT09ICduby1wYXNzd29yZCcpIHtcbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgY29udGVudDogbm9QYXNzd29yZEhpbnQoKSwgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnbWVkaXVtJywgYm9sZDogZmFsc2UgfVwiIC8+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cInNvbGlkXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDEnKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDFQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAxKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDInKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDJQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAyKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDMnKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDNQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAzKCRldmVudClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9pb24tY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaW9uLW1vZGFsPlxuIl19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVtYWlsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZUFBZSxFQUE0QixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUs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QUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQWpRVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix5S0M3RHRDLGk4Q0FrQ0EsNE9EWUksU0FBUyxvUEFDVCxVQUFVLDhFQUNWLFVBQVUsd0tBQ1YsU0FBUyxvR0FDVCxRQUFRLHNEQUNSLFVBQVUseUdBQ1YsVUFBVSxtRkFDVixhQUFhLDhIQUNiLGdCQUFnQiwyRUFFaEIsY0FBYzs7NEZBS0wseUJBQXlCO2tCQW5CckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsUUFBUTt3QkFDUixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjs4QkFRRyxNQUFNO3NCQURULEtBQUs7Z0JBYUksT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25Nb2RhbCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IFNvbGlkRGVmYXVsdEJsb2NrIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbnR5cGUgRW1haWxNb2RhbFN0ZXAgPSAnbG9hZGluZycgfCAnbm8tcGFzc3dvcmQnIHwgJ3N0ZXAxJyB8ICdzdGVwMicgfCAnc3RlcDMnO1xuXG4vKipcbiAqIGB2YWwtY2hhbmdlLWVtYWlsLW1vZGFsYCDigJQgbW9kYWwgZGUgY2FtYmlvIGRlIGVtYWlsIGVuIDMgcGFzb3MuXG4gKlxuICogUGFzbyAxOiBjb250cmFzZcOxYSBhY3R1YWwgKyBudWV2byBlbWFpbCDihpIgYGluaXRpYXRlRW1haWxDaGFuZ2UoKWBcbiAqIFBhc28gMjogY8OzZGlnbyBlbnZpYWRvIGFsIGVtYWlsIGFjdHVhbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKClgXG4gKiBQYXNvIDM6IGPDs2RpZ28gZW52aWFkbyBhbCBudWV2byBlbWFpbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKClgXG4gKlxuICogU2kgZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYSAoY3VlbnRhIE9BdXRoLW9ubHkpLCBtdWVzdHJhIGF2aXNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzRW1haWxNb2RhbE9wZW4oKVwiXG4gKiAgIChjaGFuZ2VkKT1cImlzRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1lbWFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Nb2RhbCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgdGhpcy5yZXNvbHZlTW9kZSgpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogRW1pdGUgYWwgY29tcGxldGFyIGVsIGNhbWJpbyBkZSBlbWFpbCBjb24gw6l4aXRvLiBFbCBwYWRyZSBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcblxuICByZWFkb25seSBfc3RlcCA9IHNpZ25hbDxFbWFpbE1vZGFsU3RlcD4oJ2xvYWRpbmcnKTtcbiAgcmVhZG9ubHkgX3BlbmRpbmdFbWFpbCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdfYXV0aCcpO1xuICB9XG5cbiAgcmVhZG9ubHkgbm9QYXNzd29yZFRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdjaGFuZ2VFbWFpbE5vUGFzc3dvcmRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbm9QYXNzd29yZEhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoYW5nZUVtYWlsTm9QYXNzd29yZEhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgc3RlcDFQcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT5cbiAgICB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZUVtYWlsVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDFEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUEFTU1dPUkQsXG4gICAgICAgICAgICAgIG5hbWU6ICdjdXJyZW50UGFzc3dvcmQnLFxuICAgICAgICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuRU1BSUwsXG4gICAgICAgICAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLW5ldycsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxOZXdFbWFpbCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ2VtYWlsUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2VtYWlsUmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgIGVtYWlsOiAnY2hhbmdlRW1haWxOZXdFbWFpbEludmFsaWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1pbml0aWF0ZScsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbEluaXRpYXRlJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBzdGVwMlByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PlxuICAgIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwMlRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VFbWFpbFN0ZXAyRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtY3VycmVudCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxDb2RlQ3VycmVudCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJycsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ21mYUNvZGVJbnZhbGlkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICAgIGxlbmd0aDogNixcbiAgICAgICAgICAgICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgdG9rZW46ICdjaGFuZ2UtZW1haWwtY29uZmlybS0xJyxcbiAgICAgICAgdGV4dEtleTogJ2NoYW5nZUVtYWlsQ29uZmlybTEnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IHN0ZXAzUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuX3BlbmRpbmdFbWFpbCgpO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDNEZXNjcmlwdGlvbicpLnJlcGxhY2UoJ3tlbWFpbH0nLCBlbWFpbCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwM1RpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogZGVzYyxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtbmV3JyxcbiAgICAgICAgICAgICAgbGFiZWxLZXk6ICdjaGFuZ2VFbWFpbENvZGVOZXcnLFxuICAgICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJLZXk6ICcnLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHsgcmVxdWlyZWQ6ICdtZmFDb2RlSW52YWxpZCcgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgICBsZW5ndGg6IDYsXG4gICAgICAgICAgICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIC4uLlNvbGlkRGVmYXVsdEJsb2NrKCcnLCAnc3VibWl0JyksXG4gICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvbmZpcm0tMicsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbENvbmZpcm0yJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KCcnKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fc3RlcC5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ3N0ZXAxJyA6ICduby1wYXNzd29yZCcpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuX3N0ZXAuc2V0KCdzdGVwMScpLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3RlcDEoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld0VtYWlsID0gZXZlbnQuZmllbGRzWyduZXdFbWFpbCddO1xuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdFbWFpbCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmluaXRpYXRlRW1haWxDaGFuZ2UoY3VycmVudFBhc3N3b3JkLCBuZXdFbWFpbCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KHJlcy5wZW5kaW5nRW1haWwpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDInKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAyKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDMnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAzKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NoYW5nZUVtYWlsU3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9TQU1FX0FTX0NVUlJFTlQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckVtYWlsU2FtZUFzQ3VycmVudCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VNQUlMX0VYSVNUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRW1haWxBbHJlYWR5SW5Vc2UnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9DSEFOR0VfUEVORElOR19FWFBJUkVEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JFbWFpbENoYW5nZVBlbmRpbmdFeHBpcmVkJyk7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DT0RFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JJbnZhbGlkQ29kZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VYUElSRURfQ09ERSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRXhwaXJlZENvZGUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9UT09fTUFOWV9BVFRFTVBUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yVG9vTWFueUF0dGVtcHRzJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1mb3JtLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChfc3RlcCgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKF9zdGVwKCkgPT09ICduby1wYXNzd29yZCcpIHtcbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRIaW50KCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAxJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAxUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMSgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAyJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAyUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMigkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAzJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAzUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMygkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==
|