@angular/compiler-cli 11.2.5 → 11.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +5 -3
  3. package/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts +1 -1
  4. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +4 -4
  5. package/ngcc/src/analysis/decoration_analyzer.js +10 -8
  6. package/ngcc/src/execution/analyze_entry_points.js +10 -4
  7. package/ngcc/src/packages/build_marker.d.ts +1 -1
  8. package/ngcc/src/packages/build_marker.js +1 -1
  9. package/package.json +3 -3
  10. package/src/ngtsc/annotations/src/component.d.ts +4 -7
  11. package/src/ngtsc/annotations/src/component.js +107 -77
  12. package/src/ngtsc/annotations/src/directive.d.ts +3 -1
  13. package/src/ngtsc/annotations/src/directive.js +6 -3
  14. package/src/ngtsc/annotations/src/injectable.d.ts +3 -1
  15. package/src/ngtsc/annotations/src/injectable.js +6 -3
  16. package/src/ngtsc/annotations/src/ng_module.d.ts +3 -1
  17. package/src/ngtsc/annotations/src/ng_module.js +6 -3
  18. package/src/ngtsc/annotations/src/pipe.d.ts +3 -1
  19. package/src/ngtsc/annotations/src/pipe.js +6 -3
  20. package/src/ngtsc/core/api/src/options.d.ts +2 -3
  21. package/src/ngtsc/core/api/src/options.js +1 -1
  22. package/src/ngtsc/core/src/compiler.d.ts +19 -8
  23. package/src/ngtsc/core/src/compiler.js +222 -165
  24. package/src/ngtsc/cycles/src/imports.d.ts +3 -1
  25. package/src/ngtsc/cycles/src/imports.js +35 -30
  26. package/src/ngtsc/diagnostics/src/error_code.d.ts +7 -1
  27. package/src/ngtsc/diagnostics/src/error_code.js +10 -4
  28. package/src/ngtsc/incremental/src/state.d.ts +2 -1
  29. package/src/ngtsc/incremental/src/state.js +134 -129
  30. package/src/ngtsc/perf/index.d.ts +2 -2
  31. package/src/ngtsc/perf/index.js +8 -5
  32. package/src/ngtsc/perf/src/api.d.ts +300 -5
  33. package/src/ngtsc/perf/src/api.js +268 -1
  34. package/src/ngtsc/perf/src/noop.d.ts +7 -0
  35. package/src/ngtsc/perf/src/noop.js +25 -10
  36. package/src/ngtsc/perf/src/recorder.d.ts +58 -0
  37. package/src/ngtsc/perf/src/recorder.js +143 -0
  38. package/src/ngtsc/program.d.ts +0 -2
  39. package/src/ngtsc/program.js +138 -122
  40. package/src/ngtsc/transform/src/compilation.js +6 -4
  41. package/src/ngtsc/transform/src/transform.d.ts +2 -1
  42. package/src/ngtsc/transform/src/transform.js +5 -4
  43. package/src/ngtsc/tsc_plugin.js +14 -4
  44. package/src/ngtsc/typecheck/api/api.d.ts +27 -0
  45. package/src/ngtsc/typecheck/api/api.js +1 -1
  46. package/src/ngtsc/typecheck/src/checker.d.ts +3 -1
  47. package/src/ngtsc/typecheck/src/checker.js +132 -110
  48. package/src/ngtsc/typecheck/src/context.d.ts +3 -1
  49. package/src/ngtsc/typecheck/src/context.js +31 -30
  50. package/src/ngtsc/typecheck/src/environment.d.ts +1 -1
  51. package/src/ngtsc/typecheck/src/environment.js +1 -1
  52. package/src/ngtsc/typecheck/src/oob.d.ts +6 -0
  53. package/src/ngtsc/typecheck/src/oob.js +36 -1
  54. package/src/ngtsc/typecheck/src/type_check_block.js +107 -23
  55. package/src/ngtsc/typecheck/src/type_check_file.d.ts +1 -1
  56. package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
  57. package/src/perform_compile.js +16 -10
  58. package/src/version.js +1 -1
  59. package/src/ngtsc/perf/src/tracking.d.ts +0 -33
  60. package/src/ngtsc/perf/src/tracking.js +0 -103
@@ -6,10 +6,305 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/perf/src/api" />
9
- import { DeclarationNode } from '../../reflection';
9
+ /**
10
+ * A phase of compilation for which time is tracked in a distinct bucket.
11
+ */
12
+ export declare enum PerfPhase {
13
+ /**
14
+ * The "default" phase which tracks time not spent in any other phase.
15
+ */
16
+ Unaccounted = 0,
17
+ /**
18
+ * Time spent setting up the compiler, before a TypeScript program is created.
19
+ *
20
+ * This includes operations like configuring the `ts.CompilerHost` and any wrappers.
21
+ */
22
+ Setup = 1,
23
+ /**
24
+ * Time spent in `ts.createProgram`, including reading and parsing `ts.SourceFile`s in the
25
+ * `ts.CompilerHost`.
26
+ *
27
+ * This might be an incremental program creation operation.
28
+ */
29
+ TypeScriptProgramCreate = 2,
30
+ /**
31
+ * Time spent reconciling the contents of an old `ts.Program` with the new incremental one.
32
+ *
33
+ * Only present in incremental compilations.
34
+ */
35
+ Reconciliation = 3,
36
+ /**
37
+ * Time spent updating an `NgCompiler` instance with a resource-only change.
38
+ *
39
+ * Only present in incremental compilations where the change was resource-only.
40
+ */
41
+ ResourceUpdate = 4,
42
+ /**
43
+ * Time spent calculating the plain TypeScript diagnostics (structural and semantic).
44
+ */
45
+ TypeScriptDiagnostics = 5,
46
+ /**
47
+ * Time spent in Angular analysis of individual classes in the program.
48
+ */
49
+ Analysis = 6,
50
+ /**
51
+ * Time spent in Angular global analysis (synthesis of analysis information into a complete
52
+ * understanding of the program).
53
+ */
54
+ Resolve = 7,
55
+ /**
56
+ * Time spent building the import graph of the program in order to perform cycle detection.
57
+ */
58
+ CycleDetection = 8,
59
+ /**
60
+ * Time spent generating the text of Type Check Blocks in order to perform template type checking.
61
+ */
62
+ TcbGeneration = 9,
63
+ /**
64
+ * Time spent updating the `ts.Program` with new Type Check Block code.
65
+ */
66
+ TcbUpdateProgram = 10,
67
+ /**
68
+ * Time spent by TypeScript performing its emit operations, including downleveling and writing
69
+ * output files.
70
+ */
71
+ TypeScriptEmit = 11,
72
+ /**
73
+ * Time spent by Angular performing code transformations of ASTs as they're about to be emitted.
74
+ *
75
+ * This includes the actual code generation step for templates, and occurs during the emit phase
76
+ * (but is tracked separately from `TypeScriptEmit` time).
77
+ */
78
+ Compile = 12,
79
+ /**
80
+ * Time spent performing a `TemplateTypeChecker` autocompletion operation.
81
+ */
82
+ TtcAutocompletion = 13,
83
+ /**
84
+ * Time spent computing template type-checking diagnostics.
85
+ */
86
+ TtcDiagnostics = 14,
87
+ /**
88
+ * Time spent getting a `Symbol` from the `TemplateTypeChecker`.
89
+ */
90
+ TtcSymbol = 15,
91
+ /**
92
+ * Time spent by the Angular Language Service calculating a "get references" or a renaming
93
+ * operation.
94
+ */
95
+ LsReferencesAndRenames = 16,
96
+ /**
97
+ * Time spent by the Angular Language Service calculating a "quick info" operation.
98
+ */
99
+ LsQuickInfo = 17,
100
+ /**
101
+ * Time spent by the Angular Language Service calculating a "get type definition" or "get
102
+ * definition" operation.
103
+ */
104
+ LsDefinition = 18,
105
+ /**
106
+ * Time spent by the Angular Language Service calculating a "get completions" (AKA autocomplete)
107
+ * operation.
108
+ */
109
+ LsCompletions = 19,
110
+ /**
111
+ * Time spent by the Angular Language Service calculating a "view template typecheck block"
112
+ * operation.
113
+ */
114
+ LsTcb = 20,
115
+ /**
116
+ * Time spent by the Angular Language Service calculating diagnostics.
117
+ */
118
+ LsDiagnostics = 21,
119
+ /**
120
+ * Time spent by the Angular Language Service calculating a "get component locations for template"
121
+ * operation.
122
+ */
123
+ LsComponentLocations = 22,
124
+ /**
125
+ * Tracks the number of `PerfPhase`s, and must appear at the end of the list.
126
+ */
127
+ LAST = 23
128
+ }
129
+ /**
130
+ * Represents some occurrence during compilation, and is tracked with a counter.
131
+ */
132
+ export declare enum PerfEvent {
133
+ /**
134
+ * Counts the number of `.d.ts` files in the program.
135
+ */
136
+ InputDtsFile = 0,
137
+ /**
138
+ * Counts the number of non-`.d.ts` files in the program.
139
+ */
140
+ InputTsFile = 1,
141
+ /**
142
+ * An `@Component` class was analyzed.
143
+ */
144
+ AnalyzeComponent = 2,
145
+ /**
146
+ * An `@Directive` class was analyzed.
147
+ */
148
+ AnalyzeDirective = 3,
149
+ /**
150
+ * An `@Injectable` class was analyzed.
151
+ */
152
+ AnalyzeInjectable = 4,
153
+ /**
154
+ * An `@NgModule` class was analyzed.
155
+ */
156
+ AnalyzeNgModule = 5,
157
+ /**
158
+ * An `@Pipe` class was analyzed.
159
+ */
160
+ AnalyzePipe = 6,
161
+ /**
162
+ * A trait was analyzed.
163
+ *
164
+ * In theory, this should be the sum of the `Analyze` counters for each decorator type.
165
+ */
166
+ TraitAnalyze = 7,
167
+ /**
168
+ * A trait had a prior analysis available from an incremental program, and did not need to be
169
+ * re-analyzed.
170
+ */
171
+ TraitReuseAnalysis = 8,
172
+ /**
173
+ * A `ts.SourceFile` directly changed between the prior program and a new incremental compilation.
174
+ */
175
+ SourceFilePhysicalChange = 9,
176
+ /**
177
+ * A `ts.SourceFile` did not physically changed, but according to the file dependency graph, has
178
+ * logically changed between the prior program and a new incremental compilation.
179
+ */
180
+ SourceFileLogicalChange = 10,
181
+ /**
182
+ * A `ts.SourceFile` has not logically changed and all of its analysis results were thus available
183
+ * for reuse.
184
+ */
185
+ SourceFileReuseAnalysis = 11,
186
+ /**
187
+ * A Type Check Block (TCB) was generated.
188
+ */
189
+ GenerateTcb = 12,
190
+ /**
191
+ * A Type Check Block (TCB) could not be generated because inlining was disabled, and the block
192
+ * would've required inlining.
193
+ */
194
+ SkipGenerateTcbNoInline = 13,
195
+ /**
196
+ * A `.ngtypecheck.ts` file could be reused from the previous program and did not need to be
197
+ * regenerated.
198
+ */
199
+ ReuseTypeCheckFile = 14,
200
+ /**
201
+ * The template type-checking program required changes and had to be updated in an incremental
202
+ * step.
203
+ */
204
+ UpdateTypeCheckProgram = 15,
205
+ /**
206
+ * The compiler was able to prove that a `ts.SourceFile` did not need to be re-emitted.
207
+ */
208
+ EmitSkipSourceFile = 16,
209
+ /**
210
+ * A `ts.SourceFile` was emitted.
211
+ */
212
+ EmitSourceFile = 17,
213
+ /**
214
+ * Tracks the number of `PrefEvent`s, and must appear at the end of the list.
215
+ */
216
+ LAST = 18
217
+ }
218
+ /**
219
+ * Represents a checkpoint during compilation at which the memory usage of the compiler should be
220
+ * recorded.
221
+ */
222
+ export declare enum PerfCheckpoint {
223
+ /**
224
+ * The point at which the `PerfRecorder` was created, and ideally tracks memory used before any
225
+ * compilation structures are created.
226
+ */
227
+ Initial = 0,
228
+ /**
229
+ * The point just after the `ts.Program` has been created.
230
+ */
231
+ TypeScriptProgramCreate = 1,
232
+ /**
233
+ * The point just before Angular analysis starts.
234
+ *
235
+ * In the main usage pattern for the compiler, TypeScript diagnostics have been calculated at this
236
+ * point, so the `ts.TypeChecker` has fully ingested the current program, all `ts.Type` structures
237
+ * and `ts.Symbol`s have been created.
238
+ */
239
+ PreAnalysis = 2,
240
+ /**
241
+ * The point just after Angular analysis completes.
242
+ */
243
+ Analysis = 3,
244
+ /**
245
+ * The point just after Angular resolution is complete.
246
+ */
247
+ Resolve = 4,
248
+ /**
249
+ * The point just after Type Check Blocks (TCBs) have been generated.
250
+ */
251
+ TtcGeneration = 5,
252
+ /**
253
+ * The point just after the template type-checking program has been updated with any new TCBs.
254
+ */
255
+ TtcUpdateProgram = 6,
256
+ /**
257
+ * The point just before emit begins.
258
+ *
259
+ * In the main usage pattern for the compiler, all template type-checking diagnostics have been
260
+ * requested at this point.
261
+ */
262
+ PreEmit = 7,
263
+ /**
264
+ * The point just after the program has been fully emitted.
265
+ */
266
+ Emit = 8,
267
+ /**
268
+ * Tracks the number of `PerfCheckpoint`s, and must appear at the end of the list.
269
+ */
270
+ LAST = 9
271
+ }
272
+ /**
273
+ * Records timing, memory, or counts at specific points in the compiler's operation.
274
+ */
10
275
  export interface PerfRecorder {
11
- readonly enabled: boolean;
12
- mark(name: string, node?: DeclarationNode, category?: string, detail?: string): void;
13
- start(name: string, node?: DeclarationNode, category?: string, detail?: string): number;
14
- stop(span: number): void;
276
+ /**
277
+ * Set the current phase of compilation.
278
+ *
279
+ * Time spent in the previous phase will be accounted to that phase. The caller is responsible for
280
+ * exiting the phase when work that should be tracked within it is completed, and either returning
281
+ * to the previous phase or transitioning to the next one directly.
282
+ *
283
+ * In general, prefer using `inPhase()` to instrument a section of code, as it automatically
284
+ * handles entering and exiting the phase. `phase()` should only be used when the former API
285
+ * cannot be cleanly applied to a particular operation.
286
+ *
287
+ * @returns the previous phase
288
+ */
289
+ phase(phase: PerfPhase): PerfPhase;
290
+ /**
291
+ * Run `fn` in the given `PerfPhase` and return the result.
292
+ *
293
+ * Enters `phase` before executing the given `fn`, then exits the phase and returns the result.
294
+ * Prefer this API to `phase()` where possible.
295
+ */
296
+ inPhase<T>(phase: PerfPhase, fn: () => T): T;
297
+ /**
298
+ * Record the memory usage of the compiler at the given checkpoint.
299
+ */
300
+ memory(after: PerfCheckpoint): void;
301
+ /**
302
+ * Record that a specific event has occurred, possibly more than once.
303
+ */
304
+ eventCount(event: PerfEvent, incrementBy?: number): void;
305
+ /**
306
+ * Return the `PerfRecorder` to an empty state (clear all tracked statistics) and reset the zero
307
+ * point to the current time.
308
+ */
309
+ reset(): void;
15
310
  }
@@ -16,5 +16,272 @@
16
16
  })(function (require, exports) {
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.PerfCheckpoint = exports.PerfEvent = exports.PerfPhase = void 0;
20
+ /**
21
+ * A phase of compilation for which time is tracked in a distinct bucket.
22
+ */
23
+ var PerfPhase;
24
+ (function (PerfPhase) {
25
+ /**
26
+ * The "default" phase which tracks time not spent in any other phase.
27
+ */
28
+ PerfPhase[PerfPhase["Unaccounted"] = 0] = "Unaccounted";
29
+ /**
30
+ * Time spent setting up the compiler, before a TypeScript program is created.
31
+ *
32
+ * This includes operations like configuring the `ts.CompilerHost` and any wrappers.
33
+ */
34
+ PerfPhase[PerfPhase["Setup"] = 1] = "Setup";
35
+ /**
36
+ * Time spent in `ts.createProgram`, including reading and parsing `ts.SourceFile`s in the
37
+ * `ts.CompilerHost`.
38
+ *
39
+ * This might be an incremental program creation operation.
40
+ */
41
+ PerfPhase[PerfPhase["TypeScriptProgramCreate"] = 2] = "TypeScriptProgramCreate";
42
+ /**
43
+ * Time spent reconciling the contents of an old `ts.Program` with the new incremental one.
44
+ *
45
+ * Only present in incremental compilations.
46
+ */
47
+ PerfPhase[PerfPhase["Reconciliation"] = 3] = "Reconciliation";
48
+ /**
49
+ * Time spent updating an `NgCompiler` instance with a resource-only change.
50
+ *
51
+ * Only present in incremental compilations where the change was resource-only.
52
+ */
53
+ PerfPhase[PerfPhase["ResourceUpdate"] = 4] = "ResourceUpdate";
54
+ /**
55
+ * Time spent calculating the plain TypeScript diagnostics (structural and semantic).
56
+ */
57
+ PerfPhase[PerfPhase["TypeScriptDiagnostics"] = 5] = "TypeScriptDiagnostics";
58
+ /**
59
+ * Time spent in Angular analysis of individual classes in the program.
60
+ */
61
+ PerfPhase[PerfPhase["Analysis"] = 6] = "Analysis";
62
+ /**
63
+ * Time spent in Angular global analysis (synthesis of analysis information into a complete
64
+ * understanding of the program).
65
+ */
66
+ PerfPhase[PerfPhase["Resolve"] = 7] = "Resolve";
67
+ /**
68
+ * Time spent building the import graph of the program in order to perform cycle detection.
69
+ */
70
+ PerfPhase[PerfPhase["CycleDetection"] = 8] = "CycleDetection";
71
+ /**
72
+ * Time spent generating the text of Type Check Blocks in order to perform template type checking.
73
+ */
74
+ PerfPhase[PerfPhase["TcbGeneration"] = 9] = "TcbGeneration";
75
+ /**
76
+ * Time spent updating the `ts.Program` with new Type Check Block code.
77
+ */
78
+ PerfPhase[PerfPhase["TcbUpdateProgram"] = 10] = "TcbUpdateProgram";
79
+ /**
80
+ * Time spent by TypeScript performing its emit operations, including downleveling and writing
81
+ * output files.
82
+ */
83
+ PerfPhase[PerfPhase["TypeScriptEmit"] = 11] = "TypeScriptEmit";
84
+ /**
85
+ * Time spent by Angular performing code transformations of ASTs as they're about to be emitted.
86
+ *
87
+ * This includes the actual code generation step for templates, and occurs during the emit phase
88
+ * (but is tracked separately from `TypeScriptEmit` time).
89
+ */
90
+ PerfPhase[PerfPhase["Compile"] = 12] = "Compile";
91
+ /**
92
+ * Time spent performing a `TemplateTypeChecker` autocompletion operation.
93
+ */
94
+ PerfPhase[PerfPhase["TtcAutocompletion"] = 13] = "TtcAutocompletion";
95
+ /**
96
+ * Time spent computing template type-checking diagnostics.
97
+ */
98
+ PerfPhase[PerfPhase["TtcDiagnostics"] = 14] = "TtcDiagnostics";
99
+ /**
100
+ * Time spent getting a `Symbol` from the `TemplateTypeChecker`.
101
+ */
102
+ PerfPhase[PerfPhase["TtcSymbol"] = 15] = "TtcSymbol";
103
+ /**
104
+ * Time spent by the Angular Language Service calculating a "get references" or a renaming
105
+ * operation.
106
+ */
107
+ PerfPhase[PerfPhase["LsReferencesAndRenames"] = 16] = "LsReferencesAndRenames";
108
+ /**
109
+ * Time spent by the Angular Language Service calculating a "quick info" operation.
110
+ */
111
+ PerfPhase[PerfPhase["LsQuickInfo"] = 17] = "LsQuickInfo";
112
+ /**
113
+ * Time spent by the Angular Language Service calculating a "get type definition" or "get
114
+ * definition" operation.
115
+ */
116
+ PerfPhase[PerfPhase["LsDefinition"] = 18] = "LsDefinition";
117
+ /**
118
+ * Time spent by the Angular Language Service calculating a "get completions" (AKA autocomplete)
119
+ * operation.
120
+ */
121
+ PerfPhase[PerfPhase["LsCompletions"] = 19] = "LsCompletions";
122
+ /**
123
+ * Time spent by the Angular Language Service calculating a "view template typecheck block"
124
+ * operation.
125
+ */
126
+ PerfPhase[PerfPhase["LsTcb"] = 20] = "LsTcb";
127
+ /**
128
+ * Time spent by the Angular Language Service calculating diagnostics.
129
+ */
130
+ PerfPhase[PerfPhase["LsDiagnostics"] = 21] = "LsDiagnostics";
131
+ /**
132
+ * Time spent by the Angular Language Service calculating a "get component locations for template"
133
+ * operation.
134
+ */
135
+ PerfPhase[PerfPhase["LsComponentLocations"] = 22] = "LsComponentLocations";
136
+ /**
137
+ * Tracks the number of `PerfPhase`s, and must appear at the end of the list.
138
+ */
139
+ PerfPhase[PerfPhase["LAST"] = 23] = "LAST";
140
+ })(PerfPhase = exports.PerfPhase || (exports.PerfPhase = {}));
141
+ /**
142
+ * Represents some occurrence during compilation, and is tracked with a counter.
143
+ */
144
+ var PerfEvent;
145
+ (function (PerfEvent) {
146
+ /**
147
+ * Counts the number of `.d.ts` files in the program.
148
+ */
149
+ PerfEvent[PerfEvent["InputDtsFile"] = 0] = "InputDtsFile";
150
+ /**
151
+ * Counts the number of non-`.d.ts` files in the program.
152
+ */
153
+ PerfEvent[PerfEvent["InputTsFile"] = 1] = "InputTsFile";
154
+ /**
155
+ * An `@Component` class was analyzed.
156
+ */
157
+ PerfEvent[PerfEvent["AnalyzeComponent"] = 2] = "AnalyzeComponent";
158
+ /**
159
+ * An `@Directive` class was analyzed.
160
+ */
161
+ PerfEvent[PerfEvent["AnalyzeDirective"] = 3] = "AnalyzeDirective";
162
+ /**
163
+ * An `@Injectable` class was analyzed.
164
+ */
165
+ PerfEvent[PerfEvent["AnalyzeInjectable"] = 4] = "AnalyzeInjectable";
166
+ /**
167
+ * An `@NgModule` class was analyzed.
168
+ */
169
+ PerfEvent[PerfEvent["AnalyzeNgModule"] = 5] = "AnalyzeNgModule";
170
+ /**
171
+ * An `@Pipe` class was analyzed.
172
+ */
173
+ PerfEvent[PerfEvent["AnalyzePipe"] = 6] = "AnalyzePipe";
174
+ /**
175
+ * A trait was analyzed.
176
+ *
177
+ * In theory, this should be the sum of the `Analyze` counters for each decorator type.
178
+ */
179
+ PerfEvent[PerfEvent["TraitAnalyze"] = 7] = "TraitAnalyze";
180
+ /**
181
+ * A trait had a prior analysis available from an incremental program, and did not need to be
182
+ * re-analyzed.
183
+ */
184
+ PerfEvent[PerfEvent["TraitReuseAnalysis"] = 8] = "TraitReuseAnalysis";
185
+ /**
186
+ * A `ts.SourceFile` directly changed between the prior program and a new incremental compilation.
187
+ */
188
+ PerfEvent[PerfEvent["SourceFilePhysicalChange"] = 9] = "SourceFilePhysicalChange";
189
+ /**
190
+ * A `ts.SourceFile` did not physically changed, but according to the file dependency graph, has
191
+ * logically changed between the prior program and a new incremental compilation.
192
+ */
193
+ PerfEvent[PerfEvent["SourceFileLogicalChange"] = 10] = "SourceFileLogicalChange";
194
+ /**
195
+ * A `ts.SourceFile` has not logically changed and all of its analysis results were thus available
196
+ * for reuse.
197
+ */
198
+ PerfEvent[PerfEvent["SourceFileReuseAnalysis"] = 11] = "SourceFileReuseAnalysis";
199
+ /**
200
+ * A Type Check Block (TCB) was generated.
201
+ */
202
+ PerfEvent[PerfEvent["GenerateTcb"] = 12] = "GenerateTcb";
203
+ /**
204
+ * A Type Check Block (TCB) could not be generated because inlining was disabled, and the block
205
+ * would've required inlining.
206
+ */
207
+ PerfEvent[PerfEvent["SkipGenerateTcbNoInline"] = 13] = "SkipGenerateTcbNoInline";
208
+ /**
209
+ * A `.ngtypecheck.ts` file could be reused from the previous program and did not need to be
210
+ * regenerated.
211
+ */
212
+ PerfEvent[PerfEvent["ReuseTypeCheckFile"] = 14] = "ReuseTypeCheckFile";
213
+ /**
214
+ * The template type-checking program required changes and had to be updated in an incremental
215
+ * step.
216
+ */
217
+ PerfEvent[PerfEvent["UpdateTypeCheckProgram"] = 15] = "UpdateTypeCheckProgram";
218
+ /**
219
+ * The compiler was able to prove that a `ts.SourceFile` did not need to be re-emitted.
220
+ */
221
+ PerfEvent[PerfEvent["EmitSkipSourceFile"] = 16] = "EmitSkipSourceFile";
222
+ /**
223
+ * A `ts.SourceFile` was emitted.
224
+ */
225
+ PerfEvent[PerfEvent["EmitSourceFile"] = 17] = "EmitSourceFile";
226
+ /**
227
+ * Tracks the number of `PrefEvent`s, and must appear at the end of the list.
228
+ */
229
+ PerfEvent[PerfEvent["LAST"] = 18] = "LAST";
230
+ })(PerfEvent = exports.PerfEvent || (exports.PerfEvent = {}));
231
+ /**
232
+ * Represents a checkpoint during compilation at which the memory usage of the compiler should be
233
+ * recorded.
234
+ */
235
+ var PerfCheckpoint;
236
+ (function (PerfCheckpoint) {
237
+ /**
238
+ * The point at which the `PerfRecorder` was created, and ideally tracks memory used before any
239
+ * compilation structures are created.
240
+ */
241
+ PerfCheckpoint[PerfCheckpoint["Initial"] = 0] = "Initial";
242
+ /**
243
+ * The point just after the `ts.Program` has been created.
244
+ */
245
+ PerfCheckpoint[PerfCheckpoint["TypeScriptProgramCreate"] = 1] = "TypeScriptProgramCreate";
246
+ /**
247
+ * The point just before Angular analysis starts.
248
+ *
249
+ * In the main usage pattern for the compiler, TypeScript diagnostics have been calculated at this
250
+ * point, so the `ts.TypeChecker` has fully ingested the current program, all `ts.Type` structures
251
+ * and `ts.Symbol`s have been created.
252
+ */
253
+ PerfCheckpoint[PerfCheckpoint["PreAnalysis"] = 2] = "PreAnalysis";
254
+ /**
255
+ * The point just after Angular analysis completes.
256
+ */
257
+ PerfCheckpoint[PerfCheckpoint["Analysis"] = 3] = "Analysis";
258
+ /**
259
+ * The point just after Angular resolution is complete.
260
+ */
261
+ PerfCheckpoint[PerfCheckpoint["Resolve"] = 4] = "Resolve";
262
+ /**
263
+ * The point just after Type Check Blocks (TCBs) have been generated.
264
+ */
265
+ PerfCheckpoint[PerfCheckpoint["TtcGeneration"] = 5] = "TtcGeneration";
266
+ /**
267
+ * The point just after the template type-checking program has been updated with any new TCBs.
268
+ */
269
+ PerfCheckpoint[PerfCheckpoint["TtcUpdateProgram"] = 6] = "TtcUpdateProgram";
270
+ /**
271
+ * The point just before emit begins.
272
+ *
273
+ * In the main usage pattern for the compiler, all template type-checking diagnostics have been
274
+ * requested at this point.
275
+ */
276
+ PerfCheckpoint[PerfCheckpoint["PreEmit"] = 7] = "PreEmit";
277
+ /**
278
+ * The point just after the program has been fully emitted.
279
+ */
280
+ PerfCheckpoint[PerfCheckpoint["Emit"] = 8] = "Emit";
281
+ /**
282
+ * Tracks the number of `PerfCheckpoint`s, and must appear at the end of the list.
283
+ */
284
+ PerfCheckpoint[PerfCheckpoint["LAST"] = 9] = "LAST";
285
+ })(PerfCheckpoint = exports.PerfCheckpoint || (exports.PerfCheckpoint = {}));
19
286
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9wZXJmL3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RGVjbGFyYXRpb25Ob2RlfSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBQZXJmUmVjb3JkZXIge1xuICByZWFkb25seSBlbmFibGVkOiBib29sZWFuO1xuXG4gIG1hcmsobmFtZTogc3RyaW5nLCBub2RlPzogRGVjbGFyYXRpb25Ob2RlLCBjYXRlZ29yeT86IHN0cmluZywgZGV0YWlsPzogc3RyaW5nKTogdm9pZDtcbiAgc3RhcnQobmFtZTogc3RyaW5nLCBub2RlPzogRGVjbGFyYXRpb25Ob2RlLCBjYXRlZ29yeT86IHN0cmluZywgZGV0YWlsPzogc3RyaW5nKTogbnVtYmVyO1xuICBzdG9wKHNwYW46IG51bWJlcik6IHZvaWQ7XG59XG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9wZXJmL3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUg7O09BRUc7SUFDSCxJQUFZLFNBMklYO0lBM0lELFdBQVksU0FBUztRQUNuQjs7V0FFRztRQUNILHVEQUFXLENBQUE7UUFFWDs7OztXQUlHO1FBQ0gsMkNBQUssQ0FBQTtRQUVMOzs7OztXQUtHO1FBQ0gsK0VBQXVCLENBQUE7UUFFdkI7Ozs7V0FJRztRQUNILDZEQUFjLENBQUE7UUFFZDs7OztXQUlHO1FBQ0gsNkRBQWMsQ0FBQTtRQUVkOztXQUVHO1FBQ0gsMkVBQXFCLENBQUE7UUFFckI7O1dBRUc7UUFDSCxpREFBUSxDQUFBO1FBRVI7OztXQUdHO1FBQ0gsK0NBQU8sQ0FBQTtRQUVQOztXQUVHO1FBQ0gsNkRBQWMsQ0FBQTtRQUVkOztXQUVHO1FBQ0gsMkRBQWEsQ0FBQTtRQUViOztXQUVHO1FBQ0gsa0VBQWdCLENBQUE7UUFFaEI7OztXQUdHO1FBQ0gsOERBQWMsQ0FBQTtRQUVkOzs7OztXQUtHO1FBQ0gsZ0RBQU8sQ0FBQTtRQUVQOztXQUVHO1FBQ0gsb0VBQWlCLENBQUE7UUFFakI7O1dBRUc7UUFDSCw4REFBYyxDQUFBO1FBRWQ7O1dBRUc7UUFDSCxvREFBUyxDQUFBO1FBRVQ7OztXQUdHO1FBQ0gsOEVBQXNCLENBQUE7UUFFdEI7O1dBRUc7UUFDSCx3REFBVyxDQUFBO1FBRVg7OztXQUdHO1FBQ0gsMERBQVksQ0FBQTtRQUVaOzs7V0FHRztRQUNILDREQUFhLENBQUE7UUFFYjs7O1dBR0c7UUFDSCw0Q0FBSyxDQUFBO1FBRUw7O1dBRUc7UUFDSCw0REFBYSxDQUFBO1FBRWI7OztXQUdHO1FBQ0gsMEVBQW9CLENBQUE7UUFFcEI7O1dBRUc7UUFDSCwwQ0FBSSxDQUFBO0lBQ04sQ0FBQyxFQTNJVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQTJJcEI7SUFFRDs7T0FFRztJQUNILElBQVksU0F1R1g7SUF2R0QsV0FBWSxTQUFTO1FBQ25COztXQUVHO1FBQ0gseURBQVksQ0FBQTtRQUVaOztXQUVHO1FBQ0gsdURBQVcsQ0FBQTtRQUVYOztXQUVHO1FBQ0gsaUVBQWdCLENBQUE7UUFFaEI7O1dBRUc7UUFDSCxpRUFBZ0IsQ0FBQTtRQUVoQjs7V0FFRztRQUNILG1FQUFpQixDQUFBO1FBRWpCOztXQUVHO1FBQ0gsK0RBQWUsQ0FBQTtRQUVmOztXQUVHO1FBQ0gsdURBQVcsQ0FBQTtRQUVYOzs7O1dBSUc7UUFDSCx5REFBWSxDQUFBO1FBRVo7OztXQUdHO1FBQ0gscUVBQWtCLENBQUE7UUFFbEI7O1dBRUc7UUFDSCxpRkFBd0IsQ0FBQTtRQUV4Qjs7O1dBR0c7UUFDSCxnRkFBdUIsQ0FBQTtRQUV2Qjs7O1dBR0c7UUFDSCxnRkFBdUIsQ0FBQTtRQUV2Qjs7V0FFRztRQUNILHdEQUFXLENBQUE7UUFFWDs7O1dBR0c7UUFDSCxnRkFBdUIsQ0FBQTtRQUV2Qjs7O1dBR0c7UUFDSCxzRUFBa0IsQ0FBQTtRQUVsQjs7O1dBR0c7UUFDSCw4RUFBc0IsQ0FBQTtRQUV0Qjs7V0FFRztRQUNILHNFQUFrQixDQUFBO1FBRWxCOztXQUVHO1FBQ0gsOERBQWMsQ0FBQTtRQUVkOztXQUVHO1FBQ0gsMENBQUksQ0FBQTtJQUNOLENBQUMsRUF2R1csU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUF1R3BCO0lBRUQ7OztPQUdHO0lBQ0gsSUFBWSxjQTBEWDtJQTFERCxXQUFZLGNBQWM7UUFDeEI7OztXQUdHO1FBQ0gseURBQU8sQ0FBQTtRQUVQOztXQUVHO1FBQ0gseUZBQXVCLENBQUE7UUFFdkI7Ozs7OztXQU1HO1FBQ0gsaUVBQVcsQ0FBQTtRQUVYOztXQUVHO1FBQ0gsMkRBQVEsQ0FBQTtRQUVSOztXQUVHO1FBQ0gseURBQU8sQ0FBQTtRQUVQOztXQUVHO1FBQ0gscUVBQWEsQ0FBQTtRQUViOztXQUVHO1FBQ0gsMkVBQWdCLENBQUE7UUFFaEI7Ozs7O1dBS0c7UUFDSCx5REFBTyxDQUFBO1FBRVA7O1dBRUc7UUFDSCxtREFBSSxDQUFBO1FBRUo7O1dBRUc7UUFDSCxtREFBSSxDQUFBO0lBQ04sQ0FBQyxFQTFEVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQTBEekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIHBoYXNlIG9mIGNvbXBpbGF0aW9uIGZvciB3aGljaCB0aW1lIGlzIHRyYWNrZWQgaW4gYSBkaXN0aW5jdCBidWNrZXQuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmZQaGFzZSB7XG4gIC8qKlxuICAgKiBUaGUgXCJkZWZhdWx0XCIgcGhhc2Ugd2hpY2ggdHJhY2tzIHRpbWUgbm90IHNwZW50IGluIGFueSBvdGhlciBwaGFzZS5cbiAgICovXG4gIFVuYWNjb3VudGVkLFxuXG4gIC8qKlxuICAgKiBUaW1lIHNwZW50IHNldHRpbmcgdXAgdGhlIGNvbXBpbGVyLCBiZWZvcmUgYSBUeXBlU2NyaXB0IHByb2dyYW0gaXMgY3JlYXRlZC5cbiAgICpcbiAgICogVGhpcyBpbmNsdWRlcyBvcGVyYXRpb25zIGxpa2UgY29uZmlndXJpbmcgdGhlIGB0cy5Db21waWxlckhvc3RgIGFuZCBhbnkgd3JhcHBlcnMuXG4gICAqL1xuICBTZXR1cCxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBpbiBgdHMuY3JlYXRlUHJvZ3JhbWAsIGluY2x1ZGluZyByZWFkaW5nIGFuZCBwYXJzaW5nIGB0cy5Tb3VyY2VGaWxlYHMgaW4gdGhlXG4gICAqIGB0cy5Db21waWxlckhvc3RgLlxuICAgKlxuICAgKiBUaGlzIG1pZ2h0IGJlIGFuIGluY3JlbWVudGFsIHByb2dyYW0gY3JlYXRpb24gb3BlcmF0aW9uLlxuICAgKi9cbiAgVHlwZVNjcmlwdFByb2dyYW1DcmVhdGUsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgcmVjb25jaWxpbmcgdGhlIGNvbnRlbnRzIG9mIGFuIG9sZCBgdHMuUHJvZ3JhbWAgd2l0aCB0aGUgbmV3IGluY3JlbWVudGFsIG9uZS5cbiAgICpcbiAgICogT25seSBwcmVzZW50IGluIGluY3JlbWVudGFsIGNvbXBpbGF0aW9ucy5cbiAgICovXG4gIFJlY29uY2lsaWF0aW9uLFxuXG4gIC8qKlxuICAgKiBUaW1lIHNwZW50IHVwZGF0aW5nIGFuIGBOZ0NvbXBpbGVyYCBpbnN0YW5jZSB3aXRoIGEgcmVzb3VyY2Utb25seSBjaGFuZ2UuXG4gICAqXG4gICAqIE9ubHkgcHJlc2VudCBpbiBpbmNyZW1lbnRhbCBjb21waWxhdGlvbnMgd2hlcmUgdGhlIGNoYW5nZSB3YXMgcmVzb3VyY2Utb25seS5cbiAgICovXG4gIFJlc291cmNlVXBkYXRlLFxuXG4gIC8qKlxuICAgKiBUaW1lIHNwZW50IGNhbGN1bGF0aW5nIHRoZSBwbGFpbiBUeXBlU2NyaXB0IGRpYWdub3N0aWNzIChzdHJ1Y3R1cmFsIGFuZCBzZW1hbnRpYykuXG4gICAqL1xuICBUeXBlU2NyaXB0RGlhZ25vc3RpY3MsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgaW4gQW5ndWxhciBhbmFseXNpcyBvZiBpbmRpdmlkdWFsIGNsYXNzZXMgaW4gdGhlIHByb2dyYW0uXG4gICAqL1xuICBBbmFseXNpcyxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBpbiBBbmd1bGFyIGdsb2JhbCBhbmFseXNpcyAoc3ludGhlc2lzIG9mIGFuYWx5c2lzIGluZm9ybWF0aW9uIGludG8gYSBjb21wbGV0ZVxuICAgKiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ncmFtKS5cbiAgICovXG4gIFJlc29sdmUsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnVpbGRpbmcgdGhlIGltcG9ydCBncmFwaCBvZiB0aGUgcHJvZ3JhbSBpbiBvcmRlciB0byBwZXJmb3JtIGN5Y2xlIGRldGVjdGlvbi5cbiAgICovXG4gIEN5Y2xlRGV0ZWN0aW9uLFxuXG4gIC8qKlxuICAgKiBUaW1lIHNwZW50IGdlbmVyYXRpbmcgdGhlIHRleHQgb2YgVHlwZSBDaGVjayBCbG9ja3MgaW4gb3JkZXIgdG8gcGVyZm9ybSB0ZW1wbGF0ZSB0eXBlIGNoZWNraW5nLlxuICAgKi9cbiAgVGNiR2VuZXJhdGlvbixcblxuICAvKipcbiAgICogVGltZSBzcGVudCB1cGRhdGluZyB0aGUgYHRzLlByb2dyYW1gIHdpdGggbmV3IFR5cGUgQ2hlY2sgQmxvY2sgY29kZS5cbiAgICovXG4gIFRjYlVwZGF0ZVByb2dyYW0sXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnkgVHlwZVNjcmlwdCBwZXJmb3JtaW5nIGl0cyBlbWl0IG9wZXJhdGlvbnMsIGluY2x1ZGluZyBkb3dubGV2ZWxpbmcgYW5kIHdyaXRpbmdcbiAgICogb3V0cHV0IGZpbGVzLlxuICAgKi9cbiAgVHlwZVNjcmlwdEVtaXQsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnkgQW5ndWxhciBwZXJmb3JtaW5nIGNvZGUgdHJhbnNmb3JtYXRpb25zIG9mIEFTVHMgYXMgdGhleSdyZSBhYm91dCB0byBiZSBlbWl0dGVkLlxuICAgKlxuICAgKiBUaGlzIGluY2x1ZGVzIHRoZSBhY3R1YWwgY29kZSBnZW5lcmF0aW9uIHN0ZXAgZm9yIHRlbXBsYXRlcywgYW5kIG9jY3VycyBkdXJpbmcgdGhlIGVtaXQgcGhhc2VcbiAgICogKGJ1dCBpcyB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBgVHlwZVNjcmlwdEVtaXRgIHRpbWUpLlxuICAgKi9cbiAgQ29tcGlsZSxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBwZXJmb3JtaW5nIGEgYFRlbXBsYXRlVHlwZUNoZWNrZXJgIGF1dG9jb21wbGV0aW9uIG9wZXJhdGlvbi5cbiAgICovXG4gIFR0Y0F1dG9jb21wbGV0aW9uLFxuXG4gIC8qKlxuICAgKiBUaW1lIHNwZW50IGNvbXB1dGluZyB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIGRpYWdub3N0aWNzLlxuICAgKi9cbiAgVHRjRGlhZ25vc3RpY3MsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgZ2V0dGluZyBhIGBTeW1ib2xgIGZyb20gdGhlIGBUZW1wbGF0ZVR5cGVDaGVja2VyYC5cbiAgICovXG4gIFR0Y1N5bWJvbCxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBieSB0aGUgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlIGNhbGN1bGF0aW5nIGEgXCJnZXQgcmVmZXJlbmNlc1wiIG9yIGEgcmVuYW1pbmdcbiAgICogb3BlcmF0aW9uLlxuICAgKi9cbiAgTHNSZWZlcmVuY2VzQW5kUmVuYW1lcyxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBieSB0aGUgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlIGNhbGN1bGF0aW5nIGEgXCJxdWljayBpbmZvXCIgb3BlcmF0aW9uLlxuICAgKi9cbiAgTHNRdWlja0luZm8sXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnkgdGhlIEFuZ3VsYXIgTGFuZ3VhZ2UgU2VydmljZSBjYWxjdWxhdGluZyBhIFwiZ2V0IHR5cGUgZGVmaW5pdGlvblwiIG9yIFwiZ2V0XG4gICAqIGRlZmluaXRpb25cIiBvcGVyYXRpb24uXG4gICAqL1xuICBMc0RlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnkgdGhlIEFuZ3VsYXIgTGFuZ3VhZ2UgU2VydmljZSBjYWxjdWxhdGluZyBhIFwiZ2V0IGNvbXBsZXRpb25zXCIgKEFLQSBhdXRvY29tcGxldGUpXG4gICAqIG9wZXJhdGlvbi5cbiAgICovXG4gIExzQ29tcGxldGlvbnMsXG5cbiAgLyoqXG4gICAqIFRpbWUgc3BlbnQgYnkgdGhlIEFuZ3VsYXIgTGFuZ3VhZ2UgU2VydmljZSBjYWxjdWxhdGluZyBhIFwidmlldyB0ZW1wbGF0ZSB0eXBlY2hlY2sgYmxvY2tcIlxuICAgKiBvcGVyYXRpb24uXG4gICAqL1xuICBMc1RjYixcblxuICAvKipcbiAgICogVGltZSBzcGVudCBieSB0aGUgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlIGNhbGN1bGF0aW5nIGRpYWdub3N0aWNzLlxuICAgKi9cbiAgTHNEaWFnbm9zdGljcyxcblxuICAvKipcbiAgICogVGltZSBzcGVudCBieSB0aGUgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlIGNhbGN1bGF0aW5nIGEgXCJnZXQgY29tcG9uZW50IGxvY2F0aW9ucyBmb3IgdGVtcGxhdGVcIlxuICAgKiBvcGVyYXRpb24uXG4gICAqL1xuICBMc0NvbXBvbmVudExvY2F0aW9ucyxcblxuICAvKipcbiAgICogVHJhY2tzIHRoZSBudW1iZXIgb2YgYFBlcmZQaGFzZWBzLCBhbmQgbXVzdCBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC5cbiAgICovXG4gIExBU1QsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBzb21lIG9jY3VycmVuY2UgZHVyaW5nIGNvbXBpbGF0aW9uLCBhbmQgaXMgdHJhY2tlZCB3aXRoIGEgY291bnRlci5cbiAqL1xuZXhwb3J0IGVudW0gUGVyZkV2ZW50IHtcbiAgLyoqXG4gICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGAuZC50c2AgZmlsZXMgaW4gdGhlIHByb2dyYW0uXG4gICAqL1xuICBJbnB1dER0c0ZpbGUsXG5cbiAgLyoqXG4gICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIG5vbi1gLmQudHNgIGZpbGVzIGluIHRoZSBwcm9ncmFtLlxuICAgKi9cbiAgSW5wdXRUc0ZpbGUsXG5cbiAgLyoqXG4gICAqIEFuIGBAQ29tcG9uZW50YCBjbGFzcyB3YXMgYW5hbHl6ZWQuXG4gICAqL1xuICBBbmFseXplQ29tcG9uZW50LFxuXG4gIC8qKlxuICAgKiBBbiBgQERpcmVjdGl2ZWAgY2xhc3Mgd2FzIGFuYWx5emVkLlxuICAgKi9cbiAgQW5hbHl6ZURpcmVjdGl2ZSxcblxuICAvKipcbiAgICogQW4gYEBJbmplY3RhYmxlYCBjbGFzcyB3YXMgYW5hbHl6ZWQuXG4gICAqL1xuICBBbmFseXplSW5qZWN0YWJsZSxcblxuICAvKipcbiAgICogQW4gYEBOZ01vZHVsZWAgY2xhc3Mgd2FzIGFuYWx5emVkLlxuICAgKi9cbiAgQW5hbHl6ZU5nTW9kdWxlLFxuXG4gIC8qKlxuICAgKiBBbiBgQFBpcGVgIGNsYXNzIHdhcyBhbmFseXplZC5cbiAgICovXG4gIEFuYWx5emVQaXBlLFxuXG4gIC8qKlxuICAgKiBBIHRyYWl0IHdhcyBhbmFseXplZC5cbiAgICpcbiAgICogSW4gdGhlb3J5LCB0aGlzIHNob3VsZCBiZSB0aGUgc3VtIG9mIHRoZSBgQW5hbHl6ZWAgY291bnRlcnMgZm9yIGVhY2ggZGVjb3JhdG9yIHR5cGUuXG4gICAqL1xuICBUcmFpdEFuYWx5emUsXG5cbiAgLyoqXG4gICAqIEEgdHJhaXQgaGFkIGEgcHJpb3IgYW5hbHlzaXMgYXZhaWxhYmxlIGZyb20gYW4gaW5jcmVtZW50YWwgcHJvZ3JhbSwgYW5kIGRpZCBub3QgbmVlZCB0byBiZVxuICAgKiByZS1hbmFseXplZC5cbiAgICovXG4gIFRyYWl0UmV1c2VBbmFseXNpcyxcblxuICAvKipcbiAgICogQSBgdHMuU291cmNlRmlsZWAgZGlyZWN0bHkgY2hhbmdlZCBiZXR3ZWVuIHRoZSBwcmlvciBwcm9ncmFtIGFuZCBhIG5ldyBpbmNyZW1lbnRhbCBjb21waWxhdGlvbi5cbiAgICovXG4gIFNvdXJjZUZpbGVQaHlzaWNhbENoYW5nZSxcblxuICAvKipcbiAgICogQSBgdHMuU291cmNlRmlsZWAgZGlkIG5vdCBwaHlzaWNhbGx5IGNoYW5nZWQsIGJ1dCBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgZGVwZW5kZW5jeSBncmFwaCwgaGFzXG4gICAqIGxvZ2ljYWxseSBjaGFuZ2VkIGJldHdlZW4gdGhlIHByaW9yIHByb2dyYW0gYW5kIGEgbmV3IGluY3JlbWVudGFsIGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgU291cmNlRmlsZUxvZ2ljYWxDaGFuZ2UsXG5cbiAgLyoqXG4gICAqIEEgYHRzLlNvdXJjZUZpbGVgIGhhcyBub3QgbG9naWNhbGx5IGNoYW5nZWQgYW5kIGFsbCBvZiBpdHMgYW5hbHlzaXMgcmVzdWx0cyB3ZXJlIHRodXMgYXZhaWxhYmxlXG4gICAqIGZvciByZXVzZS5cbiAgICovXG4gIFNvdXJjZUZpbGVSZXVzZUFuYWx5c2lzLFxuXG4gIC8qKlxuICAgKiBBIFR5cGUgQ2hlY2sgQmxvY2sgKFRDQikgd2FzIGdlbmVyYXRlZC5cbiAgICovXG4gIEdlbmVyYXRlVGNiLFxuXG4gIC8qKlxuICAgKiBBIFR5cGUgQ2hlY2sgQmxvY2sgKFRDQikgY291bGQgbm90IGJlIGdlbmVyYXRlZCBiZWNhdXNlIGlubGluaW5nIHdhcyBkaXNhYmxlZCwgYW5kIHRoZSBibG9ja1xuICAgKiB3b3VsZCd2ZSByZXF1aXJlZCBpbmxpbmluZy5cbiAgICovXG4gIFNraXBHZW5lcmF0ZVRjYk5vSW5saW5lLFxuXG4gIC8qKlxuICAgKiBBIGAubmd0eXBlY2hlY2sudHNgIGZpbGUgY291bGQgYmUgcmV1c2VkIGZyb20gdGhlIHByZXZpb3VzIHByb2dyYW0gYW5kIGRpZCBub3QgbmVlZCB0byBiZVxuICAgKiByZWdlbmVyYXRlZC5cbiAgICovXG4gIFJldXNlVHlwZUNoZWNrRmlsZSxcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgcHJvZ3JhbSByZXF1aXJlZCBjaGFuZ2VzIGFuZCBoYWQgdG8gYmUgdXBkYXRlZCBpbiBhbiBpbmNyZW1lbnRhbFxuICAgKiBzdGVwLlxuICAgKi9cbiAgVXBkYXRlVHlwZUNoZWNrUHJvZ3JhbSxcblxuICAvKipcbiAgICogVGhlIGNvbXBpbGVyIHdhcyBhYmxlIHRvIHByb3ZlIHRoYXQgYSBgdHMuU291cmNlRmlsZWAgZGlkIG5vdCBuZWVkIHRvIGJlIHJlLWVtaXR0ZWQuXG4gICAqL1xuICBFbWl0U2tpcFNvdXJjZUZpbGUsXG5cbiAgLyoqXG4gICAqIEEgYHRzLlNvdXJjZUZpbGVgIHdhcyBlbWl0dGVkLlxuICAgKi9cbiAgRW1pdFNvdXJjZUZpbGUsXG5cbiAgLyoqXG4gICAqIFRyYWNrcyB0aGUgbnVtYmVyIG9mIGBQcmVmRXZlbnRgcywgYW5kIG11c3QgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuXG4gICAqL1xuICBMQVNULFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjaGVja3BvaW50IGR1cmluZyBjb21waWxhdGlvbiBhdCB3aGljaCB0aGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBjb21waWxlciBzaG91bGQgYmVcbiAqIHJlY29yZGVkLlxuICovXG5leHBvcnQgZW51bSBQZXJmQ2hlY2twb2ludCB7XG4gIC8qKlxuICAgKiBUaGUgcG9pbnQgYXQgd2hpY2ggdGhlIGBQZXJmUmVjb3JkZXJgIHdhcyBjcmVhdGVkLCBhbmQgaWRlYWxseSB0cmFja3MgbWVtb3J5IHVzZWQgYmVmb3JlIGFueVxuICAgKiBjb21waWxhdGlvbiBzdHJ1Y3R1cmVzIGFyZSBjcmVhdGVkLlxuICAgKi9cbiAgSW5pdGlhbCxcblxuICAvKipcbiAgICogVGhlIHBvaW50IGp1c3QgYWZ0ZXIgdGhlIGB0cy5Qcm9ncmFtYCBoYXMgYmVlbiBjcmVhdGVkLlxuICAgKi9cbiAgVHlwZVNjcmlwdFByb2dyYW1DcmVhdGUsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludCBqdXN0IGJlZm9yZSBBbmd1bGFyIGFuYWx5c2lzIHN0YXJ0cy5cbiAgICpcbiAgICogSW4gdGhlIG1haW4gdXNhZ2UgcGF0dGVybiBmb3IgdGhlIGNvbXBpbGVyLCBUeXBlU2NyaXB0IGRpYWdub3N0aWNzIGhhdmUgYmVlbiBjYWxjdWxhdGVkIGF0IHRoaXNcbiAgICogcG9pbnQsIHNvIHRoZSBgdHMuVHlwZUNoZWNrZXJgIGhhcyBmdWxseSBpbmdlc3RlZCB0aGUgY3VycmVudCBwcm9ncmFtLCBhbGwgYHRzLlR5cGVgIHN0cnVjdHVyZXNcbiAgICogYW5kIGB0cy5TeW1ib2xgcyBoYXZlIGJlZW4gY3JlYXRlZC5cbiAgICovXG4gIFByZUFuYWx5c2lzLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnQganVzdCBhZnRlciBBbmd1bGFyIGFuYWx5c2lzIGNvbXBsZXRlcy5cbiAgICovXG4gIEFuYWx5c2lzLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnQganVzdCBhZnRlciBBbmd1bGFyIHJlc29sdXRpb24gaXMgY29tcGxldGUuXG4gICAqL1xuICBSZXNvbHZlLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnQganVzdCBhZnRlciBUeXBlIENoZWNrIEJsb2NrcyAoVENCcykgaGF2ZSBiZWVuIGdlbmVyYXRlZC5cbiAgICovXG4gIFR0Y0dlbmVyYXRpb24sXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludCBqdXN0IGFmdGVyIHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIHByb2dyYW0gaGFzIGJlZW4gdXBkYXRlZCB3aXRoIGFueSBuZXcgVENCcy5cbiAgICovXG4gIFR0Y1VwZGF0ZVByb2dyYW0sXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludCBqdXN0IGJlZm9yZSBlbWl0IGJlZ2lucy5cbiAgICpcbiAgICogSW4gdGhlIG1haW4gdXNhZ2UgcGF0dGVybiBmb3IgdGhlIGNvbXBpbGVyLCBhbGwgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBkaWFnbm9zdGljcyBoYXZlIGJlZW5cbiAgICogcmVxdWVzdGVkIGF0IHRoaXMgcG9pbnQuXG4gICAqL1xuICBQcmVFbWl0LFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnQganVzdCBhZnRlciB0aGUgcHJvZ3JhbSBoYXMgYmVlbiBmdWxseSBlbWl0dGVkLlxuICAgKi9cbiAgRW1pdCxcblxuICAvKipcbiAgICogVHJhY2tzIHRoZSBudW1iZXIgb2YgYFBlcmZDaGVja3BvaW50YHMsIGFuZCBtdXN0IGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LlxuICAgKi9cbiAgTEFTVCxcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHRpbWluZywgbWVtb3J5LCBvciBjb3VudHMgYXQgc3BlY2lmaWMgcG9pbnRzIGluIHRoZSBjb21waWxlcidzIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQZXJmUmVjb3JkZXIge1xuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IHBoYXNlIG9mIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBUaW1lIHNwZW50IGluIHRoZSBwcmV2aW91cyBwaGFzZSB3aWxsIGJlIGFjY291bnRlZCB0byB0aGF0IHBoYXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvclxuICAgKiBleGl0aW5nIHRoZSBwaGFzZSB3aGVuIHdvcmsgdGhhdCBzaG91bGQgYmUgdHJhY2tlZCB3aXRoaW4gaXQgaXMgY29tcGxldGVkLCBhbmQgZWl0aGVyIHJldHVybmluZ1xuICAgKiB0byB0aGUgcHJldmlvdXMgcGhhc2Ugb3IgdHJhbnNpdGlvbmluZyB0byB0aGUgbmV4dCBvbmUgZGlyZWN0bHkuXG4gICAqXG4gICAqIEluIGdlbmVyYWwsIHByZWZlciB1c2luZyBgaW5QaGFzZSgpYCB0byBpbnN0cnVtZW50IGEgc2VjdGlvbiBvZiBjb2RlLCBhcyBpdCBhdXRvbWF0aWNhbGx5XG4gICAqIGhhbmRsZXMgZW50ZXJpbmcgYW5kIGV4aXRpbmcgdGhlIHBoYXNlLiBgcGhhc2UoKWAgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBmb3JtZXIgQVBJXG4gICAqIGNhbm5vdCBiZSBjbGVhbmx5IGFwcGxpZWQgdG8gYSBwYXJ0aWN1bGFyIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIHByZXZpb3VzIHBoYXNlXG4gICAqL1xuICBwaGFzZShwaGFzZTogUGVyZlBoYXNlKTogUGVyZlBoYXNlO1xuXG4gIC8qKlxuICAgKiBSdW4gYGZuYCBpbiB0aGUgZ2l2ZW4gYFBlcmZQaGFzZWAgYW5kIHJldHVybiB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBFbnRlcnMgYHBoYXNlYCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBnaXZlbiBgZm5gLCB0aGVuIGV4aXRzIHRoZSBwaGFzZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgKiBQcmVmZXIgdGhpcyBBUEkgdG8gYHBoYXNlKClgIHdoZXJlIHBvc3NpYmxlLlxuICAgKi9cbiAgaW5QaGFzZTxUPihwaGFzZTogUGVyZlBoYXNlLCBmbjogKCkgPT4gVCk6IFQ7XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0aGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBjb21waWxlciBhdCB0aGUgZ2l2ZW4gY2hlY2twb2ludC5cbiAgICovXG4gIG1lbW9yeShhZnRlcjogUGVyZkNoZWNrcG9pbnQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWNvcmQgdGhhdCBhIHNwZWNpZmljIGV2ZW50IGhhcyBvY2N1cnJlZCwgcG9zc2libHkgbW9yZSB0aGFuIG9uY2UuXG4gICAqL1xuICBldmVudENvdW50KGV2ZW50OiBQZXJmRXZlbnQsIGluY3JlbWVudEJ5PzogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBgUGVyZlJlY29yZGVyYCB0byBhbiBlbXB0eSBzdGF0ZSAoY2xlYXIgYWxsIHRyYWNrZWQgc3RhdGlzdGljcykgYW5kIHJlc2V0IHRoZSB6ZXJvXG4gICAqIHBvaW50IHRvIHRoZSBjdXJyZW50IHRpbWUuXG4gICAqL1xuICByZXNldCgpOiB2b2lkO1xufVxuIl19
@@ -1,3 +1,10 @@
1
1
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/perf/src/noop" />
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
2
9
  import { PerfRecorder } from './api';
3
10
  export declare const NOOP_PERF_RECORDER: PerfRecorder;
@@ -4,19 +4,34 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/src/ngtsc/perf/src/noop", ["require", "exports"], factory);
7
+ define("@angular/compiler-cli/src/ngtsc/perf/src/noop", ["require", "exports", "@angular/compiler-cli/src/ngtsc/perf/src/api"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NOOP_PERF_RECORDER = void 0;
13
- exports.NOOP_PERF_RECORDER = {
14
- enabled: false,
15
- mark: function (name, node, category, detail) { },
16
- start: function (name, node, category, detail) {
17
- return 0;
18
- },
19
- stop: function (span) { },
20
- };
13
+ /**
14
+ * @license
15
+ * Copyright Google LLC All Rights Reserved.
16
+ *
17
+ * Use of this source code is governed by an MIT-style license that can be
18
+ * found in the LICENSE file at https://angular.io/license
19
+ */
20
+ var api_1 = require("@angular/compiler-cli/src/ngtsc/perf/src/api");
21
+ var NoopPerfRecorder = /** @class */ (function () {
22
+ function NoopPerfRecorder() {
23
+ }
24
+ NoopPerfRecorder.prototype.eventCount = function () { };
25
+ NoopPerfRecorder.prototype.memory = function () { };
26
+ NoopPerfRecorder.prototype.phase = function () {
27
+ return api_1.PerfPhase.Unaccounted;
28
+ };
29
+ NoopPerfRecorder.prototype.inPhase = function (phase, fn) {
30
+ return fn();
31
+ };
32
+ NoopPerfRecorder.prototype.reset = function () { };
33
+ return NoopPerfRecorder;
34
+ }());
35
+ exports.NOOP_PERF_RECORDER = new NoopPerfRecorder();
21
36
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGVyZi9zcmMvbm9vcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFXYSxRQUFBLGtCQUFrQixHQUFpQjtRQUM5QyxPQUFPLEVBQUUsS0FBSztRQUNkLElBQUksRUFBRSxVQUFDLElBQVksRUFBRSxJQUFxQixFQUFFLFFBQWlCLEVBQUUsTUFBZSxJQUFZLENBQUM7UUFDM0YsS0FBSyxFQUFFLFVBQUMsSUFBWSxFQUFFLElBQXFCLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1lBQzdFLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELElBQUksRUFBRSxVQUFDLElBQWtCLElBQVksQ0FBQztLQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7UGVyZlJlY29yZGVyfSBmcm9tICcuL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBOT09QX1BFUkZfUkVDT1JERVI6IFBlcmZSZWNvcmRlciA9IHtcbiAgZW5hYmxlZDogZmFsc2UsXG4gIG1hcms6IChuYW1lOiBzdHJpbmcsIG5vZGU6IERlY2xhcmF0aW9uTm9kZSwgY2F0ZWdvcnk/OiBzdHJpbmcsIGRldGFpbD86IHN0cmluZyk6IHZvaWQgPT4ge30sXG4gIHN0YXJ0OiAobmFtZTogc3RyaW5nLCBub2RlOiBEZWNsYXJhdGlvbk5vZGUsIGNhdGVnb3J5Pzogc3RyaW5nLCBkZXRhaWw/OiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICAgIHJldHVybiAwO1xuICB9LFxuICBzdG9wOiAoc3BhbjogbnVtYmVyfGZhbHNlKTogdm9pZCA9PiB7fSxcbn07XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGVyZi9zcmMvbm9vcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCxvRUFBOEM7SUFFOUM7UUFBQTtRQWNBLENBQUM7UUFiQyxxQ0FBVSxHQUFWLGNBQW9CLENBQUM7UUFFckIsaUNBQU0sR0FBTixjQUFnQixDQUFDO1FBRWpCLGdDQUFLLEdBQUw7WUFDRSxPQUFPLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDL0IsQ0FBQztRQUVELGtDQUFPLEdBQVAsVUFBVyxLQUFnQixFQUFFLEVBQVc7WUFDdEMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCxnQ0FBSyxHQUFMLGNBQWUsQ0FBQztRQUNsQix1QkFBQztJQUFELENBQUMsQUFkRCxJQWNDO0lBR1ksUUFBQSxrQkFBa0IsR0FBaUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1BlcmZQaGFzZSwgUGVyZlJlY29yZGVyfSBmcm9tICcuL2FwaSc7XG5cbmNsYXNzIE5vb3BQZXJmUmVjb3JkZXIgaW1wbGVtZW50cyBQZXJmUmVjb3JkZXIge1xuICBldmVudENvdW50KCk6IHZvaWQge31cblxuICBtZW1vcnkoKTogdm9pZCB7fVxuXG4gIHBoYXNlKCk6IFBlcmZQaGFzZSB7XG4gICAgcmV0dXJuIFBlcmZQaGFzZS5VbmFjY291bnRlZDtcbiAgfVxuXG4gIGluUGhhc2U8VD4ocGhhc2U6IFBlcmZQaGFzZSwgZm46ICgpID0+IFQpOiBUIHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge31cbn1cblxuXG5leHBvcnQgY29uc3QgTk9PUF9QRVJGX1JFQ09SREVSOiBQZXJmUmVjb3JkZXIgPSBuZXcgTm9vcFBlcmZSZWNvcmRlcigpO1xuIl19