@angular/language-service 11.2.7 → 11.2.11

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v11.2.7
2
+ * @license Angular v11.2.11
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  * License: MIT
5
5
  */
@@ -3914,6 +3914,21 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
3914
3914
  * Use of this source code is governed by an MIT-style license that can be
3915
3915
  * found in the LICENSE file at https://angular.io/license
3916
3916
  */
3917
+ /**
3918
+ * This is an R3 `Node`-like wrapper for a raw `html.Comment` node. We do not currently
3919
+ * require the implementation of a visitor for Comments as they are only collected at
3920
+ * the top-level of the R3 AST, and only if `Render3ParseOptions['collectCommentNodes']`
3921
+ * is true.
3922
+ */
3923
+ class Comment {
3924
+ constructor(value, sourceSpan) {
3925
+ this.value = value;
3926
+ this.sourceSpan = sourceSpan;
3927
+ }
3928
+ visit(_visitor) {
3929
+ throw new Error('visit() not implemented for Comment');
3930
+ }
3931
+ }
3917
3932
  class Text {
3918
3933
  constructor(value, sourceSpan) {
3919
3934
  this.value = value;
@@ -8785,7 +8800,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
8785
8800
  return visitor.visitElement(this, context);
8786
8801
  }
8787
8802
  }
8788
- class Comment {
8803
+ class Comment$1 {
8789
8804
  constructor(value, sourceSpan) {
8790
8805
  this.value = value;
8791
8806
  this.sourceSpan = sourceSpan;
@@ -9843,7 +9858,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
9843
9858
  const text = this._advanceIf(TokenType.RAW_TEXT);
9844
9859
  this._advanceIf(TokenType.COMMENT_END);
9845
9860
  const value = text != null ? text.parts[0].trim() : null;
9846
- this._addToParent(new Comment(value, token.sourceSpan));
9861
+ this._addToParent(new Comment$1(value, token.sourceSpan));
9847
9862
  }
9848
9863
  _consumeExpansion(token) {
9849
9864
  const switchValue = this._advance();
@@ -12537,7 +12552,11 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
12537
12552
  if (isEmptyExpression(value)) {
12538
12553
  return null;
12539
12554
  }
12540
- name = normalizePropName(name);
12555
+ // CSS custom properties are case-sensitive so we shouldn't normalize them.
12556
+ // See: https://www.w3.org/TR/css-variables-1/#defining-variables
12557
+ if (!isCssCustomProperty(name)) {
12558
+ name = hyphenate(name);
12559
+ }
12541
12560
  const { property, hasOverrideFlag, suffix: bindingSuffix } = parseProperty(name);
12542
12561
  suffix = typeof suffix === 'string' && suffix.length !== 0 ? suffix : bindingSuffix;
12543
12562
  const entry = { name: property, suffix: suffix, value, sourceSpan, hasOverrideFlag };
@@ -12882,8 +12901,12 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
12882
12901
  return Identifiers$1.stylePropInterpolateV;
12883
12902
  }
12884
12903
  }
12885
- function normalizePropName(prop) {
12886
- return hyphenate(prop);
12904
+ /**
12905
+ * Checks whether property name is a custom CSS property.
12906
+ * See: https://www.w3.org/TR/css-variables-1
12907
+ */
12908
+ function isCssCustomProperty(name) {
12909
+ return name.startsWith('--');
12887
12910
  }
12888
12911
 
12889
12912
  /**
@@ -15001,26 +15024,33 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
15001
15024
  EVENT: { start: '(', end: ')' },
15002
15025
  };
15003
15026
  const TEMPLATE_ATTR_PREFIX$2 = '*';
15004
- function htmlAstToRender3Ast(htmlNodes, bindingParser) {
15005
- const transformer = new HtmlAstToIvyAst(bindingParser);
15027
+ function htmlAstToRender3Ast(htmlNodes, bindingParser, options) {
15028
+ const transformer = new HtmlAstToIvyAst(bindingParser, options);
15006
15029
  const ivyNodes = visitAll$1(transformer, htmlNodes);
15007
15030
  // Errors might originate in either the binding parser or the html to ivy transformer
15008
15031
  const allErrors = bindingParser.errors.concat(transformer.errors);
15009
- return {
15032
+ const result = {
15010
15033
  nodes: ivyNodes,
15011
15034
  errors: allErrors,
15012
15035
  styleUrls: transformer.styleUrls,
15013
15036
  styles: transformer.styles,
15014
- ngContentSelectors: transformer.ngContentSelectors,
15037
+ ngContentSelectors: transformer.ngContentSelectors
15015
15038
  };
15039
+ if (options.collectCommentNodes) {
15040
+ result.commentNodes = transformer.commentNodes;
15041
+ }
15042
+ return result;
15016
15043
  }
15017
15044
  class HtmlAstToIvyAst {
15018
- constructor(bindingParser) {
15045
+ constructor(bindingParser, options) {
15019
15046
  this.bindingParser = bindingParser;
15047
+ this.options = options;
15020
15048
  this.errors = [];
15021
15049
  this.styles = [];
15022
15050
  this.styleUrls = [];
15023
15051
  this.ngContentSelectors = [];
15052
+ // This array will be populated if `Render3ParseOptions['collectCommentNodes']` is true
15053
+ this.commentNodes = [];
15024
15054
  this.inI18nBlock = false;
15025
15055
  }
15026
15056
  // HTML visitor
@@ -15189,6 +15219,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
15189
15219
  return null;
15190
15220
  }
15191
15221
  visitComment(comment) {
15222
+ if (this.options.collectCommentNodes) {
15223
+ this.commentNodes.push(new Comment(comment.value || '', comment.sourceSpan));
15224
+ }
15192
15225
  return null;
15193
15226
  }
15194
15227
  // convert view engine `ParsedProperty` to a format suitable for IVY
@@ -15380,7 +15413,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
15380
15413
  return node instanceof Text$2 && node.value.trim().length == 0;
15381
15414
  }
15382
15415
  function isCommentNode(node) {
15383
- return node instanceof Comment;
15416
+ return node instanceof Comment$1;
15384
15417
  }
15385
15418
  function textContents(node) {
15386
15419
  if (node.children.length !== 1 || !(node.children[0] instanceof Text$2)) {
@@ -17957,7 +17990,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
17957
17990
  const parseResult = htmlParser.parse(template, templateUrl, Object.assign(Object.assign({ leadingTriviaChars: LEADING_TRIVIA_CHARS }, options), { tokenizeExpansionForms: true }));
17958
17991
  if (!options.alwaysAttemptHtmlToR3AstConversion && parseResult.errors &&
17959
17992
  parseResult.errors.length > 0) {
17960
- return {
17993
+ const parsedTemplate = {
17961
17994
  interpolationConfig,
17962
17995
  preserveWhitespaces,
17963
17996
  template,
@@ -17969,6 +18002,10 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
17969
18002
  styles: [],
17970
18003
  ngContentSelectors: []
17971
18004
  };
18005
+ if (options.collectCommentNodes) {
18006
+ parsedTemplate.commentNodes = [];
18007
+ }
18008
+ return parsedTemplate;
17972
18009
  }
17973
18010
  let rootNodes = parseResult.rootNodes;
17974
18011
  // process i18n meta information (scan attributes, generate ids)
@@ -17979,7 +18016,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
17979
18016
  const i18nMetaResult = i18nMetaVisitor.visitAllWithErrors(rootNodes);
17980
18017
  if (!options.alwaysAttemptHtmlToR3AstConversion && i18nMetaResult.errors &&
17981
18018
  i18nMetaResult.errors.length > 0) {
17982
- return {
18019
+ const parsedTemplate = {
17983
18020
  interpolationConfig,
17984
18021
  preserveWhitespaces,
17985
18022
  template,
@@ -17991,6 +18028,10 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
17991
18028
  styles: [],
17992
18029
  ngContentSelectors: []
17993
18030
  };
18031
+ if (options.collectCommentNodes) {
18032
+ parsedTemplate.commentNodes = [];
18033
+ }
18034
+ return parsedTemplate;
17994
18035
  }
17995
18036
  rootNodes = i18nMetaResult.rootNodes;
17996
18037
  if (!preserveWhitespaces) {
@@ -18003,9 +18044,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
18003
18044
  rootNodes = visitAll$1(new I18nMetaVisitor(interpolationConfig, /* keepI18nAttrs */ false), rootNodes);
18004
18045
  }
18005
18046
  }
18006
- const { nodes, errors, styleUrls, styles, ngContentSelectors } = htmlAstToRender3Ast(rootNodes, bindingParser);
18047
+ const { nodes, errors, styleUrls, styles, ngContentSelectors, commentNodes } = htmlAstToRender3Ast(rootNodes, bindingParser, { collectCommentNodes: !!options.collectCommentNodes });
18007
18048
  errors.push(...parseResult.errors, ...i18nMetaResult.errors);
18008
- return {
18049
+ const parsedTemplate = {
18009
18050
  interpolationConfig,
18010
18051
  preserveWhitespaces,
18011
18052
  errors: errors.length > 0 ? errors : null,
@@ -18017,6 +18058,10 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
18017
18058
  styles,
18018
18059
  ngContentSelectors
18019
18060
  };
18061
+ if (options.collectCommentNodes) {
18062
+ parsedTemplate.commentNodes = commentNodes;
18063
+ }
18064
+ return parsedTemplate;
18020
18065
  }
18021
18066
  const elementRegistry = new DomElementSchemaRegistry();
18022
18067
  /**
@@ -19135,7 +19180,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
19135
19180
  * Use of this source code is governed by an MIT-style license that can be
19136
19181
  * found in the LICENSE file at https://angular.io/license
19137
19182
  */
19138
- const VERSION$1 = new Version('11.2.7');
19183
+ const VERSION$1 = new Version('11.2.11');
19139
19184
 
19140
19185
  /**
19141
19186
  * @license
@@ -19683,6 +19728,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
19683
19728
  * found in the LICENSE file at https://angular.io/license
19684
19729
  */
19685
19730
  const ERROR_COMPONENT_TYPE = 'ngComponentType';
19731
+ const MISSING_NG_MODULE_METADATA_ERROR_DATA = 'ngMissingNgModuleMetadataErrorData';
19686
19732
  // Design notes:
19687
19733
  // - don't lazily create metadata:
19688
19734
  // For some metadata, we need to do async work sometimes,
@@ -20150,7 +20196,16 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
20150
20196
  const importedModuleSummary = this.getNgModuleSummary(importedModuleType, alreadyCollecting);
20151
20197
  alreadyCollecting.delete(importedModuleType);
20152
20198
  if (!importedModuleSummary) {
20153
- this._reportError(syntaxError(`Unexpected ${this._getTypeDescriptor(importedType)} '${stringifyType(importedType)}' imported by the module '${stringifyType(moduleType)}'. Please add a @NgModule annotation.`), moduleType);
20199
+ const err = syntaxError(`Unexpected ${this._getTypeDescriptor(importedType)} '${stringifyType(importedType)}' imported by the module '${stringifyType(moduleType)}'. Please add a @NgModule annotation.`);
20200
+ // If possible, record additional context for this error to enable more useful
20201
+ // diagnostics on the compiler side.
20202
+ if (importedType instanceof StaticSymbol) {
20203
+ err[MISSING_NG_MODULE_METADATA_ERROR_DATA] = {
20204
+ fileName: importedType.filePath,
20205
+ className: importedType.name,
20206
+ };
20207
+ }
20208
+ this._reportError(err, moduleType);
20154
20209
  return;
20155
20210
  }
20156
20211
  importedModules.push(importedModuleSummary);
@@ -27957,6 +28012,25 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
27957
28012
  return instance[SIMPLE_CHANGES_STORE] = store;
27958
28013
  }
27959
28014
 
28015
+ /**
28016
+ * @license
28017
+ * Copyright Google LLC All Rights Reserved.
28018
+ *
28019
+ * Use of this source code is governed by an MIT-style license that can be
28020
+ * found in the LICENSE file at https://angular.io/license
28021
+ */
28022
+ /**
28023
+ * Profiler function which wraps user code executed by the runtime.
28024
+ *
28025
+ * @param event ProfilerEvent corresponding to the execution context
28026
+ * @param instance component instance
28027
+ * @param hookOrListener lifecycle hook function or output listener. The value depends on the
28028
+ * execution context
28029
+ * @returns
28030
+ */
28031
+ const profiler = function (event, instance, hookOrListener) {
28032
+ };
28033
+
27960
28034
  /**
27961
28035
  * @license
27962
28036
  * Copyright Google LLC All Rights Reserved.
@@ -28660,11 +28734,19 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
28660
28734
  (currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&
28661
28735
  (currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
28662
28736
  currentView[FLAGS] += 2048 /* IndexWithinInitPhaseIncrementer */;
28663
- hook.call(directive);
28737
+ try {
28738
+ hook.call(directive);
28739
+ }
28740
+ finally {
28741
+ }
28664
28742
  }
28665
28743
  }
28666
28744
  else {
28667
- hook.call(directive);
28745
+ try {
28746
+ hook.call(directive);
28747
+ }
28748
+ finally {
28749
+ }
28668
28750
  }
28669
28751
  }
28670
28752
 
@@ -32591,13 +32673,16 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
32591
32673
  }
32592
32674
  function executeTemplate(tView, lView, templateFn, rf, context) {
32593
32675
  const prevSelectedIndex = getSelectedIndex();
32676
+ const isUpdatePhase = rf & 2 /* Update */;
32594
32677
  try {
32595
32678
  setSelectedIndex(-1);
32596
- if (rf & 2 /* Update */ && lView.length > HEADER_OFFSET) {
32679
+ if (isUpdatePhase && lView.length > HEADER_OFFSET) {
32597
32680
  // When we're updating, inherently select 0 so we don't
32598
32681
  // have to generate that instruction for most update blocks.
32599
32682
  selectIndexInternal(tView, lView, HEADER_OFFSET, isInCheckNoChangesMode());
32600
32683
  }
32684
+ const preHookType = isUpdatePhase ? 2 /* TemplateUpdateStart */ : 0 /* TemplateCreateStart */;
32685
+ profiler(preHookType, context);
32601
32686
  templateFn(rf, context);
32602
32687
  }
32603
32688
  finally {
@@ -35157,7 +35242,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
35157
35242
  /**
35158
35243
  * @publicApi
35159
35244
  */
35160
- const VERSION$2 = new Version$1('11.2.7');
35245
+ const VERSION$2 = new Version$1('11.2.11');
35161
35246
 
35162
35247
  /**
35163
35248
  * @license
@@ -38425,58 +38510,37 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'typescript', 'path'], func
38425
38510
  super.next(value);
38426
38511
  }
38427
38512
  subscribe(observerOrNext, error, complete) {
38428
- let schedulerFn;
38429
- let errorFn = (err) => null;
38430
- let completeFn = () => null;
38513
+ var _a, _b, _c;
38514
+ let nextFn = observerOrNext;
38515
+ let errorFn = error || (() => null);
38516
+ let completeFn = complete;
38431
38517
  if (observerOrNext && typeof observerOrNext === 'object') {
38432
- schedulerFn = this.__isAsync ? (value) => {
38433
- setTimeout(() => observerOrNext.next(value));
38434
- } : (value) => {
38435
- observerOrNext.next(value);
38436
- };
38437
- if (observerOrNext.error) {
38438
- errorFn = this.__isAsync ? (err) => {
38439
- setTimeout(() => observerOrNext.error(err));
38440
- } : (err) => {
38441
- observerOrNext.error(err);
38442
- };
38443
- }
38444
- if (observerOrNext.complete) {
38445
- completeFn = this.__isAsync ? () => {
38446
- setTimeout(() => observerOrNext.complete());
38447
- } : () => {
38448
- observerOrNext.complete();
38449
- };
38450
- }
38518
+ const observer = observerOrNext;
38519
+ nextFn = (_a = observer.next) === null || _a === void 0 ? void 0 : _a.bind(observer);
38520
+ errorFn = (_b = observer.error) === null || _b === void 0 ? void 0 : _b.bind(observer);
38521
+ completeFn = (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.bind(observer);
38451
38522
  }
38452
- else {
38453
- schedulerFn = this.__isAsync ? (value) => {
38454
- setTimeout(() => observerOrNext(value));
38455
- } : (value) => {
38456
- observerOrNext(value);
38457
- };
38458
- if (error) {
38459
- errorFn = this.__isAsync ? (err) => {
38460
- setTimeout(() => error(err));
38461
- } : (err) => {
38462
- error(err);
38463
- };
38523
+ if (this.__isAsync) {
38524
+ errorFn = _wrapInTimeout(errorFn);
38525
+ if (nextFn) {
38526
+ nextFn = _wrapInTimeout(nextFn);
38464
38527
  }
38465
- if (complete) {
38466
- completeFn = this.__isAsync ? () => {
38467
- setTimeout(() => complete());
38468
- } : () => {
38469
- complete();
38470
- };
38528
+ if (completeFn) {
38529
+ completeFn = _wrapInTimeout(completeFn);
38471
38530
  }
38472
38531
  }
38473
- const sink = super.subscribe(schedulerFn, errorFn, completeFn);
38532
+ const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });
38474
38533
  if (observerOrNext instanceof Subscription) {
38475
38534
  observerOrNext.add(sink);
38476
38535
  }
38477
38536
  return sink;
38478
38537
  }
38479
38538
  }
38539
+ function _wrapInTimeout(fn) {
38540
+ return (value) => {
38541
+ setTimeout(fn, undefined, value);
38542
+ };
38543
+ }
38480
38544
  /**
38481
38545
  * @publicApi
38482
38546
  */
package/ivy/adapters.d.ts CHANGED
@@ -26,6 +26,7 @@ export declare class LanguageServiceAdapter implements NgCompilerAdapter {
26
26
  */
27
27
  private readonly lastReadResourceVersion;
28
28
  constructor(project: ts.server.Project);
29
+ resourceNameToFileName(url: string, fromFile: string, fallbackResolve?: (url: string, fromFile: string) => string | null): string | null;
29
30
  isShim(sf: ts.SourceFile): boolean;
30
31
  fileExists(fileName: string): boolean;
31
32
  readFile(fileName: string): string | undefined;
package/ivy/adapters.js CHANGED
@@ -22,6 +22,7 @@
22
22
  var typescript_1 = require("@angular/compiler-cli/src/ngtsc/util/src/typescript");
23
23
  var p = require("path");
24
24
  var utils_1 = require("@angular/language-service/ivy/utils");
25
+ var PRE_COMPILED_STYLE_EXTENSIONS = ['.scss', '.sass', '.less', '.styl'];
25
26
  var LanguageServiceAdapter = /** @class */ (function () {
26
27
  function LanguageServiceAdapter(project) {
27
28
  this.project = project;
@@ -38,6 +39,33 @@
38
39
  this.lastReadResourceVersion = new Map();
39
40
  this.rootDirs = typescript_1.getRootDirs(this, project.getCompilationSettings());
40
41
  }
42
+ LanguageServiceAdapter.prototype.resourceNameToFileName = function (url, fromFile, fallbackResolve) {
43
+ var e_1, _a;
44
+ var _b;
45
+ // If we are trying to resolve a `.css` file, see if we can find a pre-compiled file with the
46
+ // same name instead. That way, we can provide go-to-definition for the pre-compiled files which
47
+ // would generally be the desired behavior.
48
+ if (url.endsWith('.css')) {
49
+ var styleUrl = p.resolve(fromFile, '..', url);
50
+ try {
51
+ for (var PRE_COMPILED_STYLE_EXTENSIONS_1 = tslib_1.__values(PRE_COMPILED_STYLE_EXTENSIONS), PRE_COMPILED_STYLE_EXTENSIONS_1_1 = PRE_COMPILED_STYLE_EXTENSIONS_1.next(); !PRE_COMPILED_STYLE_EXTENSIONS_1_1.done; PRE_COMPILED_STYLE_EXTENSIONS_1_1 = PRE_COMPILED_STYLE_EXTENSIONS_1.next()) {
52
+ var ext = PRE_COMPILED_STYLE_EXTENSIONS_1_1.value;
53
+ var precompiledFileUrl = styleUrl.replace(/\.css$/, ext);
54
+ if (this.fileExists(precompiledFileUrl)) {
55
+ return precompiledFileUrl;
56
+ }
57
+ }
58
+ }
59
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
60
+ finally {
61
+ try {
62
+ if (PRE_COMPILED_STYLE_EXTENSIONS_1_1 && !PRE_COMPILED_STYLE_EXTENSIONS_1_1.done && (_a = PRE_COMPILED_STYLE_EXTENSIONS_1.return)) _a.call(PRE_COMPILED_STYLE_EXTENSIONS_1);
63
+ }
64
+ finally { if (e_1) throw e_1.error; }
65
+ }
66
+ }
67
+ return (_b = fallbackResolve === null || fallbackResolve === void 0 ? void 0 : fallbackResolve(url, fromFile)) !== null && _b !== void 0 ? _b : null;
68
+ };
41
69
  LanguageServiceAdapter.prototype.isShim = function (sf) {
42
70
  return shims_1.isShim(sf);
43
71
  };
@@ -87,7 +115,7 @@
87
115
  return snapshot.getText(0, snapshot.getLength());
88
116
  };
89
117
  LanguageServiceAdapter.prototype.getModifiedResourceFiles = function () {
90
- var e_1, _a;
118
+ var e_2, _a;
91
119
  var modifiedFiles = new Set();
92
120
  try {
93
121
  for (var _b = tslib_1.__values(this.lastReadResourceVersion), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -97,12 +125,12 @@
97
125
  }
98
126
  }
99
127
  }
100
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
128
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
101
129
  finally {
102
130
  try {
103
131
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
104
132
  }
105
- finally { if (e_1) throw e_1.error; }
133
+ finally { if (e_2) throw e_2.error; }
106
134
  }
107
135
  return modifiedFiles.size > 0 ? modifiedFiles : undefined;
108
136
  };
@@ -171,4 +199,4 @@
171
199
  }());
172
200
  exports.LSParseConfigHost = LSParseConfigHost;
173
201
  });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYW5ndWFnZS1zZXJ2aWNlL2l2eS9hZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBT0gsK0RBQTZEO0lBQzdELGtGQUFnRjtJQUNoRix3QkFBMEI7SUFHMUIsNkRBQXlDO0lBRXpDO1FBZUUsZ0NBQTZCLE9BQTBCO1lBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1lBZDlDLGVBQVUsR0FBRyxJQUFJLENBQUM7WUFDbEIsNEJBQXVCLEdBQW9CLEVBQUUsQ0FBQztZQUM5QyxrQkFBYSxHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzlDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLENBQU0sc0JBQXNCO1lBQ2xELHVCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFFLHFCQUFxQjtZQUcxRDs7OztlQUlHO1lBQ2MsNEJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7WUFHbkUsSUFBSSxDQUFDLFFBQVEsR0FBRyx3QkFBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCx1Q0FBTSxHQUFOLFVBQU8sRUFBaUI7WUFDdEIsT0FBTyxjQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELDJDQUFVLEdBQVYsVUFBVyxRQUFnQjtZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCx5Q0FBUSxHQUFSLFVBQVMsUUFBZ0I7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsb0RBQW1CLEdBQW5CO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFD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QUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsT0FBTyxLQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztnQkFDRCxjQUFjLEVBQUU7b0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCwrQkFBRyxHQUFIO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFvQixDQUFDO1FBQ2pFLENBQUM7UUFDRCxtQ0FBTyxHQUFQLFVBQVEsSUFBZ0M7WUFDdEMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxtQ0FBTyxHQUFQO1lBQVEsZUFBa0I7aUJBQWxCLFVBQWtCLEVBQWxCLHFCQUFrQixFQUFsQixJQUFrQjtnQkFBbEIsMEJBQWtCOztZQUN4QixPQUFPLENBQUMsQ0FBQyxPQUFPLE9BQVQsQ0FBQyxtQkFBWSxLQUFLLEVBQW1CLENBQUM7UUFDL0MsQ0FBQztRQUNELG1DQUFPLEdBQVAsVUFBOEIsSUFBTztZQUNuQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFNLENBQUM7UUFDOUIsQ0FBQztRQUNELGdDQUFJLEdBQUosVUFBMkIsUUFBVztZQUFFLGVBQWtCO2lCQUFsQixVQUFrQixFQUFsQixxQkFBa0IsRUFBbEIsSUFBa0I7Z0JBQWxCLDhCQUFrQjs7WUFDeEQsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFOLENBQUMsb0JBQU0sUUFBUSxHQUFLLEtBQUssRUFBTSxDQUFDO1FBQ3pDLENBQUM7UUFDSCx3QkFBQztJQUFELENBQUMsQUF4Q0QsSUF3Q0M7SUF4Q1ksOENBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBAZmlsZW92ZXJ2aWV3IHByb3ZpZGVzIGFkYXB0ZXJzIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIG5nIGNvbXBpbGVyICovXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbkhvc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaSc7XG5pbXBvcnQge05nQ29tcGlsZXJBZGFwdGVyfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL2NvcmUvYXBpJztcbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTdGF0cywgUGF0aFNlZ21lbnQsIFBhdGhTdHJpbmd9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtpc1NoaW19IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMnO1xuaW1wb3J0IHtnZXRSb290RGlyc30gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy91dGlsL3NyYy90eXBlc2NyaXB0JztcbmltcG9ydCAqIGFzIHAgZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0L2xpYi90c3NlcnZlcmxpYnJhcnknO1xuXG5pbXBvcnQge2lzVHlwZVNjcmlwdEZpbGV9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZXJ2aWNlQWRhcHRlciBpbXBsZW1lbnRzIE5nQ29tcGlsZXJBZGFwdGVyIHtcbiAgcmVhZG9ubHkgZW50cnlQb2ludCA9IG51bGw7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdGlvbkRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgcmVhZG9ubHkgaWdub3JlRm9yRW1pdDogU2V0PHRzLlNvdXJjZUZpbGU+ID0gbmV3IFNldCgpO1xuICByZWFkb25seSBmYWN0b3J5VHJhY2tlciA9IG51bGw7ICAgICAgLy8gbm8gLm5nZmFjdG9yeSBzaGltc1xuICByZWFkb25seSB1bmlmaWVkTW9kdWxlc0hvc3QgPSBudWxsOyAgLy8gb25seSB1c2VkIGluIEJhemVsXG4gIHJlYWRvbmx5IHJvb3REaXJzOiBBYnNvbHV0ZUZzUGF0aFtdO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgcmVzb3VyY2UgZmlsZW5hbWVzIHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBmaWxlIGxhc3QgcmVhZCB2aWEgYHJlYWRSZXNvdXJjZWAuXG4gICAqXG4gICAqIFVzZWQgdG8gaW1wbGVtZW50IGBnZXRNb2RpZmllZFJlc291cmNlRmlsZXNgLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBsYXN0UmVhZFJlc291cmNlVmVyc2lvbiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9qZWN0OiB0cy5zZXJ2ZXIuUHJvamVjdCkge1xuICAgIHRoaXMucm9vdERpcnMgPSBnZXRSb290RGlycyh0aGlzLCBwcm9qZWN0LmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSk7XG4gIH1cblxuICBpc1NoaW0oc2Y6IHRzLlNvdXJjZUZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNTaGltKHNmKTtcbiAgfVxuXG4gIGZpbGVFeGlzdHMoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QuZmlsZUV4aXN0cyhmaWxlTmFtZSk7XG4gIH1cblxuICByZWFkRmlsZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nfHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdC5yZWFkRmlsZShmaWxlTmFtZSk7XG4gIH1cblxuICBnZXRDdXJyZW50RGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdC5nZXRDdXJyZW50RGlyZWN0b3J5KCk7XG4gIH1cblxuICBnZXRDYW5vbmljYWxGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LnByb2plY3RTZXJ2aWNlLnRvQ2Fub25pY2FsRmlsZU5hbWUoZmlsZU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcmVhbCBwYXRoIG9mIGEgc3ltbGluay4gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG9cbiAgICogcmVzb2x2ZSBzeW1saW5rcyBpbiBub2RlX21vZHVsZXMuXG4gICAqL1xuICByZWFscGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QucmVhbHBhdGg/LihwYXRoKSA/PyBwYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlYWRSZXNvdXJjZSgpIGlzIGFuIEFuZ3VsYXItc3BlY2lmaWMgbWV0aG9kIGZvciByZWFkaW5nIGZpbGVzIHRoYXQgYXJlIG5vdFxuICAgKiBtYW5hZ2VkIGJ5IHRoZSBUUyBjb21waWxlciBob3N0LCBuYW1lbHkgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cy5cbiAgICogSXQgaXMgYSBtZXRob2Qgb24gRXh0ZW5kZWRUc0NvbXBpbGVySG9zdCwgc2VlXG4gICAqIHBhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvY29yZS9hcGkvc3JjL2ludGVyZmFjZXMudHNcbiAgICovXG4gIHJlYWRSZXNvdXJjZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNUeXBlU2NyaXB0RmlsZShmaWxlTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcmVhZFJlc291cmNlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gVFMgZmlsZTogJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgLy8gQ2FsbGluZyBnZXRTY3JpcHRTbmFwc2hvdCgpIHdpbGwgYWN0dWFsbHkgY3JlYXRlIGEgU2NyaXB0SW5mbyBpZiBpdCBkb2VzXG4gICAgLy8gbm90IGV4aXN0ISBUaGUgc2FtZSBhcHBsaWVzIGZvciBnZXRTY3JpcHRWZXJzaW9uKCkuXG4gICAgLy8gZ2V0U2NyaXB0SW5mbygpIHdpbGwgbm90IGNyZWF0ZSBvbmUgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSAqd2FudCogYSBzY3JpcHQgaW5mbyB0byBiZSBjcmVhdGVkIHNvIHRoYXQgd2UgY291bGRcbiAgICAvLyBrZWVwIHRyYWNrIG9mIGl0cyB2ZXJzaW9uLlxuICAgIGNvbnN0IHNuYXBzaG90ID0gdGhpcy5wcm9qZWN0LmdldFNjcmlwdFNuYXBzaG90KGZpbGVOYW1lKTtcbiAgICBpZiAoIXNuYXBzaG90KSB7XG4gICAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIG9yIHJlYWRGaWxlKCkgZmFpbHMgZm9yXG4gICAgICAvLyB3aGF0ZXZlciByZWFzb25zLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IHNjcmlwdCBzbmFwc2hvdCB3aGlsZSB0cnlpbmcgdG8gcmVhZCAke2ZpbGVOYW1lfWApO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5wcm9qZWN0LmdldFNjcmlwdFZlcnNpb24oZmlsZU5hbWUpO1xuICAgIHRoaXMubGFzdFJlYWRSZXNvdXJjZVZlcnNpb24uc2V0KGZpbGVOYW1lLCB2ZXJzaW9uKTtcbiAgICByZXR1cm4gc25hcHNob3QuZ2V0VGV4dCgwLCBzbmFwc2hvdC5nZXRMZW5ndGgoKSk7XG4gIH1cblxuICBnZXRNb2RpZmllZFJlc291cmNlRmlsZXMoKTogU2V0PHN0cmluZz58dW5kZWZpbmVkIHtcbiAgICBjb25zdCBtb2RpZmllZEZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBbZmlsZU5hbWUsIG9sZFZlcnNpb25dIG9mIHRoaXMubGFzdFJlYWRSZXNvdXJjZVZlcnNpb24pIHtcbiAgICAgIGlmICh0aGlzLnByb2plY3QuZ2V0U2NyaXB0VmVyc2lvbihmaWxlTmFtZSkgIT09IG9sZFZlcnNpb24pIHtcbiAgICAgICAgbW9kaWZpZWRGaWxlcy5hZGQoZmlsZU5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9kaWZpZWRGaWxlcy5zaXplID4gMCA/IG1vZGlmaWVkRmlsZXMgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2VkIHRvIHJlYWQgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAqXG4gKiBBIGxhbmd1YWdlIHNlcnZpY2UgcGFyc2UgY29uZmlndXJhdGlvbiBob3N0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBhZGFwdGVyXG4gKiBiZWNhdXNlIHNpZ25hdHVyZXMgb2YgY2FsbHMgbGlrZSBgRmlsZVN5c3RlbSNyZWFkRmlsZWAgYXJlIGEgYml0IHN0cmljdGVyXG4gKiB0aGFuIHRob3NlIG9uIHRoZSBhZGFwdGVyLlxuICovXG5leHBvcnQgY2xhc3MgTFNQYXJzZUNvbmZpZ0hvc3QgaW1wbGVtZW50cyBDb25maWd1cmF0aW9uSG9zdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmVySG9zdDogdHMuc2VydmVyLlNlcnZlckhvc3QpIHt9XG4gIGV4aXN0cyhwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlckhvc3QuZmlsZUV4aXN0cyhwYXRoKSB8fCB0aGlzLnNlcnZlckhvc3QuZGlyZWN0b3J5RXhpc3RzKHBhdGgpO1xuICB9XG4gIHJlYWRGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zZXJ2ZXJIb3N0LnJlYWRGaWxlKHBhdGgpO1xuICAgIGlmIChjb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTGFuZ3VhZ2VTZXJ2aWNlRlMjcmVhZEZpbGUgY2FsbGVkIG9uIHVuYXZhaWxhYmxlIGZpbGUgJHtwYXRofWApO1xuICAgIH1cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBsc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzRmlsZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2ZXJIb3N0LmZpbGVFeGlzdHMocGF0aCk7XG4gICAgICB9LFxuICAgICAgaXNEaXJlY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVySG9zdC5kaXJlY3RvcnlFeGlzdHMocGF0aCk7XG4gICAgICB9LFxuICAgICAgaXNTeW1ib2xpY0xpbms6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMYW5ndWFnZVNlcnZpY2VGUyNsc3RhdCNpc1N5bWJvbGljTGluayBub3QgaW1wbGVtZW50ZWRgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBwd2QoKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIHJldHVybiB0aGlzLnNlcnZlckhvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpIGFzIEFic29sdXRlRnNQYXRoO1xuICB9XG4gIGV4dG5hbWUocGF0aDogQWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBwLmV4dG5hbWUocGF0aCk7XG4gIH1cbiAgcmVzb2x2ZSguLi5wYXRoczogc3RyaW5nW10pOiBBYnNvbHV0ZUZzUGF0aCB7XG4gICAgcmV0dXJuIHAucmVzb2x2ZSguLi5wYXRocykgYXMgQWJzb2x1dGVGc1BhdGg7XG4gIH1cbiAgZGlybmFtZTxUIGV4dGVuZHMgUGF0aFN0cmluZz4oZmlsZTogVCk6IFQge1xuICAgIHJldHVybiBwLmRpcm5hbWUoZmlsZSkgYXMgVDtcbiAgfVxuICBqb2luPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihiYXNlUGF0aDogVCwgLi4ucGF0aHM6IHN0cmluZ1tdKTogVCB7XG4gICAgcmV0dXJuIHAuam9pbihiYXNlUGF0aCwgLi4ucGF0aHMpIGFzIFQ7XG4gIH1cbn1cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYW5ndWFnZS1zZXJ2aWNlL2l2eS9hZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBT0gsK0RBQTZEO0lBQzdELGtGQUFnRjtJQUNoRix3QkFBMEI7SUFHMUIsNkRBQXlDO0lBRXpDLElBQU0sNkJBQTZCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUzRTtRQWVFLGdDQUE2QixPQUEwQjtZQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtZQWQ5QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLDRCQUF1QixHQUFvQixFQUFFLENBQUM7WUFDOUMsa0JBQWEsR0FBdUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUM5QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxDQUFNLHNCQUFzQjtZQUNsRCx1QkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBRSxxQkFBcUI7WUFHMUQ7Ozs7ZUFJRztZQUNjLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1lBR25FLElBQUksQ0FBQyxRQUFRLEdBQUcsd0JBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsdURBQXNCLEdBQXRCLFVBQ0ksR0FBVyxFQUFFLFFBQWdCLEVBQzdCLGVBQWtFOzs7WUFDcEUsNkZBQTZGO1lBQzdGLGdHQUFnRztZQUNoRywyQ0FBMkM7WUFDM0MsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4QixJQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7O29CQUNoRCxLQUFrQixJQUFBLGtD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Q0FBQztRQUNqRSxDQUFDO1FBQ0QsbUNBQU8sR0FBUCxVQUFRLElBQWdDO1lBQ3RDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsbUNBQU8sR0FBUDtZQUFRLGVBQWtCO2lCQUFsQixVQUFrQixFQUFsQixxQkFBa0IsRUFBbEIsSUFBa0I7Z0JBQWxCLDBCQUFrQjs7WUFDeEIsT0FBTyxDQUFDLENBQUMsT0FBTyxPQUFULENBQUMsbUJBQVksS0FBSyxFQUFtQixDQUFDO1FBQy9DLENBQUM7UUFDRCxtQ0FBTyxHQUFQLFVBQThCLElBQU87WUFDbkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBTSxDQUFDO1FBQzlCLENBQUM7UUFDRCxnQ0FBSSxHQUFKLFVBQTJCLFFBQVc7WUFBRSxlQUFrQjtpQkFBbEIsVUFBa0IsRUFBbEIscUJBQWtCLEVBQWxCLElBQWtCO2dCQUFsQiw4QkFBa0I7O1lBQ3hELE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTixDQUFDLG9CQUFNLFFBQVEsR0FBSyxLQUFLLEVBQU0sQ0FBQztRQUN6QyxDQUFDO1FBQ0gsd0JBQUM7SUFBRCxDQUFDLEFBeENELElBd0NDO0lBeENZLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKiogQGZpbGVvdmVydmlldyBwcm92aWRlcyBhZGFwdGVycyBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBuZyBjb21waWxlciAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25Ib3N0fSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGknO1xuaW1wb3J0IHtOZ0NvbXBpbGVyQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlL2FwaSc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBGaWxlU3RhdHMsIFBhdGhTZWdtZW50LCBQYXRoU3RyaW5nfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7aXNTaGltfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL3NoaW1zJztcbmltcG9ydCB7Z2V0Um9vdERpcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQgKiBhcyBwIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdC9saWIvdHNzZXJ2ZXJsaWJyYXJ5JztcblxuaW1wb3J0IHtpc1R5cGVTY3JpcHRGaWxlfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgUFJFX0NPTVBJTEVEX1NUWUxFX0VYVEVOU0lPTlMgPSBbJy5zY3NzJywgJy5zYXNzJywgJy5sZXNzJywgJy5zdHlsJ107XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2VBZGFwdGVyIGltcGxlbWVudHMgTmdDb21waWxlckFkYXB0ZXIge1xuICByZWFkb25seSBlbnRyeVBvaW50ID0gbnVsbDtcbiAgcmVhZG9ubHkgY29uc3RydWN0aW9uRGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICByZWFkb25seSBpZ25vcmVGb3JFbWl0OiBTZXQ8dHMuU291cmNlRmlsZT4gPSBuZXcgU2V0KCk7XG4gIHJlYWRvbmx5IGZhY3RvcnlUcmFja2VyID0gbnVsbDsgICAgICAvLyBubyAubmdmYWN0b3J5IHNoaW1zXG4gIHJlYWRvbmx5IHVuaWZpZWRNb2R1bGVzSG9zdCA9IG51bGw7ICAvLyBvbmx5IHVzZWQgaW4gQmF6ZWxcbiAgcmVhZG9ubHkgcm9vdERpcnM6IEFic29sdXRlRnNQYXRoW107XG5cbiAgLyoqXG4gICAqIE1hcCBvZiByZXNvdXJjZSBmaWxlbmFtZXMgdG8gdGhlIHZlcnNpb24gb2YgdGhlIGZpbGUgbGFzdCByZWFkIHZpYSBgcmVhZFJlc291cmNlYC5cbiAgICpcbiAgICogVXNlZCB0byBpbXBsZW1lbnQgYGdldE1vZGlmaWVkUmVzb3VyY2VGaWxlc2AuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhc3RSZWFkUmVzb3VyY2VWZXJzaW9uID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2plY3Q6IHRzLnNlcnZlci5Qcm9qZWN0KSB7XG4gICAgdGhpcy5yb290RGlycyA9IGdldFJvb3REaXJzKHRoaXMsIHByb2plY3QuZ2V0Q29tcGlsYXRpb25TZXR0aW5ncygpKTtcbiAgfVxuXG4gIHJlc291cmNlTmFtZVRvRmlsZU5hbWUoXG4gICAgICB1cmw6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZyxcbiAgICAgIGZhbGxiYWNrUmVzb2x2ZT86ICh1cmw6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCk6IHN0cmluZ3xudWxsIHtcbiAgICAvLyBJZiB3ZSBhcmUgdHJ5aW5nIHRvIHJlc29sdmUgYSBgLmNzc2AgZmlsZSwgc2VlIGlmIHdlIGNhbiBmaW5kIGEgcHJlLWNvbXBpbGVkIGZpbGUgd2l0aCB0aGVcbiAgICAvLyBzYW1lIG5hbWUgaW5zdGVhZC4gVGhhdCB3YXksIHdlIGNhbiBwcm92aWRlIGdvLXRvLWRlZmluaXRpb24gZm9yIHRoZSBwcmUtY29tcGlsZWQgZmlsZXMgd2hpY2hcbiAgICAvLyB3b3VsZCBnZW5lcmFsbHkgYmUgdGhlIGRlc2lyZWQgYmVoYXZpb3IuXG4gICAgaWYgKHVybC5lbmRzV2l0aCgnLmNzcycpKSB7XG4gICAgICBjb25zdCBzdHlsZVVybCA9IHAucmVzb2x2ZShmcm9tRmlsZSwgJy4uJywgdXJsKTtcbiAgICAgIGZvciAoY29uc3QgZXh0IG9mIFBSRV9DT01QSUxFRF9TVFlMRV9FWFRFTlNJT05TKSB7XG4gICAgICAgIGNvbnN0IHByZWNvbXBpbGVkRmlsZVVybCA9IHN0eWxlVXJsLnJlcGxhY2UoL1xcLmNzcyQvLCBleHQpO1xuICAgICAgICBpZiAodGhpcy5maWxlRXhpc3RzKHByZWNvbXBpbGVkRmlsZVVybCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJlY29tcGlsZWRGaWxlVXJsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFja1Jlc29sdmU/Lih1cmwsIGZyb21GaWxlKSA/PyBudWxsO1xuICB9XG5cbiAgaXNTaGltKHNmOiB0cy5Tb3VyY2VGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzU2hpbShzZik7XG4gIH1cblxuICBmaWxlRXhpc3RzKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LmZpbGVFeGlzdHMoZmlsZU5hbWUpO1xuICB9XG5cbiAgcmVhZEZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZ3x1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QucmVhZEZpbGUoZmlsZU5hbWUpO1xuICB9XG5cbiAgZ2V0Q3VycmVudERpcmVjdG9yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpO1xuICB9XG5cbiAgZ2V0Q2Fub25pY2FsRmlsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdC5wcm9qZWN0U2VydmljZS50b0Nhbm9uaWNhbEZpbGVOYW1lKGZpbGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHJlYWwgcGF0aCBvZiBhIHN5bWxpbmsuIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvXG4gICAqIHJlc29sdmUgc3ltbGlua3MgaW4gbm9kZV9tb2R1bGVzLlxuICAgKi9cbiAgcmVhbHBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LnJlYWxwYXRoPy4ocGF0aCkgPz8gcGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZWFkUmVzb3VyY2UoKSBpcyBhbiBBbmd1bGFyLXNwZWNpZmljIG1ldGhvZCBmb3IgcmVhZGluZyBmaWxlcyB0aGF0IGFyZSBub3RcbiAgICogbWFuYWdlZCBieSB0aGUgVFMgY29tcGlsZXIgaG9zdCwgbmFtZWx5IHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHMuXG4gICAqIEl0IGlzIGEgbWV0aG9kIG9uIEV4dGVuZGVkVHNDb21waWxlckhvc3QsIHNlZVxuICAgKiBwYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2NvcmUvYXBpL3NyYy9pbnRlcmZhY2VzLnRzXG4gICAqL1xuICByZWFkUmVzb3VyY2UoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzVHlwZVNjcmlwdEZpbGUoZmlsZU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlYWRSZXNvdXJjZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uIFRTIGZpbGU6ICR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuICAgIC8vIENhbGxpbmcgZ2V0U2NyaXB0U25hcHNob3QoKSB3aWxsIGFjdHVhbGx5IGNyZWF0ZSBhIFNjcmlwdEluZm8gaWYgaXQgZG9lc1xuICAgIC8vIG5vdCBleGlzdCEgVGhlIHNhbWUgYXBwbGllcyBmb3IgZ2V0U2NyaXB0VmVyc2lvbigpLlxuICAgIC8vIGdldFNjcmlwdEluZm8oKSB3aWxsIG5vdCBjcmVhdGUgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgKndhbnQqIGEgc2NyaXB0IGluZm8gdG8gYmUgY3JlYXRlZCBzbyB0aGF0IHdlIGNvdWxkXG4gICAgLy8ga2VlcCB0cmFjayBvZiBpdHMgdmVyc2lvbi5cbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMucHJvamVjdC5nZXRTY3JpcHRTbmFwc2hvdChmaWxlTmFtZSk7XG4gICAgaWYgKCFzbmFwc2hvdCkge1xuICAgICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBvciByZWFkRmlsZSgpIGZhaWxzIGZvclxuICAgICAgLy8gd2hhdGV2ZXIgcmVhc29ucy5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBzY3JpcHQgc25hcHNob3Qgd2hpbGUgdHJ5aW5nIHRvIHJlYWQgJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMucHJvamVjdC5nZXRTY3JpcHRWZXJzaW9uKGZpbGVOYW1lKTtcbiAgICB0aGlzLmxhc3RSZWFkUmVzb3VyY2VWZXJzaW9uLnNldChmaWxlTmFtZSwgdmVyc2lvbik7XG4gICAgcmV0dXJuIHNuYXBzaG90LmdldFRleHQoMCwgc25hcHNob3QuZ2V0TGVuZ3RoKCkpO1xuICB9XG5cbiAgZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzKCk6IFNldDxzdHJpbmc+fHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kaWZpZWRGaWxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgW2ZpbGVOYW1lLCBvbGRWZXJzaW9uXSBvZiB0aGlzLmxhc3RSZWFkUmVzb3VyY2VWZXJzaW9uKSB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0LmdldFNjcmlwdFZlcnNpb24oZmlsZU5hbWUpICE9PSBvbGRWZXJzaW9uKSB7XG4gICAgICAgIG1vZGlmaWVkRmlsZXMuYWRkKGZpbGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1vZGlmaWVkRmlsZXMuc2l6ZSA+IDAgPyBtb2RpZmllZEZpbGVzIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogVXNlZCB0byByZWFkIGNvbmZpZ3VyYXRpb24gZmlsZXMuXG4gKlxuICogQSBsYW5ndWFnZSBzZXJ2aWNlIHBhcnNlIGNvbmZpZ3VyYXRpb24gaG9zdCBpcyBpbmRlcGVuZGVudCBvZiB0aGUgYWRhcHRlclxuICogYmVjYXVzZSBzaWduYXR1cmVzIG9mIGNhbGxzIGxpa2UgYEZpbGVTeXN0ZW0jcmVhZEZpbGVgIGFyZSBhIGJpdCBzdHJpY3RlclxuICogdGhhbiB0aG9zZSBvbiB0aGUgYWRhcHRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIExTUGFyc2VDb25maWdIb3N0IGltcGxlbWVudHMgQ29uZmlndXJhdGlvbkhvc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlcnZlckhvc3Q6IHRzLnNlcnZlci5TZXJ2ZXJIb3N0KSB7fVxuICBleGlzdHMocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJIb3N0LmZpbGVFeGlzdHMocGF0aCkgfHwgdGhpcy5zZXJ2ZXJIb3N0LmRpcmVjdG9yeUV4aXN0cyhwYXRoKTtcbiAgfVxuICByZWFkRmlsZShwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2VydmVySG9zdC5yZWFkRmlsZShwYXRoKTtcbiAgICBpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExhbmd1YWdlU2VydmljZUZTI3JlYWRGaWxlIGNhbGxlZCBvbiB1bmF2YWlsYWJsZSBmaWxlICR7cGF0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgbHN0YXQocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBGaWxlU3RhdHMge1xuICAgIHJldHVybiB7XG4gICAgICBpc0ZpbGU6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVySG9zdC5maWxlRXhpc3RzKHBhdGgpO1xuICAgICAgfSxcbiAgICAgIGlzRGlyZWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlckhvc3QuZGlyZWN0b3J5RXhpc3RzKHBhdGgpO1xuICAgICAgfSxcbiAgICAgIGlzU3ltYm9saWNMaW5rOiAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTGFuZ3VhZ2VTZXJ2aWNlRlMjbHN0YXQjaXNTeW1ib2xpY0xpbmsgbm90IGltcGxlbWVudGVkYCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcHdkKCk6IEFic29sdXRlRnNQYXRoIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJIb3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKSBhcyBBYnNvbHV0ZUZzUGF0aDtcbiAgfVxuICBleHRuYW1lKHBhdGg6IEFic29sdXRlRnNQYXRofFBhdGhTZWdtZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcC5leHRuYW1lKHBhdGgpO1xuICB9XG4gIHJlc29sdmUoLi4ucGF0aHM6IHN0cmluZ1tdKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIHJldHVybiBwLnJlc29sdmUoLi4ucGF0aHMpIGFzIEFic29sdXRlRnNQYXRoO1xuICB9XG4gIGRpcm5hbWU8VCBleHRlbmRzIFBhdGhTdHJpbmc+KGZpbGU6IFQpOiBUIHtcbiAgICByZXR1cm4gcC5kaXJuYW1lKGZpbGUpIGFzIFQ7XG4gIH1cbiAgam9pbjxUIGV4dGVuZHMgUGF0aFN0cmluZz4oYmFzZVBhdGg6IFQsIC4uLnBhdGhzOiBzdHJpbmdbXSk6IFQge1xuICAgIHJldHVybiBwLmpvaW4oYmFzZVBhdGgsIC4uLnBhdGhzKSBhcyBUO1xuICB9XG59XG4iXX0=
@@ -47,14 +47,20 @@
47
47
  var ticket_1 = core_1.resourceChangeTicket(this.compiler, modifiedResourceFiles);
48
48
  this.compiler = core_1.NgCompiler.fromTicket(ticket_1, this.adapter);
49
49
  }
50
+ else {
51
+ // The previous NgCompiler is being reused, but we still want to reset its performance
52
+ // tracker to capture only the operations that are needed to service the current request.
53
+ this.compiler.perfRecorder.reset();
54
+ }
50
55
  return this.compiler;
51
56
  }
52
57
  var ticket;
53
58
  if (this.compiler === null || this.lastKnownProgram === null) {
54
- ticket = core_1.freshCompilationTicket(program, this.options, this.incrementalStrategy, this.programStrategy, true, true);
59
+ ticket = core_1.freshCompilationTicket(program, this.options, this.incrementalStrategy, this.programStrategy,
60
+ /* perfRecorder */ null, true, true);
55
61
  }
56
62
  else {
57
- ticket = core_1.incrementalFromCompilerTicket(this.compiler, program, this.incrementalStrategy, this.programStrategy, modifiedResourceFiles);
63
+ ticket = core_1.incrementalFromCompilerTicket(this.compiler, program, this.incrementalStrategy, this.programStrategy, modifiedResourceFiles, /* perfRecorder */ null);
58
64
  }
59
65
  this.compiler = core_1.NgCompiler.fromTicket(ticket, this.adapter);
60
66
  this.lastKnownProgram = program;
@@ -67,4 +73,4 @@
67
73
  }());
68
74
  exports.CompilerFactory = CompilerFactory;
69
75
  });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXJfZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhbmd1YWdlLXNlcnZpY2UvaXZ5L2NvbXBpbGVyX2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsNkRBQWdLO0lBRWhLLDJFQUE0RjtJQU81Rjs7Ozs7Ozs7T0FRRztJQUNIO1FBS0UseUJBQ3FCLE9BQStCLEVBQy9CLGVBQTRDLEVBQzVDLE9BQTBCO1lBRjFCLFlBQU8sR0FBUCxPQUFPLENBQXdCO1lBQy9CLG9CQUFlLEdBQWYsZUFBZSxDQUE2QjtZQUM1QyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtZQVA5Qix3QkFBbUIsR0FBRyxJQUFJLDZDQUErQixFQUFFLENBQUM7WUFDckUsYUFBUSxHQUFvQixJQUFJLENBQUM7WUFDakMscUJBQWdCLEdBQW9CLElBQUksQ0FBQztRQU05QyxDQUFDO1FBRUoscUNBQVcsR0FBWDs7WUFDRSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xELElBQU0scUJBQXFCLFNBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxtQ0FBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBRW5GLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDL0QsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO29CQUNsQywwRUFBMEU7b0JBQzFFLElBQU0sUUFBTSxHQUFHLDJCQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM3RDtnQkFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDdEI7WUFFRCxJQUFJLE1BQXlCLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO2dCQUM1RCxNQUFNLEdBQUcsNkJBQXNCLENBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN4RjtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsb0NBQTZCLENBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUN0RSxxQkFBcUIsQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxrREFBd0IsR0FBeEI7WUFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1RCxDQUFDO1FBQ0gsc0JBQUM7SUFBRCxDQUFDLEFBMUNELElBMENDO0lBMUNZLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q29tcGlsYXRpb25UaWNrZXQsIGZyZXNoQ29tcGlsYXRpb25UaWNrZXQsIGluY3JlbWVudGFsRnJvbUNvbXBpbGVyVGlja2V0LCBOZ0NvbXBpbGVyLCByZXNvdXJjZUNoYW5nZVRpY2tldH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlJztcbmltcG9ydCB7TmdDb21waWxlck9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvY29yZS9hcGknO1xuaW1wb3J0IHtUcmFja2VkSW5jcmVtZW50YWxCdWlsZFN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL2luY3JlbWVudGFsJztcbmltcG9ydCB7VHlwZUNoZWNraW5nUHJvZ3JhbVN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9hcGknO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdC9saWIvdHNzZXJ2ZXJsaWJyYXJ5JztcblxuaW1wb3J0IHtMYW5ndWFnZVNlcnZpY2VBZGFwdGVyfSBmcm9tICcuL2FkYXB0ZXJzJztcbmltcG9ydCB7aXNFeHRlcm5hbFRlbXBsYXRlfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBNYW5hZ2VzIHRoZSBgTmdDb21waWxlcmAgaW5zdGFuY2Ugd2hpY2ggYmFja3MgdGhlIGxhbmd1YWdlIHNlcnZpY2UsIHVwZGF0aW5nIG9yIHJlcGxhY2luZyBpdCBhc1xuICogbmVlZGVkIHRvIHByb2R1Y2UgYW4gdXAtdG8tZGF0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjdXJyZW50IHByb2dyYW0uXG4gKlxuICogVE9ETyhhbHhodWIpOiBjdXJyZW50bHkgdGhlIG9wdGlvbnMgdXNlZCBmb3IgdGhlIGNvbXBpbGVyIGFyZSBzcGVjaWZpZWQgYXQgYENvbXBpbGVyRmFjdG9yeWBcbiAqIGNvbnN0cnVjdGlvbiwgYW5kIGFyZSBub3QgY2hhbmdhYmxlLiBJbiBhIHJlYWwgcHJvamVjdCwgdXNlcnMgY2FuIHVwZGF0ZSBgdHNjb25maWcuanNvbmAuIFdlIG5lZWRcbiAqIHRvIHByb3Blcmx5IGhhbmRsZSBhIGNoYW5nZSBpbiB0aGUgY29tcGlsZXIgb3B0aW9ucywgZWl0aGVyIGJ5IGhhdmluZyBhbiBBUEkgdG8gdXBkYXRlIHRoZVxuICogYENvbXBpbGVyRmFjdG9yeWAgdG8gdXNlIG5ldyBvcHRpb25zLCBvciBieSByZXBsYWNpbmcgaXQgZW50aXJlbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21waWxlckZhY3Rvcnkge1xuICBwcml2YXRlIHJlYWRvbmx5IGluY3JlbWVudGFsU3RyYXRlZ3kgPSBuZXcgVHJhY2tlZEluY3JlbWVudGFsQnVpbGRTdHJhdGVneSgpO1xuICBwcml2YXRlIGNvbXBpbGVyOiBOZ0NvbXBpbGVyfG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RLbm93blByb2dyYW06IHRzLlByb2dyYW18bnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI6IExhbmd1YWdlU2VydmljZUFkYXB0ZXIsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2dyYW1TdHJhdGVneTogVHlwZUNoZWNraW5nUHJvZ3JhbVN0cmF0ZWd5LFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBOZ0NvbXBpbGVyT3B0aW9ucyxcbiAgKSB7fVxuXG4gIGdldE9yQ3JlYXRlKCk6IE5nQ29tcGlsZXIge1xuICAgIGNvbnN0IHByb2dyYW0gPSB0aGlzLnByb2dyYW1TdHJhdGVneS5nZXRQcm9ncmFtKCk7XG4gICAgY29uc3QgbW9kaWZpZWRSZXNvdXJjZUZpbGVzID0gdGhpcy5hZGFwdGVyLmdldE1vZGlmaWVkUmVzb3VyY2VGaWxlcygpID8/IG5ldyBTZXQoKTtcblxuICAgIGlmICh0aGlzLmNvbXBpbGVyICE9PSBudWxsICYmIHByb2dyYW0gPT09IHRoaXMubGFzdEtub3duUHJvZ3JhbSkge1xuICAgICAgaWYgKG1vZGlmaWVkUmVzb3VyY2VGaWxlcy5zaXplID4gMCkge1xuICAgICAgICAvLyBPbmx5IHJlc291cmNlIGZpbGVzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBOZ0NvbXBpbGVyIHdhcyBjcmVhdGVkLlxuICAgICAgICBjb25zdCB0aWNrZXQgPSByZXNvdXJjZUNoYW5nZVRpY2tldCh0aGlzLmNvbXBpbGVyLCBtb2RpZmllZFJlc291cmNlRmlsZXMpO1xuICAgICAgICB0aGlzLmNvbXBpbGVyID0gTmdDb21waWxlci5mcm9tVGlja2V0KHRpY2tldCwgdGhpcy5hZGFwdGVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZXI7XG4gICAgfVxuXG4gICAgbGV0IHRpY2tldDogQ29tcGlsYXRpb25UaWNrZXQ7XG4gICAgaWYgKHRoaXMuY29tcGlsZXIgPT09IG51bGwgfHwgdGhpcy5sYXN0S25vd25Qcm9ncmFtID09PSBudWxsKSB7XG4gICAgICB0aWNrZXQgPSBmcmVzaENvbXBpbGF0aW9uVGlja2V0KFxuICAgICAgICAgIHByb2dyYW0sIHRoaXMub3B0aW9ucywgdGhpcy5pbmNyZW1lbnRhbFN0cmF0ZWd5LCB0aGlzLnByb2dyYW1TdHJhdGVneSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpY2tldCA9IGluY3JlbWVudGFsRnJvbUNvbXBpbGVyVGlja2V0KFxuICAgICAgICAgIHRoaXMuY29tcGlsZXIsIHByb2dyYW0sIHRoaXMuaW5jcmVtZW50YWxTdHJhdGVneSwgdGhpcy5wcm9ncmFtU3RyYXRlZ3ksXG4gICAgICAgICAgbW9kaWZpZWRSZXNvdXJjZUZpbGVzKTtcbiAgICB9XG4gICAgdGhpcy5jb21waWxlciA9IE5nQ29tcGlsZXIuZnJvbVRpY2tldCh0aWNrZXQsIHRoaXMuYWRhcHRlcik7XG4gICAgdGhpcy5sYXN0S25vd25Qcm9ncmFtID0gcHJvZ3JhbTtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlcjtcbiAgfVxuXG4gIHJlZ2lzdGVyTGFzdEtub3duUHJvZ3JhbSgpIHtcbiAgICB0aGlzLmxhc3RLbm93blByb2dyYW0gPSB0aGlzLnByb2dyYW1TdHJhdGVneS5nZXRQcm9ncmFtKCk7XG4gIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXJfZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhbmd1YWdlLXNlcnZpY2UvaXZ5L2NvbXBpbGVyX2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsNkRBQWdLO0lBRWhLLDJFQUE0RjtJQVE1Rjs7Ozs7Ozs7T0FRRztJQUNIO1FBS0UseUJBQ3FCLE9BQStCLEVBQy9CLGVBQTRDLEVBQzVDLE9BQTBCO1lBRjFCLFlBQU8sR0FBUCxPQUFPLENBQXdCO1lBQy9CLG9CQUFlLEdBQWYsZUFBZSxDQUE2QjtZQUM1QyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtZQVA5Qix3QkFBbUIsR0FBRyxJQUFJLDZDQUErQixFQUFFLENBQUM7WUFDckUsYUFBUSxHQUFvQixJQUFJLENBQUM7WUFDakMscUJBQWdCLEdBQW9CLElBQUksQ0FBQztRQU05QyxDQUFDO1FBRUoscUNBQVcsR0FBWDs7WUFDRSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xELElBQU0scUJBQXFCLFNBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxtQ0FBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBRW5GLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDL0QsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO29CQUNsQywwRUFBMEU7b0JBQzFFLElBQU0sUUFBTSxHQUFHLDJCQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM3RDtxQkFBTTtvQkFDTCxzRkFBc0Y7b0JBQ3RGLHlGQUF5RjtvQkFDekYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3BDO2dCQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUN0QjtZQUVELElBQUksTUFBeUIsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBQzVELE1BQU0sR0FBRyw2QkFBc0IsQ0FDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNyRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxvQ0FBNkIsQ0FDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQ3RFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxrREFBd0IsR0FBeEI7WUFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1RCxDQUFDO1FBQ0gsc0JBQUM7SUFBRCxDQUFDLEFBL0NELElBK0NDO0lBL0NZLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q29tcGlsYXRpb25UaWNrZXQsIGZyZXNoQ29tcGlsYXRpb25UaWNrZXQsIGluY3JlbWVudGFsRnJvbUNvbXBpbGVyVGlja2V0LCBOZ0NvbXBpbGVyLCByZXNvdXJjZUNoYW5nZVRpY2tldH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlJztcbmltcG9ydCB7TmdDb21waWxlck9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvY29yZS9hcGknO1xuaW1wb3J0IHtUcmFja2VkSW5jcmVtZW50YWxCdWlsZFN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL2luY3JlbWVudGFsJztcbmltcG9ydCB7QWN0aXZlUGVyZlJlY29yZGVyfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL3BlcmYnO1xuaW1wb3J0IHtUeXBlQ2hlY2tpbmdQcm9ncmFtU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL2FwaSc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0L2xpYi90c3NlcnZlcmxpYnJhcnknO1xuXG5pbXBvcnQge0xhbmd1YWdlU2VydmljZUFkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMnO1xuaW1wb3J0IHtpc0V4dGVybmFsVGVtcGxhdGV9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIE1hbmFnZXMgdGhlIGBOZ0NvbXBpbGVyYCBpbnN0YW5jZSB3aGljaCBiYWNrcyB0aGUgbGFuZ3VhZ2Ugc2VydmljZSwgdXBkYXRpbmcgb3IgcmVwbGFjaW5nIGl0IGFzXG4gKiBuZWVkZWQgdG8gcHJvZHVjZSBhbiB1cC10by1kYXRlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGN1cnJlbnQgcHJvZ3JhbS5cbiAqXG4gKiBUT0RPKGFseGh1Yik6IGN1cnJlbnRseSB0aGUgb3B0aW9ucyB1c2VkIGZvciB0aGUgY29tcGlsZXIgYXJlIHNwZWNpZmllZCBhdCBgQ29tcGlsZXJGYWN0b3J5YFxuICogY29uc3RydWN0aW9uLCBhbmQgYXJlIG5vdCBjaGFuZ2FibGUuIEluIGEgcmVhbCBwcm9qZWN0LCB1c2VycyBjYW4gdXBkYXRlIGB0c2NvbmZpZy5qc29uYC4gV2UgbmVlZFxuICogdG8gcHJvcGVybHkgaGFuZGxlIGEgY2hhbmdlIGluIHRoZSBjb21waWxlciBvcHRpb25zLCBlaXRoZXIgYnkgaGF2aW5nIGFuIEFQSSB0byB1cGRhdGUgdGhlXG4gKiBgQ29tcGlsZXJGYWN0b3J5YCB0byB1c2UgbmV3IG9wdGlvbnMsIG9yIGJ5IHJlcGxhY2luZyBpdCBlbnRpcmVseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBpbGVyRmFjdG9yeSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5jcmVtZW50YWxTdHJhdGVneSA9IG5ldyBUcmFja2VkSW5jcmVtZW50YWxCdWlsZFN0cmF0ZWd5KCk7XG4gIHByaXZhdGUgY29tcGlsZXI6IE5nQ29tcGlsZXJ8bnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFzdEtub3duUHJvZ3JhbTogdHMuUHJvZ3JhbXxudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcjogTGFuZ3VhZ2VTZXJ2aWNlQWRhcHRlcixcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZ3JhbVN0cmF0ZWd5OiBUeXBlQ2hlY2tpbmdQcm9ncmFtU3RyYXRlZ3ksXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IE5nQ29tcGlsZXJPcHRpb25zLFxuICApIHt9XG5cbiAgZ2V0T3JDcmVhdGUoKTogTmdDb21waWxlciB7XG4gICAgY29uc3QgcHJvZ3JhbSA9IHRoaXMucHJvZ3JhbVN0cmF0ZWd5LmdldFByb2dyYW0oKTtcbiAgICBjb25zdCBtb2RpZmllZFJlc291cmNlRmlsZXMgPSB0aGlzLmFkYXB0ZXIuZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzKCkgPz8gbmV3IFNldCgpO1xuXG4gICAgaWYgKHRoaXMuY29tcGlsZXIgIT09IG51bGwgJiYgcHJvZ3JhbSA9PT0gdGhpcy5sYXN0S25vd25Qcm9ncmFtKSB7XG4gICAgICBpZiAobW9kaWZpZWRSZXNvdXJjZUZpbGVzLnNpemUgPiAwKSB7XG4gICAgICAgIC8vIE9ubHkgcmVzb3VyY2UgZmlsZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IE5nQ29tcGlsZXIgd2FzIGNyZWF0ZWQuXG4gICAgICAgIGNvbnN0IHRpY2tldCA9IHJlc291cmNlQ2hhbmdlVGlja2V0KHRoaXMuY29tcGlsZXIsIG1vZGlmaWVkUmVzb3VyY2VGaWxlcyk7XG4gICAgICAgIHRoaXMuY29tcGlsZXIgPSBOZ0NvbXBpbGVyLmZyb21UaWNrZXQodGlja2V0LCB0aGlzLmFkYXB0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIHByZXZpb3VzIE5nQ29tcGlsZXIgaXMgYmVpbmcgcmV1c2VkLCBidXQgd2Ugc3RpbGwgd2FudCB0byByZXNldCBpdHMgcGVyZm9ybWFuY2VcbiAgICAgICAgLy8gdHJhY2tlciB0byBjYXB0dXJlIG9ubHkgdGhlIG9wZXJhdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvIHNlcnZpY2UgdGhlIGN1cnJlbnQgcmVxdWVzdC5cbiAgICAgICAgdGhpcy5jb21waWxlci5wZXJmUmVjb3JkZXIucmVzZXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZXI7XG4gICAgfVxuXG4gICAgbGV0IHRpY2tldDogQ29tcGlsYXRpb25UaWNrZXQ7XG4gICAgaWYgKHRoaXMuY29tcGlsZXIgPT09IG51bGwgfHwgdGhpcy5sYXN0S25vd25Qcm9ncmFtID09PSBudWxsKSB7XG4gICAgICB0aWNrZXQgPSBmcmVzaENvbXBpbGF0aW9uVGlja2V0KFxuICAgICAgICAgIHByb2dyYW0sIHRoaXMub3B0aW9ucywgdGhpcy5pbmNyZW1lbnRhbFN0cmF0ZWd5LCB0aGlzLnByb2dyYW1TdHJhdGVneSxcbiAgICAgICAgICAvKiBwZXJmUmVjb3JkZXIgKi8gbnVsbCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpY2tldCA9IGluY3JlbWVudGFsRnJvbUNvbXBpbGVyVGlja2V0KFxuICAgICAgICAgIHRoaXMuY29tcGlsZXIsIHByb2dyYW0sIHRoaXMuaW5jcmVtZW50YWxTdHJhdGVneSwgdGhpcy5wcm9ncmFtU3RyYXRlZ3ksXG4gICAgICAgICAgbW9kaWZpZWRSZXNvdXJjZUZpbGVzLCAvKiBwZXJmUmVjb3JkZXIgKi8gbnVsbCk7XG4gICAgfVxuICAgIHRoaXMuY29tcGlsZXIgPSBOZ0NvbXBpbGVyLmZyb21UaWNrZXQodGlja2V0LCB0aGlzLmFkYXB0ZXIpO1xuICAgIHRoaXMubGFzdEtub3duUHJvZ3JhbSA9IHByb2dyYW07XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXI7XG4gIH1cblxuICByZWdpc3Rlckxhc3RLbm93blByb2dyYW0oKSB7XG4gICAgdGhpcy5sYXN0S25vd25Qcm9ncmFtID0gdGhpcy5wcm9ncmFtU3RyYXRlZ3kuZ2V0UHJvZ3JhbSgpO1xuICB9XG59XG4iXX0=
@@ -100,4 +100,9 @@ export declare class CompletionBuilder<N extends TmplAstNode | AST> {
100
100
  private getElementAttributeCompletionSymbol;
101
101
  private isPipeCompletion;
102
102
  private getPipeCompletions;
103
+ /**
104
+ * From the AST node of the cursor position, include completion of string literals, number
105
+ * literals, `true`, `false`, `null`, and `undefined`.
106
+ */
107
+ private isValidNodeContextCompletion;
103
108
  }