@dsivd/prestations-ng 17.0.0-beta.1 → 17.0.0-beta.3

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/CHANGELOG.md CHANGED
@@ -14,6 +14,13 @@
14
14
 
15
15
  - Added migration guide
16
16
 
17
+ ## [16.5.2]
18
+
19
+ ### Added
20
+
21
+ - [foehn-error-pill-component.html](projects/prestations-ng/src/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.html)
22
+ - added dictionary keys `foehn-error-pill.incomplete` and `foehn-error-pill.complete` for pills. Defaults are already added in prestations-ng.
23
+
17
24
  ## [16.5.1] - must be aligned with prestations-be (16.5.1+)
18
25
 
19
26
  ### Added
package/UPGRADING_V17.md CHANGED
@@ -3,19 +3,54 @@
3
3
  ## PRESTATIONS-NG
4
4
 
5
5
  The main feature in `prestations-ng` v17 is the update of the `@angular/*` peer dependencies
6
- to `^17.2.4`, using `node 20+` to build, `npm 10+` for package manager and `Foehn 2+ (Bootstrap 5+)`.
6
+ to `^17.2.4`, using `node 20+` to build, `npm 10+` for package manager and `Foehn 2+ (Bootstrap 5+)` for our design system.
7
7
 
8
8
  ### Migrating to ESLint
9
9
 
10
10
  Follow [our migration guide](ESLINT_MIGRATION_GUIDE.md) to migrate your project from TSLint to ESLint
11
11
 
12
- ### Package manager NPM
12
+ ### Package manager NPM instead of YARN
13
13
 
14
14
  We now recommend using `npm` instead of `yarn`.
15
- You can search for `yarn` in your project and replace it by `npm run`.
16
-
17
15
  **NB: Don't need `run` when running `npm` for https://docs.npmjs.com/cli/v10/commands**
18
16
 
17
+ - When using `prestations-ng` as a link, you need to run:
18
+
19
+ ```bash
20
+ yarn unlink @dsivd/prestations-ng
21
+ yarn install --force
22
+ ```
23
+
24
+ - Delete `yarn.lock` file and `yarn-error.log` (if you have one).
25
+ - You can search for `yarn` in your project and replace it by `npm run` (do not take into account `.browserslistrc` as it will be replaced).
26
+ - Then run:
27
+
28
+ ```bash
29
+ npm install
30
+ git add -A
31
+ ```
32
+
33
+ If you have vulnerabilities, you can run:
34
+
35
+ ```bash
36
+ npm update
37
+ ```
38
+
39
+ ### Updating to Angular 16
40
+
41
+ [https://update.angular.io/?l=3&v=15.0-16.0](https://update.angular.io/?l=3&v=15.0-16.0)
42
+
43
+ **NB: Commit before continuing so your repository is clean**
44
+
45
+ ```bash
46
+ # Remove your resolutions in package.json before starting
47
+ ng update @angular/core@15 @angular/cli@15
48
+ ng update @dsivd/prestations-ng@16
49
+
50
+ npm install @angular/cli@16 -g
51
+ ng update @angular/core@16 @angular/cli@16
52
+ ```
53
+
19
54
  ### Running with node 20+
20
55
 
21
56
  #### Switch to node 20+
@@ -28,6 +63,12 @@ Be sure to update your `slave-apps` git repository and source your bashrc (or wh
28
63
  node -v
29
64
  ```
30
65
 
66
+ **NB: If version is still v16+ by default, type `node20` in your terminal to switch to node v20+**
67
+
68
+ ```bash
69
+ node20
70
+ ```
71
+
31
72
  ##### If you are NOT using our `slave-apps`
32
73
 
33
74
  Be sure to use a node version 20+ and use the same command as above.
@@ -76,45 +117,44 @@ def args = [
76
117
  ]
77
118
  ```
78
119
 
79
- ### Updating Angular
120
+ ### Updating to Angular 17
80
121
 
81
122
  `prestations-ng` **v17+** now supports **Angular v17**. You can follow the Angular update guide
82
- at this address:
83
-
84
- - [https://update.angular.io/?l=3&v=15.0-16.0](https://update.angular.io/?l=3&v=15.0-16.0)
85
- - [https://update.angular.io/?l=3&v=16.0-17.0](https://update.angular.io/?l=3&v=16.0-17.0)
123
+ at this address [https://update.angular.io/?l=3&v=16.0-17.0](https://update.angular.io/?l=3&v=16.0-17.0).
86
124
 
87
125
  #### When having migrated to ESLint
88
126
 
89
127
  ```bash
90
128
  # Remove your resolutions in package.json before starting
91
- ng update @angular/core@15 @angular/cli@15
92
-
93
- yarn global add @angular/cli@16
94
- ng update @angular/core@16 @angular/cli@16
95
-
96
- yarn global add @angular/cli@17
97
- ng update @angular/core@17 @angular/cli@17
98
- ng update typescript@5.3
129
+ npm install @angular/cli@17 -g
130
+ ng update @angular/core@17 @angular/cli@17 --force
131
+ ng update @dsivd/prestations-ng@latest
99
132
  ng update rxjs@7
100
133
  ng update @angular-eslint/builder@17
101
134
  ng update @angular-eslint/eslint-plugin@17 @angular-eslint/eslint-plugin-template@17 @angular-eslint/template-parser@17
102
135
  ng update @typescript-eslint/eslint-plugin@7 @typescript-eslint/parser@7
103
136
  ng update eslint-plugin-import eslint-plugin-jasmine eslint-plugin-jsdoc eslint-plugin-rxjs-angular
104
137
  ng update eslint
105
- ng update eslint-plugin-rxjs@7
138
+ ng update eslint-plugin-rxjs
106
139
  ng update \
107
140
  @types/jasmine@5 \
108
141
  @types/node@20 \
109
142
  ts-node@10
110
- ng update @dsivd/prestations-ng@latest
111
143
 
112
144
  npm update
113
145
  ```
114
146
 
147
+ #### Browsers list update
148
+
149
+ Run update schematic:
150
+
151
+ ```bash
152
+ ng g @dsivd/prestations-ng:replace-browsers-list
153
+ ```
154
+
115
155
  #### Migration to Foehn 2 and Boostrap 5
116
156
 
117
- ##### Running migration schematic
157
+ Run migration schematic:
118
158
 
119
159
  ```bash
120
160
  ng g @dsivd/prestations-ng:foehn2-bootstrap5-migration
@@ -133,7 +173,7 @@ You will need to check manually your TypeScript (`.ts`) files for any dynamique
133
173
 
134
174
  ### Update ".eslintrc.json" file if your project was already migrated to ESLint
135
175
 
136
- Replace your current `.eslintrc.json` file by the one found in [ESLINT_MIGRATION.GUIDE](ESLINT_MIGRATION_GUIDE.md#customizing_eslint__inspired_from_otia_and_prestations-ng_s_files_for_rules_)
176
+ **NB: Replace your current `.eslintrc.json` file by the one found in [ESLINT_MIGRATION.GUIDE](ESLINT_MIGRATION_GUIDE.md#customizing_eslint__inspired_from_otia_and_prestations-ng_s_files_for_rules_)**
137
177
 
138
178
  Then run
139
179
 
@@ -143,6 +183,27 @@ ng lint --fix=true
143
183
 
144
184
  and finally fix manually remaining errors
145
185
 
186
+ If you encounter the following waring in your `*.spec.ts`:
187
+ `warning Deprecated: Use `provideRouter`or`RouterModule`/`RouterModule.forRoot` instead`
188
+
189
+ You can replace `RouterTestingModule` by `RouterModule.forRoot([])`
190
+
191
+ ### Cloudflare (`app.module.ts`)
192
+
193
+ Need to remove `CAPTCHA_URL_TOKEN` override
194
+
195
+ ```diff
196
+ @NgModule({
197
+ providers: [
198
+ META_SERVICE_PROVIDER,
199
+ - {
200
+ - provide: CAPTCHA_URL_TOKEN,
201
+ - useValue: 'https://challenges.cloudflare.com/turnstile/v0/api.js?onload=reCaptchaLoad&render=explicit&compat=recaptcha'
202
+ - },
203
+ ]
204
+ })
205
+ ```
206
+
146
207
  ### Language deprecations
147
208
 
148
209
  When using `intellij`, you can run code inspection on your project to fix manually deprecations. Two ways:
@@ -163,8 +224,241 @@ npm install
163
224
  #### Build and launch your application
164
225
 
165
226
  ```bash
166
- npm build
227
+ npm run build
167
228
  npm start
168
229
  ```
169
230
 
170
231
  Your are good to go if no errors are remaining!
232
+
233
+ ## PRESTATIONS-BE
234
+
235
+ ### application.properties
236
+
237
+ ```diff
238
+ recaptcha.cookie.path=${base.href}
239
+ - recaptcha.verify-url=https://challenges.cloudflare.com/turnstile/v0/siteverify
240
+ ```
241
+
242
+ ### pom.xml
243
+
244
+ #### With application parent
245
+
246
+ ##### Use new application-parent
247
+
248
+ ```diff
249
+ <parent>
250
+ <groupId>ch.vd.cyber.parent</groupId>
251
+ <artifactId>application-parent</artifactId>
252
+ - <version>12.x.x</version>
253
+ + <version>13.x.x</version>
254
+ <relativePath/>
255
+ </parent>
256
+ ```
257
+
258
+ ##### Add new profile to maven.config
259
+
260
+ Add new profile `-Pbuild-angular-front-npm`
261
+
262
+ ##### Cleanup pom.xml
263
+
264
+ Then remove following plugin:
265
+
266
+ ```diff
267
+ -<plugin>
268
+ - <groupId>org.codehaus.mojo</groupId>
269
+ - <artifactId>exec-maven-plugin</artifactId>
270
+ - <version>${exec-maven-plugin.version}</version>
271
+ - <configuration>
272
+ - <workingDirectory>${basedir}/front</workingDirectory>
273
+ - </configuration>
274
+ - <executions>
275
+ - <execution>
276
+ - <id>exec-yarn-install</id>
277
+ - <phase>prepare-package</phase>
278
+ - <configuration>
279
+ - <executable>${yarn.executable}</executable>
280
+ - <arguments>
281
+ - <argument>--pure-lockfile</argument>
282
+ - </arguments>
283
+ - <skip>${build.nofront}</skip>
284
+ - </configuration>
285
+ - <goals>
286
+ - <goal>exec</goal>
287
+ - </goals>
288
+ - </execution>
289
+ - <execution>
290
+ - <id>exec-ngcli-lint</id>
291
+ - <phase>prepare-package</phase>
292
+ - <configuration>
293
+ - <executable>${yarn.executable}</executable>
294
+ - <arguments>
295
+ - <argument>run</argument>
296
+ - <argument>lint</argument>
297
+ - </arguments>
298
+ - <skip>${skipTests}</skip>
299
+ - </configuration>
300
+ - <goals>
301
+ - <goal>exec</goal>
302
+ - </goals>
303
+ - </execution>
304
+ - <execution>
305
+ - <id>exec-ngcli-test</id>
306
+ - <phase>prepare-package</phase>
307
+ - <configuration>
308
+ - <executable>${yarn.executable}</executable>
309
+ - <arguments>
310
+ - <argument>run</argument>
311
+ - <argument>test</argument>
312
+ - </arguments>
313
+ - <skip>${skipTests}</skip>
314
+ - </configuration>
315
+ - <goals>
316
+ - <goal>exec</goal>
317
+ - </goals>
318
+ - </execution>
319
+ - <execution>
320
+ - <id>exec-ngcli-build</id>
321
+ - <phase>prepare-package</phase>
322
+ - <configuration>
323
+ - <executable>${yarn.executable}</executable>
324
+ - <arguments>
325
+ - <argument>run</argument>
326
+ - <argument>build</argument>
327
+ - </arguments>
328
+ - <skip>${build.nofront}</skip>
329
+ - </configuration>
330
+ - <goals>
331
+ - <goal>exec</goal>
332
+ - </goals>
333
+ - </execution>
334
+ - </executions>
335
+ -</plugin>
336
+ ```
337
+
338
+ #### Without application parent
339
+
340
+ ```diff
341
+ <properties>
342
+ - <prestations-be.version>16.x.x</prestations-be.version>
343
+ + <prestations-be.version>17.x.x</prestations-be.version>
344
+ </properties
345
+ ```
346
+
347
+ Remove plugin executing some `yarn` (See `With application parent`) and replace by following plugin :
348
+
349
+ ```xml
350
+ <plugins>
351
+ <plugin>
352
+ <groupId>org.codehaus.mojo</groupId>
353
+ <artifactId>exec-maven-plugin</artifactId>
354
+ <version>${exec-maven-plugin.version}</version>
355
+ <configuration>
356
+ <workingDirectory>${front.srcPath}</workingDirectory>
357
+ </configuration>
358
+ <executions>
359
+ <execution>
360
+ <id>exec-npm-install</id>
361
+ <phase>prepare-package</phase>
362
+ <configuration>
363
+ <executable>${npm.executable}</executable>
364
+ <arguments>
365
+ <argument>install</argument>
366
+ <argument>--pure-lockfile</argument>
367
+ </arguments>
368
+ <skip>${build.nofront}</skip>
369
+ </configuration>
370
+ <goals>
371
+ <goal>exec</goal>
372
+ </goals>
373
+ </execution>
374
+ <execution>
375
+ <id>exec-ngcli-lint</id>
376
+ <phase>prepare-package</phase>
377
+ <configuration>
378
+ <executable>${npm.executable}</executable>
379
+ <arguments>
380
+ <argument>run</argument>
381
+ <argument>lint</argument>
382
+ </arguments>
383
+ <skip>${skipTests}</skip>
384
+ </configuration>
385
+ <goals>
386
+ <goal>exec</goal>
387
+ </goals>
388
+ </execution>
389
+ <execution>
390
+ <id>exec-ngcli-test</id>
391
+ <phase>prepare-package</phase>
392
+ <configuration>
393
+ <executable>${npm.executable}</executable>
394
+ <arguments>
395
+ <argument>run</argument>
396
+ <argument>test</argument>
397
+ </arguments>
398
+ <skip>${skipTests}</skip>
399
+ </configuration>
400
+ <goals>
401
+ <goal>exec</goal>
402
+ </goals>
403
+ </execution>
404
+ <execution>
405
+ <id>exec-ngcli-build</id>
406
+ <phase>prepare-package</phase>
407
+ <configuration>
408
+ <executable>${npm.executable}</executable>
409
+ <arguments>
410
+ <argument>run</argument>
411
+ <argument>build</argument>
412
+ </arguments>
413
+ <skip>${build.nofront}</skip>
414
+ </configuration>
415
+ <goals>
416
+ <goal>exec</goal>
417
+ </goals>
418
+ </execution>
419
+ </executions>
420
+ </plugin>
421
+ <plugin>
422
+ <groupId>org.apache.maven.plugins</groupId>
423
+ <artifactId>maven-resources-plugin</artifactId>
424
+ <version>${maven-resources-plugin.version}</version>
425
+ <configuration>
426
+ <encoding>${project.build.sourceEncoding}</encoding>
427
+ </configuration>
428
+ <executions>
429
+ <execution>
430
+ <id>copy-ngcli-dist</id>
431
+ <phase>prepare-package</phase>
432
+ <goals>
433
+ <goal>copy-resources</goal>
434
+ </goals>
435
+ <configuration>
436
+ <outputDirectory>${basedir}/target/classes/static</outputDirectory>
437
+ <resources>
438
+ <resource>
439
+ <directory>${front.distPath}</directory>
440
+ <filtering>false</filtering>
441
+ </resource>
442
+ </resources>
443
+ </configuration>
444
+ </execution>
445
+ <execution>
446
+ <id>copy-config</id>
447
+ <phase>prepare-package</phase>
448
+ <goals>
449
+ <goal>copy-resources</goal>
450
+ </goals>
451
+ <configuration>
452
+ <outputDirectory>${project.build.directory}/classes</outputDirectory>
453
+ <resources>
454
+ <resource>
455
+ <directory>${project.build.directory}/unfiltered-config</directory>
456
+ <filtering>true</filtering>
457
+ </resource>
458
+ </resources>
459
+ </configuration>
460
+ </execution>
461
+ </executions>
462
+ </plugin>
463
+ </plugins>
464
+ ```
@@ -3,6 +3,7 @@ import { map } from 'rxjs/operators';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../validation/validation-handler.service";
5
5
  import * as i2 from "@angular/common";
6
+ import * as i3 from "../../sdk-dictionary/sdk-dictionary.pipe";
6
7
  export class FoehnErrorPillComponent {
7
8
  constructor(validationHandlerService) {
8
9
  this.validationHandlerService = validationHandlerService;
@@ -11,14 +12,14 @@ export class FoehnErrorPillComponent {
11
12
  this.validationHandlerService.validationErrorsSubject.pipe(map((errors) => errors.some(e => e.name.startsWith(this.errorPrefix))));
12
13
  }
13
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnErrorPillComponent, deps: [{ token: i1.ValidationHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnErrorPillComponent, selector: "foehn-error-pill", inputs: { errorPrefix: "errorPrefix", incompleteIndicatorOnly: "incompleteIndicatorOnly" }, ngImport: i0, template: "<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 bg-danger\"\n>\n Incomplet\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 bg-secondary\"\n>\n Renseign\u00E9\n</strong>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnErrorPillComponent, selector: "foehn-error-pill", inputs: { errorPrefix: "errorPrefix", incompleteIndicatorOnly: "incompleteIndicatorOnly" }, ngImport: i0, template: "<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 bg-danger\"\n>\n {{ 'foehn-error-pill.incomplete' | fromDictionary }}\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 bg-secondary\"\n>\n {{ 'foehn-error-pill.complete' | fromDictionary }}\n</strong>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
15
16
  }
16
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnErrorPillComponent, decorators: [{
17
18
  type: Component,
18
- args: [{ selector: 'foehn-error-pill', template: "<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 bg-danger\"\n>\n Incomplet\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 bg-secondary\"\n>\n Renseign\u00E9\n</strong>\n" }]
19
+ args: [{ selector: 'foehn-error-pill', template: "<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 bg-danger\"\n>\n {{ 'foehn-error-pill.incomplete' | fromDictionary }}\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 bg-secondary\"\n>\n {{ 'foehn-error-pill.complete' | fromDictionary }}\n</strong>\n" }]
19
20
  }], ctorParameters: () => [{ type: i1.ValidationHandlerService }], propDecorators: { errorPrefix: [{
20
21
  type: Input
21
22
  }], incompleteIndicatorOnly: [{
22
23
  type: Input
23
24
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tbWVudS1wcmVzdGF0aW9uL2ZvZWhuLWVycm9yLXBpbGwvZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tbWVudS1wcmVzdGF0aW9uL2ZvZWhuLWVycm9yLXBpbGwvZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTckMsTUFBTSxPQUFPLHVCQUF1QjtJQVNoQyxZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUp0RSw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFLNUIsSUFBSSxDQUFDLFNBQVM7WUFDVixJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxNQUFtQixFQUFFLEVBQUUsQ0FDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN4RCxDQUNKLENBQUM7SUFDVixDQUFDOzhHQWhCUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixvSkNYcEMseVNBYUE7OzJGREZhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDSSxrQkFBa0I7NkZBSzVCLFdBQVc7c0JBRFYsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvcm1FcnJvciB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3InO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLWhhbmRsZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tZXJyb3ItcGlsbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWVycm9yLXBpbGwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuRXJyb3JQaWxsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGVycm9yUHJlZml4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGluY29tcGxldGVJbmRpY2F0b3JPbmx5ID0gZmFsc2U7XG5cbiAgICBoYXNFcnJvcnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25IYW5kbGVyU2VydmljZTogVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3JzID1cbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLnZhbGlkYXRpb25FcnJvcnNTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChlcnJvcnM6IEZvcm1FcnJvcltdKSA9PlxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMuc29tZShlID0+IGUubmFtZS5zdGFydHNXaXRoKHRoaXMuZXJyb3JQcmVmaXgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIiwiPHN0cm9uZ1xuICAgICpuZ0lmPVwiaGFzRXJyb3JzIHwgYXN5bmNcIlxuICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1iYXNlbGluZSBiYWRnZSBtdC0yIGJnLWRhbmdlclwiXG4+XG4gICAgSW5jb21wbGV0XG48L3N0cm9uZz5cblxuPHN0cm9uZ1xuICAgICpuZ0lmPVwiIShoYXNFcnJvcnMgfCBhc3luYykgJiYgIWluY29tcGxldGVJbmRpY2F0b3JPbmx5XCJcbiAgICBjbGFzcz1cImFsaWduLXNlbGYtYmFzZWxpbmUgYmFkZ2UgbXQtMiBiZy1zZWNvbmRhcnlcIlxuPlxuICAgIFJlbnNlaWduw6lcbjwvc3Ryb25nPlxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tbWVudS1wcmVzdGF0aW9uL2ZvZWhuLWVycm9yLXBpbGwvZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tbWVudS1wcmVzdGF0aW9uL2ZvZWhuLWVycm9yLXBpbGwvZm9laG4tZXJyb3ItcGlsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBU3JDLE1BQU0sT0FBTyx1QkFBdUI7SUFTaEMsWUFBb0Isd0JBQWtEO1FBQWxELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFKdEUsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBSzVCLElBQUksQ0FBQyxTQUFTO1lBQ1YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLENBQUMsTUFBbUIsRUFBRSxFQUFFLENBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDeEQsQ0FDSixDQUFDO0lBQ1YsQ0FBQzs4R0FoQlEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsb0pDWHBDLHdYQWFBOzsyRkRGYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksa0JBQWtCOzZGQUs1QixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWVycm9yLXBpbGwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1lcnJvci1waWxsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb2VobkVycm9yUGlsbENvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBlcnJvclByZWZpeDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBpbmNvbXBsZXRlSW5kaWNhdG9yT25seSA9IGZhbHNlO1xuXG4gICAgaGFzRXJyb3JzOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2YWxpZGF0aW9uSGFuZGxlclNlcnZpY2U6IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSkge1xuICAgICAgICB0aGlzLmhhc0Vycm9ycyA9XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZS52YWxpZGF0aW9uRXJyb3JzU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZXJyb3JzOiBGb3JtRXJyb3JbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnNvbWUoZSA9PiBlLm5hbWUuc3RhcnRzV2l0aCh0aGlzLmVycm9yUHJlZml4KSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxzdHJvbmdcbiAgICAqbmdJZj1cImhhc0Vycm9ycyB8IGFzeW5jXCJcbiAgICBjbGFzcz1cImFsaWduLXNlbGYtYmFzZWxpbmUgYmFkZ2UgbXQtMiBiZy1kYW5nZXJcIlxuPlxuICAgIHt7ICdmb2Vobi1lcnJvci1waWxsLmluY29tcGxldGUnIHwgZnJvbURpY3Rpb25hcnkgfX1cbjwvc3Ryb25nPlxuXG48c3Ryb25nXG4gICAgKm5nSWY9XCIhKGhhc0Vycm9ycyB8IGFzeW5jKSAmJiAhaW5jb21wbGV0ZUluZGljYXRvck9ubHlcIlxuICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1iYXNlbGluZSBiYWRnZSBtdC0yIGJnLXNlY29uZGFyeVwiXG4+XG4gICAge3sgJ2ZvZWhuLWVycm9yLXBpbGwuY29tcGxldGUnIHwgZnJvbURpY3Rpb25hcnkgfX1cbjwvc3Ryb25nPlxuIl19