@angular/language-service 9.0.6 → 9.0.7
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/bundles/language-service.umd.js +239 -220
- package/package.json +1 -1
- package/src/expression_diagnostics.js +11 -4
- package/src/version.js +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v9.0.
|
|
2
|
+
* @license Angular v9.0.7
|
|
3
3
|
* Copyright Google Inc. All Rights Reserved.
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -16770,12 +16770,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
16770
16770
|
stylingBuilder.registerClassAttr(value);
|
|
16771
16771
|
}
|
|
16772
16772
|
else {
|
|
16773
|
-
|
|
16774
|
-
i18nAttrs.push(attr);
|
|
16775
|
-
}
|
|
16776
|
-
else {
|
|
16777
|
-
outputAttrs.push(attr);
|
|
16778
|
-
}
|
|
16773
|
+
(attr.i18n ? i18nAttrs : outputAttrs).push(attr);
|
|
16779
16774
|
}
|
|
16780
16775
|
}
|
|
16781
16776
|
}
|
|
@@ -17035,16 +17030,20 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
17035
17030
|
this.templatePropertyBindings(templateIndex, template.templateAttrs);
|
|
17036
17031
|
// Only add normal input/output binding instructions on explicit <ng-template> elements.
|
|
17037
17032
|
if (template.tagName === NG_TEMPLATE_TAG_NAME) {
|
|
17033
|
+
var inputs_1 = [];
|
|
17034
|
+
var i18nAttrs_1 = template.attributes.filter(function (attr) { return !!attr.i18n; });
|
|
17035
|
+
template.inputs.forEach(function (input) { return (input.i18n ? i18nAttrs_1 : inputs_1).push(input); });
|
|
17038
17036
|
// Add i18n attributes that may act as inputs to directives. If such attributes are present,
|
|
17039
17037
|
// generate `i18nAttributes` instruction. Note: we generate it only for explicit <ng-template>
|
|
17040
17038
|
// elements, in case of inline templates, corresponding instructions will be generated in the
|
|
17041
17039
|
// nested template function.
|
|
17042
|
-
|
|
17043
|
-
|
|
17044
|
-
this.i18nAttributesInstruction(templateIndex, i18nAttrs, template.sourceSpan);
|
|
17040
|
+
if (i18nAttrs_1.length > 0) {
|
|
17041
|
+
this.i18nAttributesInstruction(templateIndex, i18nAttrs_1, template.sourceSpan);
|
|
17045
17042
|
}
|
|
17046
17043
|
// Add the input bindings
|
|
17047
|
-
|
|
17044
|
+
if (inputs_1.length > 0) {
|
|
17045
|
+
this.templatePropertyBindings(templateIndex, inputs_1);
|
|
17046
|
+
}
|
|
17048
17047
|
// Generate listeners for directive output
|
|
17049
17048
|
if (template.outputs.length > 0) {
|
|
17050
17049
|
var listeners = template.outputs.map(function (outputAst) { return ({
|
|
@@ -17145,11 +17144,22 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
17145
17144
|
var value_4 = input.value.visit(_this._valueConverter);
|
|
17146
17145
|
if (value_4 !== undefined) {
|
|
17147
17146
|
_this.allocateBindingSlots(value_4);
|
|
17148
|
-
|
|
17149
|
-
|
|
17150
|
-
|
|
17151
|
-
|
|
17152
|
-
|
|
17147
|
+
if (value_4 instanceof Interpolation) {
|
|
17148
|
+
// Params typically contain attribute namespace and value sanitizer, which is applicable
|
|
17149
|
+
// for regular HTML elements, but not applicable for <ng-template> (since props act as
|
|
17150
|
+
// inputs to directives), so keep params array empty.
|
|
17151
|
+
var params = [];
|
|
17152
|
+
// prop="{{value}}" case
|
|
17153
|
+
_this.interpolatedUpdateInstruction(getPropertyInterpolationExpression(value_4), templateIndex, input.name, input, value_4, params);
|
|
17154
|
+
}
|
|
17155
|
+
else {
|
|
17156
|
+
// [prop]="value" case
|
|
17157
|
+
propertyBindings.push({
|
|
17158
|
+
name: input.name,
|
|
17159
|
+
sourceSpan: input.sourceSpan,
|
|
17160
|
+
value: function () { return _this.convertPropertyBinding(value_4); }
|
|
17161
|
+
});
|
|
17162
|
+
}
|
|
17153
17163
|
}
|
|
17154
17164
|
}
|
|
17155
17165
|
});
|
|
@@ -18886,7 +18896,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
18886
18896
|
* Use of this source code is governed by an MIT-style license that can be
|
|
18887
18897
|
* found in the LICENSE file at https://angular.io/license
|
|
18888
18898
|
*/
|
|
18889
|
-
var VERSION$1 = new Version('9.0.
|
|
18899
|
+
var VERSION$1 = new Version('9.0.7');
|
|
18890
18900
|
|
|
18891
18901
|
/**
|
|
18892
18902
|
* @license
|
|
@@ -22452,9 +22462,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
22452
22462
|
});
|
|
22453
22463
|
}
|
|
22454
22464
|
else {
|
|
22455
|
-
//
|
|
22465
|
+
// Handle the symbols loaded by 'export *' directives.
|
|
22456
22466
|
var resolvedModule = this_1.resolveModule(moduleExport.from, filePath);
|
|
22457
|
-
if (resolvedModule) {
|
|
22467
|
+
if (resolvedModule && resolvedModule !== filePath) {
|
|
22458
22468
|
var nestedExports = this_1.getSymbolsOf(resolvedModule);
|
|
22459
22469
|
nestedExports.forEach(function (targetSymbol) {
|
|
22460
22470
|
var sourceSymbol = _this.getStaticSymbol(filePath, targetSymbol.name);
|
|
@@ -25798,7 +25808,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
25798
25808
|
*/
|
|
25799
25809
|
function refinedVariableType(value, mergedTable, query, templateElement) {
|
|
25800
25810
|
if (value === '$implicit') {
|
|
25801
|
-
// Special case
|
|
25811
|
+
// Special case: ngFor directive
|
|
25802
25812
|
var ngForDirective = templateElement.directives.find(function (d) {
|
|
25803
25813
|
var name = identifierName(d.directive.type);
|
|
25804
25814
|
return name == 'NgFor' || name == 'NgForOf';
|
|
@@ -25817,12 +25827,19 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
25817
25827
|
}
|
|
25818
25828
|
}
|
|
25819
25829
|
}
|
|
25820
|
-
|
|
25821
|
-
if (value === 'ngIf') {
|
|
25830
|
+
if (value === 'ngIf' || value === '$implicit') {
|
|
25822
25831
|
var ngIfDirective = templateElement.directives.find(function (d) { return identifierName(d.directive.type) === 'NgIf'; });
|
|
25823
25832
|
if (ngIfDirective) {
|
|
25833
|
+
// Special case: ngIf directive. The NgIf structural directive owns a template context with
|
|
25834
|
+
// "$implicit" and "ngIf" members. These properties are typed as generics. Until the language
|
|
25835
|
+
// service uses an Ivy and TypecheckBlock backend, we cannot bind these values to a concrete
|
|
25836
|
+
// type without manual inference. To get the concrete type, look up the type of the "ngIf"
|
|
25837
|
+
// import on the NgIf directive bound to the template.
|
|
25838
|
+
//
|
|
25839
|
+
// See @angular/common/ng_if.ts for more information.
|
|
25824
25840
|
var ngIfBinding = ngIfDirective.inputs.find(function (i) { return i.directiveName === 'ngIf'; });
|
|
25825
25841
|
if (ngIfBinding) {
|
|
25842
|
+
// Check if there is a known type bound to the ngIf input.
|
|
25826
25843
|
var bindingType = new AstType(mergedTable, query, {}).getType(ngIfBinding.value);
|
|
25827
25844
|
if (bindingType) {
|
|
25828
25845
|
return bindingType;
|
|
@@ -30677,6 +30694,8 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
30677
30694
|
* Use of this source code is governed by an MIT-style license that can be
|
|
30678
30695
|
* found in the LICENSE file at https://angular.io/license
|
|
30679
30696
|
*/
|
|
30697
|
+
// [Assert functions do not constraint type when they are guarded by a truthy
|
|
30698
|
+
// expression.](https://github.com/microsoft/TypeScript/issues/37295)
|
|
30680
30699
|
function assertTNodeForLView(tNode, lView) {
|
|
30681
30700
|
tNode.hasOwnProperty('tView_') && assertEqual(tNode.tView_, lView[TVIEW], 'This TNode does not belong to this LView.');
|
|
30682
30701
|
}
|
|
@@ -30720,6 +30739,202 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
30720
30739
|
var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
|
|
30721
30740
|
var MATH_ML_NAMESPACE = 'http://www.w3.org/1998/MathML/';
|
|
30722
30741
|
|
|
30742
|
+
/**
|
|
30743
|
+
* @license
|
|
30744
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
30745
|
+
*
|
|
30746
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
30747
|
+
* found in the LICENSE file at https://angular.io/license
|
|
30748
|
+
*/
|
|
30749
|
+
/**
|
|
30750
|
+
* This property will be monkey-patched on elements, components and directives
|
|
30751
|
+
*/
|
|
30752
|
+
var MONKEY_PATCH_KEY_NAME = '__ngContext__';
|
|
30753
|
+
|
|
30754
|
+
/**
|
|
30755
|
+
* @license
|
|
30756
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
30757
|
+
*
|
|
30758
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
30759
|
+
* found in the LICENSE file at https://angular.io/license
|
|
30760
|
+
*/
|
|
30761
|
+
/**
|
|
30762
|
+
* Most of the use of `document` in Angular is from within the DI system so it is possible to simply
|
|
30763
|
+
* inject the `DOCUMENT` token and are done.
|
|
30764
|
+
*
|
|
30765
|
+
* Ivy is special because it does not rely upon the DI and must get hold of the document some other
|
|
30766
|
+
* way.
|
|
30767
|
+
*
|
|
30768
|
+
* The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
|
|
30769
|
+
* Wherever ivy needs the global document, it calls `getDocument()` instead.
|
|
30770
|
+
*
|
|
30771
|
+
* When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
|
|
30772
|
+
* tell ivy what the global `document` is.
|
|
30773
|
+
*
|
|
30774
|
+
* Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
|
|
30775
|
+
* by calling `setDocument()` when providing the `DOCUMENT` token.
|
|
30776
|
+
*/
|
|
30777
|
+
var DOCUMENT = undefined;
|
|
30778
|
+
/**
|
|
30779
|
+
* Access the object that represents the `document` for this platform.
|
|
30780
|
+
*
|
|
30781
|
+
* Ivy calls this whenever it needs to access the `document` object.
|
|
30782
|
+
* For example to create the renderer or to do sanitization.
|
|
30783
|
+
*/
|
|
30784
|
+
function getDocument() {
|
|
30785
|
+
if (DOCUMENT !== undefined) {
|
|
30786
|
+
return DOCUMENT;
|
|
30787
|
+
}
|
|
30788
|
+
else if (typeof document !== 'undefined') {
|
|
30789
|
+
return document;
|
|
30790
|
+
}
|
|
30791
|
+
// No "document" can be found. This should only happen if we are running ivy outside Angular and
|
|
30792
|
+
// the current platform is not a browser. Since this is not a supported scenario at the moment
|
|
30793
|
+
// this should not happen in Angular apps.
|
|
30794
|
+
// Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
|
|
30795
|
+
// public API. Meanwhile we just return `undefined` and let the application fail.
|
|
30796
|
+
return undefined;
|
|
30797
|
+
}
|
|
30798
|
+
|
|
30799
|
+
/**
|
|
30800
|
+
* @license
|
|
30801
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
30802
|
+
*
|
|
30803
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
30804
|
+
* found in the LICENSE file at https://angular.io/license
|
|
30805
|
+
*/
|
|
30806
|
+
// TODO: cleanup once the code is merged in angular/angular
|
|
30807
|
+
var RendererStyleFlags3;
|
|
30808
|
+
(function (RendererStyleFlags3) {
|
|
30809
|
+
RendererStyleFlags3[RendererStyleFlags3["Important"] = 1] = "Important";
|
|
30810
|
+
RendererStyleFlags3[RendererStyleFlags3["DashCase"] = 2] = "DashCase";
|
|
30811
|
+
})(RendererStyleFlags3 || (RendererStyleFlags3 = {}));
|
|
30812
|
+
/** Returns whether the `renderer` is a `ProceduralRenderer3` */
|
|
30813
|
+
function isProceduralRenderer(renderer) {
|
|
30814
|
+
return !!(renderer.listen);
|
|
30815
|
+
}
|
|
30816
|
+
var ɵ0$2 = function (hostElement, rendererType) { return getDocument(); };
|
|
30817
|
+
var domRendererFactory3 = {
|
|
30818
|
+
createRenderer: ɵ0$2
|
|
30819
|
+
};
|
|
30820
|
+
|
|
30821
|
+
/**
|
|
30822
|
+
* @license
|
|
30823
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
30824
|
+
*
|
|
30825
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
30826
|
+
* found in the LICENSE file at https://angular.io/license
|
|
30827
|
+
*/
|
|
30828
|
+
/**
|
|
30829
|
+
* For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)
|
|
30830
|
+
* in same location in `LView`. This is because we don't want to pre-allocate space for it
|
|
30831
|
+
* because the storage is sparse. This file contains utilities for dealing with such data types.
|
|
30832
|
+
*
|
|
30833
|
+
* How do we know what is stored at a given location in `LView`.
|
|
30834
|
+
* - `Array.isArray(value) === false` => `RNode` (The normal storage value)
|
|
30835
|
+
* - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.
|
|
30836
|
+
* - `typeof value[TYPE] === 'object'` => `LView`
|
|
30837
|
+
* - This happens when we have a component at a given location
|
|
30838
|
+
* - `typeof value[TYPE] === true` => `LContainer`
|
|
30839
|
+
* - This happens when we have `LContainer` binding at a given location.
|
|
30840
|
+
*
|
|
30841
|
+
*
|
|
30842
|
+
* NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.
|
|
30843
|
+
*/
|
|
30844
|
+
/**
|
|
30845
|
+
* Returns `RNode`.
|
|
30846
|
+
* @param value wrapped value of `RNode`, `LView`, `LContainer`
|
|
30847
|
+
*/
|
|
30848
|
+
function unwrapRNode(value) {
|
|
30849
|
+
while (Array.isArray(value)) {
|
|
30850
|
+
value = value[HOST];
|
|
30851
|
+
}
|
|
30852
|
+
return value;
|
|
30853
|
+
}
|
|
30854
|
+
/**
|
|
30855
|
+
* Retrieve an `RNode` for a given `TNode` and `LView`.
|
|
30856
|
+
*
|
|
30857
|
+
* This function guarantees in dev mode to retrieve a non-null `RNode`.
|
|
30858
|
+
*
|
|
30859
|
+
* @param tNode
|
|
30860
|
+
* @param lView
|
|
30861
|
+
*/
|
|
30862
|
+
function getNativeByTNode(tNode, lView) {
|
|
30863
|
+
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
30864
|
+
ngDevMode && assertDataInRange(lView, tNode.index);
|
|
30865
|
+
var node = unwrapRNode(lView[tNode.index]);
|
|
30866
|
+
ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
|
|
30867
|
+
return node;
|
|
30868
|
+
}
|
|
30869
|
+
/**
|
|
30870
|
+
* Retrieve an `RNode` or `null` for a given `TNode` and `LView`.
|
|
30871
|
+
*
|
|
30872
|
+
* Some `TNode`s don't have associated `RNode`s. For example `Projection`
|
|
30873
|
+
*
|
|
30874
|
+
* @param tNode
|
|
30875
|
+
* @param lView
|
|
30876
|
+
*/
|
|
30877
|
+
function getNativeByTNodeOrNull(tNode, lView) {
|
|
30878
|
+
var index = tNode.index;
|
|
30879
|
+
if (index !== -1) {
|
|
30880
|
+
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
30881
|
+
var node = unwrapRNode(lView[index]);
|
|
30882
|
+
ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
|
|
30883
|
+
return node;
|
|
30884
|
+
}
|
|
30885
|
+
return null;
|
|
30886
|
+
}
|
|
30887
|
+
function getTNode(tView, index) {
|
|
30888
|
+
ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');
|
|
30889
|
+
ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');
|
|
30890
|
+
return tView.data[index + HEADER_OFFSET];
|
|
30891
|
+
}
|
|
30892
|
+
function getComponentLViewByIndex(nodeIndex, hostView) {
|
|
30893
|
+
// Could be an LView or an LContainer. If LContainer, unwrap to find LView.
|
|
30894
|
+
ngDevMode && assertDataInRange(hostView, nodeIndex);
|
|
30895
|
+
var slotValue = hostView[nodeIndex];
|
|
30896
|
+
var lView = isLView(slotValue) ? slotValue : slotValue[HOST];
|
|
30897
|
+
return lView;
|
|
30898
|
+
}
|
|
30899
|
+
/**
|
|
30900
|
+
* Returns the monkey-patch value data present on the target (which could be
|
|
30901
|
+
* a component, directive or a DOM node).
|
|
30902
|
+
*/
|
|
30903
|
+
function readPatchedData(target) {
|
|
30904
|
+
ngDevMode && assertDefined(target, 'Target expected');
|
|
30905
|
+
return target[MONKEY_PATCH_KEY_NAME] || null;
|
|
30906
|
+
}
|
|
30907
|
+
function readPatchedLView(target) {
|
|
30908
|
+
var value = readPatchedData(target);
|
|
30909
|
+
if (value) {
|
|
30910
|
+
return Array.isArray(value) ? value : value.lView;
|
|
30911
|
+
}
|
|
30912
|
+
return null;
|
|
30913
|
+
}
|
|
30914
|
+
/** Checks whether a given view is in creation mode */
|
|
30915
|
+
function isCreationMode(view) {
|
|
30916
|
+
return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
|
|
30917
|
+
}
|
|
30918
|
+
/**
|
|
30919
|
+
* Returns a boolean for whether the view is attached to the change detection tree.
|
|
30920
|
+
*
|
|
30921
|
+
* Note: This determines whether a view should be checked, not whether it's inserted
|
|
30922
|
+
* into a container. For that, you'll want `viewAttachedToContainer` below.
|
|
30923
|
+
*/
|
|
30924
|
+
function viewAttachedToChangeDetector(view) {
|
|
30925
|
+
return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
|
|
30926
|
+
}
|
|
30927
|
+
/**
|
|
30928
|
+
* Resets the pre-order hook flags of the view.
|
|
30929
|
+
* @param lView the LView on which the flags are reset
|
|
30930
|
+
*/
|
|
30931
|
+
function resetPreOrderHookFlags(lView) {
|
|
30932
|
+
lView[PREORDER_HOOK_FLAGS] = 0;
|
|
30933
|
+
}
|
|
30934
|
+
function getLContainerActiveIndex(lContainer) {
|
|
30935
|
+
return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
|
|
30936
|
+
}
|
|
30937
|
+
|
|
30723
30938
|
/**
|
|
30724
30939
|
* @license
|
|
30725
30940
|
* Copyright Google Inc. All Rights Reserved.
|
|
@@ -31301,73 +31516,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
31301
31516
|
return '<unknown>';
|
|
31302
31517
|
}
|
|
31303
31518
|
|
|
31304
|
-
/**
|
|
31305
|
-
* @license
|
|
31306
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
31307
|
-
*
|
|
31308
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
31309
|
-
* found in the LICENSE file at https://angular.io/license
|
|
31310
|
-
*/
|
|
31311
|
-
/**
|
|
31312
|
-
* Most of the use of `document` in Angular is from within the DI system so it is possible to simply
|
|
31313
|
-
* inject the `DOCUMENT` token and are done.
|
|
31314
|
-
*
|
|
31315
|
-
* Ivy is special because it does not rely upon the DI and must get hold of the document some other
|
|
31316
|
-
* way.
|
|
31317
|
-
*
|
|
31318
|
-
* The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
|
|
31319
|
-
* Wherever ivy needs the global document, it calls `getDocument()` instead.
|
|
31320
|
-
*
|
|
31321
|
-
* When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
|
|
31322
|
-
* tell ivy what the global `document` is.
|
|
31323
|
-
*
|
|
31324
|
-
* Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
|
|
31325
|
-
* by calling `setDocument()` when providing the `DOCUMENT` token.
|
|
31326
|
-
*/
|
|
31327
|
-
var DOCUMENT = undefined;
|
|
31328
|
-
/**
|
|
31329
|
-
* Access the object that represents the `document` for this platform.
|
|
31330
|
-
*
|
|
31331
|
-
* Ivy calls this whenever it needs to access the `document` object.
|
|
31332
|
-
* For example to create the renderer or to do sanitization.
|
|
31333
|
-
*/
|
|
31334
|
-
function getDocument() {
|
|
31335
|
-
if (DOCUMENT !== undefined) {
|
|
31336
|
-
return DOCUMENT;
|
|
31337
|
-
}
|
|
31338
|
-
else if (typeof document !== 'undefined') {
|
|
31339
|
-
return document;
|
|
31340
|
-
}
|
|
31341
|
-
// No "document" can be found. This should only happen if we are running ivy outside Angular and
|
|
31342
|
-
// the current platform is not a browser. Since this is not a supported scenario at the moment
|
|
31343
|
-
// this should not happen in Angular apps.
|
|
31344
|
-
// Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
|
|
31345
|
-
// public API. Meanwhile we just return `undefined` and let the application fail.
|
|
31346
|
-
return undefined;
|
|
31347
|
-
}
|
|
31348
|
-
|
|
31349
|
-
/**
|
|
31350
|
-
* @license
|
|
31351
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
31352
|
-
*
|
|
31353
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
31354
|
-
* found in the LICENSE file at https://angular.io/license
|
|
31355
|
-
*/
|
|
31356
|
-
// TODO: cleanup once the code is merged in angular/angular
|
|
31357
|
-
var RendererStyleFlags3;
|
|
31358
|
-
(function (RendererStyleFlags3) {
|
|
31359
|
-
RendererStyleFlags3[RendererStyleFlags3["Important"] = 1] = "Important";
|
|
31360
|
-
RendererStyleFlags3[RendererStyleFlags3["DashCase"] = 2] = "DashCase";
|
|
31361
|
-
})(RendererStyleFlags3 || (RendererStyleFlags3 = {}));
|
|
31362
|
-
/** Returns whether the `renderer` is a `ProceduralRenderer3` */
|
|
31363
|
-
function isProceduralRenderer(renderer) {
|
|
31364
|
-
return !!(renderer.listen);
|
|
31365
|
-
}
|
|
31366
|
-
var ɵ0$2 = function (hostElement, rendererType) { return getDocument(); };
|
|
31367
|
-
var domRendererFactory3 = {
|
|
31368
|
-
createRenderer: ɵ0$2
|
|
31369
|
-
};
|
|
31370
|
-
|
|
31371
31519
|
/**
|
|
31372
31520
|
* Assigns all attribute values to the provided element via the inferred renderer.
|
|
31373
31521
|
*
|
|
@@ -32430,135 +32578,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
32430
32578
|
}
|
|
32431
32579
|
}
|
|
32432
32580
|
|
|
32433
|
-
/**
|
|
32434
|
-
* @license
|
|
32435
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
32436
|
-
*
|
|
32437
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
32438
|
-
* found in the LICENSE file at https://angular.io/license
|
|
32439
|
-
*/
|
|
32440
|
-
/**
|
|
32441
|
-
* This property will be monkey-patched on elements, components and directives
|
|
32442
|
-
*/
|
|
32443
|
-
var MONKEY_PATCH_KEY_NAME = '__ngContext__';
|
|
32444
|
-
|
|
32445
|
-
/**
|
|
32446
|
-
* @license
|
|
32447
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
32448
|
-
*
|
|
32449
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
32450
|
-
* found in the LICENSE file at https://angular.io/license
|
|
32451
|
-
*/
|
|
32452
|
-
/**
|
|
32453
|
-
* For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)
|
|
32454
|
-
* in same location in `LView`. This is because we don't want to pre-allocate space for it
|
|
32455
|
-
* because the storage is sparse. This file contains utilities for dealing with such data types.
|
|
32456
|
-
*
|
|
32457
|
-
* How do we know what is stored at a given location in `LView`.
|
|
32458
|
-
* - `Array.isArray(value) === false` => `RNode` (The normal storage value)
|
|
32459
|
-
* - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.
|
|
32460
|
-
* - `typeof value[TYPE] === 'object'` => `LView`
|
|
32461
|
-
* - This happens when we have a component at a given location
|
|
32462
|
-
* - `typeof value[TYPE] === true` => `LContainer`
|
|
32463
|
-
* - This happens when we have `LContainer` binding at a given location.
|
|
32464
|
-
*
|
|
32465
|
-
*
|
|
32466
|
-
* NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.
|
|
32467
|
-
*/
|
|
32468
|
-
/**
|
|
32469
|
-
* Returns `RNode`.
|
|
32470
|
-
* @param value wrapped value of `RNode`, `LView`, `LContainer`
|
|
32471
|
-
*/
|
|
32472
|
-
function unwrapRNode(value) {
|
|
32473
|
-
while (Array.isArray(value)) {
|
|
32474
|
-
value = value[HOST];
|
|
32475
|
-
}
|
|
32476
|
-
return value;
|
|
32477
|
-
}
|
|
32478
|
-
/**
|
|
32479
|
-
* Retrieve an `RNode` for a given `TNode` and `LView`.
|
|
32480
|
-
*
|
|
32481
|
-
* This function guarantees in dev mode to retrieve a non-null `RNode`.
|
|
32482
|
-
*
|
|
32483
|
-
* @param tNode
|
|
32484
|
-
* @param lView
|
|
32485
|
-
*/
|
|
32486
|
-
function getNativeByTNode(tNode, lView) {
|
|
32487
|
-
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
32488
|
-
ngDevMode && assertDataInRange(lView, tNode.index);
|
|
32489
|
-
var node = unwrapRNode(lView[tNode.index]);
|
|
32490
|
-
ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
|
|
32491
|
-
return node;
|
|
32492
|
-
}
|
|
32493
|
-
/**
|
|
32494
|
-
* Retrieve an `RNode` or `null` for a given `TNode` and `LView`.
|
|
32495
|
-
*
|
|
32496
|
-
* Some `TNode`s don't have associated `RNode`s. For example `Projection`
|
|
32497
|
-
*
|
|
32498
|
-
* @param tNode
|
|
32499
|
-
* @param lView
|
|
32500
|
-
*/
|
|
32501
|
-
function getNativeByTNodeOrNull(tNode, lView) {
|
|
32502
|
-
var index = tNode.index;
|
|
32503
|
-
if (index !== -1) {
|
|
32504
|
-
ngDevMode && assertTNodeForLView(tNode, lView);
|
|
32505
|
-
var node = unwrapRNode(lView[index]);
|
|
32506
|
-
ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
|
|
32507
|
-
return node;
|
|
32508
|
-
}
|
|
32509
|
-
return null;
|
|
32510
|
-
}
|
|
32511
|
-
function getTNode(tView, index) {
|
|
32512
|
-
ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');
|
|
32513
|
-
ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');
|
|
32514
|
-
return tView.data[index + HEADER_OFFSET];
|
|
32515
|
-
}
|
|
32516
|
-
function getComponentLViewByIndex(nodeIndex, hostView) {
|
|
32517
|
-
// Could be an LView or an LContainer. If LContainer, unwrap to find LView.
|
|
32518
|
-
ngDevMode && assertDataInRange(hostView, nodeIndex);
|
|
32519
|
-
var slotValue = hostView[nodeIndex];
|
|
32520
|
-
var lView = isLView(slotValue) ? slotValue : slotValue[HOST];
|
|
32521
|
-
return lView;
|
|
32522
|
-
}
|
|
32523
|
-
/**
|
|
32524
|
-
* Returns the monkey-patch value data present on the target (which could be
|
|
32525
|
-
* a component, directive or a DOM node).
|
|
32526
|
-
*/
|
|
32527
|
-
function readPatchedData(target) {
|
|
32528
|
-
ngDevMode && assertDefined(target, 'Target expected');
|
|
32529
|
-
return target[MONKEY_PATCH_KEY_NAME] || null;
|
|
32530
|
-
}
|
|
32531
|
-
function readPatchedLView(target) {
|
|
32532
|
-
var value = readPatchedData(target);
|
|
32533
|
-
if (value) {
|
|
32534
|
-
return Array.isArray(value) ? value : value.lView;
|
|
32535
|
-
}
|
|
32536
|
-
return null;
|
|
32537
|
-
}
|
|
32538
|
-
/** Checks whether a given view is in creation mode */
|
|
32539
|
-
function isCreationMode(view) {
|
|
32540
|
-
return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
|
|
32541
|
-
}
|
|
32542
|
-
/**
|
|
32543
|
-
* Returns a boolean for whether the view is attached to the change detection tree.
|
|
32544
|
-
*
|
|
32545
|
-
* Note: This determines whether a view should be checked, not whether it's inserted
|
|
32546
|
-
* into a container. For that, you'll want `viewAttachedToContainer` below.
|
|
32547
|
-
*/
|
|
32548
|
-
function viewAttachedToChangeDetector(view) {
|
|
32549
|
-
return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
|
|
32550
|
-
}
|
|
32551
|
-
/**
|
|
32552
|
-
* Resets the pre-order hook flags of the view.
|
|
32553
|
-
* @param lView the LView on which the flags are reset
|
|
32554
|
-
*/
|
|
32555
|
-
function resetPreOrderHookFlags(lView) {
|
|
32556
|
-
lView[PREORDER_HOOK_FLAGS] = 0;
|
|
32557
|
-
}
|
|
32558
|
-
function getLContainerActiveIndex(lContainer) {
|
|
32559
|
-
return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
|
|
32560
|
-
}
|
|
32561
|
-
|
|
32562
32581
|
/**
|
|
32563
32582
|
* @license
|
|
32564
32583
|
* Copyright Google Inc. All Rights Reserved.
|
|
@@ -38786,7 +38805,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
38786
38805
|
/**
|
|
38787
38806
|
* @publicApi
|
|
38788
38807
|
*/
|
|
38789
|
-
var VERSION$2 = new Version$1('9.0.
|
|
38808
|
+
var VERSION$2 = new Version$1('9.0.7');
|
|
38790
38809
|
|
|
38791
38810
|
/**
|
|
38792
38811
|
* @license
|
|
@@ -50796,7 +50815,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
|
|
|
50796
50815
|
* Use of this source code is governed by an MIT-style license that can be
|
|
50797
50816
|
* found in the LICENSE file at https://angular.io/license
|
|
50798
50817
|
*/
|
|
50799
|
-
var VERSION$3 = new Version$1('9.0.
|
|
50818
|
+
var VERSION$3 = new Version$1('9.0.7');
|
|
50800
50819
|
|
|
50801
50820
|
exports.TypeScriptServiceHost = TypeScriptServiceHost;
|
|
50802
50821
|
exports.VERSION = VERSION$3;
|
package/package.json
CHANGED
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
*/
|
|
179
179
|
function refinedVariableType(value, mergedTable, query, templateElement) {
|
|
180
180
|
if (value === '$implicit') {
|
|
181
|
-
// Special case
|
|
181
|
+
// Special case: ngFor directive
|
|
182
182
|
var ngForDirective = templateElement.directives.find(function (d) {
|
|
183
183
|
var name = compiler_1.identifierName(d.directive.type);
|
|
184
184
|
return name == 'NgFor' || name == 'NgForOf';
|
|
@@ -197,12 +197,19 @@
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
|
-
|
|
201
|
-
if (value === 'ngIf') {
|
|
200
|
+
if (value === 'ngIf' || value === '$implicit') {
|
|
202
201
|
var ngIfDirective = templateElement.directives.find(function (d) { return compiler_1.identifierName(d.directive.type) === 'NgIf'; });
|
|
203
202
|
if (ngIfDirective) {
|
|
203
|
+
// Special case: ngIf directive. The NgIf structural directive owns a template context with
|
|
204
|
+
// "$implicit" and "ngIf" members. These properties are typed as generics. Until the language
|
|
205
|
+
// service uses an Ivy and TypecheckBlock backend, we cannot bind these values to a concrete
|
|
206
|
+
// type without manual inference. To get the concrete type, look up the type of the "ngIf"
|
|
207
|
+
// import on the NgIf directive bound to the template.
|
|
208
|
+
//
|
|
209
|
+
// See @angular/common/ng_if.ts for more information.
|
|
204
210
|
var ngIfBinding = ngIfDirective.inputs.find(function (i) { return i.directiveName === 'ngIf'; });
|
|
205
211
|
if (ngIfBinding) {
|
|
212
|
+
// Check if there is a known type bound to the ngIf input.
|
|
206
213
|
var bindingType = new expression_type_1.AstType(mergedTable, query, {}).getType(ngIfBinding.value);
|
|
207
214
|
if (bindingType) {
|
|
208
215
|
return bindingType;
|
|
@@ -383,4 +390,4 @@
|
|
|
383
390
|
return { start: sourceSpan.start.offset, end: sourceSpan.end.offset };
|
|
384
391
|
}
|
|
385
392
|
});
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbl9kaWFnbm9zdGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhbmd1YWdlLXNlcnZpY2Uvc3JjL2V4cHJlc3Npb25fZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQXVZO0lBRXZZLHlGQUFtRTtJQUNuRSxpRkFBMEM7SUFDMUMsaUVBQTZHO0lBRTdHLDZEQUFtRTtJQVduRSxTQUFnQixnQ0FBZ0MsQ0FBQyxJQUE0QjtRQUMzRSxJQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUM1QyxJQUFJLEVBQUUsVUFBQyxJQUFxQixJQUFLLE9BQUEsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUE5QixDQUE4QixDQUFDLENBQUM7UUFDckUsMkJBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDN0IsQ0FBQztJQUxELDRFQUtDO0lBRUQsU0FBUyxhQUFhLENBQUMsSUFBNEI7UUFDakQsSUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUV2QyxTQUFTLGlCQUFpQixDQUFDLFVBQTBCOztvQ0FDeEMsU0FBUztnQkFDbEIsSUFBSSxJQUFJLEdBQXFCLFNBQVMsQ0FBQztnQkFDdkMsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO29CQUNuQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMseUJBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7b0JBQ3BCLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FB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QSxvQkFBNEI7WUFDdEQsT0FBTztnQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0I7Z0JBQ3ZELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQjthQUNwRCxDQUFDO1FBQ0osQ0FBQztRQUNILG1DQUFDO0lBQUQsQ0FBQyxBQS9HRCxDQUEyQyxzQ0FBMkIsR0ErR3JFO0lBRUQsU0FBUyxvQkFBb0IsQ0FBQyxJQUF5Qjs7UUFDckQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFOztnQkFDZixLQUFrQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQSxnQkFBQSw0QkFBRTtvQkFBMUIsSUFBSSxLQUFLLFdBQUE7b0JBQ1osSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVTt3QkFDckMseUJBQWMsQ0FBQyxLQUFLLENBQUMsS0FBTyxDQUFDLFVBQVksQ0FBQyxJQUFJLGFBQWE7d0JBQzdELE9BQU8sSUFBSSxDQUFDO2lCQUNmOzs7Ozs7Ozs7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsTUFBTSxDQUFDLFVBQTJCO1FBQ3pDLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBU1QsIEFzdFBhdGgsIEF0dHJpYnV0ZSwgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCwgQm91bmRFbGVtZW50UHJvcGVydHlBc3QsIEJvdW5kRXZlbnRBc3QsIEJvdW5kVGV4dEFzdCwgQ29tcGlsZURpcmVjdGl2ZVN1bW1hcnksIENvbXBpbGVUeXBlTWV0YWRhdGEsIERpcmVjdGl2ZUFzdCwgRWxlbWVudEFzdCwgRW1iZWRkZWRUZW1wbGF0ZUFzdCwgTm9kZSwgUGFyc2VTb3VyY2VTcGFuLCBSZWN1cnNpdmVUZW1wbGF0ZUFzdFZpc2l0b3IsIFJlZmVyZW5jZUFzdCwgVGVtcGxhdGVBc3QsIFRlbXBsYXRlQXN0UGF0aCwgVmFyaWFibGVBc3QsIGlkZW50aWZpZXJOYW1lLCB0ZW1wbGF0ZVZpc2l0QWxsLCB0b2tlblJlZmVyZW5jZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG5pbXBvcnQge0RpYWdub3N0aWMsIGNyZWF0ZURpYWdub3N0aWN9IGZyb20gJy4vZGlhZ25vc3RpY19tZXNzYWdlcyc7XG5pbXBvcnQge0FzdFR5cGV9IGZyb20gJy4vZXhwcmVzc2lvbl90eXBlJztcbmltcG9ydCB7QnVpbHRpblR5cGUsIERlZmluaXRpb24sIFNwYW4sIFN5bWJvbCwgU3ltYm9sRGVjbGFyYXRpb24sIFN5bWJvbFF1ZXJ5LCBTeW1ib2xUYWJsZX0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCAqIGFzIG5nIGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtmaW5kT3V0cHV0QmluZGluZywgZ2V0UGF0aFRvTm9kZUF0UG9zaXRpb259IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWdub3N0aWNUZW1wbGF0ZUluZm8ge1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgb2Zmc2V0OiBudW1iZXI7XG4gIHF1ZXJ5OiBTeW1ib2xRdWVyeTtcbiAgbWVtYmVyczogU3ltYm9sVGFibGU7XG4gIGh0bWxBc3Q6IE5vZGVbXTtcbiAgdGVtcGxhdGVBc3Q6IFRlbXBsYXRlQXN0W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wbGF0ZUV4cHJlc3Npb25EaWFnbm9zdGljcyhpbmZvOiBEaWFnbm9zdGljVGVtcGxhdGVJbmZvKTogbmcuRGlhZ25vc3RpY1tdIHtcbiAgY29uc3QgdmlzaXRvciA9IG5ldyBFeHByZXNzaW9uRGlhZ25vc3RpY3NWaXNpdG9yKFxuICAgICAgaW5mbywgKHBhdGg6IFRlbXBsYXRlQXN0UGF0aCkgPT4gZ2V0RXhwcmVzc2lvblNjb3BlKGluZm8sIHBhdGgpKTtcbiAgdGVtcGxhdGVWaXNpdEFsbCh2aXNpdG9yLCBpbmZvLnRlbXBsYXRlQXN0KTtcbiAgcmV0dXJuIHZpc2l0b3IuZGlhZ25vc3RpY3M7XG59XG5cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZXMoaW5mbzogRGlhZ25vc3RpY1RlbXBsYXRlSW5mbyk6IFN5bWJvbERlY2xhcmF0aW9uW10ge1xuICBjb25zdCByZXN1bHQ6IFN5bWJvbERlY2xhcmF0aW9uW10gPSBbXTtcblxuICBmdW5jdGlvbiBwcm9jZXNzUmVmZXJlbmNlcyhyZWZlcmVuY2VzOiBSZWZlcmVuY2VBc3RbXSkge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgIGxldCB0eXBlOiBTeW1ib2x8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHJlZmVyZW5jZS52YWx1ZSkge1xuICAgICAgICB0eXBlID0gaW5mby5xdWVyeS5nZXRUeXBlU3ltYm9sKHRva2VuUmVmZXJlbmNlKHJlZmVyZW5jZS52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBuYW1lOiByZWZlcmVuY2UubmFtZSxcbiAgICAgICAga2luZDogJ3JlZmVyZW5jZScsXG4gICAgICAgIHR5cGU6IHR5cGUgfHwgaW5mby5xdWVyeS5nZXRCdWlsdGluVHlwZShCdWlsdGluVHlwZS5BbnkpLFxuICAgICAgICBnZXQgZGVmaW5pdGlvbigpIHsgcmV0dXJuIGdldERlZmluaXRpb25PZihpbmZvLCByZWZlcmVuY2UpOyB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB2aXNpdG9yID0gbmV3IGNsYXNzIGV4dGVuZHMgUmVjdXJzaXZlVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgICB2aXNpdEVtYmVkZGVkVGVtcGxhdGUoYXN0OiBFbWJlZGRlZFRlbXBsYXRlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgICAgc3VwZXIudmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdCwgY29udGV4dCk7XG4gICAgICBwcm9jZXNzUmVmZXJlbmNlcyhhc3QucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIHZpc2l0RWxlbWVudChhc3Q6IEVsZW1lbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgICBzdXBlci52aXNpdEVsZW1lbnQoYXN0LCBjb250ZXh0KTtcbiAgICAgIHByb2Nlc3NSZWZlcmVuY2VzKGFzdC5yZWZlcmVuY2VzKTtcbiAgICB9XG4gIH07XG5cbiAgdGVtcGxhdGVWaXNpdEFsbCh2aXNpdG9yLCBpbmZvLnRlbXBsYXRlQXN0KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZXREZWZpbml0aW9uT2YoaW5mbzogRGlhZ25vc3RpY1RlbXBsYXRlSW5mbywgYXN0OiBUZW1wbGF0ZUFzdCk6IERlZmluaXRpb258dW5kZWZpbmVkIHtcbiAgaWYgKGluZm8uZmlsZU5hbWUpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZU9mZnNldCA9IGluZm8ub2Zmc2V0O1xuICAgIHJldHVybiBbe1xuICAgICAgZmlsZU5hbWU6IGluZm8uZmlsZU5hbWUsXG4gICAgICBzcGFuOiB7XG4gICAgICAgIHN0YXJ0OiBhc3Quc291cmNlU3Bhbi5zdGFydC5vZmZzZXQgKyB0ZW1wbGF0ZU9mZnNldCxcbiAgICAgICAgZW5kOiBhc3Quc291cmNlU3Bhbi5lbmQub2Zmc2V0ICsgdGVtcGxhdGVPZmZzZXRcbiAgICAgIH1cbiAgICB9XTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgYWxsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBpbiBhIHRlbXBsYXRlIGJ5IHRyYXZlcnNpbmcgdGhlIHNwZWNpZmllZFxuICogYHBhdGhgLlxuICogQHBhcmFtIGluZm9cbiAqIEBwYXJhbSBwYXRoIHRlbXBsYXRlIEFTVCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGdldFZhckRlY2xhcmF0aW9ucyhcbiAgICBpbmZvOiBEaWFnbm9zdGljVGVtcGxhdGVJbmZvLCBwYXRoOiBUZW1wbGF0ZUFzdFBhdGgpOiBTeW1ib2xEZWNsYXJhdGlvbltdIHtcbiAgY29uc3QgcmVzdWx0czogU3ltYm9sRGVjbGFyYXRpb25bXSA9IFtdO1xuICBmb3IgKGxldCBjdXJyZW50ID0gcGF0aC5oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gcGF0aC5jaGlsZE9mKGN1cnJlbnQpKSB7XG4gICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIEVtYmVkZGVkVGVtcGxhdGVBc3QpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiBjdXJyZW50LnZhcmlhYmxlcykge1xuICAgICAgbGV0IHN5bWJvbCA9IGdldFZhcmlhYmxlVHlwZUZyb21EaXJlY3RpdmVDb250ZXh0KHZhcmlhYmxlLnZhbHVlLCBpbmZvLnF1ZXJ5LCBjdXJyZW50KTtcblxuICAgICAgY29uc3Qga2luZCA9IGluZm8ucXVlcnkuZ2V0VHlwZUtpbmQoc3ltYm9sKTtcbiAgICAgIGlmIChraW5kID09PSBCdWlsdGluVHlwZS5BbnkgfHwga2luZCA9PT0gQnVpbHRpblR5cGUuVW5ib3VuZCkge1xuICAgICAgICAvLyBGb3Igc3BlY2lhbCBjYXNlcyBzdWNoIGFzIG5nRm9yIGFuZCBuZ0lmLCB0aGUgYW55IHR5cGUgaXMgbm90IHZlcnkgdXNlZnVsLlxuICAgICAgICAvLyBXZSBjYW4gZG8gYmV0dGVyIGJ5IHJlc29sdmluZyB0aGUgYmluZGluZyB2YWx1ZS5cbiAgICAgICAgY29uc3Qgc3ltYm9sc0luU2NvcGUgPSBpbmZvLnF1ZXJ5Lm1lcmdlU3ltYm9sVGFibGUoW1xuICAgICAgICAgIGluZm8ubWVtYmVycyxcbiAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdHJhdmVyc2luZyB0aGUgQVNUIHBhdGggZnJvbSBoZWFkIHRvIHRhaWwsIGFueSB2YXJpYWJsZXNcbiAgICAgICAgICAvLyB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCBzbyBmYXIgYXJlIGFsc28gaW4gc2NvcGUuXG4gICAgICAgICAgaW5mby5xdWVyeS5jcmVhdGVTeW1ib2xUYWJsZShyZXN1bHRzKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHN5bWJvbCA9IHJlZmluZWRWYXJpYWJsZVR5cGUodmFyaWFibGUudmFsdWUsIHN5bWJvbHNJblNjb3BlLCBpbmZvLnF1ZXJ5LCBjdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgIG5hbWU6IHZhcmlhYmxlLm5hbWUsXG4gICAgICAgIGtpbmQ6ICd2YXJpYWJsZScsXG4gICAgICAgIHR5cGU6IHN5bWJvbCwgZ2V0IGRlZmluaXRpb24oKSB7IHJldHVybiBnZXREZWZpbml0aW9uT2YoaW5mbywgdmFyaWFibGUpOyB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIHR5cGUgZm9yIHRoZSB2YXJpYWJsZSBpbiBgdGVtcGxhdGVFbGVtZW50YCBieSBmaW5kaW5nIHRoZSBzdHJ1Y3R1cmFsXG4gKiBkaXJlY3RpdmUgd2hpY2ggaGFzIHRoZSBjb250ZXh0IG1lbWJlci4gUmV0dXJucyBhbnkgd2hlbiBub3QgZm91bmQuXG4gKiBAcGFyYW0gdmFsdWUgdmFyaWFibGUgdmFsdWUgbmFtZVxuICogQHBhcmFtIHF1ZXJ5IHR5cGUgc3ltYm9sIHF1ZXJ5XG4gKiBAcGFyYW0gdGVtcGxhdGVFbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGdldFZhcmlhYmxlVHlwZUZyb21EaXJlY3RpdmVDb250ZXh0KFxuICAgIHZhbHVlOiBzdHJpbmcsIHF1ZXJ5OiBTeW1ib2xRdWVyeSwgdGVtcGxhdGVFbGVtZW50OiBFbWJlZGRlZFRlbXBsYXRlQXN0KTogU3ltYm9sIHtcbiAgZm9yIChjb25zdCB7ZGlyZWN0aXZlfSBvZiB0ZW1wbGF0ZUVsZW1lbnQuZGlyZWN0aXZlcykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBxdWVyeS5nZXRUZW1wbGF0ZUNvbnRleHQoZGlyZWN0aXZlLnR5cGUucmVmZXJlbmNlKTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29uc3QgbWVtYmVyID0gY29udGV4dC5nZXQodmFsdWUpO1xuICAgICAgaWYgKG1lbWJlciAmJiBtZW1iZXIudHlwZSkge1xuICAgICAgICByZXR1cm4gbWVtYmVyLnR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBxdWVyeS5nZXRCdWlsdGluVHlwZShCdWlsdGluVHlwZS5BbnkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSBtb3JlIHNwZWNpZmljIHR5cGUgZm9yIHRoZSB2YXJpYWJsZSBpbiBgdGVtcGxhdGVFbGVtZW50YCBieSBpbnNwZWN0aW5nXG4gKiBhbGwgdmFyaWFibGVzIHRoYXQgYXJlIGluIHNjb3BlIGluIHRoZSBgbWVyZ2VkVGFibGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc3BlY2lhbFxuICogY2FzZSBmb3IgYG5nRm9yYCBhbmQgYG5nSWZgLiBJZiByZXNvbHV0aW9uIGZhaWxzLCByZXR1cm4gdGhlIGBhbnlgIHR5cGUuXG4gKiBAcGFyYW0gdmFsdWUgdmFyaWFibGUgdmFsdWUgbmFtZVxuICogQHBhcmFtIG1lcmdlZFRhYmxlIHN5bWJvbCB0YWJsZSBmb3IgYWxsIHZhcmlhYmxlcyBpbiBzY29wZVxuICogQHBhcmFtIHF1ZXJ5XG4gKiBAcGFyYW0gdGVtcGxhdGVFbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHJlZmluZWRWYXJpYWJsZVR5cGUoXG4gICAgdmFsdWU6IHN0cmluZywgbWVyZ2VkVGFibGU6IFN5bWJvbFRhYmxlLCBxdWVyeTogU3ltYm9sUXVlcnksXG4gICAgdGVtcGxhdGVFbGVtZW50OiBFbWJlZGRlZFRlbXBsYXRlQXN0KTogU3ltYm9sIHtcbiAgaWYgKHZhbHVlID09PSAnJGltcGxpY2l0Jykge1xuICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbmdGb3IgZGlyZWN0aXZlXG4gICAgY29uc3QgbmdGb3JEaXJlY3RpdmUgPSB0ZW1wbGF0ZUVsZW1lbnQuZGlyZWN0aXZlcy5maW5kKGQgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGlkZW50aWZpZXJOYW1lKGQuZGlyZWN0aXZlLnR5cGUpO1xuICAgICAgcmV0dXJuIG5hbWUgPT0gJ05nRm9yJyB8fCBuYW1lID09ICdOZ0Zvck9mJztcbiAgICB9KTtcbiAgICBpZiAobmdGb3JEaXJlY3RpdmUpIHtcbiAgICAgIGNvbnN0IG5nRm9yT2ZCaW5kaW5nID0gbmdGb3JEaXJlY3RpdmUuaW5wdXRzLmZpbmQoaSA9PiBpLmRpcmVjdGl2ZU5hbWUgPT0gJ25nRm9yT2YnKTtcbiAgICAgIGlmIChuZ0Zvck9mQmluZGluZykge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIGtub3duIHR5cGUgZm9yIHRoZSBuZ0ZvciBiaW5kaW5nLlxuICAgICAgICBjb25zdCBiaW5kaW5nVHlwZSA9IG5ldyBBc3RUeXBlKG1lcmdlZFRhYmxlLCBxdWVyeSwge30pLmdldFR5cGUobmdGb3JPZkJpbmRpbmcudmFsdWUpO1xuICAgICAgICBpZiAoYmluZGluZ1R5cGUpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBxdWVyeS5nZXRFbGVtZW50VHlwZShiaW5kaW5nVHlwZSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgdGhlIG5nSWYgZGlyZWN0aXZlICggKm5nSWY9XCJkYXRhJCB8IGFzeW5jIGFzIHZhcmlhYmxlXCIgKVxuICBpZiAodmFsdWUgPT09ICduZ0lmJykge1xuICAgIGNvbnN0IG5nSWZEaXJlY3RpdmUgPVxuICAgICAgICB0ZW1wbGF0ZUVsZW1lbnQuZGlyZWN0aXZlcy5maW5kKGQgPT4gaWRlbnRpZmllck5hbWUoZC5kaXJlY3RpdmUudHlwZSkgPT09ICdOZ0lmJyk7XG4gICAgaWYgKG5nSWZEaXJlY3RpdmUpIHtcbiAgICAgIGNvbnN0IG5nSWZCaW5kaW5nID0gbmdJZkRpcmVjdGl2ZS5pbnB1dHMuZmluZChpID0+IGkuZGlyZWN0aXZlTmFtZSA9PT0gJ25nSWYnKTtcbiAgICAgIGlmIChuZ0lmQmluZGluZykge1xuICAgICAgICBjb25zdCBiaW5kaW5nVHlwZSA9IG5ldyBBc3RUeXBlKG1lcmdlZFRhYmxlLCBxdWVyeSwge30pLmdldFR5cGUobmdJZkJpbmRpbmcudmFsdWUpO1xuICAgICAgICBpZiAoYmluZGluZ1R5cGUpIHtcbiAgICAgICAgICByZXR1cm4gYmluZGluZ1R5cGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBXZSBjYW4ndCBkbyBiZXR0ZXIsIHJldHVybiBhbnlcbiAgcmV0dXJuIHF1ZXJ5LmdldEJ1aWx0aW5UeXBlKEJ1aWx0aW5UeXBlLkFueSk7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50RGVjbGFyYXRpb24oXG4gICAgaW5mbzogRGlhZ25vc3RpY1RlbXBsYXRlSW5mbywgcGF0aDogVGVtcGxhdGVBc3RQYXRoKTogU3ltYm9sRGVjbGFyYXRpb258dW5kZWZpbmVkIHtcbiAgY29uc3QgZXZlbnQgPSBwYXRoLnRhaWw7XG4gIGlmICghKGV2ZW50IGluc3RhbmNlb2YgQm91bmRFdmVudEFzdCkpIHtcbiAgICAvLyBObyBldmVudCBhdmFpbGFibGUgaW4gdGhpcyBjb250ZXh0LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGdlbmVyaWNFdmVudDogU3ltYm9sRGVjbGFyYXRpb24gPSB7XG4gICAgbmFtZTogJyRldmVudCcsXG4gICAga2luZDogJ3ZhcmlhYmxlJyxcbiAgICB0eXBlOiBpbmZvLnF1ZXJ5LmdldEJ1aWx0aW5UeXBlKEJ1aWx0aW5UeXBlLkFueSksXG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0U3ltYm9sID0gZmluZE91dHB1dEJpbmRpbmcoZXZlbnQsIHBhdGgsIGluZm8ucXVlcnkpO1xuICBpZiAoIW91dHB1dFN5bWJvbCkge1xuICAgIC8vIFRoZSBgJGV2ZW50YCB2YXJpYWJsZSBkb2Vzbid0IGJlbG9uZyB0byBhbiBvdXRwdXQsIHNvIGl0cyB0eXBlIGNhbid0IGJlIHJlZmluZWQuXG4gICAgLy8gVE9ETzogdHlwZSBgJGV2ZW50YCB2YXJpYWJsZXMgaW4gYmluZGluZ3MgdG8gRE9NIGV2ZW50cy5cbiAgICByZXR1cm4gZ2VuZXJpY0V2ZW50O1xuICB9XG5cbiAgLy8gVGhlIHJhdyBldmVudCB0eXBlIGlzIHdyYXBwZWQgaW4gYSBnZW5lcmljLCBsaWtlIEV2ZW50RW1pdHRlcjxUPiBvciBPYnNlcnZhYmxlPFQ+LlxuICBjb25zdCB0YSA9IG91dHB1dFN5bWJvbC50eXBlQXJndW1lbnRzKCk7XG4gIGlmICghdGEgfHwgdGEubGVuZ3RoICE9PSAxKSByZXR1cm4gZ2VuZXJpY0V2ZW50O1xuICBjb25zdCBldmVudFR5cGUgPSB0YVswXTtcblxuICByZXR1cm4gey4uLmdlbmVyaWNFdmVudCwgdHlwZTogZXZlbnRUeXBlfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzeW1ib2xzIGF2YWlsYWJsZSBpbiBhIHBhcnRpY3VsYXIgc2NvcGUgb2YgYSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBpbmZvIHBhcnNlZCB0ZW1wbGF0ZSBpbmZvcm1hdGlvblxuICogQHBhcmFtIHBhdGggcGF0aCBvZiB0ZW1wbGF0ZSBub2RlcyBuYXJyb3dpbmcgdG8gdGhlIGNvbnRleHQgdGhlIGV4cHJlc3Npb24gc2NvcGUgc2hvdWxkIGJlXG4gKiBkZXJpdmVkIGZvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4cHJlc3Npb25TY29wZShcbiAgICBpbmZvOiBEaWFnbm9zdGljVGVtcGxhdGVJbmZvLCBwYXRoOiBUZW1wbGF0ZUFzdFBhdGgpOiBTeW1ib2xUYWJsZSB7XG4gIGxldCByZXN1bHQgPSBpbmZvLm1lbWJlcnM7XG4gIGNvbnN0IHJlZmVyZW5jZXMgPSBnZXRSZWZlcmVuY2VzKGluZm8pO1xuICBjb25zdCB2YXJpYWJsZXMgPSBnZXRWYXJEZWNsYXJhdGlvbnMoaW5mbywgcGF0aCk7XG4gIGNvbnN0IGV2ZW50ID0gZ2V0RXZlbnREZWNsYXJhdGlvbihpbmZvLCBwYXRoKTtcbiAgaWYgKHJlZmVyZW5jZXMubGVuZ3RoIHx8IHZhcmlhYmxlcy5sZW5ndGggfHwgZXZlbnQpIHtcbiAgICBjb25zdCByZWZlcmVuY2VUYWJsZSA9IGluZm8ucXVlcnkuY3JlYXRlU3ltYm9sVGFibGUocmVmZXJlbmNlcyk7XG4gICAgY29uc3QgdmFyaWFibGVUYWJsZSA9IGluZm8ucXVlcnkuY3JlYXRlU3ltYm9sVGFibGUodmFyaWFibGVzKTtcbiAgICBjb25zdCBldmVudHNUYWJsZSA9IGluZm8ucXVlcnkuY3JlYXRlU3ltYm9sVGFibGUoZXZlbnQgPyBbZXZlbnRdIDogW10pO1xuICAgIHJlc3VsdCA9IGluZm8ucXVlcnkubWVyZ2VTeW1ib2xUYWJsZShbcmVzdWx0LCByZWZlcmVuY2VUYWJsZSwgdmFyaWFibGVUYWJsZSwgZXZlbnRzVGFibGVdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5jbGFzcyBFeHByZXNzaW9uRGlhZ25vc3RpY3NWaXNpdG9yIGV4dGVuZHMgUmVjdXJzaXZlVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgcHJpdmF0ZSBwYXRoOiBUZW1wbGF0ZUFzdFBhdGg7XG4gIHByaXZhdGUgZGlyZWN0aXZlU3VtbWFyeTogQ29tcGlsZURpcmVjdGl2ZVN1bW1hcnl8dW5kZWZpbmVkO1xuXG4gIGRpYWdub3N0aWNzOiBuZy5EaWFnbm9zdGljW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgaW5mbzogRGlhZ25vc3RpY1RlbXBsYXRlSW5mbyxcbiAgICAgIHByaXZhdGUgZ2V0RXhwcmVzc2lvblNjb3BlOiAocGF0aDogVGVtcGxhdGVBc3RQYXRoLCBpbmNsdWRlRXZlbnQ6IGJvb2xlYW4pID0+IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhdGggPSBuZXcgQXN0UGF0aDxUZW1wbGF0ZUFzdD4oW10pO1xuICB9XG5cbiAgdmlzaXREaXJlY3RpdmUoYXN0OiBEaXJlY3RpdmVBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgLy8gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2hpbGQgdmlzaXRvciB0byBpZ25vcmUgdGhlIGhvc3QgcHJvcGVydGllcyBvZiBhIGRpcmVjdGl2ZS5cbiAgICBpZiAoYXN0LmlucHV0cyAmJiBhc3QuaW5wdXRzLmxlbmd0aCkge1xuICAgICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuaW5wdXRzLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEJvdW5kVGV4dChhc3Q6IEJvdW5kVGV4dEFzdCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChhc3QpO1xuICAgIHRoaXMuZGlhZ25vc2VFeHByZXNzaW9uKGFzdC52YWx1ZSwgYXN0LnNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0LCBmYWxzZSk7XG4gICAgdGhpcy5wb3AoKTtcbiAgfVxuXG4gIHZpc2l0RGlyZWN0aXZlUHJvcGVydHkoYXN0OiBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKGFzdCk7XG4gICAgdGhpcy5kaWFnbm9zZUV4cHJlc3Npb24oYXN0LnZhbHVlLCB0aGlzLmF0dHJpYnV0ZVZhbHVlTG9jYXRpb24oYXN0KSwgZmFsc2UpO1xuICAgIHRoaXMucG9wKCk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKGFzdCk7XG4gICAgdGhpcy5kaWFnbm9zZUV4cHJlc3Npb24oYXN0LnZhbHVlLCB0aGlzLmF0dHJpYnV0ZVZhbHVlTG9jYXRpb24oYXN0KSwgZmFsc2UpO1xuICAgIHRoaXMucG9wKCk7XG4gIH1cblxuICB2aXNpdEV2ZW50KGFzdDogQm91bmRFdmVudEFzdCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChhc3QpO1xuICAgIHRoaXMuZGlhZ25vc2VFeHByZXNzaW9uKGFzdC5oYW5kbGVyLCB0aGlzLmF0dHJpYnV0ZVZhbHVlTG9jYXRpb24oYXN0KSwgdHJ1ZSk7XG4gICAgdGhpcy5wb3AoKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGUoYXN0OiBWYXJpYWJsZUFzdCk6IHZvaWQge1xuICAgIGNvbnN0IGRpcmVjdGl2ZSA9IHRoaXMuZGlyZWN0aXZlU3VtbWFyeTtcbiAgICBpZiAoZGlyZWN0aXZlICYmIGFzdC52YWx1ZSkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuaW5mby5xdWVyeS5nZXRUZW1wbGF0ZUNvbnRleHQoZGlyZWN0aXZlLnR5cGUucmVmZXJlbmNlKSAhO1xuICAgICAgaWYgKGNvbnRleHQgJiYgIWNvbnRleHQuaGFzKGFzdC52YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbWlzc2luZ01lbWJlciA9XG4gICAgICAgICAgICBhc3QudmFsdWUgPT09ICckaW1wbGljaXQnID8gJ2FuIGltcGxpY2l0IHZhbHVlJyA6IGBhIG1lbWJlciBjYWxsZWQgJyR7YXN0LnZhbHVlfSdgO1xuXG4gICAgICAgIGNvbnN0IHNwYW4gPSB0aGlzLmFic1NwYW4oc3Bhbk9mKGFzdC5zb3VyY2VTcGFuKSk7XG4gICAgICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChjcmVhdGVEaWFnbm9zdGljKFxuICAgICAgICAgICAgc3BhbiwgRGlhZ25vc3RpYy50ZW1wbGF0ZV9jb250ZXh0X21pc3NpbmdfbWVtYmVyLCBkaXJlY3RpdmUudHlwZS5yZWZlcmVuY2UubmFtZSxcbiAgICAgICAgICAgIG1pc3NpbmdNZW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEVsZW1lbnQoYXN0OiBFbGVtZW50QXN0LCBjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goYXN0KTtcbiAgICBzdXBlci52aXNpdEVsZW1lbnQoYXN0LCBjb250ZXh0KTtcbiAgICB0aGlzLnBvcCgpO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBjb25zdCBwcmV2aW91c0RpcmVjdGl2ZVN1bW1hcnkgPSB0aGlzLmRpcmVjdGl2ZVN1bW1hcnk7XG5cbiAgICB0aGlzLnB1c2goYXN0KTtcblxuICAgIC8vIEZpbmQgZGlyZWN0aXZlIHRoYXQgcmVmZXJlbmNlcyB0aGlzIHRlbXBsYXRlXG4gICAgdGhpcy5kaXJlY3RpdmVTdW1tYXJ5ID1cbiAgICAgICAgYXN0LmRpcmVjdGl2ZXMubWFwKGQgPT4gZC5kaXJlY3RpdmUpLmZpbmQoZCA9PiBoYXNUZW1wbGF0ZVJlZmVyZW5jZShkLnR5cGUpKSAhO1xuXG4gICAgLy8gUHJvY2VzcyBjaGlsZHJlblxuICAgIHN1cGVyLnZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3QsIGNvbnRleHQpO1xuXG4gICAgdGhpcy5wb3AoKTtcblxuICAgIHRoaXMuZGlyZWN0aXZlU3VtbWFyeSA9IHByZXZpb3VzRGlyZWN0aXZlU3VtbWFyeTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0cmlidXRlVmFsdWVMb2NhdGlvbihhc3Q6IFRlbXBsYXRlQXN0KSB7XG4gICAgY29uc3QgcGF0aCA9IGdldFBhdGhUb05vZGVBdFBvc2l0aW9uKHRoaXMuaW5mby5odG1sQXN0LCBhc3Quc291cmNlU3Bhbi5zdGFydC5vZmZzZXQpO1xuICAgIGNvbnN0IGxhc3QgPSBwYXRoLnRhaWw7XG4gICAgaWYgKGxhc3QgaW5zdGFuY2VvZiBBdHRyaWJ1dGUgJiYgbGFzdC52YWx1ZVNwYW4pIHtcbiAgICAgIHJldHVybiBsYXN0LnZhbHVlU3Bhbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiBhc3Quc291cmNlU3Bhbi5zdGFydC5vZmZzZXQ7XG4gIH1cblxuICBwcml2YXRlIGRpYWdub3NlRXhwcmVzc2lvbihhc3Q6IEFTVCwgb2Zmc2V0OiBudW1iZXIsIGV2ZW50OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEV4cHJlc3Npb25TY29wZSh0aGlzLnBhdGgsIGV2ZW50KTtcbiAgICBjb25zdCBhbmFseXplciA9IG5ldyBBc3RUeXBlKHNjb3BlLCB0aGlzLmluZm8ucXVlcnksIHtldmVudH0pO1xuICAgIGZvciAoY29uc3QgZGlhZ25vc3RpYyBvZiBhbmFseXplci5nZXREaWFnbm9zdGljcyhhc3QpKSB7XG4gICAgICBkaWFnbm9zdGljLnNwYW4gPSB0aGlzLmFic1NwYW4oZGlhZ25vc3RpYy5zcGFuLCBvZmZzZXQpO1xuICAgICAgdGhpcy5kaWFnbm9zdGljcy5wdXNoKGRpYWdub3N0aWMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHVzaChhc3Q6IFRlbXBsYXRlQXN0KSB7IHRoaXMucGF0aC5wdXNoKGFzdCk7IH1cblxuICBwcml2YXRlIHBvcCgpIHsgdGhpcy5wYXRoLnBvcCgpOyB9XG5cbiAgcHJpdmF0ZSBhYnNTcGFuKHNwYW46IFNwYW4sIGFkZGl0aW9uYWxPZmZzZXQ6IG51bWJlciA9IDApOiBTcGFuIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHNwYW4uc3RhcnQgKyB0aGlzLmluZm8ub2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCxcbiAgICAgIGVuZDogc3Bhbi5lbmQgKyB0aGlzLmluZm8ub2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1RlbXBsYXRlUmVmZXJlbmNlKHR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgaWYgKHR5cGUuZGlEZXBzKSB7XG4gICAgZm9yIChsZXQgZGlEZXAgb2YgdHlwZS5kaURlcHMpIHtcbiAgICAgIGlmIChkaURlcC50b2tlbiAmJiBkaURlcC50b2tlbi5pZGVudGlmaWVyICYmXG4gICAgICAgICAgaWRlbnRpZmllck5hbWUoZGlEZXAudG9rZW4gIS5pZGVudGlmaWVyICEpID09ICdUZW1wbGF0ZVJlZicpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNwYW5PZihzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBTcGFuIHtcbiAgcmV0dXJuIHtzdGFydDogc291cmNlU3Bhbi5zdGFydC5vZmZzZXQsIGVuZDogc291cmNlU3Bhbi5lbmQub2Zmc2V0fTtcbn1cbiJdfQ==
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbl9kaWFnbm9zdGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhbmd1YWdlLXNlcnZpY2Uvc3JjL2V4cHJlc3Npb25fZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQXVZO0lBRXZZLHlGQUFtRTtJQUNuRSxpRkFBMEM7SUFDMUMsaUVBQTZHO0lBRTdHLDZEQUFtRTtJQVduRSxTQUFnQixnQ0FBZ0MsQ0FBQyxJQUE0QjtRQUMzRSxJQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUM1QyxJQUFJLEVBQUUsVUFBQyxJQUFxQixJQUFLLE9BQUEsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUE5QixDQUE4QixDQUFDLENBQUM7UUFDckUsMkJBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDN0IsQ0FBQztJQUxELDRFQUtDO0lBRUQsU0FBUyxhQUFhLENBQUMsSUFBNEI7UUFDakQsSUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUV2QyxTQUFTLGlCQUFpQixDQUFDLFVBQTBCOztvQ0FDeEMsU0FBUztnQkFDbEIsSUFBSSxJQUFJLEdBQXFCLFNBQVMsQ0FBQztnQkFDdkMsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO29CQUNuQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMseUJBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7b0JBQ3BCLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FB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Q0FBRyxHQUFYLGNBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFCLDhDQUFPLEdBQWYsVUFBZ0IsSUFBVSxFQUFFLGdCQUE0QjtZQUE1QixpQ0FBQSxFQUFBLG9CQUE0QjtZQUN0RCxPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQjtnQkFDdkQsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCO2FBQ3BELENBQUM7UUFDSixDQUFDO1FBQ0gsbUNBQUM7SUFBRCxDQUFDLEFBL0dELENBQTJDLHNDQUEyQixHQStHckU7SUFFRCxTQUFTLG9CQUFvQixDQUFDLElBQXlCOztRQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7O2dCQUNmLEtBQWtCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsTUFBTSxDQUFBLGdCQUFBLDRCQUFFO29CQUExQixJQUFJLEtBQUssV0FBQTtvQkFDWixJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVO3dCQUNyQyx5QkFBYyxDQUFDLEtBQUssQ0FBQyxLQUFPLENBQUMsVUFBWSxDQUFDLElBQUksYUFBYTt3QkFDN0QsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7Ozs7Ozs7OztTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUyxNQUFNLENBQUMsVUFBMkI7UUFDekMsT0FBTyxFQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUMsQ0FBQztJQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0FTVCwgQXN0UGF0aCwgQXR0cmlidXRlLCBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0LCBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCwgQm91bmRFdmVudEFzdCwgQm91bmRUZXh0QXN0LCBDb21waWxlRGlyZWN0aXZlU3VtbWFyeSwgQ29tcGlsZVR5cGVNZXRhZGF0YSwgRGlyZWN0aXZlQXN0LCBFbGVtZW50QXN0LCBFbWJlZGRlZFRlbXBsYXRlQXN0LCBOb2RlLCBQYXJzZVNvdXJjZVNwYW4sIFJlY3Vyc2l2ZVRlbXBsYXRlQXN0VmlzaXRvciwgUmVmZXJlbmNlQXN0LCBUZW1wbGF0ZUFzdCwgVGVtcGxhdGVBc3RQYXRoLCBWYXJpYWJsZUFzdCwgaWRlbnRpZmllck5hbWUsIHRlbXBsYXRlVmlzaXRBbGwsIHRva2VuUmVmZXJlbmNlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5cbmltcG9ydCB7RGlhZ25vc3RpYywgY3JlYXRlRGlhZ25vc3RpY30gZnJvbSAnLi9kaWFnbm9zdGljX21lc3NhZ2VzJztcbmltcG9ydCB7QXN0VHlwZX0gZnJvbSAnLi9leHByZXNzaW9uX3R5cGUnO1xuaW1wb3J0IHtCdWlsdGluVHlwZSwgRGVmaW5pdGlvbiwgU3BhbiwgU3ltYm9sLCBTeW1ib2xEZWNsYXJhdGlvbiwgU3ltYm9sUXVlcnksIFN5bWJvbFRhYmxlfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0ICogYXMgbmcgZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2ZpbmRPdXRwdXRCaW5kaW5nLCBnZXRQYXRoVG9Ob2RlQXRQb3NpdGlvbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc3RpY1RlbXBsYXRlSW5mbyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgcXVlcnk6IFN5bWJvbFF1ZXJ5O1xuICBtZW1iZXJzOiBTeW1ib2xUYWJsZTtcbiAgaHRtbEFzdDogTm9kZVtdO1xuICB0ZW1wbGF0ZUFzdDogVGVtcGxhdGVBc3RbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBsYXRlRXhwcmVzc2lvbkRpYWdub3N0aWNzKGluZm86IERpYWdub3N0aWNUZW1wbGF0ZUluZm8pOiBuZy5EaWFnbm9zdGljW10ge1xuICBjb25zdCB2aXNpdG9yID0gbmV3IEV4cHJlc3Npb25EaWFnbm9zdGljc1Zpc2l0b3IoXG4gICAgICBpbmZvLCAocGF0aDogVGVtcGxhdGVBc3RQYXRoKSA9PiBnZXRFeHByZXNzaW9uU2NvcGUoaW5mbywgcGF0aCkpO1xuICB0ZW1wbGF0ZVZpc2l0QWxsKHZpc2l0b3IsIGluZm8udGVtcGxhdGVBc3QpO1xuICByZXR1cm4gdmlzaXRvci5kaWFnbm9zdGljcztcbn1cblxuZnVuY3Rpb24gZ2V0UmVmZXJlbmNlcyhpbmZvOiBEaWFnbm9zdGljVGVtcGxhdGVJbmZvKTogU3ltYm9sRGVjbGFyYXRpb25bXSB7XG4gIGNvbnN0IHJlc3VsdDogU3ltYm9sRGVjbGFyYXRpb25bXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHByb2Nlc3NSZWZlcmVuY2VzKHJlZmVyZW5jZXM6IFJlZmVyZW5jZUFzdFtdKSB7XG4gICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgbGV0IHR5cGU6IFN5bWJvbHx1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAocmVmZXJlbmNlLnZhbHVlKSB7XG4gICAgICAgIHR5cGUgPSBpbmZvLnF1ZXJ5LmdldFR5cGVTeW1ib2wodG9rZW5SZWZlcmVuY2UocmVmZXJlbmNlLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIG5hbWU6IHJlZmVyZW5jZS5uYW1lLFxuICAgICAgICBraW5kOiAncmVmZXJlbmNlJyxcbiAgICAgICAgdHlwZTogdHlwZSB8fCBpbmZvLnF1ZXJ5LmdldEJ1aWx0aW5UeXBlKEJ1aWx0aW5UeXBlLkFueSksXG4gICAgICAgIGdldCBkZWZpbml0aW9uKCkgeyByZXR1cm4gZ2V0RGVmaW5pdGlvbk9mKGluZm8sIHJlZmVyZW5jZSk7IH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZpc2l0b3IgPSBuZXcgY2xhc3MgZXh0ZW5kcyBSZWN1cnNpdmVUZW1wbGF0ZUFzdFZpc2l0b3Ige1xuICAgIHZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3Q6IEVtYmVkZGVkVGVtcGxhdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgICBzdXBlci52aXNpdEVtYmVkZGVkVGVtcGxhdGUoYXN0LCBjb250ZXh0KTtcbiAgICAgIHByb2Nlc3NSZWZlcmVuY2VzKGFzdC5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICAgIHN1cGVyLnZpc2l0RWxlbWVudChhc3QsIGNvbnRleHQpO1xuICAgICAgcHJvY2Vzc1JlZmVyZW5jZXMoYXN0LnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgfTtcblxuICB0ZW1wbGF0ZVZpc2l0QWxsKHZpc2l0b3IsIGluZm8udGVtcGxhdGVBc3QpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldERlZmluaXRpb25PZihpbmZvOiBEaWFnbm9zdGljVGVtcGxhdGVJbmZvLCBhc3Q6IFRlbXBsYXRlQXN0KTogRGVmaW5pdGlvbnx1bmRlZmluZWQge1xuICBpZiAoaW5mby5maWxlTmFtZSkge1xuICAgIGNvbnN0IHRlbXBsYXRlT2Zmc2V0ID0gaW5mby5vZmZzZXQ7XG4gICAgcmV0dXJuIFt7XG4gICAgICBmaWxlTmFtZTogaW5mby5maWxlTmFtZSxcbiAgICAgIHNwYW46IHtcbiAgICAgICAgc3RhcnQ6IGFzdC5zb3VyY2VTcGFuLnN0YXJ0Lm9mZnNldCArIHRlbXBsYXRlT2Zmc2V0LFxuICAgICAgICBlbmQ6IGFzdC5zb3VyY2VTcGFuLmVuZC5vZmZzZXQgKyB0ZW1wbGF0ZU9mZnNldFxuICAgICAgfVxuICAgIH1dO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbGwgdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIGEgdGVtcGxhdGUgYnkgdHJhdmVyc2luZyB0aGUgc3BlY2lmaWVkXG4gKiBgcGF0aGAuXG4gKiBAcGFyYW0gaW5mb1xuICogQHBhcmFtIHBhdGggdGVtcGxhdGUgQVNUIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmFyRGVjbGFyYXRpb25zKFxuICAgIGluZm86IERpYWdub3N0aWNUZW1wbGF0ZUluZm8sIHBhdGg6IFRlbXBsYXRlQXN0UGF0aCk6IFN5bWJvbERlY2xhcmF0aW9uW10ge1xuICBjb25zdCByZXN1bHRzOiBTeW1ib2xEZWNsYXJhdGlvbltdID0gW107XG4gIGZvciAobGV0IGN1cnJlbnQgPSBwYXRoLmhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBwYXRoLmNoaWxkT2YoY3VycmVudCkpIHtcbiAgICBpZiAoIShjdXJyZW50IGluc3RhbmNlb2YgRW1iZWRkZWRUZW1wbGF0ZUFzdCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlIG9mIGN1cnJlbnQudmFyaWFibGVzKSB7XG4gICAgICBsZXQgc3ltYm9sID0gZ2V0VmFyaWFibGVUeXBlRnJvbURpcmVjdGl2ZUNvbnRleHQodmFyaWFibGUudmFsdWUsIGluZm8ucXVlcnksIGN1cnJlbnQpO1xuXG4gICAgICBjb25zdCBraW5kID0gaW5mby5xdWVyeS5nZXRUeXBlS2luZChzeW1ib2wpO1xuICAgICAgaWYgKGtpbmQgPT09IEJ1aWx0aW5UeXBlLkFueSB8fCBraW5kID09PSBCdWlsdGluVHlwZS5VbmJvdW5kKSB7XG4gICAgICAgIC8vIEZvciBzcGVjaWFsIGNhc2VzIHN1Y2ggYXMgbmdGb3IgYW5kIG5nSWYsIHRoZSBhbnkgdHlwZSBpcyBub3QgdmVyeSB1c2VmdWwuXG4gICAgICAgIC8vIFdlIGNhbiBkbyBiZXR0ZXIgYnkgcmVzb2x2aW5nIHRoZSBiaW5kaW5nIHZhbHVlLlxuICAgICAgICBjb25zdCBzeW1ib2xzSW5TY29wZSA9IGluZm8ucXVlcnkubWVyZ2VTeW1ib2xUYWJsZShbXG4gICAgICAgICAgaW5mby5tZW1iZXJzLFxuICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSB0cmF2ZXJzaW5nIHRoZSBBU1QgcGF0aCBmcm9tIGhlYWQgdG8gdGFpbCwgYW55IHZhcmlhYmxlc1xuICAgICAgICAgIC8vIHRoYXQgaGF2ZSBiZWVuIGRlY2xhcmVkIHNvIGZhciBhcmUgYWxzbyBpbiBzY29wZS5cbiAgICAgICAgICBpbmZvLnF1ZXJ5LmNyZWF0ZVN5bWJvbFRhYmxlKHJlc3VsdHMpLFxuICAgICAgICBdKTtcbiAgICAgICAgc3ltYm9sID0gcmVmaW5lZFZhcmlhYmxlVHlwZSh2YXJpYWJsZS52YWx1ZSwgc3ltYm9sc0luU2NvcGUsIGluZm8ucXVlcnksIGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgbmFtZTogdmFyaWFibGUubmFtZSxcbiAgICAgICAga2luZDogJ3ZhcmlhYmxlJyxcbiAgICAgICAgdHlwZTogc3ltYm9sLCBnZXQgZGVmaW5pdGlvbigpIHsgcmV0dXJuIGdldERlZmluaXRpb25PZihpbmZvLCB2YXJpYWJsZSk7IH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgdHlwZSBmb3IgdGhlIHZhcmlhYmxlIGluIGB0ZW1wbGF0ZUVsZW1lbnRgIGJ5IGZpbmRpbmcgdGhlIHN0cnVjdHVyYWxcbiAqIGRpcmVjdGl2ZSB3aGljaCBoYXMgdGhlIGNvbnRleHQgbWVtYmVyLiBSZXR1cm5zIGFueSB3aGVuIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSB2YWx1ZSB2YXJpYWJsZSB2YWx1ZSBuYW1lXG4gKiBAcGFyYW0gcXVlcnkgdHlwZSBzeW1ib2wgcXVlcnlcbiAqIEBwYXJhbSB0ZW1wbGF0ZUVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2V0VmFyaWFibGVUeXBlRnJvbURpcmVjdGl2ZUNvbnRleHQoXG4gICAgdmFsdWU6IHN0cmluZywgcXVlcnk6IFN5bWJvbFF1ZXJ5LCB0ZW1wbGF0ZUVsZW1lbnQ6IEVtYmVkZGVkVGVtcGxhdGVBc3QpOiBTeW1ib2wge1xuICBmb3IgKGNvbnN0IHtkaXJlY3RpdmV9IG9mIHRlbXBsYXRlRWxlbWVudC5kaXJlY3RpdmVzKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHF1ZXJ5LmdldFRlbXBsYXRlQ29udGV4dChkaXJlY3RpdmUudHlwZS5yZWZlcmVuY2UpO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb25zdCBtZW1iZXIgPSBjb250ZXh0LmdldCh2YWx1ZSk7XG4gICAgICBpZiAobWVtYmVyICYmIG1lbWJlci50eXBlKSB7XG4gICAgICAgIHJldHVybiBtZW1iZXIudHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVlcnkuZ2V0QnVpbHRpblR5cGUoQnVpbHRpblR5cGUuQW55KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgbW9yZSBzcGVjaWZpYyB0eXBlIGZvciB0aGUgdmFyaWFibGUgaW4gYHRlbXBsYXRlRWxlbWVudGAgYnkgaW5zcGVjdGluZ1xuICogYWxsIHZhcmlhYmxlcyB0aGF0IGFyZSBpbiBzY29wZSBpbiB0aGUgYG1lcmdlZFRhYmxlYC4gVGhpcyBmdW5jdGlvbiBpcyBhIHNwZWNpYWxcbiAqIGNhc2UgZm9yIGBuZ0ZvcmAgYW5kIGBuZ0lmYC4gSWYgcmVzb2x1dGlvbiBmYWlscywgcmV0dXJuIHRoZSBgYW55YCB0eXBlLlxuICogQHBhcmFtIHZhbHVlIHZhcmlhYmxlIHZhbHVlIG5hbWVcbiAqIEBwYXJhbSBtZXJnZWRUYWJsZSBzeW1ib2wgdGFibGUgZm9yIGFsbCB2YXJpYWJsZXMgaW4gc2NvcGVcbiAqIEBwYXJhbSBxdWVyeVxuICogQHBhcmFtIHRlbXBsYXRlRWxlbWVudFxuICovXG5mdW5jdGlvbiByZWZpbmVkVmFyaWFibGVUeXBlKFxuICAgIHZhbHVlOiBzdHJpbmcsIG1lcmdlZFRhYmxlOiBTeW1ib2xUYWJsZSwgcXVlcnk6IFN5bWJvbFF1ZXJ5LFxuICAgIHRlbXBsYXRlRWxlbWVudDogRW1iZWRkZWRUZW1wbGF0ZUFzdCk6IFN5bWJvbCB7XG4gIGlmICh2YWx1ZSA9PT0gJyRpbXBsaWNpdCcpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IG5nRm9yIGRpcmVjdGl2ZVxuICAgIGNvbnN0IG5nRm9yRGlyZWN0aXZlID0gdGVtcGxhdGVFbGVtZW50LmRpcmVjdGl2ZXMuZmluZChkID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBpZGVudGlmaWVyTmFtZShkLmRpcmVjdGl2ZS50eXBlKTtcbiAgICAgIHJldHVybiBuYW1lID09ICdOZ0ZvcicgfHwgbmFtZSA9PSAnTmdGb3JPZic7XG4gICAgfSk7XG4gICAgaWYgKG5nRm9yRGlyZWN0aXZlKSB7XG4gICAgICBjb25zdCBuZ0Zvck9mQmluZGluZyA9IG5nRm9yRGlyZWN0aXZlLmlucHV0cy5maW5kKGkgPT4gaS5kaXJlY3RpdmVOYW1lID09ICduZ0Zvck9mJyk7XG4gICAgICBpZiAobmdGb3JPZkJpbmRpbmcpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBrbm93biB0eXBlIGZvciB0aGUgbmdGb3IgYmluZGluZy5cbiAgICAgICAgY29uc3QgYmluZGluZ1R5cGUgPSBuZXcgQXN0VHlwZShtZXJnZWRUYWJsZSwgcXVlcnksIHt9KS5nZXRUeXBlKG5nRm9yT2ZCaW5kaW5nLnZhbHVlKTtcbiAgICAgICAgaWYgKGJpbmRpbmdUeXBlKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcXVlcnkuZ2V0RWxlbWVudFR5cGUoYmluZGluZ1R5cGUpO1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnbmdJZicgfHwgdmFsdWUgPT09ICckaW1wbGljaXQnKSB7XG4gICAgY29uc3QgbmdJZkRpcmVjdGl2ZSA9XG4gICAgICAgIHRlbXBsYXRlRWxlbWVudC5kaXJlY3RpdmVzLmZpbmQoZCA9PiBpZGVudGlmaWVyTmFtZShkLmRpcmVjdGl2ZS50eXBlKSA9PT0gJ05nSWYnKTtcbiAgICBpZiAobmdJZkRpcmVjdGl2ZSkge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiBuZ0lmIGRpcmVjdGl2ZS4gVGhlIE5nSWYgc3RydWN0dXJhbCBkaXJlY3RpdmUgb3ducyBhIHRlbXBsYXRlIGNvbnRleHQgd2l0aFxuICAgICAgLy8gXCIkaW1wbGljaXRcIiBhbmQgXCJuZ0lmXCIgbWVtYmVycy4gVGhlc2UgcHJvcGVydGllcyBhcmUgdHlwZWQgYXMgZ2VuZXJpY3MuIFVudGlsIHRoZSBsYW5ndWFnZVxuICAgICAgLy8gc2VydmljZSB1c2VzIGFuIEl2eSBhbmQgVHlwZWNoZWNrQmxvY2sgYmFja2VuZCwgd2UgY2Fubm90IGJpbmQgdGhlc2UgdmFsdWVzIHRvIGEgY29uY3JldGVcbiAgICAgIC8vIHR5cGUgd2l0aG91dCBtYW51YWwgaW5mZXJlbmNlLiBUbyBnZXQgdGhlIGNvbmNyZXRlIHR5cGUsIGxvb2sgdXAgdGhlIHR5cGUgb2YgdGhlIFwibmdJZlwiXG4gICAgICAvLyBpbXBvcnQgb24gdGhlIE5nSWYgZGlyZWN0aXZlIGJvdW5kIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICAgIC8vXG4gICAgICAvLyBTZWUgQGFuZ3VsYXIvY29tbW9uL25nX2lmLnRzIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgY29uc3QgbmdJZkJpbmRpbmcgPSBuZ0lmRGlyZWN0aXZlLmlucHV0cy5maW5kKGkgPT4gaS5kaXJlY3RpdmVOYW1lID09PSAnbmdJZicpO1xuICAgICAgaWYgKG5nSWZCaW5kaW5nKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEga25vd24gdHlwZSBib3VuZCB0byB0aGUgbmdJZiBpbnB1dC5cbiAgICAgICAgY29uc3QgYmluZGluZ1R5cGUgPSBuZXcgQXN0VHlwZShtZXJnZWRUYWJsZSwgcXVlcnksIHt9KS5nZXRUeXBlKG5nSWZCaW5kaW5nLnZhbHVlKTtcbiAgICAgICAgaWYgKGJpbmRpbmdUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIGJpbmRpbmdUeXBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgY2FuJ3QgZG8gYmV0dGVyLCByZXR1cm4gYW55XG4gIHJldHVybiBxdWVyeS5nZXRCdWlsdGluVHlwZShCdWlsdGluVHlwZS5BbnkpO1xufVxuXG5mdW5jdGlvbiBnZXRFdmVudERlY2xhcmF0aW9uKFxuICAgIGluZm86IERpYWdub3N0aWNUZW1wbGF0ZUluZm8sIHBhdGg6IFRlbXBsYXRlQXN0UGF0aCk6IFN5bWJvbERlY2xhcmF0aW9ufHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV2ZW50ID0gcGF0aC50YWlsO1xuICBpZiAoIShldmVudCBpbnN0YW5jZW9mIEJvdW5kRXZlbnRBc3QpKSB7XG4gICAgLy8gTm8gZXZlbnQgYXZhaWxhYmxlIGluIHRoaXMgY29udGV4dC5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBnZW5lcmljRXZlbnQ6IFN5bWJvbERlY2xhcmF0aW9uID0ge1xuICAgIG5hbWU6ICckZXZlbnQnLFxuICAgIGtpbmQ6ICd2YXJpYWJsZScsXG4gICAgdHlwZTogaW5mby5xdWVyeS5nZXRCdWlsdGluVHlwZShCdWlsdGluVHlwZS5BbnkpLFxuICB9O1xuXG4gIGNvbnN0IG91dHB1dFN5bWJvbCA9IGZpbmRPdXRwdXRCaW5kaW5nKGV2ZW50LCBwYXRoLCBpbmZvLnF1ZXJ5KTtcbiAgaWYgKCFvdXRwdXRTeW1ib2wpIHtcbiAgICAvLyBUaGUgYCRldmVudGAgdmFyaWFibGUgZG9lc24ndCBiZWxvbmcgdG8gYW4gb3V0cHV0LCBzbyBpdHMgdHlwZSBjYW4ndCBiZSByZWZpbmVkLlxuICAgIC8vIFRPRE86IHR5cGUgYCRldmVudGAgdmFyaWFibGVzIGluIGJpbmRpbmdzIHRvIERPTSBldmVudHMuXG4gICAgcmV0dXJuIGdlbmVyaWNFdmVudDtcbiAgfVxuXG4gIC8vIFRoZSByYXcgZXZlbnQgdHlwZSBpcyB3cmFwcGVkIGluIGEgZ2VuZXJpYywgbGlrZSBFdmVudEVtaXR0ZXI8VD4gb3IgT2JzZXJ2YWJsZTxUPi5cbiAgY29uc3QgdGEgPSBvdXRwdXRTeW1ib2wudHlwZUFyZ3VtZW50cygpO1xuICBpZiAoIXRhIHx8IHRhLmxlbmd0aCAhPT0gMSkgcmV0dXJuIGdlbmVyaWNFdmVudDtcbiAgY29uc3QgZXZlbnRUeXBlID0gdGFbMF07XG5cbiAgcmV0dXJuIHsuLi5nZW5lcmljRXZlbnQsIHR5cGU6IGV2ZW50VHlwZX07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc3ltYm9scyBhdmFpbGFibGUgaW4gYSBwYXJ0aWN1bGFyIHNjb3BlIG9mIGEgdGVtcGxhdGUuXG4gKiBAcGFyYW0gaW5mbyBwYXJzZWQgdGVtcGxhdGUgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSBwYXRoIHBhdGggb2YgdGVtcGxhdGUgbm9kZXMgbmFycm93aW5nIHRvIHRoZSBjb250ZXh0IHRoZSBleHByZXNzaW9uIHNjb3BlIHNob3VsZCBiZVxuICogZGVyaXZlZCBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHByZXNzaW9uU2NvcGUoXG4gICAgaW5mbzogRGlhZ25vc3RpY1RlbXBsYXRlSW5mbywgcGF0aDogVGVtcGxhdGVBc3RQYXRoKTogU3ltYm9sVGFibGUge1xuICBsZXQgcmVzdWx0ID0gaW5mby5tZW1iZXJzO1xuICBjb25zdCByZWZlcmVuY2VzID0gZ2V0UmVmZXJlbmNlcyhpbmZvKTtcbiAgY29uc3QgdmFyaWFibGVzID0gZ2V0VmFyRGVjbGFyYXRpb25zKGluZm8sIHBhdGgpO1xuICBjb25zdCBldmVudCA9IGdldEV2ZW50RGVjbGFyYXRpb24oaW5mbywgcGF0aCk7XG4gIGlmIChyZWZlcmVuY2VzLmxlbmd0aCB8fCB2YXJpYWJsZXMubGVuZ3RoIHx8IGV2ZW50KSB7XG4gICAgY29uc3QgcmVmZXJlbmNlVGFibGUgPSBpbmZvLnF1ZXJ5LmNyZWF0ZVN5bWJvbFRhYmxlKHJlZmVyZW5jZXMpO1xuICAgIGNvbnN0IHZhcmlhYmxlVGFibGUgPSBpbmZvLnF1ZXJ5LmNyZWF0ZVN5bWJvbFRhYmxlKHZhcmlhYmxlcyk7XG4gICAgY29uc3QgZXZlbnRzVGFibGUgPSBpbmZvLnF1ZXJ5LmNyZWF0ZVN5bWJvbFRhYmxlKGV2ZW50ID8gW2V2ZW50XSA6IFtdKTtcbiAgICByZXN1bHQgPSBpbmZvLnF1ZXJ5Lm1lcmdlU3ltYm9sVGFibGUoW3Jlc3VsdCwgcmVmZXJlbmNlVGFibGUsIHZhcmlhYmxlVGFibGUsIGV2ZW50c1RhYmxlXSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY2xhc3MgRXhwcmVzc2lvbkRpYWdub3N0aWNzVmlzaXRvciBleHRlbmRzIFJlY3Vyc2l2ZVRlbXBsYXRlQXN0VmlzaXRvciB7XG4gIHByaXZhdGUgcGF0aDogVGVtcGxhdGVBc3RQYXRoO1xuICBwcml2YXRlIGRpcmVjdGl2ZVN1bW1hcnk6IENvbXBpbGVEaXJlY3RpdmVTdW1tYXJ5fHVuZGVmaW5lZDtcblxuICBkaWFnbm9zdGljczogbmcuRGlhZ25vc3RpY1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGluZm86IERpYWdub3N0aWNUZW1wbGF0ZUluZm8sXG4gICAgICBwcml2YXRlIGdldEV4cHJlc3Npb25TY29wZTogKHBhdGg6IFRlbXBsYXRlQXN0UGF0aCwgaW5jbHVkZUV2ZW50OiBib29sZWFuKSA9PiBTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wYXRoID0gbmV3IEFzdFBhdGg8VGVtcGxhdGVBc3Q+KFtdKTtcbiAgfVxuXG4gIHZpc2l0RGlyZWN0aXZlKGFzdDogRGlyZWN0aXZlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGNoaWxkIHZpc2l0b3IgdG8gaWdub3JlIHRoZSBob3N0IHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUuXG4gICAgaWYgKGFzdC5pbnB1dHMgJiYgYXN0LmlucHV0cy5sZW5ndGgpIHtcbiAgICAgIHRlbXBsYXRlVmlzaXRBbGwodGhpcywgYXN0LmlucHV0cywgY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCb3VuZFRleHQoYXN0OiBCb3VuZFRleHRBc3QpOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goYXN0KTtcbiAgICB0aGlzLmRpYWdub3NlRXhwcmVzc2lvbihhc3QudmFsdWUsIGFzdC5zb3VyY2VTcGFuLnN0YXJ0Lm9mZnNldCwgZmFsc2UpO1xuICAgIHRoaXMucG9wKCk7XG4gIH1cblxuICB2aXNpdERpcmVjdGl2ZVByb3BlcnR5KGFzdDogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChhc3QpO1xuICAgIHRoaXMuZGlhZ25vc2VFeHByZXNzaW9uKGFzdC52YWx1ZSwgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxvY2F0aW9uKGFzdCksIGZhbHNlKTtcbiAgICB0aGlzLnBvcCgpO1xuICB9XG5cbiAgdmlzaXRFbGVtZW50UHJvcGVydHkoYXN0OiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChhc3QpO1xuICAgIHRoaXMuZGlhZ25vc2VFeHByZXNzaW9uKGFzdC52YWx1ZSwgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxvY2F0aW9uKGFzdCksIGZhbHNlKTtcbiAgICB0aGlzLnBvcCgpO1xuICB9XG5cbiAgdmlzaXRFdmVudChhc3Q6IEJvdW5kRXZlbnRBc3QpOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goYXN0KTtcbiAgICB0aGlzLmRpYWdub3NlRXhwcmVzc2lvbihhc3QuaGFuZGxlciwgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxvY2F0aW9uKGFzdCksIHRydWUpO1xuICAgIHRoaXMucG9wKCk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlKGFzdDogVmFyaWFibGVBc3QpOiB2b2lkIHtcbiAgICBjb25zdCBkaXJlY3RpdmUgPSB0aGlzLmRpcmVjdGl2ZVN1bW1hcnk7XG4gICAgaWYgKGRpcmVjdGl2ZSAmJiBhc3QudmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmluZm8ucXVlcnkuZ2V0VGVtcGxhdGVDb250ZXh0KGRpcmVjdGl2ZS50eXBlLnJlZmVyZW5jZSkgITtcbiAgICAgIGlmIChjb250ZXh0ICYmICFjb250ZXh0Lmhhcyhhc3QudmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG1pc3NpbmdNZW1iZXIgPVxuICAgICAgICAgICAgYXN0LnZhbHVlID09PSAnJGltcGxpY2l0JyA/ICdhbiBpbXBsaWNpdCB2YWx1ZScgOiBgYSBtZW1iZXIgY2FsbGVkICcke2FzdC52YWx1ZX0nYDtcblxuICAgICAgICBjb25zdCBzcGFuID0gdGhpcy5hYnNTcGFuKHNwYW5PZihhc3Quc291cmNlU3BhbikpO1xuICAgICAgICB0aGlzLmRpYWdub3N0aWNzLnB1c2goY3JlYXRlRGlhZ25vc3RpYyhcbiAgICAgICAgICAgIHNwYW4sIERpYWdub3N0aWMudGVtcGxhdGVfY29udGV4dF9taXNzaW5nX21lbWJlciwgZGlyZWN0aXZlLnR5cGUucmVmZXJlbmNlLm5hbWUsXG4gICAgICAgICAgICBtaXNzaW5nTWVtYmVyKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKGFzdCk7XG4gICAgc3VwZXIudmlzaXRFbGVtZW50KGFzdCwgY29udGV4dCk7XG4gICAgdGhpcy5wb3AoKTtcbiAgfVxuXG4gIHZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3Q6IEVtYmVkZGVkVGVtcGxhdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcHJldmlvdXNEaXJlY3RpdmVTdW1tYXJ5ID0gdGhpcy5kaXJlY3RpdmVTdW1tYXJ5O1xuXG4gICAgdGhpcy5wdXNoKGFzdCk7XG5cbiAgICAvLyBGaW5kIGRpcmVjdGl2ZSB0aGF0IHJlZmVyZW5jZXMgdGhpcyB0ZW1wbGF0ZVxuICAgIHRoaXMuZGlyZWN0aXZlU3VtbWFyeSA9XG4gICAgICAgIGFzdC5kaXJlY3RpdmVzLm1hcChkID0+IGQuZGlyZWN0aXZlKS5maW5kKGQgPT4gaGFzVGVtcGxhdGVSZWZlcmVuY2UoZC50eXBlKSkgITtcblxuICAgIC8vIFByb2Nlc3MgY2hpbGRyZW5cbiAgICBzdXBlci52aXNpdEVtYmVkZGVkVGVtcGxhdGUoYXN0LCBjb250ZXh0KTtcblxuICAgIHRoaXMucG9wKCk7XG5cbiAgICB0aGlzLmRpcmVjdGl2ZVN1bW1hcnkgPSBwcmV2aW91c0RpcmVjdGl2ZVN1bW1hcnk7XG4gIH1cblxuICBwcml2YXRlIGF0dHJpYnV0ZVZhbHVlTG9jYXRpb24oYXN0OiBUZW1wbGF0ZUFzdCkge1xuICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoVG9Ob2RlQXRQb3NpdGlvbih0aGlzLmluZm8uaHRtbEFzdCwgYXN0LnNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCBsYXN0ID0gcGF0aC50YWlsO1xuICAgIGlmIChsYXN0IGluc3RhbmNlb2YgQXR0cmlidXRlICYmIGxhc3QudmFsdWVTcGFuKSB7XG4gICAgICByZXR1cm4gbGFzdC52YWx1ZVNwYW4uc3RhcnQub2Zmc2V0O1xuICAgIH1cbiAgICByZXR1cm4gYXN0LnNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBkaWFnbm9zZUV4cHJlc3Npb24oYXN0OiBBU1QsIG9mZnNldDogbnVtYmVyLCBldmVudDogYm9vbGVhbikge1xuICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRFeHByZXNzaW9uU2NvcGUodGhpcy5wYXRoLCBldmVudCk7XG4gICAgY29uc3QgYW5hbHl6ZXIgPSBuZXcgQXN0VHlwZShzY29wZSwgdGhpcy5pbmZvLnF1ZXJ5LCB7ZXZlbnR9KTtcbiAgICBmb3IgKGNvbnN0IGRpYWdub3N0aWMgb2YgYW5hbHl6ZXIuZ2V0RGlhZ25vc3RpY3MoYXN0KSkge1xuICAgICAgZGlhZ25vc3RpYy5zcGFuID0gdGhpcy5hYnNTcGFuKGRpYWdub3N0aWMuc3Bhbiwgb2Zmc2V0KTtcbiAgICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChkaWFnbm9zdGljKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHB1c2goYXN0OiBUZW1wbGF0ZUFzdCkgeyB0aGlzLnBhdGgucHVzaChhc3QpOyB9XG5cbiAgcHJpdmF0ZSBwb3AoKSB7IHRoaXMucGF0aC5wb3AoKTsgfVxuXG4gIHByaXZhdGUgYWJzU3BhbihzcGFuOiBTcGFuLCBhZGRpdGlvbmFsT2Zmc2V0OiBudW1iZXIgPSAwKTogU3BhbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiBzcGFuLnN0YXJ0ICsgdGhpcy5pbmZvLm9mZnNldCArIGFkZGl0aW9uYWxPZmZzZXQsXG4gICAgICBlbmQ6IHNwYW4uZW5kICsgdGhpcy5pbmZvLm9mZnNldCArIGFkZGl0aW9uYWxPZmZzZXQsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNUZW1wbGF0ZVJlZmVyZW5jZSh0eXBlOiBDb21waWxlVHlwZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlLmRpRGVwcykge1xuICAgIGZvciAobGV0IGRpRGVwIG9mIHR5cGUuZGlEZXBzKSB7XG4gICAgICBpZiAoZGlEZXAudG9rZW4gJiYgZGlEZXAudG9rZW4uaWRlbnRpZmllciAmJlxuICAgICAgICAgIGlkZW50aWZpZXJOYW1lKGRpRGVwLnRva2VuICEuaWRlbnRpZmllciAhKSA9PSAnVGVtcGxhdGVSZWYnKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzcGFuT2Yoc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogU3BhbiB7XG4gIHJldHVybiB7c3RhcnQ6IHNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0LCBlbmQ6IHNvdXJjZVNwYW4uZW5kLm9mZnNldH07XG59XG4iXX0=
|
package/src/version.js
CHANGED
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
* Entry point for all public APIs of the common package.
|
|
23
23
|
*/
|
|
24
24
|
var core_1 = require("@angular/core");
|
|
25
|
-
exports.VERSION = new core_1.Version('9.0.
|
|
25
|
+
exports.VERSION = new core_1.Version('9.0.7');
|
|
26
26
|
});
|
|
27
27
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhbmd1YWdlLXNlcnZpY2Uvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSDs7OztPQUlHO0lBRUgsc0NBQXNDO0lBRXpCLFFBQUEsT0FBTyxHQUFHLElBQUksY0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21tb24gcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcwLjAuMC1QTEFDRUhPTERFUicpO1xuIl19
|