@angular/compiler 17.0.0-rc.2 → 17.0.0

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 (42) hide show
  1. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  2. package/esm2022/src/render3/partial/directive.mjs +1 -1
  3. package/esm2022/src/render3/partial/factory.mjs +1 -1
  4. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  5. package/esm2022/src/render3/partial/injector.mjs +1 -1
  6. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  7. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  8. package/esm2022/src/render3/view/compiler.mjs +2 -2
  9. package/esm2022/src/render3/view/i18n/util.mjs +1 -1
  10. package/esm2022/src/render3/view/template.mjs +4 -2
  11. package/esm2022/src/template/pipeline/ir/src/enums.mjs +23 -15
  12. package/esm2022/src/template/pipeline/ir/src/expression.mjs +14 -3
  13. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +30 -12
  14. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +18 -7
  15. package/esm2022/src/template/pipeline/src/compilation.mjs +3 -2
  16. package/esm2022/src/template/pipeline/src/emit.mjs +13 -9
  17. package/esm2022/src/template/pipeline/src/ingest.mjs +39 -16
  18. package/esm2022/src/template/pipeline/src/instruction.mjs +20 -9
  19. package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +4 -4
  20. package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +17 -5
  21. package/esm2022/src/template/pipeline/src/phases/create_defer_deps_fns.mjs +43 -0
  22. package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +57 -0
  23. package/esm2022/src/template/pipeline/src/phases/create_i18n_icu_expressions.mjs +52 -0
  24. package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +21 -1
  25. package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +157 -0
  26. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +48 -31
  27. package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +15 -16
  28. package/esm2022/src/template/pipeline/src/phases/merge_i18n_contexts.mjs +59 -0
  29. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +4 -2
  30. package/esm2022/src/template/pipeline/src/phases/reify.mjs +10 -4
  31. package/esm2022/src/template/pipeline/src/phases/remove_i18n_contexts.mjs +27 -0
  32. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +15 -15
  33. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +15 -25
  34. package/esm2022/src/version.mjs +1 -1
  35. package/fesm2022/compiler.mjs +550 -291
  36. package/fesm2022/compiler.mjs.map +1 -1
  37. package/index.d.ts +1 -1
  38. package/package.json +2 -2
  39. package/esm2022/src/template/pipeline/src/phases/format_i18n_params.mjs +0 -114
  40. package/esm2022/src/template/pipeline/src/phases/i18n_message_extraction.mjs +0 -21
  41. package/esm2022/src/template/pipeline/src/phases/icu_extraction.mjs +0 -56
  42. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_placeholders.mjs +0 -61
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-rc.2
2
+ * @license Angular v17.0.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler",
3
- "version": "17.0.0-rc.2",
3
+ "version": "17.0.0",
4
4
  "description": "Angular - the compiler library",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -11,7 +11,7 @@
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@angular/core": "17.0.0-rc.2"
14
+ "@angular/core": "17.0.0"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "@angular/core": {
@@ -1,114 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as o from '../../../../output/output_ast';
9
- import * as ir from '../../ir';
10
- /**
11
- * The escape sequence used indicate message param values.
12
- */
13
- const ESCAPE = '\uFFFD';
14
- /**
15
- * Marker used to indicate an element tag.
16
- */
17
- const ELEMENT_MARKER = '#';
18
- /**
19
- * Marker used to indicate a template tag.
20
- */
21
- const TEMPLATE_MARKER = '*';
22
- /**
23
- * Marker used to indicate closing of an element or template tag.
24
- */
25
- const TAG_CLOSE_MARKER = '/';
26
- /**
27
- * Marker used to indicate the sub-template context.
28
- */
29
- const CONTEXT_MARKER = ':';
30
- /**
31
- * Marker used to indicate the start of a list of values.
32
- */
33
- const LIST_START_MARKER = '[';
34
- /**
35
- * Marker used to indicate the end of a list of values.
36
- */
37
- const LIST_END_MARKER = ']';
38
- /**
39
- * Delimiter used to separate multiple values in a list.
40
- */
41
- const LIST_DELIMITER = '|';
42
- /**
43
- * Formats the param maps on extracted message ops into a maps of `Expression` objects that can be
44
- * used in the final output.
45
- */
46
- export function formatI18nParams(job) {
47
- for (const unit of job.units) {
48
- for (const op of unit.create) {
49
- if (op.kind === ir.OpKind.ExtractedMessage) {
50
- if (op.isRoot) {
51
- op.formattedParams = formatParams(op.params);
52
- op.formattedPostprocessingParams = formatParams(op.postprocessingParams);
53
- // The message will need post-processing if there are any post-processing params, or if
54
- // there are any normal params that have multiple values
55
- op.needsPostprocessing = op.postprocessingParams.size > 0;
56
- for (const [param, values] of op.params) {
57
- if (values.length > 1) {
58
- op.needsPostprocessing = true;
59
- }
60
- }
61
- }
62
- }
63
- }
64
- }
65
- }
66
- /**
67
- * Formats a map of `I18nParamValue[]` values into a map of `Expression` values.
68
- */
69
- function formatParams(params) {
70
- const result = new Map();
71
- for (const [placeholder, placeholderValues] of [...params].sort()) {
72
- const serializedValues = formatParamValues(placeholderValues);
73
- if (serializedValues !== null) {
74
- result.set(placeholder, o.literal(formatParamValues(placeholderValues)));
75
- }
76
- }
77
- return result;
78
- }
79
- /**
80
- * Formats an `I18nParamValue[]` into a string (or null for empty array).
81
- */
82
- function formatParamValues(values) {
83
- if (values.length === 0) {
84
- return null;
85
- }
86
- const serializedValues = values.map(value => formatValue(value));
87
- return serializedValues.length === 1 ?
88
- serializedValues[0] :
89
- `${LIST_START_MARKER}${serializedValues.join(LIST_DELIMITER)}${LIST_END_MARKER}`;
90
- }
91
- /**
92
- * Formats a single `I18nParamValue` into a string
93
- */
94
- function formatValue(value) {
95
- let tagMarker = '';
96
- let closeMarker = '';
97
- if (value.flags & ir.I18nParamValueFlags.ElementTag) {
98
- tagMarker = ELEMENT_MARKER;
99
- }
100
- else if (value.flags & ir.I18nParamValueFlags.TemplateTag) {
101
- tagMarker = TEMPLATE_MARKER;
102
- }
103
- if (tagMarker !== '') {
104
- closeMarker = value.flags & ir.I18nParamValueFlags.CloseTag ? TAG_CLOSE_MARKER : '';
105
- }
106
- const context = value.subTemplateIndex === null ? '' : `${CONTEXT_MARKER}${value.subTemplateIndex}`;
107
- // Self-closing tags use a special form that concatenates the start and close tag values.
108
- if ((value.flags & ir.I18nParamValueFlags.OpenTag) &&
109
- (value.flags & ir.I18nParamValueFlags.CloseTag)) {
110
- return `${ESCAPE}${tagMarker}${value.value}${context}${ESCAPE}${ESCAPE}${closeMarker}${tagMarker}${value.value}${context}${ESCAPE}`;
111
- }
112
- return `${ESCAPE}${closeMarker}${tagMarker}${value.value}${context}${ESCAPE}`;
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0X2kxOG5fcGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZm9ybWF0X2kxOG5fcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0I7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBRTVCOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUE0QjtJQUMzRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7b0JBQ2IsRUFBRSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsRUFB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QUssR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDbkQsT0FBTyxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQ2hGLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztLQUNsRDtJQUNELE9BQU8sR0FBRyxNQUFNLEdBQUcsV0FBVyxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21wb25lbnRDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIFRoZSBlc2NhcGUgc2VxdWVuY2UgdXNlZCBpbmRpY2F0ZSBtZXNzYWdlIHBhcmFtIHZhbHVlcy5cbiAqL1xuY29uc3QgRVNDQVBFID0gJ1xcdUZGRkQnO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIGFuIGVsZW1lbnQgdGFnLlxuICovXG5jb25zdCBFTEVNRU5UX01BUktFUiA9ICcjJztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSBhIHRlbXBsYXRlIHRhZy5cbiAqL1xuY29uc3QgVEVNUExBVEVfTUFSS0VSID0gJyonO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIGNsb3Npbmcgb2YgYW4gZWxlbWVudCBvciB0ZW1wbGF0ZSB0YWcuXG4gKi9cbmNvbnN0IFRBR19DTE9TRV9NQVJLRVIgPSAnLyc7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN1Yi10ZW1wbGF0ZSBjb250ZXh0LlxuICovXG5jb25zdCBDT05URVhUX01BUktFUiA9ICc6JztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSBsaXN0IG9mIHZhbHVlcy5cbiAqL1xuY29uc3QgTElTVF9TVEFSVF9NQVJLRVIgPSAnWyc7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiBhIGxpc3Qgb2YgdmFsdWVzLlxuICovXG5jb25zdCBMSVNUX0VORF9NQVJLRVIgPSAnXSc7XG5cbi8qKlxuICogRGVsaW1pdGVyIHVzZWQgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzIGluIGEgbGlzdC5cbiAqL1xuY29uc3QgTElTVF9ERUxJTUlURVIgPSAnfCc7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgcGFyYW0gbWFwcyBvbiBleHRyYWN0ZWQgbWVzc2FnZSBvcHMgaW50byBhIG1hcHMgb2YgYEV4cHJlc3Npb25gIG9iamVjdHMgdGhhdCBjYW4gYmVcbiAqIHVzZWQgaW4gdGhlIGZpbmFsIG91dHB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEkxOG5QYXJhbXMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgaWYgKG9wLmtpbmQgPT09IGlyLk9wS2luZC5FeHRyYWN0ZWRNZXNzYWdlKSB7XG4gICAgICAgIGlmIChvcC5pc1Jvb3QpIHtcbiAgICAgICAgICBvcC5mb3JtYXR0ZWRQYXJhbXMgPSBmb3JtYXRQYXJhbXMob3AucGFyYW1zKTtcbiAgICAgICAgICBvcC5mb3JtYXR0ZWRQb3N0cHJvY2Vzc2luZ1BhcmFtcyA9IGZvcm1hdFBhcmFtcyhvcC5wb3N0cHJvY2Vzc2luZ1BhcmFtcyk7XG5cbiAgICAgICAgICAvLyBUaGUgbWVzc2FnZSB3aWxsIG5lZWQgcG9zdC1wcm9jZXNzaW5nIGlmIHRoZXJlIGFyZSBhbnkgcG9zdC1wcm9jZXNzaW5nIHBhcmFtcywgb3IgaWZcbiAgICAgICAgICAvLyB0aGVyZSBhcmUgYW55IG5vcm1hbCBwYXJhbXMgdGhhdCBoYXZlIG11bHRpcGxlIHZhbHVlc1xuICAgICAgICAgIG9wLm5lZWRzUG9zdHByb2Nlc3NpbmcgPSBvcC5wb3N0cHJvY2Vzc2luZ1BhcmFtcy5zaXplID4gMDtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtwYXJhbSwgdmFsdWVzXSBvZiBvcC5wYXJhbXMpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBvcC5uZWVkc1Bvc3Rwcm9jZXNzaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgbWFwIG9mIGBJMThuUGFyYW1WYWx1ZVtdYCB2YWx1ZXMgaW50byBhIG1hcCBvZiBgRXhwcmVzc2lvbmAgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBmb3JtYXRQYXJhbXMocGFyYW1zOiBNYXA8c3RyaW5nLCBpci5JMThuUGFyYW1WYWx1ZVtdPik6IE1hcDxzdHJpbmcsIG8uRXhwcmVzc2lvbj4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgby5FeHByZXNzaW9uPigpO1xuICBmb3IgKGNvbnN0IFtwbGFjZWhvbGRlciwgcGxhY2Vob2xkZXJWYWx1ZXNdIG9mIFsuLi5wYXJhbXNdLnNvcnQoKSkge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRWYWx1ZXMgPSBmb3JtYXRQYXJhbVZhbHVlcyhwbGFjZWhvbGRlclZhbHVlcyk7XG4gICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZXMgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdC5zZXQocGxhY2Vob2xkZXIsIG8ubGl0ZXJhbChmb3JtYXRQYXJhbVZhbHVlcyhwbGFjZWhvbGRlclZhbHVlcykpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGFuIGBJMThuUGFyYW1WYWx1ZVtdYCBpbnRvIGEgc3RyaW5nIChvciBudWxsIGZvciBlbXB0eSBhcnJheSkuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFBhcmFtVmFsdWVzKHZhbHVlczogaXIuSTE4blBhcmFtVmFsdWVbXSk6IHN0cmluZ3xudWxsIHtcbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzZXJpYWxpemVkVmFsdWVzID0gdmFsdWVzLm1hcCh2YWx1ZSA9PiBmb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICByZXR1cm4gc2VyaWFsaXplZFZhbHVlcy5sZW5ndGggPT09IDEgP1xuICAgICAgc2VyaWFsaXplZFZhbHVlc1swXSA6XG4gICAgICBgJHtMSVNUX1NUQVJUX01BUktFUn0ke3NlcmlhbGl6ZWRWYWx1ZXMuam9pbihMSVNUX0RFTElNSVRFUil9JHtMSVNUX0VORF9NQVJLRVJ9YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgc2luZ2xlIGBJMThuUGFyYW1WYWx1ZWAgaW50byBhIHN0cmluZ1xuICovXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZSh2YWx1ZTogaXIuSTE4blBhcmFtVmFsdWUpOiBzdHJpbmcge1xuICBsZXQgdGFnTWFya2VyID0gJyc7XG4gIGxldCBjbG9zZU1hcmtlciA9ICcnO1xuICBpZiAodmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLkVsZW1lbnRUYWcpIHtcbiAgICB0YWdNYXJrZXIgPSBFTEVNRU5UX01BUktFUjtcbiAgfSBlbHNlIGlmICh2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuVGVtcGxhdGVUYWcpIHtcbiAgICB0YWdNYXJrZXIgPSBURU1QTEFURV9NQVJLRVI7XG4gIH1cbiAgaWYgKHRhZ01hcmtlciAhPT0gJycpIHtcbiAgICBjbG9zZU1hcmtlciA9IHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZyA/IFRBR19DTE9TRV9NQVJLRVIgOiAnJztcbiAgfVxuICBjb25zdCBjb250ZXh0ID1cbiAgICAgIHZhbHVlLnN1YlRlbXBsYXRlSW5kZXggPT09IG51bGwgPyAnJyA6IGAke0NPTlRFWFRfTUFSS0VSfSR7dmFsdWUuc3ViVGVtcGxhdGVJbmRleH1gO1xuICAvLyBTZWxmLWNsb3NpbmcgdGFncyB1c2UgYSBzcGVjaWFsIGZvcm0gdGhhdCBjb25jYXRlbmF0ZXMgdGhlIHN0YXJ0IGFuZCBjbG9zZSB0YWcgdmFsdWVzLlxuICBpZiAoKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5PcGVuVGFnKSAmJlxuICAgICAgKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZykpIHtcbiAgICByZXR1cm4gYCR7RVNDQVBFfSR7dGFnTWFya2VyfSR7dmFsdWUudmFsdWV9JHtjb250ZXh0fSR7RVNDQVBFfSR7RVNDQVBFfSR7Y2xvc2VNYXJrZXJ9JHtcbiAgICAgICAgdGFnTWFya2VyfSR7dmFsdWUudmFsdWV9JHtjb250ZXh0fSR7RVNDQVBFfWA7XG4gIH1cbiAgcmV0dXJuIGAke0VTQ0FQRX0ke2Nsb3NlTWFya2VyfSR7dGFnTWFya2VyfSR7dmFsdWUudmFsdWV9JHtjb250ZXh0fSR7RVNDQVBFfWA7XG59XG4iXX0=
@@ -1,21 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ir from '../../ir';
9
- /**
10
- * Extracts i18n messages into their own op.
11
- */
12
- export function extractI18nMessages(job) {
13
- for (const unit of job.units) {
14
- for (const op of unit.create) {
15
- if (op.kind === ir.OpKind.I18nStart) {
16
- unit.create.push(ir.createExtractedMessageOp(op.xref, op.message, op.xref === op.root));
17
- }
18
- }
19
- }
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bl9tZXNzYWdlX2V4dHJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9pMThuX21lc3NhZ2VfZXh0cmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQjs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUE0QjtJQUM5RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO1NBQ0Y7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21wb25lbnRDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEV4dHJhY3RzIGkxOG4gbWVzc2FnZXMgaW50byB0aGVpciBvd24gb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0STE4bk1lc3NhZ2VzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuSTE4blN0YXJ0KSB7XG4gICAgICAgIHVuaXQuY3JlYXRlLnB1c2goaXIuY3JlYXRlRXh0cmFjdGVkTWVzc2FnZU9wKG9wLnhyZWYsIG9wLm1lc3NhZ2UsIG9wLnhyZWYgPT09IG9wLnJvb3QpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,56 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as i18n from '../../../../i18n/i18n_ast';
9
- import * as ir from '../../ir';
10
- /**
11
- * Extracts ICUs into i18n expressions.
12
- */
13
- export function extractI18nICUs(job) {
14
- for (const unit of job.units) {
15
- // Build a map of ICU to the i18n block they belong to, then remove the `Icu` ops.
16
- const icus = new Map();
17
- let currentI18nId = null;
18
- let currentI18nSlot = null;
19
- for (const op of unit.create) {
20
- switch (op.kind) {
21
- case ir.OpKind.I18nStart:
22
- currentI18nId = op.xref;
23
- currentI18nSlot = op.handle;
24
- break;
25
- case ir.OpKind.I18nEnd:
26
- currentI18nId = null;
27
- currentI18nSlot = null;
28
- break;
29
- case ir.OpKind.Icu:
30
- if (currentI18nId === null) {
31
- throw Error('Unexpected ICU outside of an i18n block.');
32
- }
33
- icus.set(op.xref, { message: op.message, i18nBlockId: currentI18nId, i18nBlockSlot: currentI18nSlot });
34
- ir.OpList.remove(op);
35
- break;
36
- }
37
- }
38
- // Replace the `IcuUpdate` ops with `i18nExpr` ops.
39
- for (const op of unit.update) {
40
- switch (op.kind) {
41
- case ir.OpKind.IcuUpdate:
42
- const { message, i18nBlockId, i18nBlockSlot } = icus.get(op.xref);
43
- const icuNode = message.nodes.find((n) => n instanceof i18n.Icu);
44
- if (icuNode === undefined) {
45
- throw Error('Could not find ICU in i18n AST');
46
- }
47
- if (icuNode.expressionPlaceholder === undefined) {
48
- throw Error('ICU is missing an i18n placeholder');
49
- }
50
- ir.OpList.replace(op, ir.createI18nExpressionOp(i18nBlockId, i18nBlockSlot, new ir.LexicalReadExpr(icuNode.expression), icuNode.expressionPlaceholder, ir.I18nParamResolutionTime.Postproccessing, null));
51
- break;
52
- }
53
- }
54
- }
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWN1X2V4dHJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9pY3VfZXh0cmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFtQjtJQUNqRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsa0ZBQWtGO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUMyRSxDQUFDO1FBQ2hHLElBQUksYUFBYSxHQUFtQixJQUFJLENBQUM7UUFDekMsSUFBSSxlQUFlLEdBQXVCLElBQUksQ0FBQztRQUMvQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUN0QixhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDeEIsZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQzVCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU87b0JBQ3BCLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3JCLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ3ZCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUc7b0JBQ2hCLElBQUksYUFBYSxLQUFLLElBQUksRUFBRTt3QkFDMUIsTUFBTSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztxQkFDekQ7b0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FDSixFQUFFLENBQUMsSUFBSSxFQUNQLEVBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZ0IsRUFBQyxDQUFDLENBQUM7b0JBQ3hGLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2FBQ1Q7U0FDRjtRQUVELG1EQUFtRDtRQUNuRCxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUN0QixNQUFNLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsQ0FBQztvQkFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQWlCLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoRixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7d0JBQ3pCLE1BQU0sS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7cUJBQy9DO29CQUNELElBQUksT0FBTyxDQUFDLHFCQUFxQixLQUFLLFNBQVMsRUFBRTt3QkFDL0MsTUFBTSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztxQkFDbkQ7b0JBQ0QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2IsRUFBRSxFQUNGLEVBQUUsQ0FBQyxzQkFBc0IsQ0FDckIsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUN0RSxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFDekUsSUFBSyxDQUFDLENBQUMsQ0FBQztvQkFDaEIsTUFBTTthQUNUO1NBQ0Y7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaTE4biBmcm9tICcuLi8uLi8uLi8uLi9pMThuL2kxOG5fYXN0JztcbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcbmltcG9ydCB7Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBFeHRyYWN0cyBJQ1VzIGludG8gaTE4biBleHByZXNzaW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJMThuSUNVcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICAvLyBCdWlsZCBhIG1hcCBvZiBJQ1UgdG8gdGhlIGkxOG4gYmxvY2sgdGhleSBiZWxvbmcgdG8sIHRoZW4gcmVtb3ZlIHRoZSBgSWN1YCBvcHMuXG4gICAgY29uc3QgaWN1cyA9IG5ldyBNYXA8XG4gICAgICAgIGlyLlhyZWZJZCwge21lc3NhZ2U6IGkxOG4uTWVzc2FnZSwgaTE4bkJsb2NrSWQ6IGlyLlhyZWZJZCwgaTE4bkJsb2NrU2xvdDogaXIuU2xvdEhhbmRsZX0+KCk7XG4gICAgbGV0IGN1cnJlbnRJMThuSWQ6IGlyLlhyZWZJZHxudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEkxOG5TbG90OiBpci5TbG90SGFuZGxlfG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIHN3aXRjaCAob3Aua2luZCkge1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5JMThuU3RhcnQ6XG4gICAgICAgICAgY3VycmVudEkxOG5JZCA9IG9wLnhyZWY7XG4gICAgICAgICAgY3VycmVudEkxOG5TbG90ID0gb3AuaGFuZGxlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5JMThuRW5kOlxuICAgICAgICAgIGN1cnJlbnRJMThuSWQgPSBudWxsO1xuICAgICAgICAgIGN1cnJlbnRJMThuU2xvdCA9IG51bGw7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkljdTpcbiAgICAgICAgICBpZiAoY3VycmVudEkxOG5JZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1VuZXhwZWN0ZWQgSUNVIG91dHNpZGUgb2YgYW4gaTE4biBibG9jay4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWN1cy5zZXQoXG4gICAgICAgICAgICAgIG9wLnhyZWYsXG4gICAgICAgICAgICAgIHttZXNzYWdlOiBvcC5tZXNzYWdlLCBpMThuQmxvY2tJZDogY3VycmVudEkxOG5JZCwgaTE4bkJsb2NrU2xvdDogY3VycmVudEkxOG5TbG90IX0pO1xuICAgICAgICAgIGlyLk9wTGlzdC5yZW1vdmU8aXIuQ3JlYXRlT3A+KG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBgSWN1VXBkYXRlYCBvcHMgd2l0aCBgaTE4bkV4cHJgIG9wcy5cbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQudXBkYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSWN1VXBkYXRlOlxuICAgICAgICAgIGNvbnN0IHttZXNzYWdlLCBpMThuQmxvY2tJZCwgaTE4bkJsb2NrU2xvdH0gPSBpY3VzLmdldChvcC54cmVmKSE7XG4gICAgICAgICAgY29uc3QgaWN1Tm9kZSA9IG1lc3NhZ2Uubm9kZXMuZmluZCgobik6IG4gaXMgaTE4bi5JY3UgPT4gbiBpbnN0YW5jZW9mIGkxOG4uSWN1KTtcbiAgICAgICAgICBpZiAoaWN1Tm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQ291bGQgbm90IGZpbmQgSUNVIGluIGkxOG4gQVNUJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpY3VOb2RlLmV4cHJlc3Npb25QbGFjZWhvbGRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSUNVIGlzIG1pc3NpbmcgYW4gaTE4biBwbGFjZWhvbGRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpci5PcExpc3QucmVwbGFjZTxpci5VcGRhdGVPcD4oXG4gICAgICAgICAgICAgIG9wLFxuICAgICAgICAgICAgICBpci5jcmVhdGVJMThuRXhwcmVzc2lvbk9wKFxuICAgICAgICAgICAgICAgICAgaTE4bkJsb2NrSWQsIGkxOG5CbG9ja1Nsb3QsIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIoaWN1Tm9kZS5leHByZXNzaW9uKSxcbiAgICAgICAgICAgICAgICAgIGljdU5vZGUuZXhwcmVzc2lvblBsYWNlaG9sZGVyLCBpci5JMThuUGFyYW1SZXNvbHV0aW9uVGltZS5Qb3N0cHJvY2Nlc3NpbmcsXG4gICAgICAgICAgICAgICAgICBudWxsISkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,61 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ir from '../../ir';
9
- /**
10
- * Propagate extractd message placeholders up to their root extracted message op.
11
- */
12
- export function propogateI18nPlaceholders(job) {
13
- // Record all of the i18n and extracted message ops for use later.
14
- const i18nOps = new Map();
15
- const extractedMessageOps = new Map();
16
- for (const unit of job.units) {
17
- for (const op of unit.create) {
18
- switch (op.kind) {
19
- case ir.OpKind.I18nStart:
20
- i18nOps.set(op.xref, op);
21
- break;
22
- case ir.OpKind.ExtractedMessage:
23
- extractedMessageOps.set(op.owner, op);
24
- break;
25
- }
26
- }
27
- }
28
- // For each non-root message, merge its params into the root message's params.
29
- for (const [xref, childExtractedMessageOp] of extractedMessageOps) {
30
- if (!childExtractedMessageOp.isRoot) {
31
- const i18nOp = i18nOps.get(xref);
32
- if (i18nOp === undefined) {
33
- throw Error('Could not find owner i18n block for extracted message.');
34
- }
35
- const rootExtractedMessageOp = extractedMessageOps.get(i18nOp.root);
36
- if (rootExtractedMessageOp === undefined) {
37
- throw Error('Could not find extracted message op for root i18n block.');
38
- }
39
- mergeParams(rootExtractedMessageOp.params, childExtractedMessageOp.params);
40
- mergeParams(rootExtractedMessageOp.postprocessingParams, childExtractedMessageOp.postprocessingParams);
41
- }
42
- }
43
- }
44
- /**
45
- * Merges the params in the `from` map to into the `to` map.
46
- */
47
- function mergeParams(to, from) {
48
- for (const [placeholder, fromValues] of from) {
49
- const toValues = to.get(placeholder) || [];
50
- // TODO(mmalerba): Child element close tag params should be prepended to maintain the same order
51
- // as TemplateDefinitionBuilder. Can be cleaned up when compatibility is no longer required.
52
- const flags = fromValues[0].flags;
53
- if ((flags & ir.I18nParamValueFlags.CloseTag) && !(flags & ir.I18nParamValueFlags.OpenTag)) {
54
- to.set(placeholder, [...fromValues, ...toValues]);
55
- }
56
- else {
57
- to.set(placeholder, [...toValues, ...fromValues]);
58
- }
59
- }
60
- }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGFnYXRlX2kxOG5fcGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcHJvcGFnYXRlX2kxOG5fcGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEdBQTRCO0lBQ3BFLGtFQUFrRTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUNyRCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO0lBQ3hFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtRQUM1QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFDN0IsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLE1BQU07YUFDVDtTQUNGO0tBQ0Y7SUFFRCw4RUFBOEU7SUFDOUUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDLElBQUksbUJBQW1CLEVBQUU7UUFDakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRTtZQUNuQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsTUFBTSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUN2RTtZQUNELE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxJQUFJLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtnQkFDeEMsTUFBTSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQzthQUN6RTtZQUNELFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsV0FBVyxDQUNQLHNCQUFzQixDQUFDLG9CQUFvQixFQUMzQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ25EO0tBQ0Y7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxFQUFvQyxFQUFFLElBQXNDO0lBQy9GLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDNUMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsZ0dBQWdHO1FBQ2hHLDRGQUE0RjtRQUM1RixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFFLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFGLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDTCxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNuRDtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBvbmVudENvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogUHJvcGFnYXRlIGV4dHJhY3RkIG1lc3NhZ2UgcGxhY2Vob2xkZXJzIHVwIHRvIHRoZWlyIHJvb3QgZXh0cmFjdGVkIG1lc3NhZ2Ugb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wb2dhdGVJMThuUGxhY2Vob2xkZXJzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpIHtcbiAgLy8gUmVjb3JkIGFsbCBvZiB0aGUgaTE4biBhbmQgZXh0cmFjdGVkIG1lc3NhZ2Ugb3BzIGZvciB1c2UgbGF0ZXIuXG4gIGNvbnN0IGkxOG5PcHMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuSTE4blN0YXJ0T3A+KCk7XG4gIGNvbnN0IGV4dHJhY3RlZE1lc3NhZ2VPcHMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuRXh0cmFjdGVkTWVzc2FnZU9wPigpO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5TdGFydDpcbiAgICAgICAgICBpMThuT3BzLnNldChvcC54cmVmLCBvcCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkV4dHJhY3RlZE1lc3NhZ2U6XG4gICAgICAgICAgZXh0cmFjdGVkTWVzc2FnZU9wcy5zZXQob3Aub3duZXIsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3IgZWFjaCBub24tcm9vdCBtZXNzYWdlLCBtZXJnZSBpdHMgcGFyYW1zIGludG8gdGhlIHJvb3QgbWVzc2FnZSdzIHBhcmFtcy5cbiAgZm9yIChjb25zdCBbeHJlZiwgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3BdIG9mIGV4dHJhY3RlZE1lc3NhZ2VPcHMpIHtcbiAgICBpZiAoIWNoaWxkRXh0cmFjdGVkTWVzc2FnZU9wLmlzUm9vdCkge1xuICAgICAgY29uc3QgaTE4bk9wID0gaTE4bk9wcy5nZXQoeHJlZik7XG4gICAgICBpZiAoaTE4bk9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIG93bmVyIGkxOG4gYmxvY2sgZm9yIGV4dHJhY3RlZCBtZXNzYWdlLicpO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdEV4dHJhY3RlZE1lc3NhZ2VPcCA9IGV4dHJhY3RlZE1lc3NhZ2VPcHMuZ2V0KGkxOG5PcC5yb290KTtcbiAgICAgIGlmIChyb290RXh0cmFjdGVkTWVzc2FnZU9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGV4dHJhY3RlZCBtZXNzYWdlIG9wIGZvciByb290IGkxOG4gYmxvY2suJyk7XG4gICAgICB9XG4gICAgICBtZXJnZVBhcmFtcyhyb290RXh0cmFjdGVkTWVzc2FnZU9wLnBhcmFtcywgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3AucGFyYW1zKTtcbiAgICAgIG1lcmdlUGFyYW1zKFxuICAgICAgICAgIHJvb3RFeHRyYWN0ZWRNZXNzYWdlT3AucG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgICAgICAgY2hpbGRFeHRyYWN0ZWRNZXNzYWdlT3AucG9zdHByb2Nlc3NpbmdQYXJhbXMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlcyB0aGUgcGFyYW1zIGluIHRoZSBgZnJvbWAgbWFwIHRvIGludG8gdGhlIGB0b2AgbWFwLlxuICovXG5mdW5jdGlvbiBtZXJnZVBhcmFtcyh0bzogTWFwPHN0cmluZywgaXIuSTE4blBhcmFtVmFsdWVbXT4sIGZyb206IE1hcDxzdHJpbmcsIGlyLkkxOG5QYXJhbVZhbHVlW10+KSB7XG4gIGZvciAoY29uc3QgW3BsYWNlaG9sZGVyLCBmcm9tVmFsdWVzXSBvZiBmcm9tKSB7XG4gICAgY29uc3QgdG9WYWx1ZXMgPSB0by5nZXQocGxhY2Vob2xkZXIpIHx8IFtdO1xuICAgIC8vIFRPRE8obW1hbGVyYmEpOiBDaGlsZCBlbGVtZW50IGNsb3NlIHRhZyBwYXJhbXMgc2hvdWxkIGJlIHByZXBlbmRlZCB0byBtYWludGFpbiB0aGUgc2FtZSBvcmRlclxuICAgIC8vIGFzIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIuIENhbiBiZSBjbGVhbmVkIHVwIHdoZW4gY29tcGF0aWJpbGl0eSBpcyBubyBsb25nZXIgcmVxdWlyZWQuXG4gICAgY29uc3QgZmxhZ3MgPSBmcm9tVmFsdWVzWzBdIS5mbGFncztcbiAgICBpZiAoKGZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZykgJiYgIShmbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuT3BlblRhZykpIHtcbiAgICAgIHRvLnNldChwbGFjZWhvbGRlciwgWy4uLmZyb21WYWx1ZXMsIC4uLnRvVmFsdWVzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvLnNldChwbGFjZWhvbGRlciwgWy4uLnRvVmFsdWVzLCAuLi5mcm9tVmFsdWVzXSk7XG4gICAgfVxuICB9XG59XG4iXX0=