@angular/core 14.1.0-next.4 → 14.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/esm2020/src/application_ref.mjs +10 -6
  2. package/esm2020/src/change_detection/change_detector_ref.mjs +1 -1
  3. package/esm2020/src/core.mjs +3 -2
  4. package/esm2020/src/debug/debug_node.mjs +2 -2
  5. package/esm2020/src/di/injector_compatibility.mjs +2 -2
  6. package/esm2020/src/di/injector_token.mjs +2 -2
  7. package/esm2020/src/di/r3_injector.mjs +7 -1
  8. package/esm2020/src/errors.mjs +1 -1
  9. package/esm2020/src/linker/component_factory_resolver.mjs +1 -1
  10. package/esm2020/src/linker/ng_module_factory.mjs +2 -2
  11. package/esm2020/src/linker/view_container_ref.mjs +2 -2
  12. package/esm2020/src/render3/component.mjs +120 -127
  13. package/esm2020/src/render3/component_ref.mjs +144 -9
  14. package/esm2020/src/render3/errors.mjs +9 -5
  15. package/esm2020/src/render3/features/standalone_feature.mjs +2 -2
  16. package/esm2020/src/render3/index.mjs +3 -3
  17. package/esm2020/src/render3/instructions/change_detection.mjs +2 -20
  18. package/esm2020/src/render3/instructions/element_validation.mjs +9 -5
  19. package/esm2020/src/render3/instructions/property_interpolation.mjs +2 -2
  20. package/esm2020/src/render3/interfaces/i18n.mjs +2 -2
  21. package/esm2020/src/render3/interfaces/styling.mjs +1 -1
  22. package/esm2020/src/render3/interfaces/view.mjs +1 -1
  23. package/esm2020/src/render3/ng_module_ref.mjs +15 -15
  24. package/esm2020/src/version.mjs +1 -1
  25. package/esm2020/src/zone/ng_zone.mjs +5 -1
  26. package/esm2020/testing/src/logger.mjs +3 -3
  27. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  28. package/esm2020/testing/src/test_bed_common.mjs +1 -1
  29. package/fesm2015/core.mjs +13117 -12980
  30. package/fesm2015/core.mjs.map +1 -1
  31. package/fesm2015/testing.mjs +12933 -12941
  32. package/fesm2015/testing.mjs.map +1 -1
  33. package/fesm2020/core.mjs +13117 -12980
  34. package/fesm2020/core.mjs.map +1 -1
  35. package/fesm2020/testing.mjs +12922 -12930
  36. package/fesm2020/testing.mjs.map +1 -1
  37. package/index.d.ts +177 -16
  38. package/package.json +1 -1
  39. package/schematics/migrations/typed-forms/util.js +2 -2
  40. package/schematics/utils/typescript/symbol.js +2 -2
  41. package/testing/index.d.ts +2 -2
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.0-next.4
2
+ * @license Angular v14.1.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -426,6 +426,10 @@ export declare class ApplicationRef {
426
426
  * @see [Usage notes](#is-stable-examples) for examples and caveats when using this API.
427
427
  */
428
428
  readonly isStable: Observable<boolean>;
429
+ /**
430
+ * The `EnvironmentInjector` used to create this application.
431
+ */
432
+ get injector(): EnvironmentInjector;
429
433
  /**
430
434
  * Bootstrap a component onto the element identified by its selector or, optionally, to a
431
435
  * specified element.
@@ -529,7 +533,7 @@ export declare class ApplicationRef {
529
533
  private _loadComponent;
530
534
  /**
531
535
  * Destroys an Angular application represented by this `ApplicationRef`. Calling this function
532
- * will destroy the associated environnement injectors as well as all the bootstrapped components
536
+ * will destroy the associated environment injectors as well as all the bootstrapped components
533
537
  * with their views.
534
538
  */
535
539
  destroy(): void;
@@ -607,7 +611,7 @@ export declare interface AttributeDecorator {
607
611
  }
608
612
 
609
613
  /**
610
- * Provides additional options to the bootstraping process.
614
+ * Provides additional options to the bootstrapping process.
611
615
  *
612
616
  * @publicApi
613
617
  */
@@ -630,7 +634,7 @@ export declare interface BootstrapOptions {
630
634
  *
631
635
  * When button is clicked, because of the event bubbling, both
632
636
  * event handlers will be called and 2 change detections will be
633
- * triggered. We can colesce such kind of events to only trigger
637
+ * triggered. We can coalesce such kind of events to only trigger
634
638
  * change detection only once.
635
639
  *
636
640
  * By default, this option will be false. So the events will not be
@@ -739,7 +743,7 @@ export declare abstract class ChangeDetectorRef {
739
743
  *
740
744
  * Components are normally marked as dirty (in need of rerendering) when inputs
741
745
  * have changed or events have fired in the view. Call this method to ensure that
742
- * a component is checked even if these triggers have not occured.
746
+ * a component is checked even if these triggers have not occurred.
743
747
  *
744
748
  * <!-- TODO: Add a link to a chapter on OnPush components -->
745
749
  *
@@ -1314,6 +1318,46 @@ declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1314
1318
 
1315
1319
  declare type ComponentInstance = {};
1316
1320
 
1321
+ /**
1322
+ * An interface that describes the subset of component metadata
1323
+ * that can be retrieved using the `reflectComponentType` function.
1324
+ *
1325
+ * @publicApi
1326
+ */
1327
+ export declare interface ComponentMirror<C> {
1328
+ /**
1329
+ * The component's HTML selector.
1330
+ */
1331
+ get selector(): string;
1332
+ /**
1333
+ * The type of component the factory will create.
1334
+ */
1335
+ get type(): Type<C>;
1336
+ /**
1337
+ * The inputs of the component.
1338
+ */
1339
+ get inputs(): ReadonlyArray<{
1340
+ readonly propName: string;
1341
+ readonly templateName: string;
1342
+ }>;
1343
+ /**
1344
+ * The outputs of the component.
1345
+ */
1346
+ get outputs(): ReadonlyArray<{
1347
+ readonly propName: string;
1348
+ readonly templateName: string;
1349
+ }>;
1350
+ /**
1351
+ * Selector for all <ng-content> elements in the component.
1352
+ */
1353
+ get ngContentSelectors(): ReadonlyArray<string>;
1354
+ /**
1355
+ * Whether this component is marked as standalone.
1356
+ * Note: an extra flag, not present in `ComponentFactory`.
1357
+ */
1358
+ get isStandalone(): boolean;
1359
+ }
1360
+
1317
1361
  /**
1318
1362
  * Represents a component created by a `ComponentFactory`.
1319
1363
  * Provides access to the component instance and related objects,
@@ -1614,6 +1658,72 @@ declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U
1614
1658
 
1615
1659
  declare const CONTEXT = 8;
1616
1660
 
1661
+ /**
1662
+ * Creates a `ComponentRef` instance based on provided component type and a set of options.
1663
+ *
1664
+ * @usageNotes
1665
+ *
1666
+ * The example below demonstrates how the `createComponent` function can be used
1667
+ * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,
1668
+ * so that it gets included into change detection cycles.
1669
+ *
1670
+ * Note: the example uses standalone components, but the function can also be used for
1671
+ * non-standalone components (declared in an NgModule) as well.
1672
+ *
1673
+ * ```typescript
1674
+ * @Component({
1675
+ * standalone: true,
1676
+ * template: `Hello {{ name }}!`
1677
+ * })
1678
+ * class HelloComponent {
1679
+ * name = 'Angular';
1680
+ * }
1681
+ *
1682
+ * @Component({
1683
+ * standalone: true,
1684
+ * template: `<div id="hello-component-host"></div>`
1685
+ * })
1686
+ * class RootComponent {}
1687
+ *
1688
+ * // Bootstrap an application.
1689
+ * const applicationRef = await bootstrapApplication(RootComponent);
1690
+ *
1691
+ * // Locate a DOM node that would be used as a host.
1692
+ * const host = document.getElementById('hello-component-host');
1693
+ *
1694
+ * // Get an `EnvironmentInjector` instance from the `ApplicationRef`.
1695
+ * const environmentInjector = applicationRef.injector;
1696
+ *
1697
+ * // We can now create a `ComponentRef` instance.
1698
+ * const componentRef = createComponent(HelloComponent, {host, environmentInjector});
1699
+ *
1700
+ * // Last step is to register the newly created ref using the `ApplicationRef` instance
1701
+ * // to include the component view into change detection cycles.
1702
+ * applicationRef.attachView(componentRef.hostView);
1703
+ * ```
1704
+ *
1705
+ * @param component Component class reference.
1706
+ * @param options Set of options to use:
1707
+ * * `environmentInjector`: An `EnvironmentInjector` instance to be used for the component, see
1708
+ * additional info about it at https://angular.io/guide/standalone-components#environment-injectors.
1709
+ * * `hostElement` (optional): A DOM node that should act as a host node for the component. If not
1710
+ * provided, Angular creates one based on the tag name used in the component selector (and falls
1711
+ * back to using `div` if selector doesn't have tag name info).
1712
+ * * `elementInjector` (optional): An `ElementInjector` instance, see additional info about it at
1713
+ * https://angular.io/guide/hierarchical-dependency-injection#elementinjector.
1714
+ * * `projectableNodes` (optional): A list of DOM nodes that should be projected through
1715
+ * [`<ng-content>`](api/core/ng-content) of the new component instance.
1716
+ * @returns ComponentRef instance that represents a given Component.
1717
+ *
1718
+ * @publicApi
1719
+ */
1720
+ export declare function createComponent<C>(component: Type<C>, options: {
1721
+ environmentInjector: EnvironmentInjector;
1722
+ hostElement?: Element;
1723
+ elementInjector?: Injector;
1724
+ projectableNodes?: Node[][];
1725
+ }): ComponentRef<C>;
1726
+
1617
1727
  /**
1618
1728
  * Create a new environment injector.
1619
1729
  *
@@ -1632,12 +1742,23 @@ export declare function createEnvironmentInjector(providers: Array<Provider | Im
1632
1742
 
1633
1743
  /**
1634
1744
  * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
1745
+ *
1635
1746
  * @param ngModule NgModule class.
1636
1747
  * @param parentInjector Optional injector instance to use as a parent for the module injector. If
1637
1748
  * not provided, `NullInjector` will be used instead.
1749
+ * @returns NgModuleRef that represents an NgModule instance.
1750
+ *
1638
1751
  * @publicApi
1639
1752
  */
1640
- export declare function createNgModuleRef<T>(ngModule: Type<T>, parentInjector?: Injector): NgModuleRef<T>;
1753
+ export declare function createNgModule<T>(ngModule: Type<T>, parentInjector?: Injector): NgModuleRef<T>;
1754
+
1755
+ /**
1756
+ * The `createNgModule` function alias for backwards-compatibility.
1757
+ * Please avoid using it directly and use `createNgModule` instead.
1758
+ *
1759
+ * @deprecated Use `createNgModule` instead.
1760
+ */
1761
+ export declare const createNgModuleRef: typeof createNgModule;
1641
1762
 
1642
1763
  /**
1643
1764
  * Creates a platform.
@@ -4617,8 +4738,8 @@ declare interface LView<T = unknown> extends Array<any> {
4617
4738
  * TView.cleanup saves an index to the necessary context in this array.
4618
4739
  *
4619
4740
  * After `LView` is created it is possible to attach additional instance specific functions at the
4620
- * end of the `lView[CLENUP]` because we know that no more `T` level cleanup functions will be
4621
- * addeded here.
4741
+ * end of the `lView[CLEANUP]` because we know that no more `T` level cleanup functions will be
4742
+ * added here.
4622
4743
  */
4623
4744
  [CLEANUP]: any[] | null;
4624
4745
  /**
@@ -5234,7 +5355,7 @@ export declare interface NgModuleDecorator {
5234
5355
  * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
5235
5356
  * for additional context. Angular provides APIs that accept NgModule classes directly (such as
5236
5357
  * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
5237
- * [createNgModuleRef](api/core/createNgModuleRef)), consider switching to those APIs instead of
5358
+ * [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
5238
5359
  * using factory-based ones.
5239
5360
  */
5240
5361
  export declare abstract class NgModuleFactory<T> {
@@ -6327,6 +6448,47 @@ declare interface RDomTokenList {
6327
6448
  remove(token: string): void;
6328
6449
  }
6329
6450
 
6451
+ /**
6452
+ * Creates an object that allows to retrieve component metadata.
6453
+ *
6454
+ * @usageNotes
6455
+ *
6456
+ * The example below demonstrates how to use the function and how the fields
6457
+ * of the returned object map to the component metadata.
6458
+ *
6459
+ * ```typescript
6460
+ * @Component({
6461
+ * standalone: true,
6462
+ * selector: 'foo-component',
6463
+ * template: `
6464
+ * <ng-content></ng-content>
6465
+ * <ng-content select="content-selector-a"></ng-content>
6466
+ * `,
6467
+ * })
6468
+ * class FooComponent {
6469
+ * @Input('inputName') inputPropName: string;
6470
+ * @Output('outputName') outputPropName = new EventEmitter<void>();
6471
+ * }
6472
+ *
6473
+ * const mirror = reflectComponentType(FooComponent);
6474
+ * expect(mirror.type).toBe(FooComponent);
6475
+ * expect(mirror.selector).toBe('foo-component');
6476
+ * expect(mirror.isStandalone).toBe(true);
6477
+ * expect(mirror.inputs).toEqual([{propName: 'inputName', templateName: 'inputPropName'}]);
6478
+ * expect(mirror.outputs).toEqual([{propName: 'outputName', templateName: 'outputPropName'}]);
6479
+ * expect(mirror.ngContentSelectors).toEqual([
6480
+ * '*', // first `<ng-content>` in a template, the selector defaults to `*`
6481
+ * 'content-selector-a' // second `<ng-content>` in a template
6482
+ * ]);
6483
+ * ```
6484
+ *
6485
+ * @param component Component class reference.
6486
+ * @returns An object that allows to retrieve component metadata.
6487
+ *
6488
+ * @publicApi
6489
+ */
6490
+ export declare function reflectComponentType<C>(component: Type<C>): ComponentMirror<C> | null;
6491
+
6330
6492
  /**
6331
6493
  * `Dependency` is used by the framework to extend DI.
6332
6494
  * This is internal to Angular and should not be used directly.
@@ -7068,6 +7230,7 @@ declare const enum RuntimeErrorCode {
7068
7230
  INJECTOR_ALREADY_DESTROYED = 205,
7069
7231
  PROVIDER_IN_WRONG_CONTEXT = 207,
7070
7232
  MISSING_INJECTION_TOKEN = 208,
7233
+ INVALID_MULTI_PROVIDER = 209,
7071
7234
  MULTIPLE_COMPONENTS_MATCH = -300,
7072
7235
  EXPORT_NOT_FOUND = -301,
7073
7236
  PIPE_NOT_FOUND = -302,
@@ -8860,7 +9023,7 @@ declare const enum TViewType {
8860
9023
  Component = 1,
8861
9024
  /**
8862
9025
  * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
8863
- * can have zero or more `Embedede` `TView`s.
9026
+ * can have zero or more `Embedded` `TView`s.
8864
9027
  */
8865
9028
  Embedded = 2
8866
9029
  }
@@ -10707,17 +10870,15 @@ export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
10707
10870
  onDestroy(callback: () => void): void;
10708
10871
  }
10709
10872
 
10710
- export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T>, EnvironmentInjector {
10873
+ export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> {
10711
10874
  _parent: Injector | null;
10712
10875
  _bootstrapComponents: Type<any>[];
10713
10876
  _r3Injector: R3Injector;
10714
- injector: EnvironmentInjector;
10715
10877
  instance: T;
10716
10878
  destroyCbs: (() => void)[] | null;
10717
10879
  readonly componentFactoryResolver: ComponentFactoryResolver_2;
10718
10880
  constructor(ngModuleType: Type<T>, _parent: Injector | null);
10719
- get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any;
10720
- runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
10881
+ get injector(): EnvironmentInjector;
10721
10882
  destroy(): void;
10722
10883
  onDestroy(callback: () => void): void;
10723
10884
  }
@@ -13438,7 +13599,7 @@ export declare function ɵɵpropertyInterpolate8(propName: string, prefix: strin
13438
13599
  * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13439
13600
  *
13440
13601
  * @param propName The name of the property to update.
13441
- * @param values The collection of values and the strings inbetween those values, beginning with a
13602
+ * @param values The collection of values and the strings in between those values, beginning with a
13442
13603
  * string prefix and ending with a string suffix.
13443
13604
  * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
13444
13605
  * @param sanitizer An optional sanitizer function
@@ -13877,7 +14038,7 @@ export declare function ɵɵsetNgModuleScope(type: any, scope: {
13877
14038
  /**
13878
14039
  * A feature that acts as a setup code for the {@link StandaloneService}.
13879
14040
  *
13880
- * The most important responsaibility of this feature is to expose the "getStandaloneInjector"
14041
+ * The most important responsibility of this feature is to expose the "getStandaloneInjector"
13881
14042
  * function (an entry points to a standalone injector creation) on a component definition object. We
13882
14043
  * go through the features infrastructure to make sure that the standalone injector creation logic
13883
14044
  * is tree-shakable and not included in applications that don't use standalone components.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "14.1.0-next.4",
3
+ "version": "14.1.1",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -104,7 +104,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
104
104
  var _a, _b;
105
105
  const symbol = typeChecker.getSymbolAtLocation(node);
106
106
  // We check symbol.declarations because we actually care about the name at the declaration site,
107
- // not the usage site. These could be different in the case of overriden constructors.
107
+ // not the usage site. These could be different in the case of overridden constructors.
108
108
  if (!symbol || symbol.declarations === undefined || !symbol.declarations.length)
109
109
  return false;
110
110
  const decl = symbol.declarations[0];
@@ -131,4 +131,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
131
131
  return false;
132
132
  }
133
133
  });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUVyRCxRQUFBLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0lBQzVCLFFBQUEsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFBLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztJQVN0QyxTQUFnQixXQUFXLENBQ3ZCLFVBQXlCLEVBQUUsV0FBMkIsRUFBRSxPQUFrQjtRQUM1RSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkMsMERBQTBEO1FBQzFELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVqQyxtREFBbUQ7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLHNGQUFzRjtnQkFDdEYsOENBQThDO2dCQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QjtZQUNELEtB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UUFDaEcsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxLQUFLLG1CQUFXLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUzRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzZXMgPSBuZXcgU2V0KFsnRm9ybUFycmF5JywgJ0Zvcm1CdWlsZGVyJywgJ0Zvcm1Db250cm9sJywgJ0Zvcm1Hcm91cCddKTtcbmV4cG9ydCBjb25zdCBmb3JtQ29udHJvbCA9ICdGb3JtQ29udHJvbCc7XG5leHBvcnQgY29uc3QgdW50eXBlZFByZWZpeCA9ICdVbnR5cGVkJztcbmV4cG9ydCBjb25zdCBmb3JtcyA9ICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0YWJsZU5vZGUge1xuICBub2RlOiB0cy5Ob2RlO1xuICBpbXBvcnROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHJld3JpdGVGbiA9IChzdGFydFBvczogbnVtYmVyLCBvcmlnTGVuZ3RoOiBudW1iZXIsIHRleHQ6IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVGaWxlKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcmV3cml0ZTogcmV3cml0ZUZuKSB7XG4gIGNvbnN0IGltcG9ydHMgPSBnZXRJbXBvcnRzKHNvdXJjZUZpbGUpO1xuXG4gIC8vIElmIG5vIHJlbGV2YW50IGNsYXNzZXMgYXJlIGltcG9ydGVkLCB3ZSBjYW4gZXhpdCBlYXJseS5cbiAgaWYgKGltcG9ydHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gIGZvciAobGV0IGkgPSBpbXBvcnRzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBpbXAgPSBpbXBvcnRzW2ldO1xuICAgIGNvbnN0IHVzYWdlcyA9IGdldFVzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wKTtcbiAgICBpZiAodXNhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIG5vIHVzYWdlcyBvZiB0aGlzIGNsYXNzIHdlIG5lZWQgdG8gbWlncmF0ZSBpdCwgd2Ugc2hvdWxkIGNvbXBsZXRlbHlcbiAgICAgIC8vIHNraXAgaXQgZm9yIHRoZSBzdWJzZXF1ZW50IG1pZ3JhdGlvbiBzdGVwcy5cbiAgICAgIGltcG9ydHMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVzYWdlIG9mIHVzYWdlcykge1xuICAgICAgY29uc3QgbmV3TmFtZSA9IGdldFVudHlwZWRWZXJzaW9uT2ZJbXBvcnRPck5hbWUodXNhZ2UuaW1wb3J0TmFtZSk7XG4gICAgICBpZiAobmV3TmFtZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgVHlwZWQgZm9ybXMgbWlncmF0aW9uIGVycm9yOiB1bmtub3duIHJlcGxhY2VtZW50IGZvciB1c2FnZSAke3VzYWdlLm5vZGUuZ2V0VGV4dCgpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJld3JpdGUodXNhZ2Uubm9kZS5nZXRTdGFydCgpLCB1c2FnZS5ub2RlLmdldFdpZHRoKCksIG5ld05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBlYWNoIGltcG9ydGVkIGNvbnRyb2wgY2xhc3MsIG1pZ3JhdGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdXB0eXBlZCBpbXBvcnQuXG4gIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICBjb25zdCB1bnR5cGVkQ2xhc3MgPSBnZXRVbnR5cGVkVmVyc2lvbk9mSW1wb3J0T3JOYW1lKGltcC5nZXRUZXh0KCkpO1xuICAgIGlmICh1bnR5cGVkQ2xhc3MgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFR5cGVkIGZvcm1zIG1pZ3JhdGlvbiBlcnJvcjogdW5rbm93biB1bnR5cGVkIHZlcnNpb24gb2YgaW1wb3J0ICR7aW1wLmdldFRleHQoKX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsIGZvcm1zLCB1bnR5cGVkQ2xhc3MpKSB7XG4gICAgICAvLyBJbiBvcmRlciB0byBtYWtlIHRoZSBtaWdyYXRpb24gaWRlbXBvdGVudCwgd2UgbXVzdCBjaGVjayB3aGV0aGVyIHRoZSB1bnR5cGVkIHZlcnNpb24gb2YgdGhlXG4gICAgICAvLyBjbGFzcyBpcyBhbHJlYWR5IHByZXNlbnQuIElmIHByZXNlbnQsIGltbWVkaWF0ZWx5IGNvbnRpbnVlLlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJld3JpdGUoaW1wLmdldFN0YXJ0KCksIGltcC5nZXRXaWR0aCgpLCB1bnR5cGVkQ2xhc3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydHMoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLkltcG9ydFNwZWNpZmllcltdIHtcbiAgbGV0IGltcG9ydHM6IHRzLkltcG9ydFNwZWNpZmllcltdID0gW107XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGNvbnN0IHNwZWNpZmllciA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCBmb3JtcywgY2MpO1xuICAgIGlmICghc3BlY2lmaWVyKSBjb250aW51ZTtcbiAgICBpbXBvcnRzLnB1c2goc3BlY2lmaWVyKTtcbiAgfVxuICByZXR1cm4gaW1wb3J0cztcbn1cblxuZnVuY3Rpb24gZ2V0VW50eXBlZFZlcnNpb25PZkltcG9ydE9yTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGlmIChuYW1lLmluY2x1ZGVzKGNjKSkge1xuICAgICAgcmV0dXJuIGAke3VudHlwZWRQcmVmaXh9JHtjY31gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VXNhZ2VzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcik6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBjb25zdCB1c2FnZXM6IE1pZ3JhdGFibGVOb2RlW10gPSBbXTtcbiAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICBpZiAodHMuaXNJbXBvcnRTcGVjaWZpZXIobm9kZSkpIHtcbiAgICAgIC8vIFNraXAgdGhpcyBub2RlIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuOyBpbXBvcnRzIGFyZSBhIHNwZWNpYWwgY2FzZS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSAmJiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZSwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdXNhZ2VzLnB1c2goe25vZGUsIGltcG9ydE5hbWU6IGltcG9ydFNwZWNpZmllci5nZXRUZXh0KCl9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSk7XG4gIH07XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCB2aXNpdE5vZGUpO1xuICByZXR1cm4gdXNhZ2VzO1xufVxuXG5mdW5jdGlvbiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydChcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLklkZW50aWZpZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgc3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICAvLyBXZSBjaGVjayBzeW1ib2wuZGVjbGFyYXRpb25zIGJlY2F1c2Ugd2UgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgbmFtZSBhdCB0aGUgZGVjbGFyYXRpb24gc2l0ZSxcbiAgLy8gbm90IHRoZSB1c2FnZSBzaXRlLiBUaGVzZSBjb3VsZCBiZSBkaWZmZXJlbnQgaW4gdGhlIGNhc2Ugb2Ygb3ZlcnJpZGVuIGNvbnN0cnVjdG9ycy5cbiAgaWYgKCFzeW1ib2wgfHwgc3ltYm9sLmRlY2xhcmF0aW9ucyA9PT0gdW5kZWZpbmVkIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGRlY2wgPSBzeW1ib2wuZGVjbGFyYXRpb25zWzBdO1xuICBpZiAoIXRzLmlzSW1wb3J0U3BlY2lmaWVyKGRlY2wpKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQXMgcGVyIGB0eXBlc2NyaXB0L2ltcG9ydHMudHNgLCB3ZSBtdXN0IHdhbGsgdXAgdGhlIHRyZWUgdG8gZmluZCB0aGUgZW5jbG9zaW5nIGltcG9ydFxuICAvLyBkZWNsYXJhdGlvbi4gRm9yIHJlYXNvbnMgc3BlY2lmaWMgdG8gdGhlIFRTIEFTVCwgdGhpcyBpcyBhbHdheXMgMyBsZXZlbHMgdXAgZnJvbSBhbiBpbXBvcnRcbiAgLy8gc3BlY2lmaWVyIG5vZGUuXG4gIGNvbnN0IGltcG9ydERlY2wgPSBkZWNsLnBhcmVudC5wYXJlbnQucGFyZW50O1xuICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChpbXBvcnREZWNsLm1vZHVsZVNwZWNpZmllcikpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBpbXBvcnROYW1lID0gdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oaW1wb3J0U3BlY2lmaWVyKT8uZ2V0U3ltYm9sKCk/LmdldE5hbWUoKTtcbiAgaWYgKCFpbXBvcnROYW1lKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSGFuZGxlcyBhbGlhc2VkIGltcG9ydHM6IGUuZy4gXCJpbXBvcnQge0NvbXBvbmVudCBhcyBteUNvbXB9IGZyb20gLi4uXCI7XG4gIGNvbnN0IGRlY2xOYW1lID0gZGVjbC5wcm9wZXJ0eU5hbWUgPyBkZWNsLnByb3BlcnR5TmFtZS50ZXh0IDogZGVjbC5uYW1lLnRleHQ7XG5cbiAgaWYgKGltcG9ydE5hbWUgPT09IGRlY2xOYW1lKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBJbiB0aGUgY2FzZSBvZiBGb3JtQ29udHJvbCdzIG92ZXJyaWRkZW4gZXhwb3J0ZWQgY29uc3RydWN0b3IsIHRoZSB2YWx1ZSBuYW1lIGFuZCBkZWNsYXJhdGlvblxuICAvLyBuYW1lIGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZS4gRm9yIG91ciBwdXJwb3NlcywgaXQncyBlbm91Z2ggdG8gY2hlY2sgd2hldGhlciB0aGUgbGF0dGVyIGlzIGFcbiAgLy8gc3Vic3RyaW5nIG9mIHRoZSBmb3JtZXIuXG4gIGlmIChkZWNsTmFtZSA9PT0gZm9ybUNvbnRyb2wgJiYgaW1wb3J0TmFtZS5pbmNsdWRlcyhkZWNsTmFtZSkpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUVyRCxRQUFBLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0lBQzVCLFFBQUEsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFBLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztJQVN0QyxTQUFnQixXQUFXLENBQ3ZCLFVBQXlCLEVBQUUsV0FBMkIsRUFBRSxPQUFrQjtRQUM1RSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkMsMERBQTBEO1FBQzFELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVqQyxtREFBbUQ7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLHNGQUFzRjtnQkFDdEYsOENBQThDO2dCQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QjtZQUNELEtB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UUFDaEcsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxLQUFLLG1CQUFXLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUzRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzZXMgPSBuZXcgU2V0KFsnRm9ybUFycmF5JywgJ0Zvcm1CdWlsZGVyJywgJ0Zvcm1Db250cm9sJywgJ0Zvcm1Hcm91cCddKTtcbmV4cG9ydCBjb25zdCBmb3JtQ29udHJvbCA9ICdGb3JtQ29udHJvbCc7XG5leHBvcnQgY29uc3QgdW50eXBlZFByZWZpeCA9ICdVbnR5cGVkJztcbmV4cG9ydCBjb25zdCBmb3JtcyA9ICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0YWJsZU5vZGUge1xuICBub2RlOiB0cy5Ob2RlO1xuICBpbXBvcnROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHJld3JpdGVGbiA9IChzdGFydFBvczogbnVtYmVyLCBvcmlnTGVuZ3RoOiBudW1iZXIsIHRleHQ6IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVGaWxlKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcmV3cml0ZTogcmV3cml0ZUZuKSB7XG4gIGNvbnN0IGltcG9ydHMgPSBnZXRJbXBvcnRzKHNvdXJjZUZpbGUpO1xuXG4gIC8vIElmIG5vIHJlbGV2YW50IGNsYXNzZXMgYXJlIGltcG9ydGVkLCB3ZSBjYW4gZXhpdCBlYXJseS5cbiAgaWYgKGltcG9ydHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gIGZvciAobGV0IGkgPSBpbXBvcnRzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBpbXAgPSBpbXBvcnRzW2ldO1xuICAgIGNvbnN0IHVzYWdlcyA9IGdldFVzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wKTtcbiAgICBpZiAodXNhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIG5vIHVzYWdlcyBvZiB0aGlzIGNsYXNzIHdlIG5lZWQgdG8gbWlncmF0ZSBpdCwgd2Ugc2hvdWxkIGNvbXBsZXRlbHlcbiAgICAgIC8vIHNraXAgaXQgZm9yIHRoZSBzdWJzZXF1ZW50IG1pZ3JhdGlvbiBzdGVwcy5cbiAgICAgIGltcG9ydHMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVzYWdlIG9mIHVzYWdlcykge1xuICAgICAgY29uc3QgbmV3TmFtZSA9IGdldFVudHlwZWRWZXJzaW9uT2ZJbXBvcnRPck5hbWUodXNhZ2UuaW1wb3J0TmFtZSk7XG4gICAgICBpZiAobmV3TmFtZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgVHlwZWQgZm9ybXMgbWlncmF0aW9uIGVycm9yOiB1bmtub3duIHJlcGxhY2VtZW50IGZvciB1c2FnZSAke3VzYWdlLm5vZGUuZ2V0VGV4dCgpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJld3JpdGUodXNhZ2Uubm9kZS5nZXRTdGFydCgpLCB1c2FnZS5ub2RlLmdldFdpZHRoKCksIG5ld05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBlYWNoIGltcG9ydGVkIGNvbnRyb2wgY2xhc3MsIG1pZ3JhdGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdXB0eXBlZCBpbXBvcnQuXG4gIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICBjb25zdCB1bnR5cGVkQ2xhc3MgPSBnZXRVbnR5cGVkVmVyc2lvbk9mSW1wb3J0T3JOYW1lKGltcC5nZXRUZXh0KCkpO1xuICAgIGlmICh1bnR5cGVkQ2xhc3MgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFR5cGVkIGZvcm1zIG1pZ3JhdGlvbiBlcnJvcjogdW5rbm93biB1bnR5cGVkIHZlcnNpb24gb2YgaW1wb3J0ICR7aW1wLmdldFRleHQoKX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsIGZvcm1zLCB1bnR5cGVkQ2xhc3MpKSB7XG4gICAgICAvLyBJbiBvcmRlciB0byBtYWtlIHRoZSBtaWdyYXRpb24gaWRlbXBvdGVudCwgd2UgbXVzdCBjaGVjayB3aGV0aGVyIHRoZSB1bnR5cGVkIHZlcnNpb24gb2YgdGhlXG4gICAgICAvLyBjbGFzcyBpcyBhbHJlYWR5IHByZXNlbnQuIElmIHByZXNlbnQsIGltbWVkaWF0ZWx5IGNvbnRpbnVlLlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJld3JpdGUoaW1wLmdldFN0YXJ0KCksIGltcC5nZXRXaWR0aCgpLCB1bnR5cGVkQ2xhc3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydHMoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLkltcG9ydFNwZWNpZmllcltdIHtcbiAgbGV0IGltcG9ydHM6IHRzLkltcG9ydFNwZWNpZmllcltdID0gW107XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGNvbnN0IHNwZWNpZmllciA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCBmb3JtcywgY2MpO1xuICAgIGlmICghc3BlY2lmaWVyKSBjb250aW51ZTtcbiAgICBpbXBvcnRzLnB1c2goc3BlY2lmaWVyKTtcbiAgfVxuICByZXR1cm4gaW1wb3J0cztcbn1cblxuZnVuY3Rpb24gZ2V0VW50eXBlZFZlcnNpb25PZkltcG9ydE9yTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gIGZvciAoY29uc3QgY2Mgb2YgY2xhc3Nlcykge1xuICAgIGlmIChuYW1lLmluY2x1ZGVzKGNjKSkge1xuICAgICAgcmV0dXJuIGAke3VudHlwZWRQcmVmaXh9JHtjY31gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VXNhZ2VzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcik6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBjb25zdCB1c2FnZXM6IE1pZ3JhdGFibGVOb2RlW10gPSBbXTtcbiAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICBpZiAodHMuaXNJbXBvcnRTcGVjaWZpZXIobm9kZSkpIHtcbiAgICAgIC8vIFNraXAgdGhpcyBub2RlIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuOyBpbXBvcnRzIGFyZSBhIHNwZWNpYWwgY2FzZS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSAmJiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZSwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdXNhZ2VzLnB1c2goe25vZGUsIGltcG9ydE5hbWU6IGltcG9ydFNwZWNpZmllci5nZXRUZXh0KCl9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSk7XG4gIH07XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCB2aXNpdE5vZGUpO1xuICByZXR1cm4gdXNhZ2VzO1xufVxuXG5mdW5jdGlvbiBpc1VzYWdlT2ZGb3Jtc0ltcG9ydChcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLklkZW50aWZpZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgc3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICAvLyBXZSBjaGVjayBzeW1ib2wuZGVjbGFyYXRpb25zIGJlY2F1c2Ugd2UgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgbmFtZSBhdCB0aGUgZGVjbGFyYXRpb24gc2l0ZSxcbiAgLy8gbm90IHRoZSB1c2FnZSBzaXRlLiBUaGVzZSBjb3VsZCBiZSBkaWZmZXJlbnQgaW4gdGhlIGNhc2Ugb2Ygb3ZlcnJpZGRlbiBjb25zdHJ1Y3RvcnMuXG4gIGlmICghc3ltYm9sIHx8IHN5bWJvbC5kZWNsYXJhdGlvbnMgPT09IHVuZGVmaW5lZCB8fCAhc3ltYm9sLmRlY2xhcmF0aW9ucy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBkZWNsID0gc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtcbiAgaWYgKCF0cy5pc0ltcG9ydFNwZWNpZmllcihkZWNsKSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIEFzIHBlciBgdHlwZXNjcmlwdC9pbXBvcnRzLnRzYCwgd2UgbXVzdCB3YWxrIHVwIHRoZSB0cmVlIHRvIGZpbmQgdGhlIGVuY2xvc2luZyBpbXBvcnRcbiAgLy8gZGVjbGFyYXRpb24uIEZvciByZWFzb25zIHNwZWNpZmljIHRvIHRoZSBUUyBBU1QsIHRoaXMgaXMgYWx3YXlzIDMgbGV2ZWxzIHVwIGZyb20gYW4gaW1wb3J0XG4gIC8vIHNwZWNpZmllciBub2RlLlxuICBjb25zdCBpbXBvcnREZWNsID0gZGVjbC5wYXJlbnQucGFyZW50LnBhcmVudDtcbiAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWwoaW1wb3J0RGVjbC5tb2R1bGVTcGVjaWZpZXIpKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgaW1wb3J0TmFtZSA9IHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGltcG9ydFNwZWNpZmllcik/LmdldFN5bWJvbCgpPy5nZXROYW1lKCk7XG4gIGlmICghaW1wb3J0TmFtZSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIEhhbmRsZXMgYWxpYXNlZCBpbXBvcnRzOiBlLmcuIFwiaW1wb3J0IHtDb21wb25lbnQgYXMgbXlDb21wfSBmcm9tIC4uLlwiO1xuICBjb25zdCBkZWNsTmFtZSA9IGRlY2wucHJvcGVydHlOYW1lID8gZGVjbC5wcm9wZXJ0eU5hbWUudGV4dCA6IGRlY2wubmFtZS50ZXh0O1xuXG4gIGlmIChpbXBvcnROYW1lID09PSBkZWNsTmFtZSkgcmV0dXJuIHRydWU7XG5cbiAgLy8gSW4gdGhlIGNhc2Ugb2YgRm9ybUNvbnRyb2wncyBvdmVycmlkZGVuIGV4cG9ydGVkIGNvbnN0cnVjdG9yLCB0aGUgdmFsdWUgbmFtZSBhbmQgZGVjbGFyYXRpb25cbiAgLy8gbmFtZSBhcmUgbm90IGV4YWN0bHkgdGhlIHNhbWUuIEZvciBvdXIgcHVycG9zZXMsIGl0J3MgZW5vdWdoIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxhdHRlciBpcyBhXG4gIC8vIHN1YnN0cmluZyBvZiB0aGUgZm9ybWVyLlxuICBpZiAoZGVjbE5hbWUgPT09IGZvcm1Db250cm9sICYmIGltcG9ydE5hbWUuaW5jbHVkZXMoZGVjbE5hbWUpKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
@@ -49,7 +49,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
49
49
  const typeNode = typeChecker.typeToTypeNode(type, undefined, typescript_1.default.NodeBuilderFlags.None);
50
50
  let hasSeenNullableType = false;
51
51
  // Trace the type of the node back to a type node, walk
52
- // through all of its sub-nodes and look for nullable tyes.
52
+ // through all of its sub-nodes and look for nullable types.
53
53
  if (typeNode) {
54
54
  (function walk(current) {
55
55
  if (current.kind === typescript_1.default.SyntaxKind.NullKeyword ||
@@ -90,4 +90,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
90
90
  }
91
91
  exports.hasOneOfTypes = hasOneOfTypes;
92
92
  });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL3V0aWxzL3R5cGVzY3JpcHQvc3ltYm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUU1QixTQUFnQiwyQkFBMkIsQ0FBQyxJQUFhLEVBQUUsV0FBMkI7UUFFcEYsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5ELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsb0JBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ3BELE1BQU0sR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0M7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBVEQsa0VBU0M7SUFFRCx5RUFBeUU7SUFDekUsU0FBZ0IsbUJBQW1CLENBQy9CLFdBQTJCLEVBQUUsSUFBYSxFQUFFLGVBQW1DOztRQUNqRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hGLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxZQUFZLDBDQUFHLENBQUMsQ0FBQyxNQUFJLE1BQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLFlBQVksMENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUN2RSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQU5ELGtEQU1DO0lBRUQsZ0ZBQWdGO0lBQ2hGLFNBQWdCLGNBQWMsQ0FBQyxXQUEyQixFQUFFLElBQWE7UUFDdkUsK0VBQStFO1FBQy9FLDZFQUE2RTtRQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksb0JBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsb0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RixJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUVoQyx1REFBdUQ7UUFDdkQsMkRBQTJEO1FBQzNELElBQUksUUFBUSxFQUFFO1lBQ1osQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFnQjtnQkFDN0IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLG9CQUFFLENBQUMsVUFBVSxDQUFDLFdBQVc7b0JBQzFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssb0JBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO29CQUMvQyxPQUFPLENBQUMsSUFBSSxLQUFLLG9CQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtvQkFDOUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO29CQUMzQixzRUFBc0U7b0JBQ3RFLDBFQUEwRTtvQkFDMUUsNENBQTRDO2lCQUM3QztxQkFBTSxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUE3QkQsd0NBNkJDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsYUFBYSxDQUN6QixXQUEyQixFQUFFLElBQWEsRUFBRSxLQUFlO1FBQzdELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FDVixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxvQkFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksUUFBUSxFQUFFO1lBQ1osQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFnQjtnQkFDN0IsSUFBSSxvQkFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUQsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDakI7cUJBQU0sSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLG9CQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3RELE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDZDtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFoQkQsc0NBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlU3ltYm9sT2ZEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiB0cy5TeW1ib2x8XG4gICAgdW5kZWZpbmVkIHtcbiAgbGV0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG5cbiAgd2hpbGUgKHN5bWJvbCAmJiBzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykge1xuICAgIHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldEFsaWFzZWRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIHJldHVybiBzeW1ib2w7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgcmVmZXJyaW5nIHRvIGEgc3BlY2lmaWMgaW1wb3J0IHNwZWNpZmllci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZVRvSW1wb3J0KFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSwgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9kZVN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG5vZGUpLmdldFN5bWJvbCgpO1xuICBjb25zdCBpbXBvcnRTeW1ib2wgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihpbXBvcnRTcGVjaWZpZXIpLmdldFN5bWJvbCgpO1xuICByZXR1cm4gISEobm9kZVN5bWJvbD8uZGVjbGFyYXRpb25zPy5bMF0gJiYgaW1wb3J0U3ltYm9sPy5kZWNsYXJhdGlvbnM/LlswXSkgJiZcbiAgICAgIG5vZGVTeW1ib2wuZGVjbGFyYXRpb25zWzBdID09PSBpbXBvcnRTeW1ib2wuZGVjbGFyYXRpb25zWzBdO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBub2RlJ3MgdHlwZSBpcyBudWxsYWJsZSAoYG51bGxgLCBgdW5kZWZpbmVkYCBvciBgdm9pZGApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbGFibGVUeXBlKHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSkge1xuICAvLyBTa2lwIGV4cHJlc3Npb25zIGluIHRoZSBmb3JtIG9mIGBmb28uYmFyIS5iYXpgIHNpbmNlIHRoZSBgVHlwZUNoZWNrZXJgIHNlZW1zXG4gIC8vIHRvIGlkZW50aWZ5IHRoZW0gYXMgbnVsbCwgZXZlbiB0aG91Z2ggdGhlIHVzZXIgaW5kaWNhdGVkIHRoYXQgaXQgd29uJ3QgYmUuXG4gIGlmIChub2RlLnBhcmVudCAmJiB0cy5pc05vbk51bGxFeHByZXNzaW9uKG5vZGUucGFyZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlKTtcbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlQ2hlY2tlci50eXBlVG9UeXBlTm9kZSh0eXBlLCB1bmRlZmluZWQsIHRzLk5vZGVCdWlsZGVyRmxhZ3MuTm9uZSk7XG4gIGxldCBoYXNTZWVuTnVsbGFibGVUeXBlID0gZmFsc2U7XG5cbiAgLy8gVHJhY2UgdGhlIHR5cGUgb2YgdGhlIG5vZGUgYmFjayB0byBhIHR5cGUgbm9kZSwgd2Fsa1xuICAvLyB0aHJvdWdoIGFsbCBvZiBpdHMgc3ViLW5vZGVzIGFuZCBsb29rIGZvciBudWxsYWJsZSB0eWVzLlxuICBpZiAodHlwZU5vZGUpIHtcbiAgICAoZnVuY3Rpb24gd2FsayhjdXJyZW50OiB0cy5Ob2RlKSB7XG4gICAgICBpZiAoY3VycmVudC5raW5kID09PSB0cy5TeW50YXhLaW5kLk51bGxLZXl3b3JkIHx8XG4gICAgICAgICAgY3VycmVudC5raW5kID09PSB0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQgfHxcbiAgICAgICAgICBjdXJyZW50LmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVm9pZEtleXdvcmQpIHtcbiAgICAgICAgaGFzU2Vlbk51bGxhYmxlVHlwZSA9IHRydWU7XG4gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBkZXNjZW5kIGludG8gdHlwZSBsaXRlcmFscywgYmVjYXVzZSBpdCBtYXkgY2F1c2VcbiAgICAgICAgLy8gdXMgdG8gbWlzLWlkZW50aWZ5IHRoZSByb290IHR5cGUgYXMgbnVsbGFibGUsIGJlY2F1c2UgaXQgaGFzIGEgbnVsbGFibGVcbiAgICAgICAgLy8gcHJvcGVydHkgKGUuZy4gYHsgZm9vOiBzdHJpbmcgfCBudWxsIH1gKS5cbiAgICAgIH0gZWxzZSBpZiAoIWhhc1NlZW5OdWxsYWJsZVR5cGUgJiYgIXRzLmlzVHlwZUxpdGVyYWxOb2RlKGN1cnJlbnQpKSB7XG4gICAgICAgIGN1cnJlbnQuZm9yRWFjaENoaWxkKHdhbGspO1xuICAgICAgfVxuICAgIH0pKHR5cGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBoYXNTZWVuTnVsbGFibGVUeXBlO1xufVxuXG4vKipcbiAqIFdhbGtzIHRocm91Z2ggdGhlIHR5cGVzIGFuZCBzdWItdHlwZXMgb2YgYSBub2RlLCBsb29raW5nIGZvciBhXG4gKiB0eXBlIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBwYXNzZWQtaW4gb25lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc09uZU9mVHlwZXMoXG4gICAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBub2RlOiB0cy5Ob2RlLCB0eXBlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgY29uc3QgdHlwZSA9IHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG5vZGUpO1xuICBjb25zdCB0eXBlTm9kZSA9XG4gICAgICB0eXBlID8gdHlwZUNoZWNrZXIudHlwZVRvVHlwZU5vZGUodHlwZSwgdW5kZWZpbmVkLCB0cy5Ob2RlQnVpbGRlckZsYWdzLk5vbmUpIDogdW5kZWZpbmVkO1xuICBsZXQgaGFzTWF0Y2ggPSBmYWxzZTtcbiAgaWYgKHR5cGVOb2RlKSB7XG4gICAgKGZ1bmN0aW9uIHdhbGsoY3VycmVudDogdHMuTm9kZSkge1xuICAgICAgaWYgKHRzLmlzSWRlbnRpZmllcihjdXJyZW50KSAmJiB0eXBlcy5pbmNsdWRlcyhjdXJyZW50LnRleHQpKSB7XG4gICAgICAgIGhhc01hdGNoID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWhhc01hdGNoICYmICF0cy5pc1R5cGVMaXRlcmFsTm9kZShjdXJyZW50KSkge1xuICAgICAgICBjdXJyZW50LmZvckVhY2hDaGlsZCh3YWxrKTtcbiAgICAgIH1cbiAgICB9KSh0eXBlTm9kZSk7XG4gIH1cbiAgcmV0dXJuIGhhc01hdGNoO1xufVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL3V0aWxzL3R5cGVzY3JpcHQvc3ltYm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUU1QixTQUFnQiwyQkFBMkIsQ0FBQyxJQUFhLEVBQUUsV0FBMkI7UUFFcEYsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5ELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsb0JBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ3BELE1BQU0sR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0M7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBVEQsa0VBU0M7SUFFRCx5RUFBeUU7SUFDekUsU0FBZ0IsbUJBQW1CLENBQy9CLFdBQTJCLEVBQUUsSUFBYSxFQUFFLGVBQW1DOztRQUNqRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hGLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxZQUFZLDBDQUFHLENBQUMsQ0FBQyxNQUFJLE1BQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLFlBQVksMENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUN2RSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQU5ELGtEQU1DO0lBRUQsZ0ZBQWdGO0lBQ2hGLFNBQWdCLGNBQWMsQ0FBQyxXQUEyQixFQUFFLElBQWE7UUFDdkUsK0VBQStFO1FBQy9FLDZFQUE2RTtRQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksb0JBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsb0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RixJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUVoQyx1REFBdUQ7UUFDdkQsNERBQTREO1FBQzVELElBQUksUUFBUSxFQUFFO1lBQ1osQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFnQjtnQkFDN0IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLG9CQUFFLENBQUMsVUFBVSxDQUFDLFdBQVc7b0JBQzFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssb0JBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO29CQUMvQyxPQUFPLENBQUMsSUFBSSxLQUFLLG9CQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtvQkFDOUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO29CQUMzQixzRUFBc0U7b0JBQ3RFLDBFQUEwRTtvQkFDMUUsNENBQTRDO2lCQUM3QztxQkFBTSxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUE3QkQsd0NBNkJDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsYUFBYSxDQUN6QixXQUEyQixFQUFFLElBQWEsRUFBRSxLQUFlO1FBQzdELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FDVixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxvQkFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksUUFBUSxFQUFFO1lBQ1osQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFnQjtnQkFDN0IsSUFBSSxvQkFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUQsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDakI7cUJBQU0sSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLG9CQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3RELE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDZDtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFoQkQsc0NBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlU3ltYm9sT2ZEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiB0cy5TeW1ib2x8XG4gICAgdW5kZWZpbmVkIHtcbiAgbGV0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG5cbiAgd2hpbGUgKHN5bWJvbCAmJiBzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykge1xuICAgIHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldEFsaWFzZWRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIHJldHVybiBzeW1ib2w7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgcmVmZXJyaW5nIHRvIGEgc3BlY2lmaWMgaW1wb3J0IHNwZWNpZmllci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZVRvSW1wb3J0KFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSwgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9kZVN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG5vZGUpLmdldFN5bWJvbCgpO1xuICBjb25zdCBpbXBvcnRTeW1ib2wgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihpbXBvcnRTcGVjaWZpZXIpLmdldFN5bWJvbCgpO1xuICByZXR1cm4gISEobm9kZVN5bWJvbD8uZGVjbGFyYXRpb25zPy5bMF0gJiYgaW1wb3J0U3ltYm9sPy5kZWNsYXJhdGlvbnM/LlswXSkgJiZcbiAgICAgIG5vZGVTeW1ib2wuZGVjbGFyYXRpb25zWzBdID09PSBpbXBvcnRTeW1ib2wuZGVjbGFyYXRpb25zWzBdO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBub2RlJ3MgdHlwZSBpcyBudWxsYWJsZSAoYG51bGxgLCBgdW5kZWZpbmVkYCBvciBgdm9pZGApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbGFibGVUeXBlKHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSkge1xuICAvLyBTa2lwIGV4cHJlc3Npb25zIGluIHRoZSBmb3JtIG9mIGBmb28uYmFyIS5iYXpgIHNpbmNlIHRoZSBgVHlwZUNoZWNrZXJgIHNlZW1zXG4gIC8vIHRvIGlkZW50aWZ5IHRoZW0gYXMgbnVsbCwgZXZlbiB0aG91Z2ggdGhlIHVzZXIgaW5kaWNhdGVkIHRoYXQgaXQgd29uJ3QgYmUuXG4gIGlmIChub2RlLnBhcmVudCAmJiB0cy5pc05vbk51bGxFeHByZXNzaW9uKG5vZGUucGFyZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlKTtcbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlQ2hlY2tlci50eXBlVG9UeXBlTm9kZSh0eXBlLCB1bmRlZmluZWQsIHRzLk5vZGVCdWlsZGVyRmxhZ3MuTm9uZSk7XG4gIGxldCBoYXNTZWVuTnVsbGFibGVUeXBlID0gZmFsc2U7XG5cbiAgLy8gVHJhY2UgdGhlIHR5cGUgb2YgdGhlIG5vZGUgYmFjayB0byBhIHR5cGUgbm9kZSwgd2Fsa1xuICAvLyB0aHJvdWdoIGFsbCBvZiBpdHMgc3ViLW5vZGVzIGFuZCBsb29rIGZvciBudWxsYWJsZSB0eXBlcy5cbiAgaWYgKHR5cGVOb2RlKSB7XG4gICAgKGZ1bmN0aW9uIHdhbGsoY3VycmVudDogdHMuTm9kZSkge1xuICAgICAgaWYgKGN1cnJlbnQua2luZCA9PT0gdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZCB8fFxuICAgICAgICAgIGN1cnJlbnQua2luZCA9PT0gdHMuU3ludGF4S2luZC5VbmRlZmluZWRLZXl3b3JkIHx8XG4gICAgICAgICAgY3VycmVudC5raW5kID09PSB0cy5TeW50YXhLaW5kLlZvaWRLZXl3b3JkKSB7XG4gICAgICAgIGhhc1NlZW5OdWxsYWJsZVR5cGUgPSB0cnVlO1xuICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgZGVzY2VuZCBpbnRvIHR5cGUgbGl0ZXJhbHMsIGJlY2F1c2UgaXQgbWF5IGNhdXNlXG4gICAgICAgIC8vIHVzIHRvIG1pcy1pZGVudGlmeSB0aGUgcm9vdCB0eXBlIGFzIG51bGxhYmxlLCBiZWNhdXNlIGl0IGhhcyBhIG51bGxhYmxlXG4gICAgICAgIC8vIHByb3BlcnR5IChlLmcuIGB7IGZvbzogc3RyaW5nIHwgbnVsbCB9YCkuXG4gICAgICB9IGVsc2UgaWYgKCFoYXNTZWVuTnVsbGFibGVUeXBlICYmICF0cy5pc1R5cGVMaXRlcmFsTm9kZShjdXJyZW50KSkge1xuICAgICAgICBjdXJyZW50LmZvckVhY2hDaGlsZCh3YWxrKTtcbiAgICAgIH1cbiAgICB9KSh0eXBlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gaGFzU2Vlbk51bGxhYmxlVHlwZTtcbn1cblxuLyoqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0eXBlcyBhbmQgc3ViLXR5cGVzIG9mIGEgbm9kZSwgbG9va2luZyBmb3IgYVxuICogdHlwZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgcGFzc2VkLWluIG9uZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNPbmVPZlR5cGVzKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSwgdHlwZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlKTtcbiAgY29uc3QgdHlwZU5vZGUgPVxuICAgICAgdHlwZSA/IHR5cGVDaGVja2VyLnR5cGVUb1R5cGVOb2RlKHR5cGUsIHVuZGVmaW5lZCwgdHMuTm9kZUJ1aWxkZXJGbGFncy5Ob25lKSA6IHVuZGVmaW5lZDtcbiAgbGV0IGhhc01hdGNoID0gZmFsc2U7XG4gIGlmICh0eXBlTm9kZSkge1xuICAgIChmdW5jdGlvbiB3YWxrKGN1cnJlbnQ6IHRzLk5vZGUpIHtcbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIoY3VycmVudCkgJiYgdHlwZXMuaW5jbHVkZXMoY3VycmVudC50ZXh0KSkge1xuICAgICAgICBoYXNNYXRjaCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNNYXRjaCAmJiAhdHMuaXNUeXBlTGl0ZXJhbE5vZGUoY3VycmVudCkpIHtcbiAgICAgICAgY3VycmVudC5mb3JFYWNoQ2hpbGQod2Fsayk7XG4gICAgICB9XG4gICAgfSkodHlwZU5vZGUpO1xuICB9XG4gIHJldHVybiBoYXNNYXRjaDtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.0-next.4
2
+ * @license Angular v14.1.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -237,7 +237,7 @@ export declare type MetadataOverride<T> = {
237
237
  * @publicApi
238
238
  */
239
239
  export declare interface ModuleTeardownOptions {
240
- /** Whether the test module should be destroyed after every test. */
240
+ /** Whether the test module should be destroyed after every test. Defaults to `true`. */
241
241
  destroyAfterEach: boolean;
242
242
  /** Whether errors during test module destruction should be re-thrown. Defaults to `true`. */
243
243
  rethrowErrors?: boolean;