Socket
Socket
Sign inDemoInstall

@angular/localize

Package Overview
Dependencies
3
Maintainers
2
Versions
516
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 9.0.5 to 9.0.6

2

bundles/localize-init.umd.js
/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v9.0.5
* @license Angular v9.0.6
* (c) 2010-2020 Google LLC. https://angular.io/

@@ -4,0 +4,0 @@ * License: MIT

{
"name": "@angular/localize",
"version": "9.0.5",
"version": "9.0.6",
"description": "Angular - library for localizing messages",

@@ -5,0 +5,0 @@ "main": "./bundles/localize.umd.js",

@@ -21,2 +21,3 @@ /**

error(message: string): void;
formatDiagnostics(message: string): string;
}

@@ -34,2 +34,13 @@ /**

Diagnostics.prototype.error = function (message) { this.messages.push({ type: 'error', message: message }); };
Diagnostics.prototype.formatDiagnostics = function (message) {
var errors = this.messages.filter(function (d) { return d.type === 'error'; }).map(function (d) { return ' - ' + d.message; });
var warnings = this.messages.filter(function (d) { return d.type === 'warning'; }).map(function (d) { return ' - ' + d.message; });
if (errors.length) {
message += '\nERRORS:\n' + errors.join('\n');
}
if (warnings.length) {
message += '\nWARNINGS:\n' + warnings.join('\n');
}
return message;
};
return Diagnostics;

@@ -39,2 +50,2 @@ }());

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL2RpYWdub3N0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUg7OztPQUdHO0lBQ0g7UUFBQTtZQUNXLGFBQVEsR0FBbUQsRUFBRSxDQUFDO1FBSXpFLENBQUM7UUFIQyxzQkFBSSxrQ0FBUztpQkFBYixjQUFrQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQWxCLENBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7OztXQUFBO1FBQ3ZFLDBCQUFJLEdBQUosVUFBSyxPQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sU0FBQSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsMkJBQUssR0FBTCxVQUFNLE9BQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxTQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxrQkFBQztJQUFELENBQUMsQUFMRCxJQUtDO0lBTFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNvbGxlY3QgYW5kIHRoZW4gcmVwb3J0IHdhcm5pbmdzIGFuZCBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgdGhlIGV4ZWN1dGlvblxuICogb2YgdGhlIHRvb2xzLlxuICovXG5leHBvcnQgY2xhc3MgRGlhZ25vc3RpY3Mge1xuICByZWFkb25seSBtZXNzYWdlczoge3R5cGU6ICd3YXJuaW5nJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZ31bXSA9IFtdO1xuICBnZXQgaGFzRXJyb3JzKCkgeyByZXR1cm4gdGhpcy5tZXNzYWdlcy5zb21lKG0gPT4gbS50eXBlID09PSAnZXJyb3InKTsgfVxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLm1lc3NhZ2VzLnB1c2goe3R5cGU6ICd3YXJuaW5nJywgbWVzc2FnZX0pOyB9XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLm1lc3NhZ2VzLnB1c2goe3R5cGU6ICdlcnJvcicsIG1lc3NhZ2V9KTsgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL2RpYWdub3N0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUg7OztPQUdHO0lBQ0g7UUFBQTtZQUNXLGFBQVEsR0FBbUQsRUFBRSxDQUFDO1FBZXpFLENBQUM7UUFkQyxzQkFBSSxrQ0FBUztpQkFBYixjQUFrQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQWxCLENBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7OztXQUFBO1FBQ3ZFLDBCQUFJLEdBQUosVUFBSyxPQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sU0FBQSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsMkJBQUssR0FBTCxVQUFNLE9BQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxTQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSx1Q0FBaUIsR0FBakIsVUFBa0IsT0FBZTtZQUMvQixJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFsQixDQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQWpCLENBQWlCLENBQUMsQ0FBQztZQUMzRixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFwQixDQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQWpCLENBQWlCLENBQUMsQ0FBQztZQUMvRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLE9BQU8sSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QztZQUNELElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsT0FBTyxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQWhCRCxJQWdCQztJQWhCWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gY29sbGVjdCBhbmQgdGhlbiByZXBvcnQgd2FybmluZ3MgYW5kIGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyB0aGUgZXhlY3V0aW9uXG4gKiBvZiB0aGUgdG9vbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWFnbm9zdGljcyB7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzOiB7dHlwZTogJ3dhcm5pbmcnIHwgJ2Vycm9yJywgbWVzc2FnZTogc3RyaW5nfVtdID0gW107XG4gIGdldCBoYXNFcnJvcnMoKSB7IHJldHVybiB0aGlzLm1lc3NhZ2VzLnNvbWUobSA9PiBtLnR5cGUgPT09ICdlcnJvcicpOyB9XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nKSB7IHRoaXMubWVzc2FnZXMucHVzaCh7dHlwZTogJ3dhcm5pbmcnLCBtZXNzYWdlfSk7IH1cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMubWVzc2FnZXMucHVzaCh7dHlwZTogJ2Vycm9yJywgbWVzc2FnZX0pOyB9XG4gIGZvcm1hdERpYWdub3N0aWNzKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5tZXNzYWdlcyAhLmZpbHRlcihkID0+IGQudHlwZSA9PT0gJ2Vycm9yJykubWFwKGQgPT4gJyAtICcgKyBkLm1lc3NhZ2UpO1xuICAgIGNvbnN0IHdhcm5pbmdzID0gdGhpcy5tZXNzYWdlcyAhLmZpbHRlcihkID0+IGQudHlwZSA9PT0gJ3dhcm5pbmcnKS5tYXAoZCA9PiAnIC0gJyArIGQubWVzc2FnZSk7XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIG1lc3NhZ2UgKz0gJ1xcbkVSUk9SUzpcXG4nICsgZXJyb3JzLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICBpZiAod2FybmluZ3MubGVuZ3RoKSB7XG4gICAgICBtZXNzYWdlICs9ICdcXG5XQVJOSU5HUzpcXG4nICsgd2FybmluZ3Muam9pbignXFxuJyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG59XG4iXX0=

@@ -93,3 +93,3 @@ #!/usr/bin/env node

new xliff1_translation_parser_1.Xliff1TranslationParser(),
new xtb_translation_parser_1.XtbTranslationParser(diagnostics),
new xtb_translation_parser_1.XtbTranslationParser(),
new simple_json_translation_parser_1.SimpleJsonTranslationParser(),

@@ -107,2 +107,2 @@ ], diagnostics);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQ0E7Ozs7OztPQU1HO0lBQ0gsMkJBQTZCO0lBQzdCLDZCQUE2QjtJQUM3Qiw2QkFBK0I7SUFFL0IsNkhBQWdGO0lBQ2hGLHFGQUE0RDtJQUM1RCwwSUFBNEY7SUFFNUYscUhBQXlFO0lBQ3pFLGlLQUFtSDtJQUNuSCx1SkFBMEc7SUFDMUcsdUpBQTBHO0lBQzFHLGlKQUFvRztJQUNwRyxtRkFBd0M7SUFDeEMsMkVBQTJDO0lBRTNDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDM0IsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBTSxPQUFPLEdBQ1QsS0FBSzthQUNBLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUNKLHdIQUF3SDtTQUM3SCxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQ0osc0dBQXNHO1NBQzNHLENBQUM7YUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsS0FBSyxFQUFFLGVBQWU7WUFDdEIsUUFBUSxFQUNKLDJLQUEySztTQUNoTCxDQUFDO2FBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQ0osbUhBQW1IO2dCQUNuSCw2RkFBNkY7U0FDbEcsQ0FBQzthQUVELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFDSiwrSEFBK0g7Z0JBQy9ILHFCQUFxQjtTQUMxQixDQUFDO2FBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxZQUFZO1lBQ25CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUNKLCtKQUErSjtTQUNwSyxDQUFDO2FBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsUUFBUSxFQUFFLHFDQUFxQztZQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQztZQUN2QyxPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDO2FBRUQsSUFBSSxFQUFFO2FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJCLElBQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFNLGVBQWUsR0FDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDaEYsSUFBTSxvQkFBb0IsR0FBYSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsSUFBTSxZQUFZLEdBQUcsNkJBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFNLFdBQVcsR0FBRyxJQUFJLHlCQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFNLGtCQUFrQixHQUErQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEUsSUFBTSxZQUFZLEdBQXFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFNLHNCQUFzQixHQUFhLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6RSxjQUFjLENBQUMsRUFBQyxjQUFjLGdCQUFBLEVBQUUsZUFBZSxpQkFBQSxFQUFFLG9CQUFvQixzQkFBQSxFQUFFLHNCQUFzQix3QkFBQTtZQUM3RSxZQUFZLGNBQUEsRUFBRSxXQUFXLGFBQUEsRUFBRSxrQkFBa0Isb0JBQUEsRUFBRSxZQUFZLGNBQUEsRUFBQyxDQUFDLENBQUM7UUFFOUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxPQUFPLENBQUMsSUFBSSxDQUFJLENBQUMsQ0FBQyxJQUFJLFVBQUssQ0FBQyxDQUFDLE9BQVMsQ0FBQyxFQUF2QyxDQUF1QyxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdDO0lBMENELFNBQWdCLGNBQWMsQ0FBQyxFQUV5RDtZQUZ4RCxrQ0FBYyxFQUFFLG9DQUFlLEVBQUUsOENBQW9CLEVBQ3JELGtEQUFzQixFQUFFLDhCQUFZLEVBQUUsNEJBQVcsRUFDakQsMENBQWtCLEVBQUUsOEJBQVk7UUFDOUQsSUFBTSxpQkFBaUIsR0FBRyxJQUFJLHNDQUFpQixDQUMzQztZQUNFLElBQUksbURBQXVCLEVBQUU7WUFDN0IsSUFBSSxtREFBdUIsRUFBRTtZQUM3QixJQUFJLDZDQUFvQixDQUFDLFdBQVcsQ0FBQztZQUNyQyxJQUFJLDREQUEyQixFQUFFO1NBQ2xDLEVBQ0QsV0FBVyxDQUFDLENBQUM7UUFFakIsSUFBTSxpQkFBaUIsR0FBRyxJQUFJLHVCQUFVLENBQ3BDO1lBQ0UsSUFBSSw4REFBNEIsQ0FBQyxFQUFDLGtCQUFrQixvQkFBQSxFQUFDLENBQUM7WUFDdEQsSUFBSSxtREFBdUIsRUFBRTtTQUM5QixFQUNELFdBQVcsQ0FBQyxDQUFDO1FBRWpCLElBQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLGNBQWMsR0FBRyxjQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsaUJBQWlCLENBQUMsY0FBYyxDQUM1QixlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQXZCRCx3Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHtBc3NldFRyYW5zbGF0aW9uSGFuZGxlcn0gZnJvbSAnLi9hc3NldF9maWxlcy9hc3NldF90cmFuc2xhdGlvbl9oYW5kbGVyJztcbmltcG9ydCB7Z2V0T3V0cHV0UGF0aEZuLCBPdXRwdXRQYXRoRm59IGZyb20gJy4vb3V0cHV0X3BhdGgnO1xuaW1wb3J0IHtTb3VyY2VGaWxlVHJhbnNsYXRpb25IYW5kbGVyfSBmcm9tICcuL3NvdXJjZV9maWxlcy9zb3VyY2VfZmlsZV90cmFuc2xhdGlvbl9oYW5kbGVyJztcbmltcG9ydCB7TWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3l9IGZyb20gJy4vc291cmNlX2ZpbGVzL3NvdXJjZV9maWxlX3V0aWxzJztcbmltcG9ydCB7VHJhbnNsYXRpb25Mb2FkZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fbG9hZGVyJztcbmltcG9ydCB7U2ltcGxlSnNvblRyYW5zbGF0aW9uUGFyc2VyfSBmcm9tICcuL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMvc2ltcGxlX2pzb25fdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7WGxpZmYxVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy94bGlmZjFfdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7WGxpZmYyVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy94bGlmZjJfdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7WHRiVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy94dGJfdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7VHJhbnNsYXRvcn0gZnJvbSAnLi90cmFuc2xhdG9yJztcbmltcG9ydCB7RGlhZ25vc3RpY3N9IGZyb20gJy4uL2RpYWdub3N0aWNzJztcblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgeWFyZ3NcbiAgICAgICAgICAub3B0aW9uKCdyJywge1xuICAgICAgICAgICAgYWxpYXM6ICdyb290JyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpYmU6XG4gICAgICAgICAgICAgICAgJ1RoZSByb290IHBhdGggb2YgdGhlIGZpbGVzIHRvIHRyYW5zbGF0ZSwgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBFLmcuIGBkaXN0L2VuYC4nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9wdGlvbigncycsIHtcbiAgICAgICAgICAgIGFsaWFzOiAnc291cmNlJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpYmU6XG4gICAgICAgICAgICAgICAgJ0EgZ2xvYiBwYXR0ZXJuIGluZGljYXRpbmcgd2hhdCBmaWxlcyB0byB0cmFuc2xhdGUsIHJlbGF0aXZlIHRvIHRoZSBgcm9vdGAgcGF0aC4gRS5nLiBgYnVuZGxlcy8qKi8qYC4nLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAub3B0aW9uKCdsJywge1xuICAgICAgICAgICAgYWxpYXM6ICdzb3VyY2UtbG9jYWxlJyxcbiAgICAgICAgICAgIGRlc2NyaWJlOlxuICAgICAgICAgICAgICAgICdUaGUgc291cmNlIGxvY2FsZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIHRoaXMgaXMgcHJvdmlkZWQgdGhlbiBhIGNvcHkgb2YgdGhlIGFwcGxpY2F0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoIG5vIHRyYW5zbGF0aW9uIGJ1dCBqdXN0IHRoZSBgJGxvY2FsaXplYCBjYWxscyBzdHJpcHBlZCBvdXQuJyxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLm9wdGlvbigndCcsIHtcbiAgICAgICAgICAgIGFsaWFzOiAndHJhbnNsYXRpb25zJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgYXJyYXk6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmliZTpcbiAgICAgICAgICAgICAgICAnQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSB0cmFuc2xhdGlvbiBmaWxlcyB0byBsb2FkLCBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXFxuJyArXG4gICAgICAgICAgICAgICAgJ0UuZy4gXCItdCBzcmMvbG9jYWxlL21lc3NhZ2VzLmVuLnhsZiBzcmMvbG9jYWxlL21lc3NhZ2VzLmZyLnhsZiBzcmMvbG9jYWxlL21lc3NhZ2VzLmRlLnhsZlwiLicsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC5vcHRpb24oJ3RhcmdldC1sb2NhbGVzJywge1xuICAgICAgICAgICAgYXJyYXk6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmliZTpcbiAgICAgICAgICAgICAgICAnQSBsaXN0IG9mIHRhcmdldCBsb2NhbGVzIGZvciB0aGUgdHJhbnNsYXRpb24gZmlsZXMsIHdoaWNoIHdpbGwgb3ZlcnJpZGUgYW55IHRhcmdldCBsb2NhbGUgcGFyc2VkIGZyb20gdGhlIHRyYW5zbGF0aW9uIGZpbGUuXFxuJyArXG4gICAgICAgICAgICAgICAgJ0UuZy4gXCItdCBlbiBmciBkZVwiLicsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC5vcHRpb24oJ28nLCB7XG4gICAgICAgICAgICBhbGlhczogJ291dHB1dFBhdGgnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmliZTpcbiAgICAgICAgICAgICAgICAnQSBvdXRwdXQgcGF0aCBwYXR0ZXJuIHRvIHdoZXJlIHRoZSB0cmFuc2xhdGVkIGZpbGVzIHdpbGwgYmUgd3JpdHRlbi4gVGhlIG1hcmtlciBge3tMT0NBTEV9fWAgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB0YXJnZXQgbG9jYWxlLiBFLmcuIGBkaXN0L3t7TE9DQUxFfX1gLidcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLm9wdGlvbignbScsIHtcbiAgICAgICAgICAgIGFsaWFzOiAnbWlzc2luZ1RyYW5zbGF0aW9uJyxcbiAgICAgICAgICAgIGRlc2NyaWJlOiAnSG93IHRvIGhhbmRsZSBtaXNzaW5nIHRyYW5zbGF0aW9ucy4nLFxuICAgICAgICAgICAgY2hvaWNlczogWydlcnJvcicsICd3YXJuaW5nJywgJ2lnbm9yZSddLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3dhcm5pbmcnLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAuaGVscCgpXG4gICAgICAgICAgLnBhcnNlKGFyZ3MpO1xuXG4gIGNvbnN0IHNvdXJjZVJvb3RQYXRoID0gb3B0aW9uc1snciddO1xuICBjb25zdCBzb3VyY2VGaWxlUGF0aHMgPVxuICAgICAgZ2xvYi5zeW5jKG9wdGlvbnNbJ3MnXSwge2Fic29sdXRlOiB0cnVlLCBjd2Q6IHNvdXJjZVJvb3RQYXRoLCBub2RpcjogdHJ1ZX0pO1xuICBjb25zdCB0cmFuc2xhdGlvbkZpbGVQYXRoczogc3RyaW5nW10gPSBvcHRpb25zWyd0J107XG4gIGNvbnN0IG91dHB1dFBhdGhGbiA9IGdldE91dHB1dFBhdGhGbihvcHRpb25zWydvJ10pO1xuICBjb25zdCBkaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuICBjb25zdCBtaXNzaW5nVHJhbnNsYXRpb246IE1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5ID0gb3B0aW9uc1snbSddO1xuICBjb25zdCBzb3VyY2VMb2NhbGU6IHN0cmluZ3x1bmRlZmluZWQgPSBvcHRpb25zWydsJ107XG4gIGNvbnN0IHRyYW5zbGF0aW9uRmlsZUxvY2FsZXM6IHN0cmluZ1tdID0gb3B0aW9uc1sndGFyZ2V0LWxvY2FsZXMnXSB8fCBbXTtcblxuICB0cmFuc2xhdGVGaWxlcyh7c291cmNlUm9vdFBhdGgsIHNvdXJjZUZpbGVQYXRocywgdHJhbnNsYXRpb25GaWxlUGF0aHMsIHRyYW5zbGF0aW9uRmlsZUxvY2FsZXMsXG4gICAgICAgICAgICAgICAgICBvdXRwdXRQYXRoRm4sIGRpYWdub3N0aWNzLCBtaXNzaW5nVHJhbnNsYXRpb24sIHNvdXJjZUxvY2FsZX0pO1xuXG4gIGRpYWdub3N0aWNzLm1lc3NhZ2VzLmZvckVhY2gobSA9PiBjb25zb2xlLndhcm4oYCR7bS50eXBlfTogJHttLm1lc3NhZ2V9YCkpO1xuICBwcm9jZXNzLmV4aXQoZGlhZ25vc3RpY3MuaGFzRXJyb3JzID8gMSA6IDApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0ZUZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBwYXRoIG9mIHRoZSBmaWxlcyB0byB0cmFuc2xhdGUsIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nXG4gICAqIGRpcmVjdG9yeS4gRS5nLiBgZGlzdC9lbmBcbiAgICovXG4gIHNvdXJjZVJvb3RQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZXMgdG8gdHJhbnNsYXRlLCByZWxhdGl2ZSB0byB0aGUgYHJvb3RgIHBhdGguXG4gICAqL1xuICBzb3VyY2VGaWxlUGF0aHM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgcGF0aHMgdG8gdGhlIHRyYW5zbGF0aW9uIGZpbGVzIHRvIGxvYWQsIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudFxuICAgKiB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICovXG4gIHRyYW5zbGF0aW9uRmlsZVBhdGhzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEEgY29sbGVjdGlvbiBvZiB0aGUgdGFyZ2V0IGxvY2FsZXMgZm9yIHRoZSB0cmFuc2xhdGlvbiBmaWxlcy5cbiAgICovXG4gIHRyYW5zbGF0aW9uRmlsZUxvY2FsZXM6IChzdHJpbmd8dW5kZWZpbmVkKVtdO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGNvbXB1dGVzIHRoZSBvdXRwdXQgcGF0aCBvZiB3aGVyZSB0aGUgdHJhbnNsYXRlZCBmaWxlcyB3aWxsIGJlIHdyaXR0ZW4uXG4gICAqIFRoZSBtYXJrZXIgYHt7TE9DQUxFfX1gIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgdGFyZ2V0IGxvY2FsZS4gRS5nLiBgZGlzdC97e0xPQ0FMRX19YC5cbiAgICovXG4gIG91dHB1dFBhdGhGbjogT3V0cHV0UGF0aEZuO1xuICAvKipcbiAgICogQW4gb2JqZWN0IHRoYXQgd2lsbCByZWNlaXZlIGFueSBkaWFnbm9zdGljcyBtZXNzYWdlcyBkdWUgdG8gdGhlIHByb2Nlc3NpbmcuXG4gICAqL1xuICBkaWFnbm9zdGljczogRGlhZ25vc3RpY3M7XG4gIC8qKlxuICAgKiBIb3cgdG8gaGFuZGxlIG1pc3NpbmcgdHJhbnNsYXRpb25zLlxuICAgKi9cbiAgbWlzc2luZ1RyYW5zbGF0aW9uOiBNaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgb2YgdGhlIHNvdXJjZSBmaWxlcy5cbiAgICogSWYgdGhpcyBpcyBwcm92aWRlZCB0aGVuIGEgY29weSBvZiB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggbm8gdHJhbnNsYXRpb24gYnV0IGp1c3RcbiAgICogdGhlIGAkbG9jYWxpemVgIGNhbGxzIHN0cmlwcGVkIG91dC5cbiAgICovXG4gIHNvdXJjZUxvY2FsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZUZpbGVzKHtzb3VyY2VSb290UGF0aCwgc291cmNlRmlsZVBhdGhzLCB0cmFuc2xhdGlvbkZpbGVQYXRocyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25GaWxlTG9jYWxlcywgb3V0cHV0UGF0aEZuLCBkaWFnbm9zdGljcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uLCBzb3VyY2VMb2NhbGV9OiBUcmFuc2xhdGVGaWxlc09wdGlvbnMpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25Mb2FkZXIgPSBuZXcgVHJhbnNsYXRpb25Mb2FkZXIoXG4gICAgICBbXG4gICAgICAgIG5ldyBYbGlmZjJUcmFuc2xhdGlvblBhcnNlcigpLFxuICAgICAgICBuZXcgWGxpZmYxVHJhbnNsYXRpb25QYXJzZXIoKSxcbiAgICAgICAgbmV3IFh0YlRyYW5zbGF0aW9uUGFyc2VyKGRpYWdub3N0aWNzKSxcbiAgICAgICAgbmV3IFNpbXBsZUpzb25UcmFuc2xhdGlvblBhcnNlcigpLFxuICAgICAgXSxcbiAgICAgIGRpYWdub3N0aWNzKTtcblxuICBjb25zdCByZXNvdXJjZVByb2Nlc3NvciA9IG5ldyBUcmFuc2xhdG9yKFxuICAgICAgW1xuICAgICAgICBuZXcgU291cmNlRmlsZVRyYW5zbGF0aW9uSGFuZGxlcih7bWlzc2luZ1RyYW5zbGF0aW9ufSksXG4gICAgICAgIG5ldyBBc3NldFRyYW5zbGF0aW9uSGFuZGxlcigpLFxuICAgICAgXSxcbiAgICAgIGRpYWdub3N0aWNzKTtcblxuICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbkxvYWRlci5sb2FkQnVuZGxlcyh0cmFuc2xhdGlvbkZpbGVQYXRocywgdHJhbnNsYXRpb25GaWxlTG9jYWxlcyk7XG4gIHNvdXJjZVJvb3RQYXRoID0gcmVzb2x2ZShzb3VyY2VSb290UGF0aCk7XG4gIHJlc291cmNlUHJvY2Vzc29yLnRyYW5zbGF0ZUZpbGVzKFxuICAgICAgc291cmNlRmlsZVBhdGhzLCBzb3VyY2VSb290UGF0aCwgb3V0cHV0UGF0aEZuLCB0cmFuc2xhdGlvbnMsIHNvdXJjZUxvY2FsZSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQ0E7Ozs7OztPQU1HO0lBQ0gsMkJBQTZCO0lBQzdCLDZCQUE2QjtJQUM3Qiw2QkFBK0I7SUFFL0IsNkhBQWdGO0lBQ2hGLHFGQUE0RDtJQUM1RCwwSUFBNEY7SUFFNUYscUhBQXlFO0lBQ3pFLGlLQUFtSDtJQUNuSCx1SkFBMEc7SUFDMUcsdUpBQTBHO0lBQzFHLGlKQUFvRztJQUNwRyxtRkFBd0M7SUFDeEMsMkVBQTJDO0lBRTNDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDM0IsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBTSxPQUFPLEdBQ1QsS0FBSzthQUNBLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUNKLHdIQUF3SDtTQUM3SCxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQ0osc0dBQXNHO1NBQzNHLENBQUM7YUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsS0FBSyxFQUFFLGVBQWU7WUFDdEIsUUFBUSxFQUNKLDJLQUEySztTQUNoTCxDQUFDO2FBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQ0osbUhBQW1IO2dCQUNuSCw2RkFBNkY7U0FDbEcsQ0FBQzthQUVE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QUFjLENBQUMsQ0FBQztRQUN6QyxpQkFBaUIsQ0FBQyxjQUFjLENBQzVCLGVBQWUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBdkJELHdDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuXG5pbXBvcnQge0Fzc2V0VHJhbnNsYXRpb25IYW5kbGVyfSBmcm9tICcuL2Fzc2V0X2ZpbGVzL2Fzc2V0X3RyYW5zbGF0aW9uX2hhbmRsZXInO1xuaW1wb3J0IHtnZXRPdXRwdXRQYXRoRm4sIE91dHB1dFBhdGhGbn0gZnJvbSAnLi9vdXRwdXRfcGF0aCc7XG5pbXBvcnQge1NvdXJjZUZpbGVUcmFuc2xhdGlvbkhhbmRsZXJ9IGZyb20gJy4vc291cmNlX2ZpbGVzL3NvdXJjZV9maWxlX3RyYW5zbGF0aW9uX2hhbmRsZXInO1xuaW1wb3J0IHtNaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneX0gZnJvbSAnLi9zb3VyY2VfZmlsZXMvc291cmNlX2ZpbGVfdXRpbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGlvbkxvYWRlcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9sb2FkZXInO1xuaW1wb3J0IHtTaW1wbGVKc29uVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy9zaW1wbGVfanNvbl90cmFuc2xhdGlvbl9wYXJzZXInO1xuaW1wb3J0IHtYbGlmZjFUcmFuc2xhdGlvblBhcnNlcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9wYXJzZXJzL3hsaWZmMV90cmFuc2xhdGlvbl9wYXJzZXInO1xuaW1wb3J0IHtYbGlmZjJUcmFuc2xhdGlvblBhcnNlcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9wYXJzZXJzL3hsaWZmMl90cmFuc2xhdGlvbl9wYXJzZXInO1xuaW1wb3J0IHtYdGJUcmFuc2xhdGlvblBhcnNlcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9wYXJzZXJzL3h0Yl90cmFuc2xhdGlvbl9wYXJzZXInO1xuaW1wb3J0IHtUcmFuc2xhdG9yfSBmcm9tICcuL3RyYW5zbGF0b3InO1xuaW1wb3J0IHtEaWFnbm9zdGljc30gZnJvbSAnLi4vZGlhZ25vc3RpY3MnO1xuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgY29uc3QgYXJncyA9IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgY29uc3Qgb3B0aW9ucyA9XG4gICAgICB5YXJnc1xuICAgICAgICAgIC5vcHRpb24oJ3InLCB7XG4gICAgICAgICAgICBhbGlhczogJ3Jvb3QnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmliZTpcbiAgICAgICAgICAgICAgICAnVGhlIHJvb3QgcGF0aCBvZiB0aGUgZmlsZXMgdG8gdHJhbnNsYXRlLCBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIEUuZy4gYGRpc3QvZW5gLicsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAub3B0aW9uKCdzJywge1xuICAgICAgICAgICAgYWxpYXM6ICdzb3VyY2UnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmliZTpcbiAgICAgICAgICAgICAgICAnQSBnbG9iIHBhdHRlcm4gaW5kaWNhdGluZyB3aGF0IGZpbGVzIHRvIHRyYW5zbGF0ZSwgcmVsYXRpdmUgdG8gdGhlIGByb290YCBwYXRoLiBFLmcuIGBidW5kbGVzLyoqLypgLicsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC5vcHRpb24oJ2wnLCB7XG4gICAgICAgICAgICBhbGlhczogJ3NvdXJjZS1sb2NhbGUnLFxuICAgICAgICAgICAgZGVzY3JpYmU6XG4gICAgICAgICAgICAgICAgJ1RoZSBzb3VyY2UgbG9jYWxlIG9mIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhpcyBpcyBwcm92aWRlZCB0aGVuIGEgY29weSBvZiB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggbm8gdHJhbnNsYXRpb24gYnV0IGp1c3QgdGhlIGAkbG9jYWxpemVgIGNhbGxzIHN0cmlwcGVkIG91dC4nLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAub3B0aW9uKCd0Jywge1xuICAgICAgICAgICAgYWxpYXM6ICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBhcnJheTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaWJlOlxuICAgICAgICAgICAgICAgICdBIGxpc3Qgb2YgcGF0aHMgdG8gdGhlIHRyYW5zbGF0aW9uIGZpbGVzIHRvIGxvYWQsIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cXG4nICtcbiAgICAgICAgICAgICAgICAnRS5nLiBcIi10IHNyYy9sb2NhbGUvbWVzc2FnZXMuZW4ueGxmIHNyYy9sb2NhbGUvbWVzc2FnZXMuZnIueGxmIHNyYy9sb2NhbGUvbWVzc2FnZXMuZGUueGxmXCIuJyxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLm9wdGlvbigndGFyZ2V0LWxvY2FsZXMnLCB7XG4gICAgICAgICAgICBhcnJheTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaWJlOlxuICAgICAgICAgICAgICAgICdBIGxpc3Qgb2YgdGFyZ2V0IGxvY2FsZXMgZm9yIHRoZSB0cmFuc2xhdGlvbiBmaWxlcywgd2hpY2ggd2lsbCBvdmVycmlkZSBhbnkgdGFyZ2V0IGxvY2FsZSBwYXJzZWQgZnJvbSB0aGUgdHJhbnNsYXRpb24gZmlsZS5cXG4nICtcbiAgICAgICAgICAgICAgICAnRS5nLiBcIi10IGVuIGZyIGRlXCIuJyxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLm9wdGlvbignbycsIHtcbiAgICAgICAgICAgIGFsaWFzOiAnb3V0cHV0UGF0aCcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaWJlOlxuICAgICAgICAgICAgICAgICdBIG91dHB1dCBwYXRoIHBhdHRlcm4gdG8gd2hlcmUgdGhlIHRyYW5zbGF0ZWQgZmlsZXMgd2lsbCBiZSB3cml0dGVuLiBUaGUgbWFya2VyIGB7e0xPQ0FMRX19YCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHRhcmdldCBsb2NhbGUuIEUuZy4gYGRpc3Qve3tMT0NBTEV9fWAuJ1xuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAub3B0aW9uKCdtJywge1xuICAgICAgICAgICAgYWxpYXM6ICdtaXNzaW5nVHJhbnNsYXRpb24nLFxuICAgICAgICAgICAgZGVzY3JpYmU6ICdIb3cgdG8gaGFuZGxlIG1pc3NpbmcgdHJhbnNsYXRpb25zLicsXG4gICAgICAgICAgICBjaG9pY2VzOiBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaWdub3JlJ10sXG4gICAgICAgICAgICBkZWZhdWx0OiAnd2FybmluZycsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC5oZWxwKClcbiAgICAgICAgICAucGFyc2UoYXJncyk7XG5cbiAgY29uc3Qgc291cmNlUm9vdFBhdGggPSBvcHRpb25zWydyJ107XG4gIGNvbnN0IHNvdXJjZUZpbGVQYXRocyA9XG4gICAgICBnbG9iLnN5bmMob3B0aW9uc1sncyddLCB7YWJzb2x1dGU6IHRydWUsIGN3ZDogc291cmNlUm9vdFBhdGgsIG5vZGlyOiB0cnVlfSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uRmlsZVBhdGhzOiBzdHJpbmdbXSA9IG9wdGlvbnNbJ3QnXTtcbiAgY29uc3Qgb3V0cHV0UGF0aEZuID0gZ2V0T3V0cHV0UGF0aEZuKG9wdGlvbnNbJ28nXSk7XG4gIGNvbnN0IGRpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG4gIGNvbnN0IG1pc3NpbmdUcmFuc2xhdGlvbjogTWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3kgPSBvcHRpb25zWydtJ107XG4gIGNvbnN0IHNvdXJjZUxvY2FsZTogc3RyaW5nfHVuZGVmaW5lZCA9IG9wdGlvbnNbJ2wnXTtcbiAgY29uc3QgdHJhbnNsYXRpb25GaWxlTG9jYWxlczogc3RyaW5nW10gPSBvcHRpb25zWyd0YXJnZXQtbG9jYWxlcyddIHx8IFtdO1xuXG4gIHRyYW5zbGF0ZUZpbGVzKHtzb3VyY2VSb290UGF0aCwgc291cmNlRmlsZVBhdGhzLCB0cmFuc2xhdGlvbkZpbGVQYXRocywgdHJhbnNsYXRpb25GaWxlTG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgIG91dHB1dFBhdGhGbiwgZGlhZ25vc3RpY3MsIG1pc3NpbmdUcmFuc2xhdGlvbiwgc291cmNlTG9jYWxlfSk7XG5cbiAgZGlhZ25vc3RpY3MubWVzc2FnZXMuZm9yRWFjaChtID0+IGNvbnNvbGUud2FybihgJHttLnR5cGV9OiAke20ubWVzc2FnZX1gKSk7XG4gIHByb2Nlc3MuZXhpdChkaWFnbm9zdGljcy5oYXNFcnJvcnMgPyAxIDogMCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsYXRlRmlsZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByb290IHBhdGggb2YgdGhlIGZpbGVzIHRvIHRyYW5zbGF0ZSwgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmdcbiAgICogZGlyZWN0b3J5LiBFLmcuIGBkaXN0L2VuYFxuICAgKi9cbiAgc291cmNlUm9vdFBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyB0byB0cmFuc2xhdGUsIHJlbGF0aXZlIHRvIHRoZSBgcm9vdGAgcGF0aC5cbiAgICovXG4gIHNvdXJjZUZpbGVQYXRoczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBwYXRocyB0byB0aGUgdHJhbnNsYXRpb24gZmlsZXMgdG8gbG9hZCwgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50XG4gICAqIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgdHJhbnNsYXRpb25GaWxlUGF0aHM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIHRoZSB0YXJnZXQgbG9jYWxlcyBmb3IgdGhlIHRyYW5zbGF0aW9uIGZpbGVzLlxuICAgKi9cbiAgdHJhbnNsYXRpb25GaWxlTG9jYWxlczogKHN0cmluZ3x1bmRlZmluZWQpW107XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgdGhlIG91dHB1dCBwYXRoIG9mIHdoZXJlIHRoZSB0cmFuc2xhdGVkIGZpbGVzIHdpbGwgYmUgd3JpdHRlbi5cbiAgICogVGhlIG1hcmtlciBge3tMT0NBTEV9fWAgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB0YXJnZXQgbG9jYWxlLiBFLmcuIGBkaXN0L3t7TE9DQUxFfX1gLlxuICAgKi9cbiAgb3V0cHV0UGF0aEZuOiBPdXRwdXRQYXRoRm47XG4gIC8qKlxuICAgKiBBbiBvYmplY3QgdGhhdCB3aWxsIHJlY2VpdmUgYW55IGRpYWdub3N0aWNzIG1lc3NhZ2VzIGR1ZSB0byB0aGUgcHJvY2Vzc2luZy5cbiAgICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcztcbiAgLyoqXG4gICAqIEhvdyB0byBoYW5kbGUgbWlzc2luZyB0cmFuc2xhdGlvbnMuXG4gICAqL1xuICBtaXNzaW5nVHJhbnNsYXRpb246IE1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5O1xuICAvKipcbiAgICogVGhlIGxvY2FsZSBvZiB0aGUgc291cmNlIGZpbGVzLlxuICAgKiBJZiB0aGlzIGlzIHByb3ZpZGVkIHRoZW4gYSBjb3B5IG9mIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBubyB0cmFuc2xhdGlvbiBidXQganVzdFxuICAgKiB0aGUgYCRsb2NhbGl6ZWAgY2FsbHMgc3RyaXBwZWQgb3V0LlxuICAgKi9cbiAgc291cmNlTG9jYWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlRmlsZXMoe3NvdXJjZVJvb3RQYXRoLCBzb3VyY2VGaWxlUGF0aHMsIHRyYW5zbGF0aW9uRmlsZVBhdGhzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzLCBvdXRwdXRQYXRoRm4sIGRpYWdub3N0aWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb24sIHNvdXJjZUxvY2FsZX06IFRyYW5zbGF0ZUZpbGVzT3B0aW9ucykge1xuICBjb25zdCB0cmFuc2xhdGlvbkxvYWRlciA9IG5ldyBUcmFuc2xhdGlvbkxvYWRlcihcbiAgICAgIFtcbiAgICAgICAgbmV3IFhsaWZmMlRyYW5zbGF0aW9uUGFyc2VyKCksXG4gICAgICAgIG5ldyBYbGlmZjFUcmFuc2xhdGlvblBhcnNlcigpLFxuICAgICAgICBuZXcgWHRiVHJhbnNsYXRpb25QYXJzZXIoKSxcbiAgICAgICAgbmV3IFNpbXBsZUpzb25UcmFuc2xhdGlvblBhcnNlcigpLFxuICAgICAgXSxcbiAgICAgIGRpYWdub3N0aWNzKTtcblxuICBjb25zdCByZXNvdXJjZVByb2Nlc3NvciA9IG5ldyBUcmFuc2xhdG9yKFxuICAgICAgW1xuICAgICAgICBuZXcgU291cmNlRmlsZVRyYW5zbGF0aW9uSGFuZGxlcih7bWlzc2luZ1RyYW5zbGF0aW9ufSksXG4gICAgICAgIG5ldyBBc3NldFRyYW5zbGF0aW9uSGFuZGxlcigpLFxuICAgICAgXSxcbiAgICAgIGRpYWdub3N0aWNzKTtcblxuICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbkxvYWRlci5sb2FkQnVuZGxlcyh0cmFuc2xhdGlvbkZpbGVQYXRocywgdHJhbnNsYXRpb25GaWxlTG9jYWxlcyk7XG4gIHNvdXJjZVJvb3RQYXRoID0gcmVzb2x2ZShzb3VyY2VSb290UGF0aCk7XG4gIHJlc291cmNlUHJvY2Vzc29yLnRyYW5zbGF0ZUZpbGVzKFxuICAgICAgc291cmNlRmlsZVBhdGhzLCBzb3VyY2VSb290UGF0aCwgb3V0cHV0UGF0aEZuLCB0cmFuc2xhdGlvbnMsIHNvdXJjZUxvY2FsZSk7XG59XG4iXX0=

@@ -17,4 +17,5 @@ /// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_loader" />

private translationParsers;
private diagnostics;
constructor(translationParsers: TranslationParser[], diagnostics: Diagnostics);
/** @deprecated */ private diagnostics?;
constructor(translationParsers: TranslationParser<any>[],
/** @deprecated */ diagnostics?: Diagnostics | undefined);
/**

@@ -21,0 +22,0 @@ * Load and parse the translation files into a collection of `TranslationBundles`.

@@ -18,3 +18,4 @@ (function (factory) {

var TranslationLoader = /** @class */ (function () {
function TranslationLoader(translationParsers, diagnostics) {
function TranslationLoader(translationParsers,
/** @deprecated */ diagnostics) {
this.translationParsers = translationParsers;

@@ -39,20 +40,29 @@ this.diagnostics = diagnostics;

return translationFilePaths.map(function (filePath, index) {
var e_1, _a;
var e_1, _a, _b;
var fileContents = file_utils_1.FileUtils.readFile(filePath);
try {
for (var _b = tslib_1.__values(_this.translationParsers), _c = _b.next(); !_c.done; _c = _b.next()) {
var translationParser = _c.value;
if (translationParser.canParse(filePath, fileContents)) {
var providedLocale = translationFileLocales[index];
var _d = translationParser.parse(filePath, fileContents), parsedLocale = _d.locale, translations = _d.translations;
var locale = providedLocale || parsedLocale;
if (locale === undefined) {
throw new Error("The translation file \"" + filePath + "\" does not contain a target locale and no explicit locale was provided for this file.");
}
if (parsedLocale !== undefined && providedLocale !== undefined &&
parsedLocale !== providedLocale) {
_this.diagnostics.warn("The provided locale \"" + providedLocale + "\" does not match the target locale \"" + parsedLocale + "\" found in the translation file \"" + filePath + "\".");
}
return { locale: locale, translations: translations };
for (var _c = tslib_1.__values(_this.translationParsers), _d = _c.next(); !_d.done; _d = _c.next()) {
var translationParser = _d.value;
var result = translationParser.canParse(filePath, fileContents);
if (!result) {
continue;
}
var _e = translationParser.parse(filePath, fileContents, result), parsedLocale = _e.locale, translations = _e.translations, diagnostics = _e.diagnostics;
if (diagnostics.hasErrors) {
throw new Error(diagnostics.formatDiagnostics("The translation file \"" + filePath + "\" could not be parsed."));
}
var providedLocale = translationFileLocales[index];
var locale = providedLocale || parsedLocale;
if (locale === undefined) {
throw new Error("The translation file \"" + filePath + "\" does not contain a target locale and no explicit locale was provided for this file.");
}
if (parsedLocale !== undefined && providedLocale !== undefined &&
parsedLocale !== providedLocale) {
diagnostics.warn("The provided locale \"" + providedLocale + "\" does not match the target locale \"" + parsedLocale + "\" found in the translation file \"" + filePath + "\".");
}
// If we were passed a diagnostics object then copy the messages over to it.
if (_this.diagnostics) {
(_b = _this.diagnostics.messages).push.apply(_b, tslib_1.__spread(diagnostics.messages));
}
return { locale: locale, translations: translations, diagnostics: diagnostics };
}

@@ -63,3 +73,3 @@ }

try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}

@@ -75,2 +85,2 @@ finally { if (e_1) throw e_1.error; }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVFBLHlFQUEyQztJQUkzQzs7T0FFRztJQUNIO1FBQ0UsMkJBQW9CLGtCQUF1QyxFQUFVLFdBQXdCO1lBQXpFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7WUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFHLENBQUM7UUFFakc7Ozs7Ozs7Ozs7OztXQVlHO1FBQ0gsdUNBQVcsR0FBWCxVQUFZLG9CQUE4QixFQUFFLHNCQUE0QztZQUF4RixpQkF5QkM7WUF2QkMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBQyxRQUFRLEVBQUUsS0FBSzs7Z0JBQzlDLElBQU0sWUFBWSxHQUFHLHNCQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztvQkFDbEQsS0FBZ0MsSUFBQSxLQUFBLGlCQUFBLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQSxnQkFBQSw0QkFBRTt3QkFBcEQsSUFBTSxpQkFBaUIsV0FBQTt3QkFDMUIsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFOzRCQUN0RCxJQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDL0MsSUFBQSxvREFDNkMsRUFENUMsd0JBQW9CLEVBQUUsOEJBQ3NCLENBQUM7NEJBQ3BELElBQU0sTUFBTSxHQUFHLGNBQWMsSUFBSSxZQUFZLENBQUM7NEJBQzlDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQ0FDeEIsTUFBTSxJQUFJLEtBQUssQ0FDWCw0QkFBeUIsUUFBUSwyRkFBdUYsQ0FBQyxDQUFDOzZCQUMvSDs0QkFDRCxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksY0FBYyxLQUFLLFNBQVM7Z0NBQzFELFlBQVksS0FBSyxjQUFjLEVBQUU7Z0NBQ25DLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNqQiwyQkFBd0IsY0FBYyw4Q0FBdUMsWUFBWSwyQ0FBb0MsUUFBUSxRQUFJLENBQUMsQ0FBQzs2QkFDaEo7NEJBQ0QsT0FBTyxFQUFDLE1BQU0sUUFBQSxFQUFFLFlBQVksY0FBQSxFQUFDLENBQUM7eUJBQy9CO3FCQUNGOzs7Ozs7Ozs7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDWCw2RUFBeUUsUUFBUSxNQUFHLENBQUMsQ0FBQztZQUM1RixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDSCx3QkFBQztJQUFELENBQUMsQUExQ0QsSUEwQ0M7SUExQ1ksOENBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtEaWFnbm9zdGljc30gZnJvbSAnLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtGaWxlVXRpbHN9IGZyb20gJy4uLy4uL2ZpbGVfdXRpbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGlvbkJ1bmRsZX0gZnJvbSAnLi4vdHJhbnNsYXRvcic7XG5pbXBvcnQge1RyYW5zbGF0aW9uUGFyc2VyfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlcnMvdHJhbnNsYXRpb25fcGFyc2VyJztcblxuLyoqXG4gKiBVc2UgdGhpcyBjbGFzcyB0byBsb2FkIGEgY29sbGVjdGlvbiBvZiB0cmFuc2xhdGlvbiBmaWxlcyBmcm9tIGRpc2suXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25QYXJzZXJzOiBUcmFuc2xhdGlvblBhcnNlcltdLCBwcml2YXRlIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcykge31cblxuICAvKipcbiAgICogTG9hZCBhbmQgcGFyc2UgdGhlIHRyYW5zbGF0aW9uIGZpbGVzIGludG8gYSBjb2xsZWN0aW9uIG9mIGBUcmFuc2xhdGlvbkJ1bmRsZXNgLlxuICAgKlxuICAgKiBJZiB0aGVyZSBpcyBhIGxvY2FsZSBwcm92aWRlZCBpbiBgdHJhbnNsYXRpb25GaWxlTG9jYWxlc2AgdGhlbiB0aGlzIGlzIHVzZWQgcmF0aGVyIHRoYW4gdGhlXG4gICAqIGxvY2FsZSBleHRyYWN0ZWQgZnJvbSB0aGUgZmlsZSBpdHNlbGYuXG4gICAqIElmIHRoZXJlIGlzIG5laXRoZXIgYSBwcm92aWRlZCBsb2NhbGUgbm9yIGEgbG9jYWxlIHBhcnNlZCBmcm9tIHRoZSBmaWxlLCB0aGVuIGFuIGVycm9yIGlzXG4gICAqIHRocm93bi5cbiAgICogSWYgdGhlcmUgYXJlIGJvdGggYSBwcm92aWRlZCBsb2NhbGUgYW5kIGEgbG9jYWxlIHBhcnNlZCBmcm9tIHRoZSBmaWxlLCBhbmQgdGhleSBhcmUgbm90IHRoZVxuICAgKiBzYW1lLCB0aGVuIGEgd2FybmluZyBpcyByZXBvcnRlZCAuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbkZpbGVQYXRocyBBbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocyB0byB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzIEFuIGFycmF5IG9mIGxvY2FsZXMgZm9yIGVhY2ggb2YgdGhlIHRyYW5zbGF0aW9uIGZpbGVzLlxuICAgKi9cbiAgbG9hZEJ1bmRsZXModHJhbnNsYXRpb25GaWxlUGF0aHM6IHN0cmluZ1tdLCB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzOiAoc3RyaW5nfHVuZGVmaW5lZClbXSk6XG4gICAgICBUcmFuc2xhdGlvbkJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdHJhbnNsYXRpb25GaWxlUGF0aHMubWFwKChmaWxlUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IEZpbGVVdGlscy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IHRyYW5zbGF0aW9uUGFyc2VyIG9mIHRoaXMudHJhbnNsYXRpb25QYXJzZXJzKSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGlvblBhcnNlci5jYW5QYXJzZShmaWxlUGF0aCwgZmlsZUNvbnRlbnRzKSkge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVkTG9jYWxlID0gdHJhbnNsYXRpb25GaWxlTG9jYWxlc1tpbmRleF07XG4gICAgICAgICAgY29uc3Qge2xvY2FsZTogcGFyc2VkTG9jYWxlLCB0cmFuc2xhdGlvbnN9ID1cbiAgICAgICAgICAgICAgdHJhbnNsYXRpb25QYXJzZXIucGFyc2UoZmlsZVBhdGgsIGZpbGVDb250ZW50cyk7XG4gICAgICAgICAgY29uc3QgbG9jYWxlID0gcHJvdmlkZWRMb2NhbGUgfHwgcGFyc2VkTG9jYWxlO1xuICAgICAgICAgIGlmIChsb2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgdHJhbnNsYXRpb24gZmlsZSBcIiR7ZmlsZVBhdGh9XCIgZG9lcyBub3QgY29udGFpbiBhIHRhcmdldCBsb2NhbGUgYW5kIG5vIGV4cGxpY2l0IGxvY2FsZSB3YXMgcHJvdmlkZWQgZm9yIHRoaXMgZmlsZS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcnNlZExvY2FsZSAhPT0gdW5kZWZpbmVkICYmIHByb3ZpZGVkTG9jYWxlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgcGFyc2VkTG9jYWxlICE9PSBwcm92aWRlZExvY2FsZSkge1xuICAgICAgICAgICAgdGhpcy5kaWFnbm9zdGljcy53YXJuKFxuICAgICAgICAgICAgICAgIGBUaGUgcHJvdmlkZWQgbG9jYWxlIFwiJHtwcm92aWRlZExvY2FsZX1cIiBkb2VzIG5vdCBtYXRjaCB0aGUgdGFyZ2V0IGxvY2FsZSBcIiR7cGFyc2VkTG9jYWxlfVwiIGZvdW5kIGluIHRoZSB0cmFuc2xhdGlvbiBmaWxlIFwiJHtmaWxlUGF0aH1cIi5gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtsb2NhbGUsIHRyYW5zbGF0aW9uc307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlcmUgaXMgbm8gXCJUcmFuc2xhdGlvblBhcnNlclwiIHRoYXQgY2FuIHBhcnNlIHRoaXMgdHJhbnNsYXRpb24gZmlsZTogJHtmaWxlUGF0aH0uYCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVFBLHlFQUEyQztJQUkzQzs7T0FFRztJQUNIO1FBQ0UsMkJBQ1ksa0JBQTRDO1FBQ3BELGtCQUFrQixDQUFTLFdBQXlCO1lBRDVDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMEI7WUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQWM7UUFBRyxDQUFDO1FBRTVEOzs7Ozs7Ozs7Ozs7V0FZRztRQUNILHVDQUFXLEdBQVgsVUFBWSxvQkFBOEIsRUFBRSxzQkFBNEM7WUFBeEYsaUJBd0NDO1lBdENDLE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQUMsUUFBUSxFQUFFLEtBQUs7O2dCQUM5QyxJQUFNLFlBQVksR0FBRyxzQkFBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7b0JBQ2xELEtBQWdDLElBQUEsS0FBQSxpQkFBQSxLQUFJLENBQUMsa0JBQWtCLENBQUEsZ0JBQUEsNEJBQUU7d0JBQXBELElBQU0saUJBQWlCLFdBQUE7d0JBQzFCLElBQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7d0JBQ2xFLElBQUksQ0FBQyxNQUFNLEVBQUU7NEJBQ1gsU0FBUzt5QkFDVjt3QkFFSyxJQUFBLDREQUNxRCxFQURwRCx3QkFBb0IsRUFBRSw4QkFBWSxFQUFFLDRCQUNnQixDQUFDO3dCQUM1RCxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUU7NEJBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUN6Qyw0QkFBeUIsUUFBUSw0QkFBd0IsQ0FBQyxDQUFDLENBQUM7eUJBQ2pFO3dCQUVELElBQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNyRCxJQUFNLE1BQU0sR0FBRyxjQUFjLElBQUksWUFBWSxDQUFDO3dCQUM5QyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7NEJBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ1gsNEJBQXlCLFFBQVEsMkZBQXVGLENBQUMsQ0FBQzt5QkFDL0g7d0JBRUQsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLGNBQWMsS0FBSyxTQUFTOzRCQUMxRCxZQUFZLEtBQUssY0FBYyxFQUFFOzRCQUNuQyxXQUFXLENBQUMsSUFBSSxDQUNaLDJCQUF3QixjQUFjLDhDQUF1QyxZQUFZLDJDQUFvQyxRQUFRLFFBQUksQ0FBQyxDQUFDO3lCQUNoSjt3QkFFRCw0RUFBNEU7d0JBQzVFLElBQUksS0FBSSxDQUFDLFdBQVcsRUFBRTs0QkFDcEIsQ0FBQSxLQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFBLENBQUMsSUFBSSw0QkFBSSxXQUFXLENBQUMsUUFBUSxHQUFFO3lCQUN6RDt3QkFFRCxPQUFPLEVBQUMsTUFBTSxRQUFBLEVBQUUsWUFBWSxjQUFBLEVBQUUsV0FBVyxhQUFBLEVBQUMsQ0FBQztxQkFDNUM7Ozs7Ozs7OztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNYLDZFQUF5RSxRQUFRLE1BQUcsQ0FBQyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNILHdCQUFDO0lBQUQsQ0FBQyxBQTNERCxJQTJEQztJQTNEWSw4Q0FBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RpYWdub3N0aWNzfSBmcm9tICcuLi8uLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSAnLi4vLi4vZmlsZV91dGlscyc7XG5pbXBvcnQge1RyYW5zbGF0aW9uQnVuZGxlfSBmcm9tICcuLi90cmFuc2xhdG9yJztcbmltcG9ydCB7VHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2Vycy90cmFuc2xhdGlvbl9wYXJzZXInO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNsYXNzIHRvIGxvYWQgYSBjb2xsZWN0aW9uIG9mIHRyYW5zbGF0aW9uIGZpbGVzIGZyb20gZGlzay5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uTG9hZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHRyYW5zbGF0aW9uUGFyc2VyczogVHJhbnNsYXRpb25QYXJzZXI8YW55PltdLFxuICAgICAgLyoqIEBkZXByZWNhdGVkICovIHByaXZhdGUgZGlhZ25vc3RpY3M/OiBEaWFnbm9zdGljcykge31cblxuICAvKipcbiAgICogTG9hZCBhbmQgcGFyc2UgdGhlIHRyYW5zbGF0aW9uIGZpbGVzIGludG8gYSBjb2xsZWN0aW9uIG9mIGBUcmFuc2xhdGlvbkJ1bmRsZXNgLlxuICAgKlxuICAgKiBJZiB0aGVyZSBpcyBhIGxvY2FsZSBwcm92aWRlZCBpbiBgdHJhbnNsYXRpb25GaWxlTG9jYWxlc2AgdGhlbiB0aGlzIGlzIHVzZWQgcmF0aGVyIHRoYW4gdGhlXG4gICAqIGxvY2FsZSBleHRyYWN0ZWQgZnJvbSB0aGUgZmlsZSBpdHNlbGYuXG4gICAqIElmIHRoZXJlIGlzIG5laXRoZXIgYSBwcm92aWRlZCBsb2NhbGUgbm9yIGEgbG9jYWxlIHBhcnNlZCBmcm9tIHRoZSBmaWxlLCB0aGVuIGFuIGVycm9yIGlzXG4gICAqIHRocm93bi5cbiAgICogSWYgdGhlcmUgYXJlIGJvdGggYSBwcm92aWRlZCBsb2NhbGUgYW5kIGEgbG9jYWxlIHBhcnNlZCBmcm9tIHRoZSBmaWxlLCBhbmQgdGhleSBhcmUgbm90IHRoZVxuICAgKiBzYW1lLCB0aGVuIGEgd2FybmluZyBpcyByZXBvcnRlZCAuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbkZpbGVQYXRocyBBbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocyB0byB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzIEFuIGFycmF5IG9mIGxvY2FsZXMgZm9yIGVhY2ggb2YgdGhlIHRyYW5zbGF0aW9uIGZpbGVzLlxuICAgKi9cbiAgbG9hZEJ1bmRsZXModHJhbnNsYXRpb25GaWxlUGF0aHM6IHN0cmluZ1tdLCB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzOiAoc3RyaW5nfHVuZGVmaW5lZClbXSk6XG4gICAgICBUcmFuc2xhdGlvbkJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdHJhbnNsYXRpb25GaWxlUGF0aHMubWFwKChmaWxlUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IEZpbGVVdGlscy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IHRyYW5zbGF0aW9uUGFyc2VyIG9mIHRoaXMudHJhbnNsYXRpb25QYXJzZXJzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zbGF0aW9uUGFyc2VyLmNhblBhcnNlKGZpbGVQYXRoLCBmaWxlQ29udGVudHMpO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2xvY2FsZTogcGFyc2VkTG9jYWxlLCB0cmFuc2xhdGlvbnMsIGRpYWdub3N0aWNzfSA9XG4gICAgICAgICAgICB0cmFuc2xhdGlvblBhcnNlci5wYXJzZShmaWxlUGF0aCwgZmlsZUNvbnRlbnRzLCByZXN1bHQpO1xuICAgICAgICBpZiAoZGlhZ25vc3RpY3MuaGFzRXJyb3JzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGRpYWdub3N0aWNzLmZvcm1hdERpYWdub3N0aWNzKFxuICAgICAgICAgICAgICBgVGhlIHRyYW5zbGF0aW9uIGZpbGUgXCIke2ZpbGVQYXRofVwiIGNvdWxkIG5vdCBiZSBwYXJzZWQuYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZWRMb2NhbGUgPSB0cmFuc2xhdGlvbkZpbGVMb2NhbGVzW2luZGV4XTtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gcHJvdmlkZWRMb2NhbGUgfHwgcGFyc2VkTG9jYWxlO1xuICAgICAgICBpZiAobG9jYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBUaGUgdHJhbnNsYXRpb24gZmlsZSBcIiR7ZmlsZVBhdGh9XCIgZG9lcyBub3QgY29udGFpbiBhIHRhcmdldCBsb2NhbGUgYW5kIG5vIGV4cGxpY2l0IGxvY2FsZSB3YXMgcHJvdmlkZWQgZm9yIHRoaXMgZmlsZS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZWRMb2NhbGUgIT09IHVuZGVmaW5lZCAmJiBwcm92aWRlZExvY2FsZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBwYXJzZWRMb2NhbGUgIT09IHByb3ZpZGVkTG9jYWxlKSB7XG4gICAgICAgICAgZGlhZ25vc3RpY3Mud2FybihcbiAgICAgICAgICAgICAgYFRoZSBwcm92aWRlZCBsb2NhbGUgXCIke3Byb3ZpZGVkTG9jYWxlfVwiIGRvZXMgbm90IG1hdGNoIHRoZSB0YXJnZXQgbG9jYWxlIFwiJHtwYXJzZWRMb2NhbGV9XCIgZm91bmQgaW4gdGhlIHRyYW5zbGF0aW9uIGZpbGUgXCIke2ZpbGVQYXRofVwiLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgd2Ugd2VyZSBwYXNzZWQgYSBkaWFnbm9zdGljcyBvYmplY3QgdGhlbiBjb3B5IHRoZSBtZXNzYWdlcyBvdmVyIHRvIGl0LlxuICAgICAgICBpZiAodGhpcy5kaWFnbm9zdGljcykge1xuICAgICAgICAgIHRoaXMuZGlhZ25vc3RpY3MubWVzc2FnZXMucHVzaCguLi5kaWFnbm9zdGljcy5tZXNzYWdlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge2xvY2FsZSwgdHJhbnNsYXRpb25zLCBkaWFnbm9zdGljc307XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZXJlIGlzIG5vIFwiVHJhbnNsYXRpb25QYXJzZXJcIiB0aGF0IGNhbiBwYXJzZSB0aGlzIHRyYW5zbGF0aW9uIGZpbGU6ICR7ZmlsZVBhdGh9LmApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/simple_json_translation_parser", ["require", "exports", "@angular/localize", "path"], factory);
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/simple_json_translation_parser", ["require", "exports", "@angular/localize", "path", "@angular/localize/src/tools/src/diagnostics"], factory);
}

@@ -22,2 +22,3 @@ })(function (require, exports) {

var path_1 = require("path");
var diagnostics_1 = require("@angular/localize/src/tools/src/diagnostics");
/**

@@ -47,3 +48,3 @@ * A translation parser that can parse JSON that has the form:

}
return { locale: parsedLocale, translations: parsedTranslations };
return { locale: parsedLocale, translations: parsedTranslations, diagnostics: new diagnostics_1.Diagnostics() };
};

@@ -54,2 +55,2 @@ return SimpleJsonTranslationParser;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlX2pzb25fdHJhbnNsYXRpb25fcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy9zaW1wbGVfanNvbl90cmFuc2xhdGlvbl9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBb0Y7SUFDcEYsNkJBQTZCO0lBRzdCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNIO1FBQUE7UUFZQSxDQUFDO1FBWEMsOENBQVEsR0FBUixVQUFTLFFBQWdCLEVBQUUsU0FBaUIsSUFBYSxPQUFPLENBQUMsY0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRywyQ0FBSyxHQUFMLFVBQU0sU0FBaUIsRUFBRSxRQUFnQjtZQUNqQyxJQUFBLHlCQUEyRCxFQUExRCx3QkFBb0IsRUFBRSw4QkFBb0MsQ0FBQztZQUNsRSxJQUFNLGtCQUFrQixHQUEyQyxFQUFFLENBQUM7WUFDdEUsS0FBSyxJQUFNLFNBQVMsSUFBSSxZQUFZLEVBQUU7Z0JBQ3BDLElBQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsNEJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbEU7WUFDRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0gsa0NBQUM7SUFBRCxDQUFDLEFBWkQsSUFZQztJQVpZLGtFQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ybVNZXNzYWdlSWQsIMm1UGFyc2VkVHJhbnNsYXRpb24sIMm1cGFyc2VUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHtleHRuYW1lfSBmcm9tICdwYXRoJztcbmltcG9ydCB7UGFyc2VkVHJhbnNsYXRpb25CdW5kbGUsIFRyYW5zbGF0aW9uUGFyc2VyfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlcic7XG5cbi8qKlxuICogQSB0cmFuc2xhdGlvbiBwYXJzZXIgdGhhdCBjYW4gcGFyc2UgSlNPTiB0aGF0IGhhcyB0aGUgZm9ybTpcbiAqXG4gKiBgYGBcbiAqIHtcbiAqICAgXCJsb2NhbGVcIjogXCIuLi5cIixcbiAqICAgXCJ0cmFuc2xhdGlvbnNcIjoge1xuICogICAgIFwibWVzc2FnZS1pZFwiOiBcIlRhcmdldCBtZXNzYWdlIHN0cmluZ1wiLFxuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUpzb25UcmFuc2xhdGlvblBhcnNlciBpbXBsZW1lbnRzIFRyYW5zbGF0aW9uUGFyc2VyIHtcbiAgY2FuUGFyc2UoZmlsZVBhdGg6IHN0cmluZywgX2NvbnRlbnRzOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIChleHRuYW1lKGZpbGVQYXRoKSA9PT0gJy5qc29uJyk7IH1cblxuICBwYXJzZShfZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZyk6IFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlIHtcbiAgICBjb25zdCB7bG9jYWxlOiBwYXJzZWRMb2NhbGUsIHRyYW5zbGF0aW9uc30gPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcbiAgICBjb25zdCBwYXJzZWRUcmFuc2xhdGlvbnM6IFJlY29yZDzJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2VJZCBpbiB0cmFuc2xhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRhcmdldE1lc3NhZ2UgPSB0cmFuc2xhdGlvbnNbbWVzc2FnZUlkXTtcbiAgICAgIHBhcnNlZFRyYW5zbGF0aW9uc1ttZXNzYWdlSWRdID0gybVwYXJzZVRyYW5zbGF0aW9uKHRhcmdldE1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4ge2xvY2FsZTogcGFyc2VkTG9jYWxlLCB0cmFuc2xhdGlvbnM6IHBhcnNlZFRyYW5zbGF0aW9uc307XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlX2pzb25fdHJhbnNsYXRpb25fcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy9zaW1wbGVfanNvbl90cmFuc2xhdGlvbl9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBb0Y7SUFDcEYsNkJBQTZCO0lBQzdCLDJFQUFpRDtJQUdqRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSDtRQUFBO1FBWUEsQ0FBQztRQVhDLDhDQUFRLEdBQVIsVUFBUyxRQUFnQixFQUFFLFNBQWlCLElBQWEsT0FBTyxDQUFDLGNBQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEcsMkNBQUssR0FBTCxVQUFNLFNBQWlCLEVBQUUsUUFBZ0I7WUFDakMsSUFBQSx5QkFBMkQsRUFBMUQsd0JBQW9CLEVBQUUsOEJBQW9DLENBQUM7WUFDbEUsSUFBTSxrQkFBa0IsR0FBMkMsRUFBRSxDQUFDO1lBQ3RFLEtBQUssSUFBTSxTQUFTLElBQUksWUFBWSxFQUFFO2dCQUNwQyxJQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzlDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLDRCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2xFO1lBQ0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLHlCQUFXLEVBQUUsRUFBQyxDQUFDO1FBQ2xHLENBQUM7UUFDSCxrQ0FBQztJQUFELENBQUMsQUFaRCxJQVlDO0lBWlksa0VBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHvJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbiwgybVwYXJzZVRyYW5zbGF0aW9ufSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZSc7XG5pbXBvcnQge2V4dG5hbWV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtEaWFnbm9zdGljc30gZnJvbSAnLi4vLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSwgVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VyJztcblxuLyoqXG4gKiBBIHRyYW5zbGF0aW9uIHBhcnNlciB0aGF0IGNhbiBwYXJzZSBKU09OIHRoYXQgaGFzIHRoZSBmb3JtOlxuICpcbiAqIGBgYFxuICoge1xuICogICBcImxvY2FsZVwiOiBcIi4uLlwiLFxuICogICBcInRyYW5zbGF0aW9uc1wiOiB7XG4gKiAgICAgXCJtZXNzYWdlLWlkXCI6IFwiVGFyZ2V0IG1lc3NhZ2Ugc3RyaW5nXCIsXG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlSnNvblRyYW5zbGF0aW9uUGFyc2VyIGltcGxlbWVudHMgVHJhbnNsYXRpb25QYXJzZXIge1xuICBjYW5QYXJzZShmaWxlUGF0aDogc3RyaW5nLCBfY29udGVudHM6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gKGV4dG5hbWUoZmlsZVBhdGgpID09PSAnLmpzb24nKTsgfVxuXG4gIHBhcnNlKF9maWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGNvbnN0IHtsb2NhbGU6IHBhcnNlZExvY2FsZSwgdHJhbnNsYXRpb25zfSA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICAgIGNvbnN0IHBhcnNlZFRyYW5zbGF0aW9uczogUmVjb3JkPMm1TWVzc2FnZUlkLCDJtVBhcnNlZFRyYW5zbGF0aW9uPiA9IHt9O1xuICAgIGZvciAoY29uc3QgbWVzc2FnZUlkIGluIHRyYW5zbGF0aW9ucykge1xuICAgICAgY29uc3QgdGFyZ2V0TWVzc2FnZSA9IHRyYW5zbGF0aW9uc1ttZXNzYWdlSWRdO1xuICAgICAgcGFyc2VkVHJhbnNsYXRpb25zW21lc3NhZ2VJZF0gPSDJtXBhcnNlVHJhbnNsYXRpb24odGFyZ2V0TWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiB7bG9jYWxlOiBwYXJzZWRMb2NhbGUsIHRyYW5zbGF0aW9uczogcGFyc2VkVHJhbnNsYXRpb25zLCBkaWFnbm9zdGljczogbmV3IERpYWdub3N0aWNzKCl9O1xuICB9XG59XG4iXX0=

@@ -10,2 +10,3 @@ /// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parser" />

import { ɵMessageId, ɵParsedTranslation } from '@angular/localize/private';
import { Diagnostics } from '../../../diagnostics';
/**

@@ -17,21 +18,58 @@ * An object that holds translations that have been parsed from a translation file.

translations: Record<ɵMessageId, ɵParsedTranslation>;
diagnostics: Diagnostics;
}
/**
* Implement this interface to provide a class that can parse the contents of a translation file.
*
* The `canParse()` method can return a hint that can be used by the `parse()` method to speed up
* parsing. This allows the parser to do significant work to determine if the file can be parsed
* without duplicating the work when it comes to actually parsing the file.
*
* Example usage:
*
* ```
* const parser: TranslationParser = getParser();
* const result = parser.canParse(filePath, content);
* if (result) {
* return parser.parse(filePath, content, result);
* }
* ```
*/
export interface TranslationParser {
export interface TranslationParser<Hint = true> {
/**
* Returns true if this parser can parse the given file.
* Can this parser parse the given file?
*
* @param filePath The absolute path to the translation file.
* @param contents The contents of the translation file.
* @returns A hint, which can be used in doing the actual parsing, if the file can be parsed by
* this parser; false otherwise.
*/
canParse(filePath: string, contents: string): boolean;
canParse(filePath: string, contents: string): Hint | false;
/**
* Parses the given file, extracting the target locale and translations.
*
* Note that this method should not throw an error. Check the `bundle.diagnostics` property for
* potential parsing errors and warnings.
*
* @param filePath The absolute path to the translation file.
* @param contents The contents of the translation file.
* @param hint A value that can be used by the parser to speed up parsing of the file. This will
* have been provided as the return result from calling `canParse()`.
* @returns The translation bundle parsed from the file.
* @throws No errors. If there was a problem with parsing the bundle will contain errors
* in the `diagnostics` property.
*/
parse(filePath: string, contents: string, hint: Hint): ParsedTranslationBundle;
/**
* Parses the given file, extracting the target locale and translations.
*
* @deprecated This overload is kept for backward compatibility. Going forward use the Hint
* returned from `canParse()` so that this method can avoid duplicating effort.
*
* @param filePath The absolute path to the translation file.
* @param contents The contents of the translation file.
* @returns The translation bundle parsed from the file.
* @throws An error if there was a problem parsing this file.
*/
parse(filePath: string, contents: string): ParsedTranslationBundle;
}

@@ -13,2 +13,2 @@ (function (factory) {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy90cmFuc2xhdGlvbl9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ybVNZXNzYWdlSWQsIMm1UGFyc2VkVHJhbnNsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2xvY2FsaXplL3ByaXZhdGUnO1xuXG4vKipcbiogQW4gb2JqZWN0IHRoYXQgaG9sZHMgdHJhbnNsYXRpb25zIHRoYXQgaGF2ZSBiZWVuIHBhcnNlZCBmcm9tIGEgdHJhbnNsYXRpb24gZmlsZS5cbiovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlIHtcbiAgbG9jYWxlOiBzdHJpbmd8dW5kZWZpbmVkO1xuICB0cmFuc2xhdGlvbnM6IFJlY29yZDzJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbj47XG59XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIHByb3ZpZGUgYSBjbGFzcyB0aGF0IGNhbiBwYXJzZSB0aGUgY29udGVudHMgb2YgYSB0cmFuc2xhdGlvbiBmaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uUGFyc2VyIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHBhcnNlciBjYW4gcGFyc2UgdGhlIGdpdmVuIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICogQHBhcmFtIGNvbnRlbnRzIFRoZSBjb250ZW50cyBvZiB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICovXG4gIGNhblBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUsIGV4dHJhY3RpbmcgdGhlIHRhcmdldCBsb2NhbGUgYW5kIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0cmFuc2xhdGlvbiBmaWxlLlxuICAgKiBAcGFyYW0gY29udGVudHMgVGhlIGNvbnRlbnRzIG9mIHRoZSB0cmFuc2xhdGlvbiBmaWxlLlxuICAgKi9cbiAgcGFyc2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZyk6IFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbG9jYWxpemUvc3JjL3Rvb2xzL3NyYy90cmFuc2xhdGUvdHJhbnNsYXRpb25fZmlsZXMvdHJhbnNsYXRpb25fcGFyc2Vycy90cmFuc2xhdGlvbl9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ybVNZXNzYWdlSWQsIMm1UGFyc2VkVHJhbnNsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2xvY2FsaXplL3ByaXZhdGUnO1xuaW1wb3J0IHtEaWFnbm9zdGljc30gZnJvbSAnLi4vLi4vLi4vZGlhZ25vc3RpY3MnO1xuXG4vKipcbiogQW4gb2JqZWN0IHRoYXQgaG9sZHMgdHJhbnNsYXRpb25zIHRoYXQgaGF2ZSBiZWVuIHBhcnNlZCBmcm9tIGEgdHJhbnNsYXRpb24gZmlsZS5cbiovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlIHtcbiAgbG9jYWxlOiBzdHJpbmd8dW5kZWZpbmVkO1xuICB0cmFuc2xhdGlvbnM6IFJlY29yZDzJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbj47XG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcztcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRoYXQgY2FuIHBhcnNlIHRoZSBjb250ZW50cyBvZiBhIHRyYW5zbGF0aW9uIGZpbGUuXG4gKlxuICogVGhlIGBjYW5QYXJzZSgpYCBtZXRob2QgY2FuIHJldHVybiBhIGhpbnQgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgYHBhcnNlKClgIG1ldGhvZCB0byBzcGVlZCB1cFxuICogcGFyc2luZy4gVGhpcyBhbGxvd3MgdGhlIHBhcnNlciB0byBkbyBzaWduaWZpY2FudCB3b3JrIHRvIGRldGVybWluZSBpZiB0aGUgZmlsZSBjYW4gYmUgcGFyc2VkXG4gKiB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSB3b3JrIHdoZW4gaXQgY29tZXMgdG8gYWN0dWFsbHkgcGFyc2luZyB0aGUgZmlsZS5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICpcbiAqIGBgYFxuICogY29uc3QgcGFyc2VyOiBUcmFuc2xhdGlvblBhcnNlciA9IGdldFBhcnNlcigpO1xuICogY29uc3QgcmVzdWx0ID0gcGFyc2VyLmNhblBhcnNlKGZpbGVQYXRoLCBjb250ZW50KTtcbiAqIGlmIChyZXN1bHQpIHtcbiAqICAgcmV0dXJuIHBhcnNlci5wYXJzZShmaWxlUGF0aCwgY29udGVudCwgcmVzdWx0KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uUGFyc2VyPEhpbnQgPSB0cnVlPiB7XG4gIC8qKlxuICAgKiBDYW4gdGhpcyBwYXJzZXIgcGFyc2UgdGhlIGdpdmVuIGZpbGU/XG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICogQHBhcmFtIGNvbnRlbnRzIFRoZSBjb250ZW50cyBvZiB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICogQHJldHVybnMgQSBoaW50LCB3aGljaCBjYW4gYmUgdXNlZCBpbiBkb2luZyB0aGUgYWN0dWFsIHBhcnNpbmcsIGlmIHRoZSBmaWxlIGNhbiBiZSBwYXJzZWQgYnlcbiAgICogdGhpcyBwYXJzZXI7IGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGNhblBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBIaW50fGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUsIGV4dHJhY3RpbmcgdGhlIHRhcmdldCBsb2NhbGUgYW5kIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IuIENoZWNrIHRoZSBgYnVuZGxlLmRpYWdub3N0aWNzYCBwcm9wZXJ0eSBmb3JcbiAgICogcG90ZW50aWFsIHBhcnNpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0cmFuc2xhdGlvbiBmaWxlLlxuICAgKiBAcGFyYW0gY29udGVudHMgVGhlIGNvbnRlbnRzIG9mIHRoZSB0cmFuc2xhdGlvbiBmaWxlLlxuICAgKiBAcGFyYW0gaGludCBBIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIHBhcnNlciB0byBzcGVlZCB1cCBwYXJzaW5nIG9mIHRoZSBmaWxlLiBUaGlzIHdpbGxcbiAgICogaGF2ZSBiZWVuIHByb3ZpZGVkIGFzIHRoZSByZXR1cm4gcmVzdWx0IGZyb20gY2FsbGluZyBgY2FuUGFyc2UoKWAuXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2xhdGlvbiBidW5kbGUgcGFyc2VkIGZyb20gdGhlIGZpbGUuXG4gICAqIEB0aHJvd3MgTm8gZXJyb3JzLiBJZiB0aGVyZSB3YXMgYSBwcm9ibGVtIHdpdGggcGFyc2luZyB0aGUgYnVuZGxlIHdpbGwgY29udGFpbiBlcnJvcnNcbiAgICogaW4gdGhlIGBkaWFnbm9zdGljc2AgcHJvcGVydHkuXG4gICAqL1xuICBwYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nLCBoaW50OiBIaW50KTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGU7XG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUsIGV4dHJhY3RpbmcgdGhlIHRhcmdldCBsb2NhbGUgYW5kIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBvdmVybG9hZCBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBHb2luZyBmb3J3YXJkIHVzZSB0aGUgSGludFxuICAgKiByZXR1cm5lZCBmcm9tIGBjYW5QYXJzZSgpYCBzbyB0aGF0IHRoaXMgbWV0aG9kIGNhbiBhdm9pZCBkdXBsaWNhdGluZyBlZmZvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICogQHBhcmFtIGNvbnRlbnRzIFRoZSBjb250ZW50cyBvZiB0aGUgdHJhbnNsYXRpb24gZmlsZS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zbGF0aW9uIGJ1bmRsZSBwYXJzZWQgZnJvbSB0aGUgZmlsZS5cbiAgICogQHRocm93cyBBbiBlcnJvciBpZiB0aGVyZSB3YXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhpcyBmaWxlLlxuICAgKi9cbiAgcGFyc2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZyk6IFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlO1xufVxuIl19

@@ -9,5 +9,52 @@ /// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils" />

*/
import { Element, Node } from '@angular/compiler';
import { Element, Node, ParseError, ParseErrorLevel, ParseSourceSpan } from '@angular/compiler';
import { Diagnostics } from '../../../diagnostics';
export declare function getAttrOrThrow(element: Element, attrName: string): string;
export declare function getAttribute(element: Element, attrName: string): string | undefined;
/**
* Parse the "contents" of an XML element.
*
* This would be equivalent to parsing the `innerHTML` string of an HTML document.
*
* @param element The element whose inner range we want to parse.
* @returns a collection of XML `Node` objects that were parsed from the element's contents.
*/
export declare function parseInnerRange(element: Element): Node[];
/**
* This "hint" object is used to pass information from `canParse()` to `parse()` for
* `TranslationParser`s that expect XML contents.
*
* This saves the `parse()` method from having to re-parse the XML.
*/
export interface XmlTranslationParserHint {
element: Element;
errors: ParseError[];
}
/**
* Can this XML be parsed for translations, given the expected `rootNodeName` and expected root node
* `attributes` that should appear in the file.
*
* @param filePath The path to the file being checked.
* @param contents The contents of the file being checked.
* @param rootNodeName The expected name of an XML root node that should exist.
* @param attributes The attributes (and their values) that should appear on the root node.
* @returns The `XmlTranslationParserHint` object for use by `TranslationParser.parse()` if the XML
* document has the expected format.
*/
export declare function canParseXml(filePath: string, contents: string, rootNodeName: string, attributes: Record<string, string>): XmlTranslationParserHint | false;
/**
* Create a predicate, which can be used by things like `Array.filter()`, that will match a named
* XML Element from a collection of XML Nodes.
*
* @param name The expected name of the element to match.
*/
export declare function isNamedElement(name: string): (node: Node) => node is Element;
/**
* Add an XML parser related message to the given `diagnostics` object.
*/
export declare function addParseDiagnostic(diagnostics: Diagnostics, sourceSpan: ParseSourceSpan, message: string, level: ParseErrorLevel): void;
/**
* Copy the formatted error message from the given `parseError` object into the given `diagnostics`
* object.
*/
export declare function addParseError(diagnostics: Diagnostics, parseError: ParseError): void;

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils", ["require", "exports", "@angular/compiler", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error"], factory);
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils", ["require", "exports", "tslib", "@angular/compiler", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error"], factory);
}

@@ -13,2 +13,3 @@ })(function (require, exports) {

Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
/**

@@ -36,2 +37,10 @@ * @license

exports.getAttribute = getAttribute;
/**
* Parse the "contents" of an XML element.
*
* This would be equivalent to parsing the `innerHTML` string of an HTML document.
*
* @param element The element whose inner range we want to parse.
* @returns a collection of XML `Node` objects that were parsed from the element's contents.
*/
function parseInnerRange(element) {

@@ -46,2 +55,6 @@ var xmlParser = new compiler_1.XmlParser();

exports.parseInnerRange = parseInnerRange;
/**
* Compute a `LexerRange` that contains all the children of the given `element`.
* @param element The element whose inner range we want to compute.
*/
function getInnerRange(element) {

@@ -57,3 +70,87 @@ var start = element.startSourceSpan.end;

}
/**
* Can this XML be parsed for translations, given the expected `rootNodeName` and expected root node
* `attributes` that should appear in the file.
*
* @param filePath The path to the file being checked.
* @param contents The contents of the file being checked.
* @param rootNodeName The expected name of an XML root node that should exist.
* @param attributes The attributes (and their values) that should appear on the root node.
* @returns The `XmlTranslationParserHint` object for use by `TranslationParser.parse()` if the XML
* document has the expected format.
*/
function canParseXml(filePath, contents, rootNodeName, attributes) {
var e_1, _a;
var xmlParser = new compiler_1.XmlParser();
var xml = xmlParser.parse(contents, filePath);
if (xml.rootNodes.length === 0 ||
xml.errors.some(function (error) { return error.level === compiler_1.ParseErrorLevel.ERROR; })) {
return false;
}
var rootElements = xml.rootNodes.filter(isNamedElement(rootNodeName));
var rootElement = rootElements[0];
if (rootElement === undefined) {
return false;
}
var _loop_1 = function (attrKey) {
var attr = rootElement.attrs.find(function (attr) { return attr.name === attrKey; });
if (attr === undefined || attr.value !== attributes[attrKey]) {
return { value: false };
}
};
try {
for (var _b = tslib_1.__values(Object.keys(attributes)), _c = _b.next(); !_c.done; _c = _b.next()) {
var attrKey = _c.value;
var state_1 = _loop_1(attrKey);
if (typeof state_1 === "object")
return state_1.value;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
if (rootElements.length > 1) {
xml.errors.push(new compiler_1.ParseError(xml.rootNodes[1].sourceSpan, 'Unexpected root node. XLIFF 1.2 files should only have a single <xliff> root node.', compiler_1.ParseErrorLevel.WARNING));
}
return { element: rootElement, errors: xml.errors };
}
exports.canParseXml = canParseXml;
/**
* Create a predicate, which can be used by things like `Array.filter()`, that will match a named
* XML Element from a collection of XML Nodes.
*
* @param name The expected name of the element to match.
*/
function isNamedElement(name) {
function predicate(node) {
return node instanceof compiler_1.Element && node.name === name;
}
return predicate;
}
exports.isNamedElement = isNamedElement;
/**
* Add an XML parser related message to the given `diagnostics` object.
*/
function addParseDiagnostic(diagnostics, sourceSpan, message, level) {
addParseError(diagnostics, new compiler_1.ParseError(sourceSpan, message, level));
}
exports.addParseDiagnostic = addParseDiagnostic;
/**
* Copy the formatted error message from the given `parseError` object into the given `diagnostics`
* object.
*/
function addParseError(diagnostics, parseError) {
if (parseError.level === compiler_1.ParseErrorLevel.ERROR) {
diagnostics.error(parseError.toString());
}
else {
diagnostics.warn(parseError.toString());
}
}
exports.addParseError = addParseError;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL3RyYW5zbGF0ZS90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9wYXJzZXJzL3RyYW5zbGF0aW9uX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQXVFO0lBQ3ZFLG1KQUFnRTtJQUVoRSxTQUFnQixjQUFjLENBQUMsT0FBZ0IsRUFBRSxRQUFnQjtRQUMvRCxJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixNQUFNLElBQUksK0NBQXFCLENBQzNCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsd0JBQXFCLFFBQVEsa0JBQWMsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQVBELHdDQU9DO0lBRUQsU0FBZ0IsWUFBWSxDQUFDLE9BQWdCLEVBQUUsUUFBZ0I7UUFDN0QsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBbkIsQ0FBbUIsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JELENBQUM7SUFIRCxvQ0FHQztJQUVELFNBQWdCLGVBQWUsQ0FBQyxPQUFnQjtRQUM5QyxJQUFNLFNBQVMsR0FBRyxJQUFJLG9CQUFTLEVBQUUsQ0FBQztRQUNsQyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUN2QixPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQ3hFLEVBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLElBQUksK0NBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQW5ELENBQW1ELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQVRELDBDQVNDO0lBRUQsU0FBUyxhQUFhLENBQUMsT0FBZ0I7UUFDckMsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGVBQWlCLENBQUMsR0FBRyxDQUFDO1FBQzVDLElBQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxhQUFlLENBQUMsS0FBSyxDQUFDO1FBQzFDLE9BQU87WUFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07U0FDbkIsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0VsZW1lbnQsIExleGVyUmFuZ2UsIE5vZGUsIFhtbFBhcnNlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtUcmFuc2xhdGlvblBhcnNlRXJyb3J9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VfZXJyb3InO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0ck9yVGhyb3coZWxlbWVudDogRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGF0dHJWYWx1ZSA9IGdldEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyTmFtZSk7XG4gIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBUcmFuc2xhdGlvblBhcnNlRXJyb3IoXG4gICAgICAgIGVsZW1lbnQuc291cmNlU3BhbiwgYE1pc3NpbmcgcmVxdWlyZWQgXCIke2F0dHJOYW1lfVwiIGF0dHJpYnV0ZTpgKTtcbiAgfVxuICByZXR1cm4gYXR0clZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmd8dW5kZWZpbmVkIHtcbiAgY29uc3QgYXR0ciA9IGVsZW1lbnQuYXR0cnMuZmluZChhID0+IGEubmFtZSA9PT0gYXR0ck5hbWUpO1xuICByZXR1cm4gYXR0ciAhPT0gdW5kZWZpbmVkID8gYXR0ci52YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW5uZXJSYW5nZShlbGVtZW50OiBFbGVtZW50KTogTm9kZVtdIHtcbiAgY29uc3QgeG1sUGFyc2VyID0gbmV3IFhtbFBhcnNlcigpO1xuICBjb25zdCB4bWwgPSB4bWxQYXJzZXIucGFyc2UoXG4gICAgICBlbGVtZW50LnNvdXJjZVNwYW4uc3RhcnQuZmlsZS5jb250ZW50LCBlbGVtZW50LnNvdXJjZVNwYW4uc3RhcnQuZmlsZS51cmwsXG4gICAgICB7dG9rZW5pemVFeHBhbnNpb25Gb3JtczogdHJ1ZSwgcmFuZ2U6IGdldElubmVyUmFuZ2UoZWxlbWVudCl9KTtcbiAgaWYgKHhtbC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgeG1sLmVycm9ycy5tYXAoZSA9PiBuZXcgVHJhbnNsYXRpb25QYXJzZUVycm9yKGUuc3BhbiwgZS5tc2cpLnRvU3RyaW5nKCkpLmpvaW4oJ1xcbicpO1xuICB9XG4gIHJldHVybiB4bWwucm9vdE5vZGVzO1xufVxuXG5mdW5jdGlvbiBnZXRJbm5lclJhbmdlKGVsZW1lbnQ6IEVsZW1lbnQpOiBMZXhlclJhbmdlIHtcbiAgY29uc3Qgc3RhcnQgPSBlbGVtZW50LnN0YXJ0U291cmNlU3BhbiAhLmVuZDtcbiAgY29uc3QgZW5kID0gZWxlbWVudC5lbmRTb3VyY2VTcGFuICEuc3RhcnQ7XG4gIHJldHVybiB7XG4gICAgc3RhcnRQb3M6IHN0YXJ0Lm9mZnNldCxcbiAgICBzdGFydExpbmU6IHN0YXJ0LmxpbmUsXG4gICAgc3RhcnRDb2w6IHN0YXJ0LmNvbCxcbiAgICBlbmRQb3M6IGVuZC5vZmZzZXQsXG4gIH07XG59Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25fdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL3RyYW5zbGF0ZS90cmFuc2xhdGlvbl9maWxlcy90cmFuc2xhdGlvbl9wYXJzZXJzL3RyYW5zbGF0aW9uX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILDhDQUFxSDtJQUVySCxtSkFBZ0U7SUFFaEUsU0FBZ0IsY0FBYyxDQUFDLE9BQWdCLEVBQUUsUUFBZ0I7UUFDL0QsSUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDM0IsTUFBTSxJQUFJLCtDQUFxQixDQUMzQixPQUFPLENBQUMsVUFBVSxFQUFFLHdCQUFxQixRQUFRLGtCQUFjLENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFQRCx3Q0FPQztJQUVELFNBQWdCLFlBQVksQ0FBQyxPQUFnQixFQUFFLFFBQWdCO1FBQzdELElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQW5CLENBQW1CLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0lBSEQsb0NBR0M7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWdCO1FBQzlDLElBQU0sU0FBUyxHQUFHLElBQUksb0JBQVMsRUFBRSxDQUFDO1FBQ2xDLElBQU0sR0FBRyxHQUFHLFNB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RUFDM0Isb0ZBQW9GLEVBQ3BGLDBCQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMvQjtRQUVELE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFDLENBQUM7SUFDcEQsQ0FBQztJQWhDRCxrQ0FnQ0M7SUFFRDs7Ozs7T0FLRztJQUNILFNBQWdCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pDLFNBQVMsU0FBUyxDQUFDLElBQVU7WUFDM0IsT0FBTyxJQUFJLFlBQVksa0JBQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUxELHdDQUtDO0lBRUQ7O09BRUc7SUFDSCxTQUFnQixrQkFBa0IsQ0FDOUIsV0FBd0IsRUFBRSxVQUEyQixFQUFFLE9BQWUsRUFDdEUsS0FBc0I7UUFDeEIsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLHFCQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFKRCxnREFJQztJQUVEOzs7T0FHRztJQUNILFNBQWdCLGFBQWEsQ0FBQyxXQUF3QixFQUFFLFVBQXNCO1FBQzVFLElBQUksVUFBVSxDQUFDLEtBQUssS0FBSywwQkFBZSxDQUFDLEtBQUssRUFBRTtZQUM5QyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtFbGVtZW50LCBMZXhlclJhbmdlLCBOb2RlLCBQYXJzZUVycm9yLCBQYXJzZUVycm9yTGV2ZWwsIFBhcnNlU291cmNlU3BhbiwgWG1sUGFyc2VyfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0RpYWdub3N0aWNzfSBmcm9tICcuLi8uLi8uLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge1RyYW5zbGF0aW9uUGFyc2VFcnJvcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9wYXJzZV9lcnJvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdHRyT3JUaHJvdyhlbGVtZW50OiBFbGVtZW50LCBhdHRyTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYXR0clZhbHVlID0gZ2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJOYW1lKTtcbiAgaWYgKGF0dHJWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFRyYW5zbGF0aW9uUGFyc2VFcnJvcihcbiAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuLCBgTWlzc2luZyByZXF1aXJlZCBcIiR7YXR0ck5hbWV9XCIgYXR0cmlidXRlOmApO1xuICB9XG4gIHJldHVybiBhdHRyVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxlbWVudDogRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZ3x1bmRlZmluZWQge1xuICBjb25zdCBhdHRyID0gZWxlbWVudC5hdHRycy5maW5kKGEgPT4gYS5uYW1lID09PSBhdHRyTmFtZSk7XG4gIHJldHVybiBhdHRyICE9PSB1bmRlZmluZWQgPyBhdHRyLnZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBcImNvbnRlbnRzXCIgb2YgYW4gWE1MIGVsZW1lbnQuXG4gKlxuICogVGhpcyB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIHBhcnNpbmcgdGhlIGBpbm5lckhUTUxgIHN0cmluZyBvZiBhbiBIVE1MIGRvY3VtZW50LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHdob3NlIGlubmVyIHJhbmdlIHdlIHdhbnQgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBhIGNvbGxlY3Rpb24gb2YgWE1MIGBOb2RlYCBvYmplY3RzIHRoYXQgd2VyZSBwYXJzZWQgZnJvbSB0aGUgZWxlbWVudCdzIGNvbnRlbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbm5lclJhbmdlKGVsZW1lbnQ6IEVsZW1lbnQpOiBOb2RlW10ge1xuICBjb25zdCB4bWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKCk7XG4gIGNvbnN0IHhtbCA9IHhtbFBhcnNlci5wYXJzZShcbiAgICAgIGVsZW1lbnQuc291cmNlU3Bhbi5zdGFydC5maWxlLmNvbnRlbnQsIGVsZW1lbnQuc291cmNlU3Bhbi5zdGFydC5maWxlLnVybCxcbiAgICAgIHt0b2tlbml6ZUV4cGFuc2lvbkZvcm1zOiB0cnVlLCByYW5nZTogZ2V0SW5uZXJSYW5nZShlbGVtZW50KX0pO1xuICBpZiAoeG1sLmVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyB4bWwuZXJyb3JzLm1hcChlID0+IG5ldyBUcmFuc2xhdGlvblBhcnNlRXJyb3IoZS5zcGFuLCBlLm1zZykudG9TdHJpbmcoKSkuam9pbignXFxuJyk7XG4gIH1cbiAgcmV0dXJuIHhtbC5yb290Tm9kZXM7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBhIGBMZXhlclJhbmdlYCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIGBlbGVtZW50YC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHdob3NlIGlubmVyIHJhbmdlIHdlIHdhbnQgdG8gY29tcHV0ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5uZXJSYW5nZShlbGVtZW50OiBFbGVtZW50KTogTGV4ZXJSYW5nZSB7XG4gIGNvbnN0IHN0YXJ0ID0gZWxlbWVudC5zdGFydFNvdXJjZVNwYW4gIS5lbmQ7XG4gIGNvbnN0IGVuZCA9IGVsZW1lbnQuZW5kU291cmNlU3BhbiAhLnN0YXJ0O1xuICByZXR1cm4ge1xuICAgIHN0YXJ0UG9zOiBzdGFydC5vZmZzZXQsXG4gICAgc3RhcnRMaW5lOiBzdGFydC5saW5lLFxuICAgIHN0YXJ0Q29sOiBzdGFydC5jb2wsXG4gICAgZW5kUG9zOiBlbmQub2Zmc2V0LFxuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgXCJoaW50XCIgb2JqZWN0IGlzIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBmcm9tIGBjYW5QYXJzZSgpYCB0byBgcGFyc2UoKWAgZm9yXG4gKiBgVHJhbnNsYXRpb25QYXJzZXJgcyB0aGF0IGV4cGVjdCBYTUwgY29udGVudHMuXG4gKlxuICogVGhpcyBzYXZlcyB0aGUgYHBhcnNlKClgIG1ldGhvZCBmcm9tIGhhdmluZyB0byByZS1wYXJzZSB0aGUgWE1MLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFhtbFRyYW5zbGF0aW9uUGFyc2VySGludCB7XG4gIGVsZW1lbnQ6IEVsZW1lbnQ7XG4gIGVycm9yczogUGFyc2VFcnJvcltdO1xufVxuXG4vKipcbiAqIENhbiB0aGlzIFhNTCBiZSBwYXJzZWQgZm9yIHRyYW5zbGF0aW9ucywgZ2l2ZW4gdGhlIGV4cGVjdGVkIGByb290Tm9kZU5hbWVgIGFuZCBleHBlY3RlZCByb290IG5vZGVcbiAqIGBhdHRyaWJ1dGVzYCB0aGF0IHNob3VsZCBhcHBlYXIgaW4gdGhlIGZpbGUuXG4gKlxuICogQHBhcmFtIGZpbGVQYXRoIFRoZSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gY29udGVudHMgVGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gcm9vdE5vZGVOYW1lIFRoZSBleHBlY3RlZCBuYW1lIG9mIGFuIFhNTCByb290IG5vZGUgdGhhdCBzaG91bGQgZXhpc3QuXG4gKiBAcGFyYW0gYXR0cmlidXRlcyBUaGUgYXR0cmlidXRlcyAoYW5kIHRoZWlyIHZhbHVlcykgdGhhdCBzaG91bGQgYXBwZWFyIG9uIHRoZSByb290IG5vZGUuXG4gKiBAcmV0dXJucyBUaGUgYFhtbFRyYW5zbGF0aW9uUGFyc2VySGludGAgb2JqZWN0IGZvciB1c2UgYnkgYFRyYW5zbGF0aW9uUGFyc2VyLnBhcnNlKClgIGlmIHRoZSBYTUxcbiAqIGRvY3VtZW50IGhhcyB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuUGFyc2VYbWwoXG4gICAgZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZywgcm9vdE5vZGVOYW1lOiBzdHJpbmcsXG4gICAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFhtbFRyYW5zbGF0aW9uUGFyc2VySGludHxmYWxzZSB7XG4gIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoKTtcbiAgY29uc3QgeG1sID0geG1sUGFyc2VyLnBhcnNlKGNvbnRlbnRzLCBmaWxlUGF0aCk7XG5cbiAgaWYgKHhtbC5yb290Tm9kZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICB4bWwuZXJyb3JzLnNvbWUoZXJyb3IgPT4gZXJyb3IubGV2ZWwgPT09IFBhcnNlRXJyb3JMZXZlbC5FUlJPUikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByb290RWxlbWVudHMgPSB4bWwucm9vdE5vZGVzLmZpbHRlcihpc05hbWVkRWxlbWVudChyb290Tm9kZU5hbWUpKTtcbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSByb290RWxlbWVudHNbMF07XG4gIGlmIChyb290RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBhdHRyS2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XG4gICAgY29uc3QgYXR0ciA9IHJvb3RFbGVtZW50LmF0dHJzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IGF0dHJLZXkpO1xuICAgIGlmIChhdHRyID09PSB1bmRlZmluZWQgfHwgYXR0ci52YWx1ZSAhPT0gYXR0cmlidXRlc1thdHRyS2V5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyb290RWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgIHhtbC5lcnJvcnMucHVzaChuZXcgUGFyc2VFcnJvcihcbiAgICAgICAgeG1sLnJvb3ROb2Rlc1sxXS5zb3VyY2VTcGFuLFxuICAgICAgICAnVW5leHBlY3RlZCByb290IG5vZGUuIFhMSUZGIDEuMiBmaWxlcyBzaG91bGQgb25seSBoYXZlIGEgc2luZ2xlIDx4bGlmZj4gcm9vdCBub2RlLicsXG4gICAgICAgIFBhcnNlRXJyb3JMZXZlbC5XQVJOSU5HKSk7XG4gIH1cblxuICByZXR1cm4ge2VsZW1lbnQ6IHJvb3RFbGVtZW50LCBlcnJvcnM6IHhtbC5lcnJvcnN9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHByZWRpY2F0ZSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdGhpbmdzIGxpa2UgYEFycmF5LmZpbHRlcigpYCwgdGhhdCB3aWxsIG1hdGNoIGEgbmFtZWRcbiAqIFhNTCBFbGVtZW50IGZyb20gYSBjb2xsZWN0aW9uIG9mIFhNTCBOb2Rlcy5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgZXhwZWN0ZWQgbmFtZSBvZiB0aGUgZWxlbWVudCB0byBtYXRjaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZWRFbGVtZW50KG5hbWU6IHN0cmluZyk6IChub2RlOiBOb2RlKSA9PiBub2RlIGlzIEVsZW1lbnQge1xuICBmdW5jdGlvbiBwcmVkaWNhdGUobm9kZTogTm9kZSk6IG5vZGUgaXMgRWxlbWVudCB7XG4gICAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIG5vZGUubmFtZSA9PT0gbmFtZTtcbiAgfVxuICByZXR1cm4gcHJlZGljYXRlO1xufVxuXG4vKipcbiAqIEFkZCBhbiBYTUwgcGFyc2VyIHJlbGF0ZWQgbWVzc2FnZSB0byB0aGUgZ2l2ZW4gYGRpYWdub3N0aWNzYCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNzLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBsZXZlbDogUGFyc2VFcnJvckxldmVsKTogdm9pZCB7XG4gIGFkZFBhcnNlRXJyb3IoZGlhZ25vc3RpY3MsIG5ldyBQYXJzZUVycm9yKHNvdXJjZVNwYW4sIG1lc3NhZ2UsIGxldmVsKSk7XG59XG5cbi8qKlxuICogQ29weSB0aGUgZm9ybWF0dGVkIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgZ2l2ZW4gYHBhcnNlRXJyb3JgIG9iamVjdCBpbnRvIHRoZSBnaXZlbiBgZGlhZ25vc3RpY3NgXG4gKiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXJzZUVycm9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcywgcGFyc2VFcnJvcjogUGFyc2VFcnJvcik6IHZvaWQge1xuICBpZiAocGFyc2VFcnJvci5sZXZlbCA9PT0gUGFyc2VFcnJvckxldmVsLkVSUk9SKSB7XG4gICAgZGlhZ25vc3RpY3MuZXJyb3IocGFyc2VFcnJvci50b1N0cmluZygpKTtcbiAgfSBlbHNlIHtcbiAgICBkaWFnbm9zdGljcy53YXJuKHBhcnNlRXJyb3IudG9TdHJpbmcoKSk7XG4gIH1cbn1cbiJdfQ==
/// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser" />
import { ParsedTranslationBundle, TranslationParser } from './translation_parser';
import { XmlTranslationParserHint } from './translation_utils';
/**

@@ -10,5 +11,7 @@ * A translation parser that can load XLIFF 1.2 files.

*/
export declare class Xliff1TranslationParser implements TranslationParser {
canParse(filePath: string, contents: string): boolean;
parse(filePath: string, contents: string): ParsedTranslationBundle;
export declare class Xliff1TranslationParser implements TranslationParser<XmlTranslationParserHint> {
canParse(filePath: string, contents: string): XmlTranslationParserHint | false;
parse(filePath: string, contents: string, hint?: XmlTranslationParserHint): ParsedTranslationBundle;
private extractBundle;
private extractBundleDeprecated;
}

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "path", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "@angular/localize/src/tools/src/diagnostics", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
}

@@ -22,9 +22,7 @@ })(function (require, exports) {

var compiler_1 = require("@angular/compiler");
var path_1 = require("path");
var diagnostics_1 = require("@angular/localize/src/tools/src/diagnostics");
var base_visitor_1 = require("@angular/localize/src/tools/src/translate/translation_files/base_visitor");
var message_serializer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer");
var target_message_renderer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer");
var translation_parse_error_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error");
var translation_utils_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils");
var XLIFF_1_2_NS_REGEX = /xmlns="urn:oasis:names:tc:xliff:document:1.2"/;
/**

@@ -41,11 +39,64 @@ * A translation parser that can load XLIFF 1.2 files.

Xliff1TranslationParser.prototype.canParse = function (filePath, contents) {
return (path_1.extname(filePath) === '.xlf') && XLIFF_1_2_NS_REGEX.test(contents);
return translation_utils_1.canParseXml(filePath, contents, 'xliff', { version: '1.2' });
};
Xliff1TranslationParser.prototype.parse = function (filePath, contents) {
var xmlParser = new compiler_1.XmlParser();
var xml = xmlParser.parse(contents, filePath);
var bundle = XliffFileElementVisitor.extractBundle(xml.rootNodes);
if (bundle === undefined) {
Xliff1TranslationParser.prototype.parse = function (filePath, contents, hint) {
if (hint) {
return this.extractBundle(hint);
}
else {
return this.extractBundleDeprecated(filePath, contents);
}
};
Xliff1TranslationParser.prototype.extractBundle = function (_a) {
var e_1, _b;
var element = _a.element, errors = _a.errors;
var diagnostics = new diagnostics_1.Diagnostics();
errors.forEach(function (e) { return translation_utils_1.addParseError(diagnostics, e); });
if (element.children.length === 0) {
translation_utils_1.addParseDiagnostic(diagnostics, element.sourceSpan, 'Missing expected <file> element', compiler_1.ParseErrorLevel.WARNING);
return { locale: undefined, translations: {}, diagnostics: diagnostics };
}
var files = element.children.filter(translation_utils_1.isNamedElement('file'));
if (files.length === 0) {
translation_utils_1.addParseDiagnostic(diagnostics, element.sourceSpan, 'No <file> elements found in <xliff>', compiler_1.ParseErrorLevel.WARNING);
}
else if (files.length > 1) {
translation_utils_1.addParseDiagnostic(diagnostics, files[1].sourceSpan, 'More than one <file> element found in <xliff>', compiler_1.ParseErrorLevel.WARNING);
}
var bundle = { locale: undefined, translations: {}, diagnostics: diagnostics };
var translationVisitor = new XliffTranslationVisitor();
var localesFound = new Set();
try {
for (var files_1 = tslib_1.__values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
var file = files_1_1.value;
var locale = translation_utils_1.getAttribute(file, 'target-language');
if (locale !== undefined) {
localesFound.add(locale);
bundle.locale = locale;
}
compiler_1.visitAll(translationVisitor, file.children, bundle);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (files_1_1 && !files_1_1.done && (_b = files_1.return)) _b.call(files_1);
}
finally { if (e_1) throw e_1.error; }
}
if (localesFound.size > 1) {
translation_utils_1.addParseDiagnostic(diagnostics, element.sourceSpan, "More than one locale found in translation file: " + JSON.stringify(Array.from(localesFound)) + ". Using \"" + bundle.locale + "\"", compiler_1.ParseErrorLevel.WARNING);
}
return bundle;
};
Xliff1TranslationParser.prototype.extractBundleDeprecated = function (filePath, contents) {
var hint = this.canParse(filePath, contents);
if (!hint) {
throw new Error("Unable to parse \"" + filePath + "\" as XLIFF 1.2 format.");
}
var bundle = this.extractBundle(hint);
if (bundle.diagnostics.hasErrors) {
var message = bundle.diagnostics.formatDiagnostics("Failed to parse \"" + filePath + "\" as XLIFF 1.2 format");
throw new Error(message);
}
return bundle;

@@ -61,17 +112,6 @@ };

}
XliffFileElementVisitor.extractBundle = function (xliff) {
var visitor = new this();
compiler_1.visitAll(visitor, xliff);
return visitor.bundle;
};
XliffFileElementVisitor.prototype.visitElement = function (element) {
if (element.name === 'file') {
this.bundle = {
locale: translation_utils_1.getAttribute(element, 'target-language'),
translations: XliffTranslationVisitor.extractTranslations(element)
};
XliffFileElementVisitor.prototype.visitElement = function (fileElement) {
if (fileElement.name === 'file') {
return { fileElement: fileElement, locale: translation_utils_1.getAttribute(fileElement, 'target-language') };
}
else {
return compiler_1.visitAll(this, element.children);
}
};

@@ -83,27 +123,43 @@ return XliffFileElementVisitor;

function XliffTranslationVisitor() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.translations = {};
return _this;
return _super !== null && _super.apply(this, arguments) || this;
}
XliffTranslationVisitor.extractTranslations = function (file) {
var visitor = new this();
compiler_1.visitAll(visitor, file.children);
return visitor.translations;
};
XliffTranslationVisitor.prototype.visitElement = function (element) {
XliffTranslationVisitor.prototype.visitElement = function (element, bundle) {
if (element.name === 'trans-unit') {
var id = translation_utils_1.getAttrOrThrow(element, 'id');
if (this.translations[id] !== undefined) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, "Duplicated translations for message \"" + id + "\"");
}
var targetMessage = element.children.find(isTargetElement);
if (targetMessage === undefined) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, 'Missing required <target> element');
}
this.translations[id] = serializeTargetMessage(targetMessage);
this.visitTransUnitElement(element, bundle);
}
else {
return compiler_1.visitAll(this, element.children);
compiler_1.visitAll(this, element.children, bundle);
}
};
XliffTranslationVisitor.prototype.visitTransUnitElement = function (element, bundle) {
// Error if no `id` attribute
var id = translation_utils_1.getAttribute(element, 'id');
if (id === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Missing required \"id\" attribute on <trans-unit> element.", compiler_1.ParseErrorLevel.ERROR);
return;
}
// Error if there is already a translation with the same id
if (bundle.translations[id] !== undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Duplicated translations for message \"" + id + "\"", compiler_1.ParseErrorLevel.ERROR);
return;
}
// Error if there is no `<target>` child element
var targetMessage = element.children.find(translation_utils_1.isNamedElement('target'));
if (targetMessage === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, 'Missing required <target> element', compiler_1.ParseErrorLevel.ERROR);
return;
}
try {
bundle.translations[id] = serializeTargetMessage(targetMessage);
}
catch (e) {
// Capture any errors from serialize the target message
if (e.span && e.msg && e.level) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, e.span, e.msg, e.level);
}
else {
throw e;
}
}
};
return XliffTranslationVisitor;

@@ -118,6 +174,3 @@ }(base_visitor_1.BaseVisitor));

}
function isTargetElement(node) {
return node instanceof compiler_1.Element && node.name === 'target';
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxpZmYxX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveGxpZmYxX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBcUU7SUFFckUsNkJBQTZCO0lBRTdCLHlHQUE0QztJQUM1QywySUFBOEU7SUFDOUUscUpBQXVGO0lBRXZGLG1KQUFnRTtJQUVoRSx1SUFBa0Y7SUFFbEYsSUFBTSxrQkFBa0IsR0FBRywrQ0FBK0MsQ0FBQztJQUUzRTs7Ozs7O09BTUc7SUFDSDtRQUFBO1FBY0EsQ0FBQztRQWJDLDBDQUFRLEdBQVIsVUFBUyxRQUFnQixFQUFFLFFBQWdCO1lBQ3pDLE9BQU8sQ0FBQyxjQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFFRCx1Q0FBSyxHQUFMLFVBQU0sUUFBZ0IsRUFBRSxRQUFnQjtZQUN0QyxJQUFNLFNBQVMsR0FBRyxJQUFJLG9CQUFTLEVBQUUsQ0FBQztZQUNsQyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRCxJQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBb0IsUUFBUSw0QkFBd0IsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsT0FBTyxNQUFNLENB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SUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFVO1FBQ2pDLE9BQU8sSUFBSSxZQUFZLGtCQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RWxlbWVudCwgTm9kZSwgWG1sUGFyc2VyLCB2aXNpdEFsbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHvJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHtleHRuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtCYXNlVmlzaXRvcn0gZnJvbSAnLi4vYmFzZV92aXNpdG9yJztcbmltcG9ydCB7TWVzc2FnZVNlcmlhbGl6ZXJ9IGZyb20gJy4uL21lc3NhZ2Vfc2VyaWFsaXphdGlvbi9tZXNzYWdlX3NlcmlhbGl6ZXInO1xuaW1wb3J0IHtUYXJnZXRNZXNzYWdlUmVuZGVyZXJ9IGZyb20gJy4uL21lc3NhZ2Vfc2VyaWFsaXphdGlvbi90YXJnZXRfbWVzc2FnZV9yZW5kZXJlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRpb25QYXJzZUVycm9yfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlX2Vycm9yJztcbmltcG9ydCB7UGFyc2VkVHJhbnNsYXRpb25CdW5kbGUsIFRyYW5zbGF0aW9uUGFyc2VyfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlcic7XG5pbXBvcnQge2dldEF0dHJPclRocm93LCBnZXRBdHRyaWJ1dGUsIHBhcnNlSW5uZXJSYW5nZX0gZnJvbSAnLi90cmFuc2xhdGlvbl91dGlscyc7XG5cbmNvbnN0IFhMSUZGXzFfMl9OU19SRUdFWCA9IC94bWxucz1cInVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjJcIi87XG5cbi8qKlxuICogQSB0cmFuc2xhdGlvbiBwYXJzZXIgdGhhdCBjYW4gbG9hZCBYTElGRiAxLjIgZmlsZXMuXG4gKlxuICogaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcveGxpZmYvdjEuMi9vcy94bGlmZi1jb3JlLmh0bWxcbiAqIGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3hsaWZmL3YxLjIveGxpZmYtcHJvZmlsZS1odG1sL3hsaWZmLXByb2ZpbGUtaHRtbC0xLjIuaHRtbFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFhsaWZmMVRyYW5zbGF0aW9uUGFyc2VyIGltcGxlbWVudHMgVHJhbnNsYXRpb25QYXJzZXIge1xuICBjYW5QYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChleHRuYW1lKGZpbGVQYXRoKSA9PT0gJy54bGYnKSAmJiBYTElGRl8xXzJfTlNfUkVHRVgudGVzdChjb250ZW50cyk7XG4gIH1cblxuICBwYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoKTtcbiAgICBjb25zdCB4bWwgPSB4bWxQYXJzZXIucGFyc2UoY29udGVudHMsIGZpbGVQYXRoKTtcbiAgICBjb25zdCBidW5kbGUgPSBYbGlmZkZpbGVFbGVtZW50VmlzaXRvci5leHRyYWN0QnVuZGxlKHhtbC5yb290Tm9kZXMpO1xuICAgIGlmIChidW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgXCIke2ZpbGVQYXRofVwiIGFzIFhMSUZGIDEuMiBmb3JtYXQuYCk7XG4gICAgfVxuICAgIHJldHVybiBidW5kbGU7XG4gIH1cbn1cblxuY2xhc3MgWGxpZmZGaWxlRWxlbWVudFZpc2l0b3IgZXh0ZW5kcyBCYXNlVmlzaXRvciB7XG4gIHByaXZhdGUgYnVuZGxlOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZXx1bmRlZmluZWQ7XG5cbiAgc3RhdGljIGV4dHJhY3RCdW5kbGUoeGxpZmY6IE5vZGVbXSk6IFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlfHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmlzaXRvciA9IG5ldyB0aGlzKCk7XG4gICAgdmlzaXRBbGwodmlzaXRvciwgeGxpZmYpO1xuICAgIHJldHVybiB2aXNpdG9yLmJ1bmRsZTtcbiAgfVxuXG4gIHZpc2l0RWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogYW55IHtcbiAgICBpZiAoZWxlbWVudC5uYW1lID09PSAnZmlsZScpIHtcbiAgICAgIHRoaXMuYnVuZGxlID0ge1xuICAgICAgICBsb2NhbGU6IGdldEF0dHJpYnV0ZShlbGVtZW50LCAndGFyZ2V0LWxhbmd1YWdlJyksXG4gICAgICAgIHRyYW5zbGF0aW9uczogWGxpZmZUcmFuc2xhdGlvblZpc2l0b3IuZXh0cmFjdFRyYW5zbGF0aW9ucyhlbGVtZW50KVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZpc2l0QWxsKHRoaXMsIGVsZW1lbnQuY2hpbGRyZW4pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBYbGlmZlRyYW5zbGF0aW9uVmlzaXRvciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IFJlY29yZDzJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbj4gPSB7fTtcblxuICBzdGF0aWMgZXh0cmFjdFRyYW5zbGF0aW9ucyhmaWxlOiBFbGVtZW50KTogUmVjb3JkPHN0cmluZywgybVQYXJzZWRUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IHZpc2l0b3IgPSBuZXcgdGhpcygpO1xuICAgIHZpc2l0QWxsKHZpc2l0b3IsIGZpbGUuY2hpbGRyZW4pO1xuICAgIHJldHVybiB2aXNpdG9yLnRyYW5zbGF0aW9ucztcbiAgfVxuXG4gIHZpc2l0RWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogYW55IHtcbiAgICBpZiAoZWxlbWVudC5uYW1lID09PSAndHJhbnMtdW5pdCcpIHtcbiAgICAgIGNvbnN0IGlkID0gZ2V0QXR0ck9yVGhyb3coZWxlbWVudCwgJ2lkJyk7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbnNbaWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRyYW5zbGF0aW9uUGFyc2VFcnJvcihcbiAgICAgICAgICAgIGVsZW1lbnQuc291cmNlU3BhbiwgYER1cGxpY2F0ZWQgdHJhbnNsYXRpb25zIGZvciBtZXNzYWdlIFwiJHtpZH1cImApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXRNZXNzYWdlID0gZWxlbWVudC5jaGlsZHJlbi5maW5kKGlzVGFyZ2V0RWxlbWVudCk7XG4gICAgICBpZiAodGFyZ2V0TWVzc2FnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBUcmFuc2xhdGlvblBhcnNlRXJyb3IoZWxlbWVudC5zb3VyY2VTcGFuLCAnTWlzc2luZyByZXF1aXJlZCA8dGFyZ2V0PiBlbGVtZW50Jyk7XG4gICAgICB9XG4gICAgICB0aGlzLnRyYW5zbGF0aW9uc1tpZF0gPSBzZXJpYWxpemVUYXJnZXRNZXNzYWdlKHRhcmdldE1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmlzaXRBbGwodGhpcywgZWxlbWVudC5jaGlsZHJlbik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVRhcmdldE1lc3NhZ2Uoc291cmNlOiBFbGVtZW50KTogybVQYXJzZWRUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgTWVzc2FnZVNlcmlhbGl6ZXIobmV3IFRhcmdldE1lc3NhZ2VSZW5kZXJlcigpLCB7XG4gICAgaW5saW5lRWxlbWVudHM6IFsnZycsICdieCcsICdleCcsICdicHQnLCAnZXB0JywgJ3BoJywgJ2l0JywgJ21yayddLFxuICAgIHBsYWNlaG9sZGVyOiB7ZWxlbWVudE5hbWU6ICd4JywgbmFtZUF0dHJpYnV0ZTogJ2lkJ31cbiAgfSk7XG4gIHJldHVybiBzZXJpYWxpemVyLnNlcmlhbGl6ZShwYXJzZUlubmVyUmFuZ2Uoc291cmNlKSk7XG59XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0RWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBFbGVtZW50IHtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIG5vZGUubmFtZSA9PT0gJ3RhcmdldCc7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxpZmYxX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveGxpZmYxX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBcUU7SUFHckUsMkVBQWlEO0lBQ2pELHlHQUE0QztJQUM1QywySUFBOEU7SUFDOUUscUpBQXVGO0lBR3ZGLHVJQUE0SjtJQUU1Sjs7Ozs7O09BTUc7SUFDSDtRQUFBO1FBdUVBLENBQUM7UUF0RUMsMENBQVEsR0FBUixVQUFTLFFBQWdCLEVBQUUsUUFBZ0I7WUFDekMsT0FBTywrQkFBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELHVDQUFLLEdBQUwsVUFBTSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsSUFBK0I7WUFFdkUsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUM7UUFFTywrQ0FBYSxHQUFyQixVQUFzQixFQUEyQzs7Z0JBQTFDLG9CQUFPLEVBQUUsa0JBQU07WUFDcEMsSUFBTSxXQUFXLEdBQUcsSUFBSSx5QkFBVyxFQUFFLENBQUM7WUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGlDQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxF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SyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQ2xFLFdBQVcsRUFBRSxFQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBQztTQUNyRCxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUNBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0VsZW1lbnQsIFBhcnNlRXJyb3JMZXZlbCwgdmlzaXRBbGx9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7ybVQYXJzZWRUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuXG5pbXBvcnQge0RpYWdub3N0aWNzfSBmcm9tICcuLi8uLi8uLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge0Jhc2VWaXNpdG9yfSBmcm9tICcuLi9iYXNlX3Zpc2l0b3InO1xuaW1wb3J0IHtNZXNzYWdlU2VyaWFsaXplcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL21lc3NhZ2Vfc2VyaWFsaXplcic7XG5pbXBvcnQge1RhcmdldE1lc3NhZ2VSZW5kZXJlcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL3RhcmdldF9tZXNzYWdlX3JlbmRlcmVyJztcblxuaW1wb3J0IHtQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSwgVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7WG1sVHJhbnNsYXRpb25QYXJzZXJIaW50LCBhZGRQYXJzZURpYWdub3N0aWMsIGFkZFBhcnNlRXJyb3IsIGNhblBhcnNlWG1sLCBnZXRBdHRyaWJ1dGUsIGlzTmFtZWRFbGVtZW50LCBwYXJzZUlubmVyUmFuZ2V9IGZyb20gJy4vdHJhbnNsYXRpb25fdXRpbHMnO1xuXG4vKipcbiAqIEEgdHJhbnNsYXRpb24gcGFyc2VyIHRoYXQgY2FuIGxvYWQgWExJRkYgMS4yIGZpbGVzLlxuICpcbiAqIGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3hsaWZmL3YxLjIvb3MveGxpZmYtY29yZS5odG1sXG4gKiBodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy94bGlmZi92MS4yL3hsaWZmLXByb2ZpbGUtaHRtbC94bGlmZi1wcm9maWxlLWh0bWwtMS4yLmh0bWxcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBYbGlmZjFUcmFuc2xhdGlvblBhcnNlciBpbXBsZW1lbnRzIFRyYW5zbGF0aW9uUGFyc2VyPFhtbFRyYW5zbGF0aW9uUGFyc2VySGludD4ge1xuICBjYW5QYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogWG1sVHJhbnNsYXRpb25QYXJzZXJIaW50fGZhbHNlIHtcbiAgICByZXR1cm4gY2FuUGFyc2VYbWwoZmlsZVBhdGgsIGNvbnRlbnRzLCAneGxpZmYnLCB7dmVyc2lvbjogJzEuMid9KTtcbiAgfVxuXG4gIHBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcsIGhpbnQ/OiBYbWxUcmFuc2xhdGlvblBhcnNlckhpbnQpOlxuICAgICAgUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGlmIChoaW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0QnVuZGxlKGhpbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0QnVuZGxlRGVwcmVjYXRlZChmaWxlUGF0aCwgY29udGVudHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdEJ1bmRsZSh7ZWxlbWVudCwgZXJyb3JzfTogWG1sVHJhbnNsYXRpb25QYXJzZXJIaW50KTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGNvbnN0IGRpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG4gICAgZXJyb3JzLmZvckVhY2goZSA9PiBhZGRQYXJzZUVycm9yKGRpYWdub3N0aWNzLCBlKSk7XG5cbiAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIGFkZFBhcnNlRGlhZ25vc3RpYyhcbiAgICAgICAgICBkaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLCAnTWlzc2luZyBleHBlY3RlZCA8ZmlsZT4gZWxlbWVudCcsXG4gICAgICAgICAgUGFyc2VFcnJvckxldmVsLldBUk5JTkcpO1xuICAgICAgcmV0dXJuIHtsb2NhbGU6IHVuZGVmaW5lZCwgdHJhbnNsYXRpb25zOiB7fSwgZGlhZ25vc3RpY3N9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVzID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoaXNOYW1lZEVsZW1lbnQoJ2ZpbGUnKSk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sICdObyA8ZmlsZT4gZWxlbWVudHMgZm91bmQgaW4gPHhsaWZmPicsXG4gICAgICAgICAgUGFyc2VFcnJvckxldmVsLldBUk5JTkcpO1xuICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGRpYWdub3N0aWNzLCBmaWxlc1sxXS5zb3VyY2VTcGFuLCAnTW9yZSB0aGFuIG9uZSA8ZmlsZT4gZWxlbWVudCBmb3VuZCBpbiA8eGxpZmY+JyxcbiAgICAgICAgICBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVuZGxlOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSA9IHtsb2NhbGU6IHVuZGVmaW5lZCwgdHJhbnNsYXRpb25zOiB7fSwgZGlhZ25vc3RpY3N9O1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uVmlzaXRvciA9IG5ldyBYbGlmZlRyYW5zbGF0aW9uVmlzaXRvcigpO1xuICAgIGNvbnN0IGxvY2FsZXNGb3VuZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgbG9jYWxlID0gZ2V0QXR0cmlidXRlKGZpbGUsICd0YXJnZXQtbGFuZ3VhZ2UnKTtcbiAgICAgIGlmIChsb2NhbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2NhbGVzRm91bmQuYWRkKGxvY2FsZSk7XG4gICAgICAgIGJ1bmRsZS5sb2NhbGUgPSBsb2NhbGU7XG4gICAgICB9XG4gICAgICB2aXNpdEFsbCh0cmFuc2xhdGlvblZpc2l0b3IsIGZpbGUuY2hpbGRyZW4sIGJ1bmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsZXNGb3VuZC5zaXplID4gMSkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sXG4gICAgICAgICAgYE1vcmUgdGhhbiBvbmUgbG9jYWxlIGZvdW5kIGluIHRyYW5zbGF0aW9uIGZpbGU6ICR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShsb2NhbGVzRm91bmQpKX0uIFVzaW5nIFwiJHtidW5kbGUubG9jYWxlfVwiYCxcbiAgICAgICAgICBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1bmRsZTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdEJ1bmRsZURlcHJlY2F0ZWQoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgIGNvbnN0IGhpbnQgPSB0aGlzLmNhblBhcnNlKGZpbGVQYXRoLCBjb250ZW50cyk7XG4gICAgaWYgKCFoaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBcIiR7ZmlsZVBhdGh9XCIgYXMgWExJRkYgMS4yIGZvcm1hdC5gKTtcbiAgICB9XG4gICAgY29uc3QgYnVuZGxlID0gdGhpcy5leHRyYWN0QnVuZGxlKGhpbnQpO1xuICAgIGlmIChidW5kbGUuZGlhZ25vc3RpY3MuaGFzRXJyb3JzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICBidW5kbGUuZGlhZ25vc3RpY3MuZm9ybWF0RGlhZ25vc3RpY3MoYEZhaWxlZCB0byBwYXJzZSBcIiR7ZmlsZVBhdGh9XCIgYXMgWExJRkYgMS4yIGZvcm1hdGApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gYnVuZGxlO1xuICB9XG59XG5cbmNsYXNzIFhsaWZmRmlsZUVsZW1lbnRWaXNpdG9yIGV4dGVuZHMgQmFzZVZpc2l0b3Ige1xuICB2aXNpdEVsZW1lbnQoZmlsZUVsZW1lbnQ6IEVsZW1lbnQpOiBhbnkge1xuICAgIGlmIChmaWxlRWxlbWVudC5uYW1lID09PSAnZmlsZScpIHtcbiAgICAgIHJldHVybiB7ZmlsZUVsZW1lbnQsIGxvY2FsZTogZ2V0QXR0cmlidXRlKGZpbGVFbGVtZW50LCAndGFyZ2V0LWxhbmd1YWdlJyl9O1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBYbGlmZlRyYW5zbGF0aW9uVmlzaXRvciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgdmlzaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudC5uYW1lID09PSAndHJhbnMtdW5pdCcpIHtcbiAgICAgIHRoaXMudmlzaXRUcmFuc1VuaXRFbGVtZW50KGVsZW1lbnQsIGJ1bmRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpc2l0QWxsKHRoaXMsIGVsZW1lbnQuY2hpbGRyZW4sIGJ1bmRsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2aXNpdFRyYW5zVW5pdEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCwgYnVuZGxlOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSk6IHZvaWQge1xuICAgIC8vIEVycm9yIGlmIG5vIGBpZGAgYXR0cmlidXRlXG4gICAgY29uc3QgaWQgPSBnZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2lkJyk7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFkZFBhcnNlRGlhZ25vc3RpYyhcbiAgICAgICAgICBidW5kbGUuZGlhZ25vc3RpY3MsIGVsZW1lbnQuc291cmNlU3BhbixcbiAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBcImlkXCIgYXR0cmlidXRlIG9uIDx0cmFucy11bml0PiBlbGVtZW50LmAsIFBhcnNlRXJyb3JMZXZlbC5FUlJPUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRXJyb3IgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRyYW5zbGF0aW9uIHdpdGggdGhlIHNhbWUgaWRcbiAgICBpZiAoYnVuZGxlLnRyYW5zbGF0aW9uc1tpZF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLCBgRHVwbGljYXRlZCB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgXCIke2lkfVwiYCxcbiAgICAgICAgICBQYXJzZUVycm9yTGV2ZWwuRVJST1IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEVycm9yIGlmIHRoZXJlIGlzIG5vIGA8dGFyZ2V0PmAgY2hpbGQgZWxlbWVudFxuICAgIGNvbnN0IHRhcmdldE1lc3NhZ2UgPSBlbGVtZW50LmNoaWxkcmVuLmZpbmQoaXNOYW1lZEVsZW1lbnQoJ3RhcmdldCcpKTtcbiAgICBpZiAodGFyZ2V0TWVzc2FnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgICAgICAgYnVuZGxlLmRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sICdNaXNzaW5nIHJlcXVpcmVkIDx0YXJnZXQ+IGVsZW1lbnQnLFxuICAgICAgICAgIFBhcnNlRXJyb3JMZXZlbC5FUlJPUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGJ1bmRsZS50cmFuc2xhdGlvbnNbaWRdID0gc2VyaWFsaXplVGFyZ2V0TWVzc2FnZSh0YXJnZXRNZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBDYXB0dXJlIGFueSBlcnJvcnMgZnJvbSBzZXJpYWxpemUgdGhlIHRhcmdldCBtZXNzYWdlXG4gICAgICBpZiAoZS5zcGFuICYmIGUubXNnICYmIGUubGV2ZWwpIHtcbiAgICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKGJ1bmRsZS5kaWFnbm9zdGljcywgZS5zcGFuLCBlLm1zZywgZS5sZXZlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVUYXJnZXRNZXNzYWdlKHNvdXJjZTogRWxlbWVudCk6IMm1UGFyc2VkVHJhbnNsYXRpb24ge1xuICBjb25zdCBzZXJpYWxpemVyID0gbmV3IE1lc3NhZ2VTZXJpYWxpemVyKG5ldyBUYXJnZXRNZXNzYWdlUmVuZGVyZXIoKSwge1xuICAgIGlubGluZUVsZW1lbnRzOiBbJ2cnLCAnYngnLCAnZXgnLCAnYnB0JywgJ2VwdCcsICdwaCcsICdpdCcsICdtcmsnXSxcbiAgICBwbGFjZWhvbGRlcjoge2VsZW1lbnROYW1lOiAneCcsIG5hbWVBdHRyaWJ1dGU6ICdpZCd9XG4gIH0pO1xuICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUocGFyc2VJbm5lclJhbmdlKHNvdXJjZSkpO1xufVxuIl19
/// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser" />
import { ParsedTranslationBundle, TranslationParser } from './translation_parser';
import { XmlTranslationParserHint } from './translation_utils';
/**

@@ -9,5 +10,7 @@ * A translation parser that can load translations from XLIFF 2 files.

*/
export declare class Xliff2TranslationParser implements TranslationParser {
canParse(filePath: string, contents: string): boolean;
parse(filePath: string, contents: string): ParsedTranslationBundle;
export declare class Xliff2TranslationParser implements TranslationParser<XmlTranslationParserHint> {
canParse(filePath: string, contents: string): XmlTranslationParserHint | false;
parse(filePath: string, contents: string, hint?: XmlTranslationParserHint): ParsedTranslationBundle;
private extractBundle;
private extractBundleDeprecated;
}

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "path", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "@angular/localize/src/tools/src/diagnostics", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
}

@@ -22,9 +22,7 @@ })(function (require, exports) {

var compiler_1 = require("@angular/compiler");
var path_1 = require("path");
var diagnostics_1 = require("@angular/localize/src/tools/src/diagnostics");
var base_visitor_1 = require("@angular/localize/src/tools/src/translate/translation_files/base_visitor");
var message_serializer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer");
var target_message_renderer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer");
var translation_parse_error_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error");
var translation_utils_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils");
var XLIFF_2_0_NS_REGEX = /xmlns="urn:oasis:names:tc:xliff:document:2.0"/;
/**

@@ -40,11 +38,52 @@ * A translation parser that can load translations from XLIFF 2 files.

Xliff2TranslationParser.prototype.canParse = function (filePath, contents) {
return (path_1.extname(filePath) === '.xlf') && XLIFF_2_0_NS_REGEX.test(contents);
return translation_utils_1.canParseXml(filePath, contents, 'xliff', { version: '2.0' });
};
Xliff2TranslationParser.prototype.parse = function (filePath, contents) {
var xmlParser = new compiler_1.XmlParser();
var xml = xmlParser.parse(contents, filePath);
var bundle = Xliff2TranslationBundleVisitor.extractBundle(xml.rootNodes);
if (bundle === undefined) {
Xliff2TranslationParser.prototype.parse = function (filePath, contents, hint) {
if (hint) {
return this.extractBundle(hint);
}
else {
return this.extractBundleDeprecated(filePath, contents);
}
};
Xliff2TranslationParser.prototype.extractBundle = function (_a) {
var e_1, _b;
var element = _a.element, errors = _a.errors;
var diagnostics = new diagnostics_1.Diagnostics();
errors.forEach(function (e) { return translation_utils_1.addParseError(diagnostics, e); });
var locale = translation_utils_1.getAttribute(element, 'trgLang');
var files = element.children.filter(isFileElement);
if (files.length === 0) {
translation_utils_1.addParseDiagnostic(diagnostics, element.sourceSpan, 'No <file> elements found in <xliff>', compiler_1.ParseErrorLevel.WARNING);
}
else if (files.length > 1) {
translation_utils_1.addParseDiagnostic(diagnostics, files[1].sourceSpan, 'More than one <file> element found in <xliff>', compiler_1.ParseErrorLevel.WARNING);
}
var bundle = { locale: locale, translations: {}, diagnostics: diagnostics };
var translationVisitor = new Xliff2TranslationVisitor();
try {
for (var files_1 = tslib_1.__values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
var file = files_1_1.value;
compiler_1.visitAll(translationVisitor, file.children, { bundle: bundle });
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (files_1_1 && !files_1_1.done && (_b = files_1.return)) _b.call(files_1);
}
finally { if (e_1) throw e_1.error; }
}
return bundle;
};
Xliff2TranslationParser.prototype.extractBundleDeprecated = function (filePath, contents) {
var hint = this.canParse(filePath, contents);
if (!hint) {
throw new Error("Unable to parse \"" + filePath + "\" as XLIFF 2.0 format.");
}
var bundle = this.extractBundle(hint);
if (bundle.diagnostics.hasErrors) {
var message = bundle.diagnostics.formatDiagnostics("Failed to parse \"" + filePath + "\" as XLIFF 2.0 format");
throw new Error(message);
}
return bundle;

@@ -55,69 +94,59 @@ };

exports.Xliff2TranslationParser = Xliff2TranslationParser;
var Xliff2TranslationBundleVisitor = /** @class */ (function (_super) {
tslib_1.__extends(Xliff2TranslationBundleVisitor, _super);
function Xliff2TranslationBundleVisitor() {
var Xliff2TranslationVisitor = /** @class */ (function (_super) {
tslib_1.__extends(Xliff2TranslationVisitor, _super);
function Xliff2TranslationVisitor() {
return _super !== null && _super.apply(this, arguments) || this;
}
Xliff2TranslationBundleVisitor.extractBundle = function (xliff) {
var visitor = new this();
compiler_1.visitAll(visitor, xliff, {});
return visitor.bundle;
};
Xliff2TranslationBundleVisitor.prototype.visitElement = function (element, _a) {
var parsedLocale = _a.parsedLocale;
if (element.name === 'xliff') {
parsedLocale = translation_utils_1.getAttribute(element, 'trgLang');
return compiler_1.visitAll(this, element.children, { parsedLocale: parsedLocale });
Xliff2TranslationVisitor.prototype.visitElement = function (element, _a) {
var bundle = _a.bundle, unit = _a.unit;
if (element.name === 'unit') {
this.visitUnitElement(element, bundle);
}
else if (element.name === 'file') {
this.bundle = {
locale: parsedLocale,
translations: Xliff2TranslationVisitor.extractTranslations(element)
};
else if (element.name === 'segment') {
this.visitSegmentElement(element, bundle, unit);
}
else {
return compiler_1.visitAll(this, element.children, { parsedLocale: parsedLocale });
compiler_1.visitAll(this, element.children, { bundle: bundle, unit: unit });
}
};
return Xliff2TranslationBundleVisitor;
}(base_visitor_1.BaseVisitor));
var Xliff2TranslationVisitor = /** @class */ (function (_super) {
tslib_1.__extends(Xliff2TranslationVisitor, _super);
function Xliff2TranslationVisitor() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.translations = {};
return _this;
}
Xliff2TranslationVisitor.extractTranslations = function (file) {
var visitor = new this();
compiler_1.visitAll(visitor, file.children);
return visitor.translations;
Xliff2TranslationVisitor.prototype.visitUnitElement = function (element, bundle) {
// Error if no `id` attribute
var externalId = translation_utils_1.getAttribute(element, 'id');
if (externalId === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Missing required \"id\" attribute on <trans-unit> element.", compiler_1.ParseErrorLevel.ERROR);
return;
}
// Error if there is already a translation with the same id
if (bundle.translations[externalId] !== undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Duplicated translations for message \"" + externalId + "\"", compiler_1.ParseErrorLevel.ERROR);
return;
}
compiler_1.visitAll(this, element.children, { bundle: bundle, unit: externalId });
};
Xliff2TranslationVisitor.prototype.visitElement = function (element, context) {
if (element.name === 'unit') {
var externalId = translation_utils_1.getAttrOrThrow(element, 'id');
if (this.translations[externalId] !== undefined) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, "Duplicated translations for message \"" + externalId + "\"");
}
compiler_1.visitAll(this, element.children, { unit: externalId });
Xliff2TranslationVisitor.prototype.visitSegmentElement = function (element, bundle, unit) {
// A `<segment>` element must be below a `<unit>` element
if (unit === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, 'Invalid <segment> element: should be a child of a <unit> element.', compiler_1.ParseErrorLevel.ERROR);
return;
}
else if (element.name === 'segment') {
assertTranslationUnit(element, context);
var targetMessage = element.children.find(isTargetElement);
if (targetMessage === undefined) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, 'Missing required <target> element');
var targetMessage = element.children.find(translation_utils_1.isNamedElement('target'));
if (targetMessage === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, 'Missing required <target> element', compiler_1.ParseErrorLevel.ERROR);
return;
}
try {
bundle.translations[unit] = serializeTargetMessage(targetMessage);
}
catch (e) {
// Capture any errors from serialize the target message
if (e.span && e.msg && e.level) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, e.span, e.msg, e.level);
}
this.translations[context.unit] = serializeTargetMessage(targetMessage);
else {
throw e;
}
}
else {
return compiler_1.visitAll(this, element.children);
}
};
return Xliff2TranslationVisitor;
}(base_visitor_1.BaseVisitor));
function assertTranslationUnit(segment, context) {
if (context === undefined || context.unit === undefined) {
throw new translation_parse_error_1.TranslationParseError(segment.sourceSpan, 'Invalid <segment> element: should be a child of a <unit> element.');
}
}
function serializeTargetMessage(source) {

@@ -131,6 +160,6 @@ var serializer = new message_serializer_1.MessageSerializer(new target_message_renderer_1.TargetMessageRenderer(), {

}
function isTargetElement(node) {
return node instanceof compiler_1.Element && node.name === 'target';
function isFileElement(node) {
return node instanceof compiler_1.Element && node.name === 'file';
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxpZmYyX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveGxpZmYyX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBcUU7SUFFckUsNkJBQTZCO0lBRTdCLHlHQUE0QztJQUM1QywySUFBOEU7SUFDOUUscUpBQXVGO0lBRXZGLG1KQUFnRTtJQUVoRSx1SUFBa0Y7SUFFbEYsSUFBTSxrQkFBa0IsR0FBRywrQ0FBK0MsQ0FBQztJQUUzRTs7Ozs7T0FLRztJQUNIO1FBQUE7UUFjQSxDQUFDO1FBYkMsMENBQVEsR0FBUixVQUFTLFFBQWdCLEVBQUUsUUFBZ0I7WUFDekMsT0FBTyxDQUFDLGNBQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUVELHVDQUFLLEdBQUwsVUFBTSxRQUFnQixFQUFFLFFBQWdCO1lBQ3RDLElBQU0sU0FBUyxHQUFHLElBQUksb0JBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELElBQU0sTUFBTSxHQUFHLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0UsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUFvQixRQUFRLDRCQUF3QixDQUFDLENBQUM7YUFDdkU7WUFDRCxPQUFPLE1BQU0sQ0FB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QUMsQ0FBQzthQUN6QztRQUNILENBQUM7UUFDSCwrQkFBQztJQUFELENBQUMsQUE1QkQsQ0FBdUMsMEJBQVcsR0E0QmpEO0lBRUQsU0FBUyxxQkFBcUIsQ0FBQyxPQUFnQixFQUFFLE9BQVk7UUFDM0QsSUFBSSxPQUFPLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3ZELE1BQU0sSUFBSSwrQ0FBcUIsQ0FDM0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxtRUFBbUUsQ0FBQyxDQUFDO1NBQzlGO0lBQ0gsQ0FBQztJQUVELFNBQVMsc0JBQXNCLENBQUMsTUFBZTtRQUM3QyxJQUFNLFVBQVUsR0FBRyxJQUFJLHNDQUFpQixDQUFDLElBQUksK0NBQXFCLEVBQUUsRUFBRTtZQUNwRSxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztZQUNyRCxXQUFXLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBQztZQUMvRSxvQkFBb0IsRUFDaEIsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBQztTQUNoRixDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsbUNBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFVO1FBQ2pDLE9BQU8sSUFBSSxZQUFZLGtCQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RWxlbWVudCwgTm9kZSwgWG1sUGFyc2VyLCB2aXNpdEFsbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHvJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHtleHRuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtCYXNlVmlzaXRvcn0gZnJvbSAnLi4vYmFzZV92aXNpdG9yJztcbmltcG9ydCB7TWVzc2FnZVNlcmlhbGl6ZXJ9IGZyb20gJy4uL21lc3NhZ2Vfc2VyaWFsaXphdGlvbi9tZXNzYWdlX3NlcmlhbGl6ZXInO1xuaW1wb3J0IHtUYXJnZXRNZXNzYWdlUmVuZGVyZXJ9IGZyb20gJy4uL21lc3NhZ2Vfc2VyaWFsaXphdGlvbi90YXJnZXRfbWVzc2FnZV9yZW5kZXJlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRpb25QYXJzZUVycm9yfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlX2Vycm9yJztcbmltcG9ydCB7UGFyc2VkVHJhbnNsYXRpb25CdW5kbGUsIFRyYW5zbGF0aW9uUGFyc2VyfSBmcm9tICcuL3RyYW5zbGF0aW9uX3BhcnNlcic7XG5pbXBvcnQge2dldEF0dHJPclRocm93LCBnZXRBdHRyaWJ1dGUsIHBhcnNlSW5uZXJSYW5nZX0gZnJvbSAnLi90cmFuc2xhdGlvbl91dGlscyc7XG5cbmNvbnN0IFhMSUZGXzJfMF9OU19SRUdFWCA9IC94bWxucz1cInVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoyLjBcIi87XG5cbi8qKlxuICogQSB0cmFuc2xhdGlvbiBwYXJzZXIgdGhhdCBjYW4gbG9hZCB0cmFuc2xhdGlvbnMgZnJvbSBYTElGRiAyIGZpbGVzLlxuICpcbiAqIGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3hsaWZmL3hsaWZmLWNvcmUvdjIuMC9vcy94bGlmZi1jb3JlLXYyLjAtb3MuaHRtbFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFhsaWZmMlRyYW5zbGF0aW9uUGFyc2VyIGltcGxlbWVudHMgVHJhbnNsYXRpb25QYXJzZXIge1xuICBjYW5QYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChleHRuYW1lKGZpbGVQYXRoKSA9PT0gJy54bGYnKSAmJiBYTElGRl8yXzBfTlNfUkVHRVgudGVzdChjb250ZW50cyk7XG4gIH1cblxuICBwYXJzZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoKTtcbiAgICBjb25zdCB4bWwgPSB4bWxQYXJzZXIucGFyc2UoY29udGVudHMsIGZpbGVQYXRoKTtcbiAgICBjb25zdCBidW5kbGUgPSBYbGlmZjJUcmFuc2xhdGlvbkJ1bmRsZVZpc2l0b3IuZXh0cmFjdEJ1bmRsZSh4bWwucm9vdE5vZGVzKTtcbiAgICBpZiAoYnVuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIFwiJHtmaWxlUGF0aH1cIiBhcyBYTElGRiAyLjAgZm9ybWF0LmApO1xuICAgIH1cbiAgICByZXR1cm4gYnVuZGxlO1xuICB9XG59XG5cbmludGVyZmFjZSBCdW5kbGVWaXNpdG9yQ29udGV4dCB7XG4gIHBhcnNlZExvY2FsZT86IHN0cmluZztcbn1cblxuY2xhc3MgWGxpZmYyVHJhbnNsYXRpb25CdW5kbGVWaXNpdG9yIGV4dGVuZHMgQmFzZVZpc2l0b3Ige1xuICBwcml2YXRlIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGV8dW5kZWZpbmVkO1xuXG4gIHN0YXRpYyBleHRyYWN0QnVuZGxlKHhsaWZmOiBOb2RlW10pOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZXx1bmRlZmluZWQge1xuICAgIGNvbnN0IHZpc2l0b3IgPSBuZXcgdGhpcygpO1xuICAgIHZpc2l0QWxsKHZpc2l0b3IsIHhsaWZmLCB7fSk7XG4gICAgcmV0dXJuIHZpc2l0b3IuYnVuZGxlO1xuICB9XG5cbiAgdmlzaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIHtwYXJzZWRMb2NhbGV9OiBCdW5kbGVWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgaWYgKGVsZW1lbnQubmFtZSA9PT0gJ3hsaWZmJykge1xuICAgICAgcGFyc2VkTG9jYWxlID0gZ2V0QXR0cmlidXRlKGVsZW1lbnQsICd0cmdMYW5nJyk7XG4gICAgICByZXR1cm4gdmlzaXRBbGwodGhpcywgZWxlbWVudC5jaGlsZHJlbiwge3BhcnNlZExvY2FsZX0pO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5uYW1lID09PSAnZmlsZScpIHtcbiAgICAgIHRoaXMuYnVuZGxlID0ge1xuICAgICAgICBsb2NhbGU6IHBhcnNlZExvY2FsZSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiBYbGlmZjJUcmFuc2xhdGlvblZpc2l0b3IuZXh0cmFjdFRyYW5zbGF0aW9ucyhlbGVtZW50KVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZpc2l0QWxsKHRoaXMsIGVsZW1lbnQuY2hpbGRyZW4sIHtwYXJzZWRMb2NhbGV9KTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgWGxpZmYyVHJhbnNsYXRpb25WaXNpdG9yIGV4dGVuZHMgQmFzZVZpc2l0b3Ige1xuICBwcml2YXRlIHRyYW5zbGF0aW9uczogUmVjb3JkPMm1TWVzc2FnZUlkLCDJtVBhcnNlZFRyYW5zbGF0aW9uPiA9IHt9O1xuXG4gIHN0YXRpYyBleHRyYWN0VHJhbnNsYXRpb25zKGZpbGU6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCDJtVBhcnNlZFRyYW5zbGF0aW9uPiB7XG4gICAgY29uc3QgdmlzaXRvciA9IG5ldyB0aGlzKCk7XG4gICAgdmlzaXRBbGwodmlzaXRvciwgZmlsZS5jaGlsZHJlbik7XG4gICAgcmV0dXJuIHZpc2l0b3IudHJhbnNsYXRpb25zO1xuICB9XG5cbiAgdmlzaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgaWYgKGVsZW1lbnQubmFtZSA9PT0gJ3VuaXQnKSB7XG4gICAgICBjb25zdCBleHRlcm5hbElkID0gZ2V0QXR0ck9yVGhyb3coZWxlbWVudCwgJ2lkJyk7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbnNbZXh0ZXJuYWxJZF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHJhbnNsYXRpb25QYXJzZUVycm9yKFxuICAgICAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuLCBgRHVwbGljYXRlZCB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgXCIke2V4dGVybmFsSWR9XCJgKTtcbiAgICAgIH1cbiAgICAgIHZpc2l0QWxsKHRoaXMsIGVsZW1lbnQuY2hpbGRyZW4sIHt1bml0OiBleHRlcm5hbElkfSk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50Lm5hbWUgPT09ICdzZWdtZW50Jykge1xuICAgICAgYXNzZXJ0VHJhbnNsYXRpb25Vbml0KGVsZW1lbnQsIGNvbnRleHQpO1xuICAgICAgY29uc3QgdGFyZ2V0TWVzc2FnZSA9IGVsZW1lbnQuY2hpbGRyZW4uZmluZChpc1RhcmdldEVsZW1lbnQpO1xuICAgICAgaWYgKHRhcmdldE1lc3NhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHJhbnNsYXRpb25QYXJzZUVycm9yKGVsZW1lbnQuc291cmNlU3BhbiwgJ01pc3NpbmcgcmVxdWlyZWQgPHRhcmdldD4gZWxlbWVudCcpO1xuICAgICAgfVxuICAgICAgdGhpcy50cmFuc2xhdGlvbnNbY29udGV4dC51bml0XSA9IHNlcmlhbGl6ZVRhcmdldE1lc3NhZ2UodGFyZ2V0TWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2aXNpdEFsbCh0aGlzLCBlbGVtZW50LmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VHJhbnNsYXRpb25Vbml0KHNlZ21lbnQ6IEVsZW1lbnQsIGNvbnRleHQ6IGFueSkge1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkIHx8IGNvbnRleHQudW5pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFRyYW5zbGF0aW9uUGFyc2VFcnJvcihcbiAgICAgICAgc2VnbWVudC5zb3VyY2VTcGFuLCAnSW52YWxpZCA8c2VnbWVudD4gZWxlbWVudDogc2hvdWxkIGJlIGEgY2hpbGQgb2YgYSA8dW5pdD4gZWxlbWVudC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVUYXJnZXRNZXNzYWdlKHNvdXJjZTogRWxlbWVudCk6IMm1UGFyc2VkVHJhbnNsYXRpb24ge1xuICBjb25zdCBzZXJpYWxpemVyID0gbmV3IE1lc3NhZ2VTZXJpYWxpemVyKG5ldyBUYXJnZXRNZXNzYWdlUmVuZGVyZXIoKSwge1xuICAgIGlubGluZUVsZW1lbnRzOiBbJ2NwJywgJ3NjJywgJ2VjJywgJ21yaycsICdzbScsICdlbSddLFxuICAgIHBsYWNlaG9sZGVyOiB7ZWxlbWVudE5hbWU6ICdwaCcsIG5hbWVBdHRyaWJ1dGU6ICdlcXVpdicsIGJvZHlBdHRyaWJ1dGU6ICdkaXNwJ30sXG4gICAgcGxhY2Vob2xkZXJDb250YWluZXI6XG4gICAgICAgIHtlbGVtZW50TmFtZTogJ3BjJywgc3RhcnRBdHRyaWJ1dGU6ICdlcXVpdlN0YXJ0JywgZW5kQXR0cmlidXRlOiAnZXF1aXZFbmQnfVxuICB9KTtcbiAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHBhcnNlSW5uZXJSYW5nZShzb3VyY2UpKTtcbn1cblxuZnVuY3Rpb24gaXNUYXJnZXRFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS5uYW1lID09PSAndGFyZ2V0Jztcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxpZmYyX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveGxpZmYyX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBMkU7SUFHM0UsMkVBQWlEO0lBQ2pELHlHQUE0QztJQUM1QywySUFBOEU7SUFDOUUscUpBQXVGO0lBR3ZGLHVJQUE0SjtJQUU1Sjs7Ozs7T0FLRztJQUNIO1FBQUE7UUFtREEsQ0FBQztRQWxEQywwQ0FBUSxHQUFSLFVBQVMsUUFBZ0IsRUFBRSxRQUFnQjtZQUN6QyxPQUFPLCtCQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsdUNBQUssR0FBTCxVQUFNLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxJQUErQjtZQUV2RSxJQUFJLElBQUksRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0gsQ0FBQztRQUVPLCtDQUFhLEdBQXJCLFVBQXNCLEVBQTJDOztnQkFBMUMsb0JBQU8sRUFBRSxrQkFBTTtZQUNwQyxJQUFNLFdBQVcsR0FBRyxJQUFJLHlCQUFXLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsaUNBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVB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IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RWxlbWVudCwgTm9kZSwgUGFyc2VFcnJvckxldmVsLCB2aXNpdEFsbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHvJtVBhcnNlZFRyYW5zbGF0aW9ufSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZSc7XG5cbmltcG9ydCB7RGlhZ25vc3RpY3N9IGZyb20gJy4uLy4uLy4uL2RpYWdub3N0aWNzJztcbmltcG9ydCB7QmFzZVZpc2l0b3J9IGZyb20gJy4uL2Jhc2VfdmlzaXRvcic7XG5pbXBvcnQge01lc3NhZ2VTZXJpYWxpemVyfSBmcm9tICcuLi9tZXNzYWdlX3NlcmlhbGl6YXRpb24vbWVzc2FnZV9zZXJpYWxpemVyJztcbmltcG9ydCB7VGFyZ2V0TWVzc2FnZVJlbmRlcmVyfSBmcm9tICcuLi9tZXNzYWdlX3NlcmlhbGl6YXRpb24vdGFyZ2V0X21lc3NhZ2VfcmVuZGVyZXInO1xuXG5pbXBvcnQge1BhcnNlZFRyYW5zbGF0aW9uQnVuZGxlLCBUcmFuc2xhdGlvblBhcnNlcn0gZnJvbSAnLi90cmFuc2xhdGlvbl9wYXJzZXInO1xuaW1wb3J0IHtYbWxUcmFuc2xhdGlvblBhcnNlckhpbnQsIGFkZFBhcnNlRGlhZ25vc3RpYywgYWRkUGFyc2VFcnJvciwgY2FuUGFyc2VYbWwsIGdldEF0dHJpYnV0ZSwgaXNOYW1lZEVsZW1lbnQsIHBhcnNlSW5uZXJSYW5nZX0gZnJvbSAnLi90cmFuc2xhdGlvbl91dGlscyc7XG5cbi8qKlxuICogQSB0cmFuc2xhdGlvbiBwYXJzZXIgdGhhdCBjYW4gbG9hZCB0cmFuc2xhdGlvbnMgZnJvbSBYTElGRiAyIGZpbGVzLlxuICpcbiAqIGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3hsaWZmL3hsaWZmLWNvcmUvdjIuMC9vcy94bGlmZi1jb3JlLXYyLjAtb3MuaHRtbFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFhsaWZmMlRyYW5zbGF0aW9uUGFyc2VyIGltcGxlbWVudHMgVHJhbnNsYXRpb25QYXJzZXI8WG1sVHJhbnNsYXRpb25QYXJzZXJIaW50PiB7XG4gIGNhblBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBYbWxUcmFuc2xhdGlvblBhcnNlckhpbnR8ZmFsc2Uge1xuICAgIHJldHVybiBjYW5QYXJzZVhtbChmaWxlUGF0aCwgY29udGVudHMsICd4bGlmZicsIHt2ZXJzaW9uOiAnMi4wJ30pO1xuICB9XG5cbiAgcGFyc2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZywgaGludD86IFhtbFRyYW5zbGF0aW9uUGFyc2VySGludCk6XG4gICAgICBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSB7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RCdW5kbGUoaGludCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RCdW5kbGVEZXByZWNhdGVkKGZpbGVQYXRoLCBjb250ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0QnVuZGxlKHtlbGVtZW50LCBlcnJvcnN9OiBYbWxUcmFuc2xhdGlvblBhcnNlckhpbnQpOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSB7XG4gICAgY29uc3QgZGlhZ25vc3RpY3MgPSBuZXcgRGlhZ25vc3RpY3MoKTtcbiAgICBlcnJvcnMuZm9yRWFjaChlID0+IGFkZFBhcnNlRXJyb3IoZGlhZ25vc3RpY3MsIGUpKTtcblxuICAgIGNvbnN0IGxvY2FsZSA9IGdldEF0dHJpYnV0ZShlbGVtZW50LCAndHJnTGFuZycpO1xuICAgIGNvbnN0IGZpbGVzID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoaXNGaWxlRWxlbWVudCk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sICdObyA8ZmlsZT4gZWxlbWVudHMgZm91bmQgaW4gPHhsaWZmPicsXG4gICAgICAgICAgUGFyc2VFcnJvckxldmVsLldBUk5JTkcpO1xuICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGRpYWdub3N0aWNzLCBmaWxlc1sxXS5zb3VyY2VTcGFuLCAnTW9yZSB0aGFuIG9uZSA8ZmlsZT4gZWxlbWVudCBmb3VuZCBpbiA8eGxpZmY+JyxcbiAgICAgICAgICBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVuZGxlID0ge2xvY2FsZSwgdHJhbnNsYXRpb25zOiB7fSwgZGlhZ25vc3RpY3N9O1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uVmlzaXRvciA9IG5ldyBYbGlmZjJUcmFuc2xhdGlvblZpc2l0b3IoKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIHZpc2l0QWxsKHRyYW5zbGF0aW9uVmlzaXRvciwgZmlsZS5jaGlsZHJlbiwge2J1bmRsZX0pO1xuICAgIH1cbiAgICByZXR1cm4gYnVuZGxlO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0QnVuZGxlRGVwcmVjYXRlZChmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKSB7XG4gICAgY29uc3QgaGludCA9IHRoaXMuY2FuUGFyc2UoZmlsZVBhdGgsIGNvbnRlbnRzKTtcbiAgICBpZiAoIWhpbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIFwiJHtmaWxlUGF0aH1cIiBhcyBYTElGRiAyLjAgZm9ybWF0LmApO1xuICAgIH1cbiAgICBjb25zdCBidW5kbGUgPSB0aGlzLmV4dHJhY3RCdW5kbGUoaGludCk7XG4gICAgaWYgKGJ1bmRsZS5kaWFnbm9zdGljcy5oYXNFcnJvcnMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcy5mb3JtYXREaWFnbm9zdGljcyhgRmFpbGVkIHRvIHBhcnNlIFwiJHtmaWxlUGF0aH1cIiBhcyBYTElGRiAyLjAgZm9ybWF0YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBidW5kbGU7XG4gIH1cbn1cblxuXG5pbnRlcmZhY2UgVHJhbnNsYXRpb25WaXNpdG9yQ29udGV4dCB7XG4gIHVuaXQ/OiBzdHJpbmc7XG4gIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGU7XG59XG5cbmNsYXNzIFhsaWZmMlRyYW5zbGF0aW9uVmlzaXRvciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgdmlzaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIHtidW5kbGUsIHVuaXR9OiBUcmFuc2xhdGlvblZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBpZiAoZWxlbWVudC5uYW1lID09PSAndW5pdCcpIHtcbiAgICAgIHRoaXMudmlzaXRVbml0RWxlbWVudChlbGVtZW50LCBidW5kbGUpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5uYW1lID09PSAnc2VnbWVudCcpIHtcbiAgICAgIHRoaXMudmlzaXRTZWdtZW50RWxlbWVudChlbGVtZW50LCBidW5kbGUsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpdEFsbCh0aGlzLCBlbGVtZW50LmNoaWxkcmVuLCB7YnVuZGxlLCB1bml0fSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2aXNpdFVuaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUpOiB2b2lkIHtcbiAgICAvLyBFcnJvciBpZiBubyBgaWRgIGF0dHJpYnV0ZVxuICAgIGNvbnN0IGV4dGVybmFsSWQgPSBnZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2lkJyk7XG4gICAgaWYgKGV4dGVybmFsSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkUGFyc2VEaWFnbm9zdGljKFxuICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLFxuICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIFwiaWRcIiBhdHRyaWJ1dGUgb24gPHRyYW5zLXVuaXQ+IGVsZW1lbnQuYCwgUGFyc2VFcnJvckxldmVsLkVSUk9SKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFcnJvciBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgdHJhbnNsYXRpb24gd2l0aCB0aGUgc2FtZSBpZFxuICAgIGlmIChidW5kbGUudHJhbnNsYXRpb25zW2V4dGVybmFsSWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFkZFBhcnNlRGlhZ25vc3RpYyhcbiAgICAgICAgICBidW5kbGUuZGlhZ25vc3RpY3MsIGVsZW1lbnQuc291cmNlU3BhbixcbiAgICAgICAgICBgRHVwbGljYXRlZCB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgXCIke2V4dGVybmFsSWR9XCJgLCBQYXJzZUVycm9yTGV2ZWwuRVJST1IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpc2l0QWxsKHRoaXMsIGVsZW1lbnQuY2hpbGRyZW4sIHtidW5kbGUsIHVuaXQ6IGV4dGVybmFsSWR9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmlzaXRTZWdtZW50RWxlbWVudChcbiAgICAgIGVsZW1lbnQ6IEVsZW1lbnQsIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUsIHVuaXQ6IHN0cmluZ3x1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAvLyBBIGA8c2VnbWVudD5gIGVsZW1lbnQgbXVzdCBiZSBiZWxvdyBhIGA8dW5pdD5gIGVsZW1lbnRcbiAgICBpZiAodW5pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgICAgICAgYnVuZGxlLmRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sXG4gICAgICAgICAgJ0ludmFsaWQgPHNlZ21lbnQ+IGVsZW1lbnQ6IHNob3VsZCBiZSBhIGNoaWxkIG9mIGEgPHVuaXQ+IGVsZW1lbnQuJyxcbiAgICAgICAgICBQYXJzZUVycm9yTGV2ZWwuRVJST1IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldE1lc3NhZ2UgPSBlbGVtZW50LmNoaWxkcmVuLmZpbmQoaXNOYW1lZEVsZW1lbnQoJ3RhcmdldCcpKTtcbiAgICBpZiAodGFyZ2V0TWVzc2FnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgICAgICAgYnVuZGxlLmRpYWdub3N0aWNzLCBlbGVtZW50LnNvdXJjZVNwYW4sICdNaXNzaW5nIHJlcXVpcmVkIDx0YXJnZXQ+IGVsZW1lbnQnLFxuICAgICAgICAgIFBhcnNlRXJyb3JMZXZlbC5FUlJPUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGJ1bmRsZS50cmFuc2xhdGlvbnNbdW5pdF0gPSBzZXJpYWxpemVUYXJnZXRNZXNzYWdlKHRhcmdldE1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENhcHR1cmUgYW55IGVycm9ycyBmcm9tIHNlcmlhbGl6ZSB0aGUgdGFyZ2V0IG1lc3NhZ2VcbiAgICAgIGlmIChlLnNwYW4gJiYgZS5tc2cgJiYgZS5sZXZlbCkge1xuICAgICAgICBhZGRQYXJzZURpYWdub3N0aWMoYnVuZGxlLmRpYWdub3N0aWNzLCBlLnNwYW4sIGUubXNnLCBlLmxldmVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVRhcmdldE1lc3NhZ2Uoc291cmNlOiBFbGVtZW50KTogybVQYXJzZWRUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgTWVzc2FnZVNlcmlhbGl6ZXIobmV3IFRhcmdldE1lc3NhZ2VSZW5kZXJlcigpLCB7XG4gICAgaW5saW5lRWxlbWVudHM6IFsnY3AnLCAnc2MnLCAnZWMnLCAnbXJrJywgJ3NtJywgJ2VtJ10sXG4gICAgcGxhY2Vob2xkZXI6IHtlbGVtZW50TmFtZTogJ3BoJywgbmFtZUF0dHJpYnV0ZTogJ2VxdWl2JywgYm9keUF0dHJpYnV0ZTogJ2Rpc3AnfSxcbiAgICBwbGFjZWhvbGRlckNvbnRhaW5lcjpcbiAgICAgICAge2VsZW1lbnROYW1lOiAncGMnLCBzdGFydEF0dHJpYnV0ZTogJ2VxdWl2U3RhcnQnLCBlbmRBdHRyaWJ1dGU6ICdlcXVpdkVuZCd9XG4gIH0pO1xuICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUocGFyc2VJbm5lclJhbmdlKHNvdXJjZSkpO1xufVxuXG5mdW5jdGlvbiBpc0ZpbGVFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS5uYW1lID09PSAnZmlsZSc7XG59XG4iXX0=
/// <amd-module name="@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser" />
import { Diagnostics } from '../../../diagnostics';
import { ParsedTranslationBundle, TranslationParser } from './translation_parser';
import { XmlTranslationParserHint } from './translation_utils';
/**
* A translation parser that can load XB files.
*/
export declare class XtbTranslationParser implements TranslationParser {
private diagnostics;
constructor(diagnostics: Diagnostics);
canParse(filePath: string, contents: string): boolean;
parse(filePath: string, contents: string): ParsedTranslationBundle;
export declare class XtbTranslationParser implements TranslationParser<XmlTranslationParserHint> {
canParse(filePath: string, contents: string): XmlTranslationParserHint | false;
parse(filePath: string, contents: string, hint?: XmlTranslationParserHint): ParsedTranslationBundle;
private extractBundle;
private extractBundleDeprecated;
}

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "path", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
define("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser", ["require", "exports", "tslib", "@angular/compiler", "path", "@angular/localize/src/tools/src/diagnostics", "@angular/localize/src/tools/src/translate/translation_files/base_visitor", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer", "@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer", "@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils"], factory);
}

@@ -23,6 +23,6 @@ })(function (require, exports) {

var path_1 = require("path");
var diagnostics_1 = require("@angular/localize/src/tools/src/diagnostics");
var base_visitor_1 = require("@angular/localize/src/tools/src/translate/translation_files/base_visitor");
var message_serializer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer");
var target_message_renderer_1 = require("@angular/localize/src/tools/src/translate/translation_files/message_serialization/target_message_renderer");
var translation_parse_error_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error");
var translation_utils_1 = require("@angular/localize/src/tools/src/translate/translation_files/translation_parsers/translation_utils");

@@ -33,19 +33,44 @@ /**

var XtbTranslationParser = /** @class */ (function () {
function XtbTranslationParser(diagnostics) {
this.diagnostics = diagnostics;
function XtbTranslationParser() {
}
XtbTranslationParser.prototype.canParse = function (filePath, contents) {
var extension = path_1.extname(filePath);
return (extension === '.xtb' || extension === '.xmb') &&
contents.includes('<translationbundle');
if (extension !== '.xtb' && extension !== '.xmb') {
return false;
}
return translation_utils_1.canParseXml(filePath, contents, 'translationbundle', {});
};
XtbTranslationParser.prototype.parse = function (filePath, contents) {
var xmlParser = new compiler_1.XmlParser();
var xml = xmlParser.parse(contents, filePath);
var bundle = XtbVisitor.extractBundle(this.diagnostics, xml.rootNodes);
if (bundle === undefined) {
throw new Error("Unable to parse \"" + filePath + "\" as XTB/XMB format.");
XtbTranslationParser.prototype.parse = function (filePath, contents, hint) {
if (hint) {
return this.extractBundle(hint);
}
else {
return this.extractBundleDeprecated(filePath, contents);
}
};
XtbTranslationParser.prototype.extractBundle = function (_a) {
var element = _a.element, errors = _a.errors;
var langAttr = element.attrs.find(function (attr) { return attr.name === 'lang'; });
var bundle = {
locale: langAttr && langAttr.value,
translations: {},
diagnostics: new diagnostics_1.Diagnostics()
};
errors.forEach(function (e) { return translation_utils_1.addParseError(bundle.diagnostics, e); });
var bundleVisitor = new XtbVisitor();
compiler_1.visitAll(bundleVisitor, element.children, bundle);
return bundle;
};
XtbTranslationParser.prototype.extractBundleDeprecated = function (filePath, contents) {
var hint = this.canParse(filePath, contents);
if (!hint) {
throw new Error("Unable to parse \"" + filePath + "\" as XMB/XTB format.");
}
var bundle = this.extractBundle(hint);
if (bundle.diagnostics.hasErrors) {
var message = bundle.diagnostics.formatDiagnostics("Failed to parse \"" + filePath + "\" as XMB/XTB format");
throw new Error(message);
}
return bundle;
};
return XtbTranslationParser;

@@ -56,47 +81,37 @@ }());

tslib_1.__extends(XtbVisitor, _super);
function XtbVisitor(diagnostics) {
var _this = _super.call(this) || this;
_this.diagnostics = diagnostics;
return _this;
function XtbVisitor() {
return _super !== null && _super.apply(this, arguments) || this;
}
XtbVisitor.extractBundle = function (diagnostics, messageBundles) {
var visitor = new this(diagnostics);
var bundles = compiler_1.visitAll(visitor, messageBundles, undefined);
return bundles[0];
};
XtbVisitor.prototype.visitElement = function (element, bundle) {
switch (element.name) {
case 'translationbundle':
if (bundle) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, '<translationbundle> elements can not be nested');
}
var langAttr = element.attrs.find(function (attr) { return attr.name === 'lang'; });
bundle = { locale: langAttr && langAttr.value, translations: {} };
compiler_1.visitAll(this, element.children, bundle);
return bundle;
case 'translation':
if (!bundle) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, '<translation> must be inside a <translationbundle>');
// Error if no `id` attribute
var id = translation_utils_1.getAttribute(element, 'id');
if (id === undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Missing required \"id\" attribute on <trans-unit> element.", compiler_1.ParseErrorLevel.ERROR);
return;
}
var id = translation_utils_1.getAttrOrThrow(element, 'id');
if (bundle.translations.hasOwnProperty(id)) {
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, "Duplicated translations for message \"" + id + "\"");
// Error if there is already a translation with the same id
if (bundle.translations[id] !== undefined) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Duplicated translations for message \"" + id + "\"", compiler_1.ParseErrorLevel.ERROR);
return;
}
else {
try {
bundle.translations[id] = serializeTargetMessage(element);
try {
bundle.translations[id] = serializeTargetMessage(element);
}
catch (error) {
if (typeof error === 'string') {
bundle.diagnostics.warn("Could not parse message with id \"" + id + "\" - perhaps it has an unrecognised ICU format?\n" +
error);
}
catch (error) {
if (typeof error === 'string') {
this.diagnostics.warn("Could not parse message with id \"" + id + "\" - perhaps it has an unrecognised ICU format?\n" +
error);
}
else {
throw error;
}
else if (error.span && error.msg && error.level) {
translation_utils_1.addParseDiagnostic(bundle.diagnostics, error.span, error.msg, error.level);
}
else {
throw error;
}
}
break;
default:
throw new translation_parse_error_1.TranslationParseError(element.sourceSpan, 'Unexpected tag');
translation_utils_1.addParseDiagnostic(bundle.diagnostics, element.sourceSpan, "Unexpected <" + element.name + "> tag.", compiler_1.ParseErrorLevel.ERROR);
}

@@ -111,2 +126,2 @@ };

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHRiX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveHRiX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBcUU7SUFFckUsNkJBQTZCO0lBRzdCLHlHQUE0QztJQUM1QywySUFBOEU7SUFDOUUscUpBQXVGO0lBRXZGLG1KQUFnRTtJQUVoRSx1SUFBb0U7SUFJcEU7O09BRUc7SUFDSDtRQUNFLDhCQUFvQixXQUF3QjtZQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFHLENBQUM7UUFFaEQsdUNBQVEsR0FBUixVQUFTLFFBQWdCLEVBQUUsUUFBZ0I7WUFDekMsSUFBTSxTQUFTLEdBQUcsY0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUM7Z0JBQ2pELFFBQVEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsb0NBQUssR0FBTCxVQUFNLFFBQWdCLEVBQUUsUUFBZ0I7WUFDdEMsSUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBUyxFQUFFLENBQUM7WUFDbEMsSUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEQsSUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLE1BQU0s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QUUsTUFBTSxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxtQ0FBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RWxlbWVudCwgTm9kZSwgWG1sUGFyc2VyLCB2aXNpdEFsbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHvJtVBhcnNlZFRyYW5zbGF0aW9ufSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZSc7XG5pbXBvcnQge2V4dG5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0RpYWdub3N0aWNzfSBmcm9tICcuLi8uLi8uLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge0Jhc2VWaXNpdG9yfSBmcm9tICcuLi9iYXNlX3Zpc2l0b3InO1xuaW1wb3J0IHtNZXNzYWdlU2VyaWFsaXplcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL21lc3NhZ2Vfc2VyaWFsaXplcic7XG5pbXBvcnQge1RhcmdldE1lc3NhZ2VSZW5kZXJlcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL3RhcmdldF9tZXNzYWdlX3JlbmRlcmVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGlvblBhcnNlRXJyb3J9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VfZXJyb3InO1xuaW1wb3J0IHtQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSwgVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7Z2V0QXR0ck9yVGhyb3csIHBhcnNlSW5uZXJSYW5nZX0gZnJvbSAnLi90cmFuc2xhdGlvbl91dGlscyc7XG5cblxuXG4vKipcbiAqIEEgdHJhbnNsYXRpb24gcGFyc2VyIHRoYXQgY2FuIGxvYWQgWEIgZmlsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBYdGJUcmFuc2xhdGlvblBhcnNlciBpbXBsZW1lbnRzIFRyYW5zbGF0aW9uUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFnbm9zdGljczogRGlhZ25vc3RpY3MpIHt9XG5cbiAgY2FuUGFyc2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGV4dG5hbWUoZmlsZVBhdGgpO1xuICAgIHJldHVybiAoZXh0ZW5zaW9uID09PSAnLnh0YicgfHwgZXh0ZW5zaW9uID09PSAnLnhtYicpICYmXG4gICAgICAgIGNvbnRlbnRzLmluY2x1ZGVzKCc8dHJhbnNsYXRpb25idW5kbGUnKTtcbiAgfVxuXG4gIHBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSB7XG4gICAgY29uc3QgeG1sUGFyc2VyID0gbmV3IFhtbFBhcnNlcigpO1xuICAgIGNvbnN0IHhtbCA9IHhtbFBhcnNlci5wYXJzZShjb250ZW50cywgZmlsZVBhdGgpO1xuICAgIGNvbnN0IGJ1bmRsZSA9IFh0YlZpc2l0b3IuZXh0cmFjdEJ1bmRsZSh0aGlzLmRpYWdub3N0aWNzLCB4bWwucm9vdE5vZGVzKTtcbiAgICBpZiAoYnVuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIFwiJHtmaWxlUGF0aH1cIiBhcyBYVEIvWE1CIGZvcm1hdC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1bmRsZTtcbiAgfVxufVxuXG5jbGFzcyBYdGJWaXNpdG9yIGV4dGVuZHMgQmFzZVZpc2l0b3Ige1xuICBzdGF0aWMgZXh0cmFjdEJ1bmRsZShkaWFnbm9zdGljczogRGlhZ25vc3RpY3MsIG1lc3NhZ2VCdW5kbGVzOiBOb2RlW10pOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZVxuICAgICAgfHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmlzaXRvciA9IG5ldyB0aGlzKGRpYWdub3N0aWNzKTtcbiAgICBjb25zdCBidW5kbGVzOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZVtdID0gdmlzaXRBbGwodmlzaXRvciwgbWVzc2FnZUJ1bmRsZXMsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIGJ1bmRsZXNbMF07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcykgeyBzdXBlcigpOyB9XG5cbiAgdmlzaXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGJ1bmRsZTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGV8dW5kZWZpbmVkKTogYW55IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQubmFtZSkge1xuICAgICAgY2FzZSAndHJhbnNsYXRpb25idW5kbGUnOlxuICAgICAgICBpZiAoYnVuZGxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRyYW5zbGF0aW9uUGFyc2VFcnJvcihcbiAgICAgICAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuLCAnPHRyYW5zbGF0aW9uYnVuZGxlPiBlbGVtZW50cyBjYW4gbm90IGJlIG5lc3RlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhbmdBdHRyID0gZWxlbWVudC5hdHRycy5maW5kKChhdHRyKSA9PiBhdHRyLm5hbWUgPT09ICdsYW5nJyk7XG4gICAgICAgIGJ1bmRsZSA9IHtsb2NhbGU6IGxhbmdBdHRyICYmIGxhbmdBdHRyLnZhbHVlLCB0cmFuc2xhdGlvbnM6IHt9fTtcbiAgICAgICAgdmlzaXRBbGwodGhpcywgZWxlbWVudC5jaGlsZHJlbiwgYnVuZGxlKTtcbiAgICAgICAgcmV0dXJuIGJ1bmRsZTtcblxuICAgICAgY2FzZSAndHJhbnNsYXRpb24nOlxuICAgICAgICBpZiAoIWJ1bmRsZSkge1xuICAgICAgICAgIHRocm93IG5ldyBUcmFuc2xhdGlvblBhcnNlRXJyb3IoXG4gICAgICAgICAgICAgIGVsZW1lbnQuc291cmNlU3BhbiwgJzx0cmFuc2xhdGlvbj4gbXVzdCBiZSBpbnNpZGUgYSA8dHJhbnNsYXRpb25idW5kbGU+Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWQgPSBnZXRBdHRyT3JUaHJvdyhlbGVtZW50LCAnaWQnKTtcbiAgICAgICAgaWYgKGJ1bmRsZS50cmFuc2xhdGlvbnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRyYW5zbGF0aW9uUGFyc2VFcnJvcihcbiAgICAgICAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuLCBgRHVwbGljYXRlZCB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgXCIke2lkfVwiYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJ1bmRsZS50cmFuc2xhdGlvbnNbaWRdID0gc2VyaWFsaXplVGFyZ2V0TWVzc2FnZShlbGVtZW50KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdGhpcy5kaWFnbm9zdGljcy53YXJuKFxuICAgICAgICAgICAgICAgICAgYENvdWxkIG5vdCBwYXJzZSBtZXNzYWdlIHdpdGggaWQgXCIke2lkfVwiIC0gcGVyaGFwcyBpdCBoYXMgYW4gdW5yZWNvZ25pc2VkIElDVSBmb3JtYXQ/XFxuYCArXG4gICAgICAgICAgICAgICAgICBlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUcmFuc2xhdGlvblBhcnNlRXJyb3IoZWxlbWVudC5zb3VyY2VTcGFuLCAnVW5leHBlY3RlZCB0YWcnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplVGFyZ2V0TWVzc2FnZShzb3VyY2U6IEVsZW1lbnQpOiDJtVBhcnNlZFRyYW5zbGF0aW9uIHtcbiAgY29uc3Qgc2VyaWFsaXplciA9IG5ldyBNZXNzYWdlU2VyaWFsaXplcihcbiAgICAgIG5ldyBUYXJnZXRNZXNzYWdlUmVuZGVyZXIoKSxcbiAgICAgIHtpbmxpbmVFbGVtZW50czogW10sIHBsYWNlaG9sZGVyOiB7ZWxlbWVudE5hbWU6ICdwaCcsIG5hbWVBdHRyaWJ1dGU6ICduYW1lJ319KTtcbiAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHBhcnNlSW5uZXJSYW5nZShzb3VyY2UpKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHRiX3RyYW5zbGF0aW9uX3BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0aW9uX2ZpbGVzL3RyYW5zbGF0aW9uX3BhcnNlcnMveHRiX3RyYW5zbGF0aW9uX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBcUU7SUFFckUsNkJBQTZCO0lBRTdCLDJFQUFpRDtJQUNqRCx5R0FBNEM7SUFDNUMsMklBQThFO0lBQzlFLHFKQUF1RjtJQUd2Rix1SUFBNEk7SUFHNUk7O09BRUc7SUFDSDtRQUFBO1FBNkNBLENBQUM7UUE1Q0MsdUNBQVEsR0FBUixVQUFTLFFBQWdCLEVBQUUsUUFBZ0I7WUFDekMsSUFBTSxTQUFTLEdBQUcsY0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksU0FBUyxLQUFLLE1BQU0sSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFO2dCQUNoRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTywrQkFBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELG9DQUFLLEdBQUwsVUFBTSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsSUFBK0I7WUFFdkUsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUM7UUFFTyw0Q0FBYSxHQUFyQixVQUFzQixFQUEyQztnQkFBMUMsb0JBQU8sRUFBRSxrQkFBTTtZQUNwQyxJQUFNLFFB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Q0FBQyxLQUFLLEVBQUU7NEJBQ2pELHNDQUFrQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDNUU7NkJBQU07NEJBQ0wsTUFBTSxLQUFLLENBQUM7eUJBQ2I7cUJBQ0Y7b0JBQ0QsTUFBTTtnQkFFUjtvQkFDRSxzQ0FBa0IsQ0FDZCxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsaUJBQWUsT0FBTyxDQUFDLElBQUksV0FBUSxFQUMzRSwwQkFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQTFDRCxDQUF5QiwwQkFBVyxHQTBDbkM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLE1BQWU7UUFDN0MsSUFBTSxVQUFVLEdBQUcsSUFBSSxzQ0FBaUIsQ0FDcEMsSUFBSSwrQ0FBcUIsRUFBRSxFQUMzQixFQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxtQ0FBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RWxlbWVudCwgUGFyc2VFcnJvckxldmVsLCB2aXNpdEFsbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHvJtVBhcnNlZFRyYW5zbGF0aW9ufSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZSc7XG5pbXBvcnQge2V4dG5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0RpYWdub3N0aWNzfSBmcm9tICcuLi8uLi8uLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge0Jhc2VWaXNpdG9yfSBmcm9tICcuLi9iYXNlX3Zpc2l0b3InO1xuaW1wb3J0IHtNZXNzYWdlU2VyaWFsaXplcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL21lc3NhZ2Vfc2VyaWFsaXplcic7XG5pbXBvcnQge1RhcmdldE1lc3NhZ2VSZW5kZXJlcn0gZnJvbSAnLi4vbWVzc2FnZV9zZXJpYWxpemF0aW9uL3RhcmdldF9tZXNzYWdlX3JlbmRlcmVyJztcblxuaW1wb3J0IHtQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSwgVHJhbnNsYXRpb25QYXJzZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fcGFyc2VyJztcbmltcG9ydCB7WG1sVHJhbnNsYXRpb25QYXJzZXJIaW50LCBhZGRQYXJzZURpYWdub3N0aWMsIGFkZFBhcnNlRXJyb3IsIGNhblBhcnNlWG1sLCBnZXRBdHRyaWJ1dGUsIHBhcnNlSW5uZXJSYW5nZX0gZnJvbSAnLi90cmFuc2xhdGlvbl91dGlscyc7XG5cblxuLyoqXG4gKiBBIHRyYW5zbGF0aW9uIHBhcnNlciB0aGF0IGNhbiBsb2FkIFhCIGZpbGVzLlxuICovXG5leHBvcnQgY2xhc3MgWHRiVHJhbnNsYXRpb25QYXJzZXIgaW1wbGVtZW50cyBUcmFuc2xhdGlvblBhcnNlcjxYbWxUcmFuc2xhdGlvblBhcnNlckhpbnQ+IHtcbiAgY2FuUGFyc2UoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZyk6IFhtbFRyYW5zbGF0aW9uUGFyc2VySGludHxmYWxzZSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZXh0bmFtZShmaWxlUGF0aCk7XG4gICAgaWYgKGV4dGVuc2lvbiAhPT0gJy54dGInICYmIGV4dGVuc2lvbiAhPT0gJy54bWInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBjYW5QYXJzZVhtbChmaWxlUGF0aCwgY29udGVudHMsICd0cmFuc2xhdGlvbmJ1bmRsZScsIHt9KTtcbiAgfVxuXG4gIHBhcnNlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcsIGhpbnQ/OiBYbWxUcmFuc2xhdGlvblBhcnNlckhpbnQpOlxuICAgICAgUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGlmIChoaW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0QnVuZGxlKGhpbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0QnVuZGxlRGVwcmVjYXRlZChmaWxlUGF0aCwgY29udGVudHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdEJ1bmRsZSh7ZWxlbWVudCwgZXJyb3JzfTogWG1sVHJhbnNsYXRpb25QYXJzZXJIaW50KTogUGFyc2VkVHJhbnNsYXRpb25CdW5kbGUge1xuICAgIGNvbnN0IGxhbmdBdHRyID0gZWxlbWVudC5hdHRycy5maW5kKChhdHRyKSA9PiBhdHRyLm5hbWUgPT09ICdsYW5nJyk7XG4gICAgY29uc3QgYnVuZGxlOiBQYXJzZWRUcmFuc2xhdGlvbkJ1bmRsZSA9IHtcbiAgICAgIGxvY2FsZTogbGFuZ0F0dHIgJiYgbGFuZ0F0dHIudmFsdWUsXG4gICAgICB0cmFuc2xhdGlvbnM6IHt9LFxuICAgICAgZGlhZ25vc3RpY3M6IG5ldyBEaWFnbm9zdGljcygpXG4gICAgfTtcbiAgICBlcnJvcnMuZm9yRWFjaChlID0+IGFkZFBhcnNlRXJyb3IoYnVuZGxlLmRpYWdub3N0aWNzLCBlKSk7XG5cbiAgICBjb25zdCBidW5kbGVWaXNpdG9yID0gbmV3IFh0YlZpc2l0b3IoKTtcbiAgICB2aXNpdEFsbChidW5kbGVWaXNpdG9yLCBlbGVtZW50LmNoaWxkcmVuLCBidW5kbGUpO1xuICAgIHJldHVybiBidW5kbGU7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RCdW5kbGVEZXByZWNhdGVkKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoaW50ID0gdGhpcy5jYW5QYXJzZShmaWxlUGF0aCwgY29udGVudHMpO1xuICAgIGlmICghaGludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgXCIke2ZpbGVQYXRofVwiIGFzIFhNQi9YVEIgZm9ybWF0LmApO1xuICAgIH1cbiAgICBjb25zdCBidW5kbGUgPSB0aGlzLmV4dHJhY3RCdW5kbGUoaGludCk7XG4gICAgaWYgKGJ1bmRsZS5kaWFnbm9zdGljcy5oYXNFcnJvcnMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcy5mb3JtYXREaWFnbm9zdGljcyhgRmFpbGVkIHRvIHBhcnNlIFwiJHtmaWxlUGF0aH1cIiBhcyBYTUIvWFRCIGZvcm1hdGApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gYnVuZGxlO1xuICB9XG59XG5cbmNsYXNzIFh0YlZpc2l0b3IgZXh0ZW5kcyBCYXNlVmlzaXRvciB7XG4gIHZpc2l0RWxlbWVudChlbGVtZW50OiBFbGVtZW50LCBidW5kbGU6IFBhcnNlZFRyYW5zbGF0aW9uQnVuZGxlKTogYW55IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQubmFtZSkge1xuICAgICAgY2FzZSAndHJhbnNsYXRpb24nOlxuICAgICAgICAvLyBFcnJvciBpZiBubyBgaWRgIGF0dHJpYnV0ZVxuICAgICAgICBjb25zdCBpZCA9IGdldEF0dHJpYnV0ZShlbGVtZW50LCAnaWQnKTtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLFxuICAgICAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBcImlkXCIgYXR0cmlidXRlIG9uIDx0cmFucy11bml0PiBlbGVtZW50LmAsIFBhcnNlRXJyb3JMZXZlbC5FUlJPUik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXJyb3IgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRyYW5zbGF0aW9uIHdpdGggdGhlIHNhbWUgaWRcbiAgICAgICAgaWYgKGJ1bmRsZS50cmFuc2xhdGlvbnNbaWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhZGRQYXJzZURpYWdub3N0aWMoXG4gICAgICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLCBgRHVwbGljYXRlZCB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgXCIke2lkfVwiYCxcbiAgICAgICAgICAgICAgUGFyc2VFcnJvckxldmVsLkVSUk9SKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGJ1bmRsZS50cmFuc2xhdGlvbnNbaWRdID0gc2VyaWFsaXplVGFyZ2V0TWVzc2FnZShlbGVtZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYnVuZGxlLmRpYWdub3N0aWNzLndhcm4oXG4gICAgICAgICAgICAgICAgYENvdWxkIG5vdCBwYXJzZSBtZXNzYWdlIHdpdGggaWQgXCIke2lkfVwiIC0gcGVyaGFwcyBpdCBoYXMgYW4gdW5yZWNvZ25pc2VkIElDVSBmb3JtYXQ/XFxuYCArXG4gICAgICAgICAgICAgICAgZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3BhbiAmJiBlcnJvci5tc2cgJiYgZXJyb3IubGV2ZWwpIHtcbiAgICAgICAgICAgIGFkZFBhcnNlRGlhZ25vc3RpYyhidW5kbGUuZGlhZ25vc3RpY3MsIGVycm9yLnNwYW4sIGVycm9yLm1zZywgZXJyb3IubGV2ZWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFkZFBhcnNlRGlhZ25vc3RpYyhcbiAgICAgICAgICAgIGJ1bmRsZS5kaWFnbm9zdGljcywgZWxlbWVudC5zb3VyY2VTcGFuLCBgVW5leHBlY3RlZCA8JHtlbGVtZW50Lm5hbWV9PiB0YWcuYCxcbiAgICAgICAgICAgIFBhcnNlRXJyb3JMZXZlbC5FUlJPUik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVRhcmdldE1lc3NhZ2Uoc291cmNlOiBFbGVtZW50KTogybVQYXJzZWRUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgTWVzc2FnZVNlcmlhbGl6ZXIoXG4gICAgICBuZXcgVGFyZ2V0TWVzc2FnZVJlbmRlcmVyKCksXG4gICAgICB7aW5saW5lRWxlbWVudHM6IFtdLCBwbGFjZWhvbGRlcjoge2VsZW1lbnROYW1lOiAncGgnLCBuYW1lQXR0cmlidXRlOiAnbmFtZSd9fSk7XG4gIHJldHVybiBzZXJpYWxpemVyLnNlcmlhbGl6ZShwYXJzZUlubmVyUmFuZ2Uoc291cmNlKSk7XG59XG4iXX0=

@@ -18,2 +18,3 @@ /// <amd-module name="@angular/localize/src/tools/src/translate/translator" />

translations: Record<ɵMessageId, ɵParsedTranslation>;
diagnostics?: Diagnostics;
}

@@ -20,0 +21,0 @@ /**

@@ -52,2 +52,2 @@ (function (factory) {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBUUEsNkJBQThCO0lBRzlCLHlFQUF3QztJQWdEeEM7OztPQUdHO0lBQ0g7UUFDRSxvQkFBb0IsZ0JBQXNDLEVBQVUsV0FBd0I7WUFBeEUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtZQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQUcsQ0FBQztRQUVoRyxtQ0FBYyxHQUFkLFVBQ0ksVUFBb0IsRUFBRSxRQUFnQixFQUFFLFlBQTBCLEVBQ2xFLFlBQWlDLEVBQUUsWUFBcUI7WUFGNUQsaUJBZUM7WUFaQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsU0FBUzs7Z0JBQzFCLElBQU0sUUFBUSxHQUFHLHNCQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFNLFlBQVksR0FBRyxlQUFRLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDOztvQkFDbkQsS0FBOEIsSUFBQSxLQUFBLGlCQUFBLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxnQkFBQSw0QkFBRTt3QkFBaEQsSUFBTSxlQUFlLFdBQUE7d0JBQ3hCLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUU7NEJBQ3hELE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FDNUIsS0FBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUM5RSxZQUFZLENBQUMsQ0FBQzt5QkFDbkI7cUJBQ0Y7Ozs7Ozs7OztnQkFDRCxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxxQ0FBbUMsU0FBVyxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBbkJELElBbUJDO0lBbkJZLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHvJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7RGlhZ25vc3RpY3N9IGZyb20gJy4uL2RpYWdub3N0aWNzJztcbmltcG9ydCB7RmlsZVV0aWxzfSBmcm9tICcuLi9maWxlX3V0aWxzJztcblxuaW1wb3J0IHtPdXRwdXRQYXRoRm59IGZyb20gJy4vb3V0cHV0X3BhdGgnO1xuXG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIHRvIGJlIHVzZWQgdG8gdHJhbnNsYXRlIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uQnVuZGxlIHtcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogUmVjb3JkPMm1TWVzc2FnZUlkLCDJtVBhcnNlZFRyYW5zbGF0aW9uPjtcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0cmFuc2xhdGlvbiBmb3IgdGhlIGdpdmVuIHJlc291cmNlIGluXG4gKiBhbiBhcHByb3ByaWF0ZSBtYW5uZXIuXG4gKlxuICogRm9yIGV4YW1wbGUsIHNvdXJjZSBjb2RlIGZpbGVzIHdpbGwgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZCBpZiB0aGV5IGNvbnRhaW4gYCRsb2NhbGl6ZWAgdGFnZ2VkXG4gKiB0ZW1wbGF0ZSBzdHJpbmdzLCB3aGlsZSBtb3N0IHN0YXRpYyBhc3NldHMgd2lsbCBqdXN0IG5lZWQgdG8gYmUgY29waWVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uSGFuZGxlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGZpbGUgY2FuIGJlIHRyYW5zbGF0ZWQgYnkgdGhpcyBoYW5kbGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcmVsYXRpdmVGaWxlUGF0aCBBIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgc291cmNlUm9vdCB0byB0aGUgcmVzb3VyY2UgZmlsZSB0byBoYW5kbGUuXG4gICAqIEBwYXJhbSBjb250ZW50cyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8gaGFuZGxlLlxuICAgKi9cbiAgY2FuVHJhbnNsYXRlKHJlbGF0aXZlRmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IEJ1ZmZlcik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZSB0aGUgZmlsZSBhdCBgcmVsYXRpdmVGaWxlUGF0aGAgY29udGFpbmluZyBgY29udGVudHNgLCB1c2luZyB0aGUgZ2l2ZW4gYHRyYW5zbGF0aW9uc2AsXG4gICAqIGFuZCB3cml0ZSB0aGUgdHJhbnNsYXRlZCBjb250ZW50IHRvIHRoZSBwYXRoIGNvbXB1dGVkIGJ5IGNhbGxpbmcgYG91dHB1dFBhdGhGbigpYC5cbiAgICpcbiAgICogQHBhcmFtIGRpYWdub3N0aWNzIEFuIG9iamVjdCBmb3IgY29sbGVjdGluZyB0cmFuc2xhdGlvbiBkaWFnbm9zdGljIG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0gc291cmNlUm9vdCBBbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IG9mIHRoZSBmaWxlcyBiZWluZyB0cmFuc2xhdGVkLlxuICAgKiBAcGFyYW0gcmVsYXRpdmVGaWxlUGF0aCBBIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgc291cmNlUm9vdCB0byB0aGUgZmlsZSB0byB0cmFuc2xhdGUuXG4gICAqIEBwYXJhbSBjb250ZW50cyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8gdHJhbnNsYXRlLlxuICAgKiBAcGFyYW0gb3V0cHV0UGF0aEZuIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGFic29sdXRlIHBhdGggd2hlcmUgdGhlIG91dHB1dCBmaWxlIHNob3VsZCBiZVxuICAgKiB3cml0dGVuLlxuICAgKiBAcGFyYW0gdHJhbnNsYXRpb25zIEEgY29sbGVjdGlvbiBvZiB0cmFuc2xhdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBmaWxlLlxuICAgKiBAcGFyYW0gc291cmNlTG9jYWxlIFRoZSBsb2NhbGUgb2YgdGhlIG9yaWdpbmFsIGFwcGxpY2F0aW9uIHNvdXJjZS4gSWYgcHJvdmlkZWQgdGhlbiBhblxuICAgKiBhZGRpdGlvbmFsIGNvcHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGNyZWF0ZWQgdW5kZXIgdGhpcyBsb2NhbGUganVzdCB3aXRoIHRoZSBgJGxvY2FsaXplYCBjYWxsc1xuICAgKiBzdHJpcHBlZCBvdXQuXG4gICAqL1xuICB0cmFuc2xhdGUoXG4gICAgICBkaWFnbm9zdGljczogRGlhZ25vc3RpY3MsIHNvdXJjZVJvb3Q6IHN0cmluZywgcmVsYXRpdmVGaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogQnVmZmVyLFxuICAgICAgb3V0cHV0UGF0aEZuOiBPdXRwdXRQYXRoRm4sIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25CdW5kbGVbXSwgc291cmNlTG9jYWxlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGUgZWFjaCBmaWxlIChlLmcuIHNvdXJjZSBmaWxlIG9yIHN0YXRpYyBhc3NldCkgdXNpbmcgdGhlIGdpdmVuIGBUcmFuc2xhdGlvbkhhbmRsZXJgcy5cbiAqIFRoZSBmaWxlIHdpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgZmlyc3QgaGFuZGxlciB0aGF0IHJldHVybnMgdHJ1ZSBmb3IgYGNhblRyYW5zbGF0ZSgpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc291cmNlSGFuZGxlcnM6IFRyYW5zbGF0aW9uSGFuZGxlcltdLCBwcml2YXRlIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcykge31cblxuICB0cmFuc2xhdGVGaWxlcyhcbiAgICAgIGlucHV0UGF0aHM6IHN0cmluZ1tdLCByb290UGF0aDogc3RyaW5nLCBvdXRwdXRQYXRoRm46IE91dHB1dFBhdGhGbixcbiAgICAgIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25CdW5kbGVbXSwgc291cmNlTG9jYWxlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaW5wdXRQYXRocy5mb3JFYWNoKGlucHV0UGF0aCA9PiB7XG4gICAgICBjb25zdCBjb250ZW50cyA9IEZpbGVVdGlscy5yZWFkRmlsZUJ1ZmZlcihpbnB1dFBhdGgpO1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUocm9vdFBhdGgsIGlucHV0UGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlSGFuZGxlciBvZiB0aGlzLnJlc291cmNlSGFuZGxlcnMpIHtcbiAgICAgICAgaWYgKHJlc291cmNlSGFuZGxlci5jYW5UcmFuc2xhdGUocmVsYXRpdmVQYXRoLCBjb250ZW50cykpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb3VyY2VIYW5kbGVyLnRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kaWFnbm9zdGljcywgcm9vdFBhdGgsIHJlbGF0aXZlUGF0aCwgY29udGVudHMsIG91dHB1dFBhdGhGbiwgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgICBzb3VyY2VMb2NhbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmRpYWdub3N0aWNzLmVycm9yKGBVbmFibGUgdG8gaGFuZGxlIHJlc291cmNlIGZpbGU6ICR7aW5wdXRQYXRofWApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvY2FsaXplL3NyYy90b29scy9zcmMvdHJhbnNsYXRlL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBUUEsNkJBQThCO0lBRzlCLHlFQUF3QztJQWlEeEM7OztPQUdHO0lBQ0g7UUFDRSxvQkFBb0IsZ0JBQXNDLEVBQVUsV0FBd0I7WUFBeEUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtZQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQUcsQ0FBQztRQUVoRyxtQ0FBYyxHQUFkLFVBQ0ksVUFBb0IsRUFBRSxRQUFnQixFQUFFLFlBQTBCLEVBQ2xFLFlBQWlDLEVBQUUsWUFBcUI7WUFGNUQsaUJBZUM7WUFaQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsU0FBUzs7Z0JBQzFCLElBQU0sUUFBUSxHQUFHLHNCQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFNLFlBQVksR0FBRyxlQUFRLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDOztvQkFDbkQsS0FBOEIsSUFBQSxLQUFBLGlCQUFBLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxnQkFBQSw0QkFBRTt3QkFBaEQsSUFBTSxlQUFlLFdBQUE7d0JBQ3hCLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUU7NEJBQ3hELE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FDNUIsS0FBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUM5RSxZQUFZLENBQUMsQ0FBQzt5QkFDbkI7cUJBQ0Y7Ozs7Ozs7OztnQkFDRCxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxxQ0FBbUMsU0FBVyxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBbkJELElBbUJDO0lBbkJZLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHvJtU1lc3NhZ2VJZCwgybVQYXJzZWRUcmFuc2xhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7RGlhZ25vc3RpY3N9IGZyb20gJy4uL2RpYWdub3N0aWNzJztcbmltcG9ydCB7RmlsZVV0aWxzfSBmcm9tICcuLi9maWxlX3V0aWxzJztcblxuaW1wb3J0IHtPdXRwdXRQYXRoRm59IGZyb20gJy4vb3V0cHV0X3BhdGgnO1xuXG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIHRvIGJlIHVzZWQgdG8gdHJhbnNsYXRlIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uQnVuZGxlIHtcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogUmVjb3JkPMm1TWVzc2FnZUlkLCDJtVBhcnNlZFRyYW5zbGF0aW9uPjtcbiAgZGlhZ25vc3RpY3M/OiBEaWFnbm9zdGljcztcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0cmFuc2xhdGlvbiBmb3IgdGhlIGdpdmVuIHJlc291cmNlIGluXG4gKiBhbiBhcHByb3ByaWF0ZSBtYW5uZXIuXG4gKlxuICogRm9yIGV4YW1wbGUsIHNvdXJjZSBjb2RlIGZpbGVzIHdpbGwgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZCBpZiB0aGV5IGNvbnRhaW4gYCRsb2NhbGl6ZWAgdGFnZ2VkXG4gKiB0ZW1wbGF0ZSBzdHJpbmdzLCB3aGlsZSBtb3N0IHN0YXRpYyBhc3NldHMgd2lsbCBqdXN0IG5lZWQgdG8gYmUgY29waWVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uSGFuZGxlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGZpbGUgY2FuIGJlIHRyYW5zbGF0ZWQgYnkgdGhpcyBoYW5kbGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcmVsYXRpdmVGaWxlUGF0aCBBIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgc291cmNlUm9vdCB0byB0aGUgcmVzb3VyY2UgZmlsZSB0byBoYW5kbGUuXG4gICAqIEBwYXJhbSBjb250ZW50cyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8gaGFuZGxlLlxuICAgKi9cbiAgY2FuVHJhbnNsYXRlKHJlbGF0aXZlRmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IEJ1ZmZlcik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZSB0aGUgZmlsZSBhdCBgcmVsYXRpdmVGaWxlUGF0aGAgY29udGFpbmluZyBgY29udGVudHNgLCB1c2luZyB0aGUgZ2l2ZW4gYHRyYW5zbGF0aW9uc2AsXG4gICAqIGFuZCB3cml0ZSB0aGUgdHJhbnNsYXRlZCBjb250ZW50IHRvIHRoZSBwYXRoIGNvbXB1dGVkIGJ5IGNhbGxpbmcgYG91dHB1dFBhdGhGbigpYC5cbiAgICpcbiAgICogQHBhcmFtIGRpYWdub3N0aWNzIEFuIG9iamVjdCBmb3IgY29sbGVjdGluZyB0cmFuc2xhdGlvbiBkaWFnbm9zdGljIG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0gc291cmNlUm9vdCBBbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IG9mIHRoZSBmaWxlcyBiZWluZyB0cmFuc2xhdGVkLlxuICAgKiBAcGFyYW0gcmVsYXRpdmVGaWxlUGF0aCBBIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgc291cmNlUm9vdCB0byB0aGUgZmlsZSB0byB0cmFuc2xhdGUuXG4gICAqIEBwYXJhbSBjb250ZW50cyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8gdHJhbnNsYXRlLlxuICAgKiBAcGFyYW0gb3V0cHV0UGF0aEZuIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGFic29sdXRlIHBhdGggd2hlcmUgdGhlIG91dHB1dCBmaWxlIHNob3VsZCBiZVxuICAgKiB3cml0dGVuLlxuICAgKiBAcGFyYW0gdHJhbnNsYXRpb25zIEEgY29sbGVjdGlvbiBvZiB0cmFuc2xhdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBmaWxlLlxuICAgKiBAcGFyYW0gc291cmNlTG9jYWxlIFRoZSBsb2NhbGUgb2YgdGhlIG9yaWdpbmFsIGFwcGxpY2F0aW9uIHNvdXJjZS4gSWYgcHJvdmlkZWQgdGhlbiBhblxuICAgKiBhZGRpdGlvbmFsIGNvcHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGNyZWF0ZWQgdW5kZXIgdGhpcyBsb2NhbGUganVzdCB3aXRoIHRoZSBgJGxvY2FsaXplYCBjYWxsc1xuICAgKiBzdHJpcHBlZCBvdXQuXG4gICAqL1xuICB0cmFuc2xhdGUoXG4gICAgICBkaWFnbm9zdGljczogRGlhZ25vc3RpY3MsIHNvdXJjZVJvb3Q6IHN0cmluZywgcmVsYXRpdmVGaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogQnVmZmVyLFxuICAgICAgb3V0cHV0UGF0aEZuOiBPdXRwdXRQYXRoRm4sIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25CdW5kbGVbXSwgc291cmNlTG9jYWxlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGUgZWFjaCBmaWxlIChlLmcuIHNvdXJjZSBmaWxlIG9yIHN0YXRpYyBhc3NldCkgdXNpbmcgdGhlIGdpdmVuIGBUcmFuc2xhdGlvbkhhbmRsZXJgcy5cbiAqIFRoZSBmaWxlIHdpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgZmlyc3QgaGFuZGxlciB0aGF0IHJldHVybnMgdHJ1ZSBmb3IgYGNhblRyYW5zbGF0ZSgpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc291cmNlSGFuZGxlcnM6IFRyYW5zbGF0aW9uSGFuZGxlcltdLCBwcml2YXRlIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljcykge31cblxuICB0cmFuc2xhdGVGaWxlcyhcbiAgICAgIGlucHV0UGF0aHM6IHN0cmluZ1tdLCByb290UGF0aDogc3RyaW5nLCBvdXRwdXRQYXRoRm46IE91dHB1dFBhdGhGbixcbiAgICAgIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25CdW5kbGVbXSwgc291cmNlTG9jYWxlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaW5wdXRQYXRocy5mb3JFYWNoKGlucHV0UGF0aCA9PiB7XG4gICAgICBjb25zdCBjb250ZW50cyA9IEZpbGVVdGlscy5yZWFkRmlsZUJ1ZmZlcihpbnB1dFBhdGgpO1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUocm9vdFBhdGgsIGlucHV0UGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlSGFuZGxlciBvZiB0aGlzLnJlc291cmNlSGFuZGxlcnMpIHtcbiAgICAgICAgaWYgKHJlc291cmNlSGFuZGxlci5jYW5UcmFuc2xhdGUocmVsYXRpdmVQYXRoLCBjb250ZW50cykpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb3VyY2VIYW5kbGVyLnRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kaWFnbm9zdGljcywgcm9vdFBhdGgsIHJlbGF0aXZlUGF0aCwgY29udGVudHMsIG91dHB1dFBhdGhGbiwgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgICBzb3VyY2VMb2NhbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmRpYWdub3N0aWNzLmVycm9yKGBVbmFibGUgdG8gaGFuZGxlIHJlc291cmNlIGZpbGU6ICR7aW5wdXRQYXRofWApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc