🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

angular-material-css-vars

Package Overview
Dependencies
Maintainers
1
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-material-css-vars - npm Package Compare versions

Comparing version

to
2.0.0

33

bundles/angular-material-css-vars.umd.js

@@ -7,2 +7,25 @@ (function (global, factory) {

function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
exports.MatCssPalettePrefix = void 0;

@@ -299,2 +322,3 @@ (function (MatCssPalettePrefix) {

MaterialCssVarsService.prototype.setContrastColorThreshold = function (threshold, palettePrefix) {
var _this = this;
var color = MaterialCssVarsService.DARK_TEXT_VAR;

@@ -306,3 +330,3 @@ var updates = this.cfg.sortedHues.map(function (hue) {

return {
val: "var(" + color + ")",
val: _this._getCssVarValue(color),
name: "" + (palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX) + hue,

@@ -382,3 +406,3 @@ };

var cco = { r: sLight[0], g: sLight[1], b: sLight[2], a: 1 };
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: "rgb(" + cco.r + "," + cco.g + "," + cco.b + ")" }) });
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: cco.r + "," + cco.g + "," + cco.b }) });
});

@@ -396,2 +420,3 @@ };

MaterialCssVarsService.prototype._recalculateAndSetContrastColor = function (palettePrefix) {
var _this = this;
var updates = this._calculateContrastColorsForCurrentValues(palettePrefix)

@@ -401,3 +426,3 @@ .map(function (_a) {

return {
val: "var(" + contrastColorVar + ")",
val: _this._getCssVarValue(contrastColorVar),
name: "" + (palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX) + hue,

@@ -503,3 +528,3 @@ };

MaterialCssVarsService.LIGHT_TEXT_VAR = '--light-primary-text';
MaterialCssVarsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MaterialCssVarsService_Factory() { return new MaterialCssVarsService(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(MATERIAL_CSS_VARS_CFG)); }, token: MaterialCssVarsService, providedIn: "root" });
MaterialCssVarsService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MaterialCssVarsService_Factory() { return new MaterialCssVarsService(i0__namespace.ɵɵinject(i0__namespace.RendererFactory2), i0__namespace.ɵɵinject(i1__namespace.DOCUMENT), i0__namespace.ɵɵinject(MATERIAL_CSS_VARS_CFG)); }, token: MaterialCssVarsService, providedIn: "root" });
MaterialCssVarsService.decorators = [

@@ -506,0 +531,0 @@ { type: i0.Injectable, args: [{

8

esm2015/lib/material-css-vars.service.js

@@ -112,3 +112,3 @@ import { Inject, Injectable, RendererFactory2, RendererStyleFlags2 } from '@angular/core';

return {
val: `var(${color})`,
val: this._getCssVarValue(color),
name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,

@@ -187,3 +187,3 @@ };

const cco = { r: sLight[0], g: sLight[1], b: sLight[2], a: 1 };
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: `rgb(${cco.r},${cco.g},${cco.b})` }) });
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: `${cco.r},${cco.g},${cco.b}` }) });
});

@@ -204,3 +204,3 @@ }

return {
val: `var(${contrastColorVar})`,
val: this._getCssVarValue(contrastColorVar),
name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,

@@ -314,2 +314,2 @@ };

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtY3NzLXZhcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWNzcy12YXJzL3NyYy9saWIvbWF0ZXJpYWwtY3NzLXZhcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQWtCLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFJTCxtQkFBbUIsRUFHcEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBT3BFLHdEQUF3RDtBQUN4RCxlQUFlO0FBSWYsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsWUFDRSxlQUFpQyxFQUNQLFFBQWtCLEVBQ2IsR0FBK0I7UUFEcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVA5QyxrQ0FBNkIsR0FBYSxLQUFLLENBQUM7UUFDaEQsaUNBQTRCLEdBQWEsS0FBSyxDQUFDO1FBQy9DLCtCQUEwQixHQUFhLEtBQUssQ0FBQztRQUM3QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU9yQixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFMUMsSUFBSSxDQUFDLEdBQUcsbUNBQ0gsbUJBQW1CLEdBQ25CLEdBQUcsQ0FDUCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNB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LE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWdCO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQztJQUNoRCxDQUFDOztBQTNWYyxzQ0FBZSxHQUFHLFdBQVcsQ0FBQztBQUM5QixvQ0FBYSxHQUFHLHFCQUFxQixDQUFDO0FBQ3RDLHFDQUFjLEdBQUcsc0JBQXNCLENBQUM7OztZQU54RCxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXZCc0MsZ0JBQWdCO1lBNkNmLFFBQVEsdUJBQTNDLE1BQU0sU0FBQyxRQUFROzRDQUNmLE1BQU0sU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyLCBSZW5kZXJlclN0eWxlRmxhZ3MyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TnVtYmVyaWZ5LCBSR0JBLCBUaW55Q29sb3J9IGZyb20gJ0BjdHJsL3Rpbnljb2xvcic7XG5pbXBvcnQge1xuICBIdWVWYWx1ZSxcbiAgTWF0Q3NzSHVlQ29sb3JDb250cmFzdE1hcEl0ZW0sXG4gIE1hdENzc0h1ZUNvbG9yTWFwSXRlbSxcbiAgTWF0Q3NzUGFsZXR0ZVByZWZpeCxcbiAgTWF0ZXJpYWxDc3NWYXJpYWJsZXMsXG4gIE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnXG59IGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7REVGQVVMVF9NQVRfQ1NTX0NGR30gZnJvbSAnLi9kZWZhdWx0LWNmZy5jb25zdCc7XG5pbXBvcnQge01BVEVSSUFMX0NTU19WQVJTX0NGR30gZnJvbSAnLi4vbWF0LWNzcy1jb25maWctdG9rZW4uY29uc3QnO1xuXG5pbnRlcmZhY2UgQ3NzVmFyaWFibGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbDogc3RyaW5nO1xufVxuXG4vLyBAc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMDM1MVxuLyoqIEBkeW5hbWljICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgQ09OVFJBU1RfUFJFRklYID0gJ2NvbnRyYXN0LSc7XG4gIHByaXZhdGUgc3RhdGljIERBUktfVEVYVF9WQVIgPSAnLS1kYXJrLXByaW1hcnktdGV4dCc7XG4gIHByaXZhdGUgc3RhdGljIExJR0hUX1RFWFRfVkFSID0gJy0tbGlnaHQtcHJpbWFyeS10ZXh0JztcblxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgUk9PVDogSFRNTEVsZW1lbnQ7XG5cbiAgLy8gVGhpcyBzaG91bGQgYmUgcmVhZG9ubHkgZnJvbSB0aGUgb3V0c2lkZVxuICBjZmc6IE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnO1xuICBwcmltYXJ5OiBzdHJpbmc7XG4gIGFjY2VudDogc3RyaW5nO1xuICB3YXJuOiBzdHJpbmc7XG4gIGlzRGFya1RoZW1lOiBib29sZWFuO1xuICBjb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeTogSHVlVmFsdWUgPSAnNDAwJztcbiAgY29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudDogSHVlVmFsdWUgPSAnNDAwJztcbiAgY29udHJhc3RDb2xvclRocmVzaG9sZFdhcm46IEh1ZVZhbHVlID0gJzQwMCc7XG4gIGlzQXV0b0NvbnRyYXN0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoTUFURVJJQUxfQ1NTX1ZBUlNfQ0ZHKSBjZmc6IE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuUk9PVCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgdGhpcy5jZmcgPSB7XG4gICAgICAuLi5ERUZBVUxUX01BVF9DU1NfQ0ZHLFxuICAgICAgLi4uY2ZnLFxuICAgIH07XG4gICAgdGhpcy5pc0F1dG9Db250cmFzdCA9IHRoaXMuY2ZnLmlzQXV0b0NvbnRyYXN0O1xuXG4gICAgaWYgKHRoaXMuY2ZnLmlzRGFya1RoZW1lKSB7XG4gICAgICB0aGlzLnNldERhcmtUaGVtZSh0aGlzLmNmZy5pc0RhcmtUaGVtZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNmZy5wcmltYXJ5KSB7XG4gICAgICB0aGlzLnNldFByaW1hcnlDb2xvcih0aGlzLmNmZy5wcmltYXJ5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2ZnLmFjY2VudCkge1xuICAgICAgdGhpcy5zZXRBY2NlbnRDb2xvcih0aGlzLmNmZy5hY2NlbnQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jZmcud2Fybikge1xuICAgICAgdGhpcy5zZXRXYXJuQ29sb3IodGhpcy5jZmcud2Fybik7XG4gICAgfVxuICB9XG5cbiAgc2V0UHJpbWFyeUNvbG9yKGhleDogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmltYXJ5ID0gaGV4O1xuICAgIGNvbnN0IHZhclByZWZpeCA9IE1hdENzc1BhbGV0dGVQcmVmaXguUHJpbWFyeTtcbiAgICBjb25zdCBzdHlsZVByaW1hcnkgPSB0aGlzLl9jb21wdXRlUGFsZXR0ZUNvbG9ycyh2YXJQcmVmaXgsIHRoaXMucHJpbWFyeSk7XG4gICAgdGhpcy5fc2V0U3R5bGUoc3R5bGVQcmltYXJ5KTtcblxuICAgIGlmICh0aGlzLmlzQXV0b0NvbnRyYXN0KSB7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUFuZFNldENvbnRyYXN0Q29sb3IodmFyUHJlZml4KTtcbiAgICB9XG4gIH1cblxuICBzZXRBY2NlbnRDb2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMuYWNjZW50ID0gaGV4O1xuICAgIGNvbnN0IHZhclByZWZpeCA9IE1hdENzc1BhbGV0dGVQcmVmaXguQWNjZW50O1xuICAgIGNvbnN0IHN0eWxlQWNjZW50ID0gdGhpcy5fY29tcHV0ZVBhbGV0dGVDb2xvcnModmFyUHJlZml4LCB0aGlzLmFjY2VudCk7XG4gICAgdGhpcy5fc2V0U3R5bGUoc3R5bGVBY2NlbnQpO1xuXG4gICAgaWYgKHRoaXMuaXNBdXRvQ29udHJhc3QpIHtcbiAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQW5kU2V0Q29udHJhc3RDb2xvcih2YXJQcmVmaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFdhcm5Db2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMud2FybiA9IGhleDtcbiAgICBjb25zdCB2YXJQcmVmaXggPSBNYXRDc3NQYWxldHRlUHJlZml4Lldhcm47XG4gICAgY29uc3Qgc3R5bGVXYXJuID0gdGhpcy5fY29tcHV0ZVBhbGV0dGVDb2xvcnModmFyUHJlZml4LCB0aGlzLndhcm4pO1xuICAgIHRoaXMuX3NldFN0eWxlKHN0eWxlV2Fybik7XG5cbiAgICBpZiAodGhpcy5pc0F1dG9Db250cmFzdCkge1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKHZhclByZWZpeCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmFyaWFibGUoY3NzVmFyTmFtZTogTWF0ZXJpYWxDc3NWYXJpYWJsZXMsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXRTdHlsZShbe1xuICAgICAgbmFtZTogY3NzVmFyTmFtZSxcbiAgICAgIHZhbDogdmFsdWUsXG4gICAgfV0pO1xuICB9XG5cbiAgc2V0RGFya1RoZW1lKGlzRGFyazogYm9vbGVhbikge1xuICAgIGlmIChpc0RhcmspIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2ZnLmxpZ2h0VGhlbWVDbGFzcyk7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCh0aGlzLmNmZy5kYXJrVGhlbWVDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2ZnLmRhcmtUaGVtZUNsYXNzKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKHRoaXMuY2ZnLmxpZ2h0VGhlbWVDbGFzcyk7XG4gICAgfVxuICAgIHRoaXMuaXNEYXJrVGhlbWUgPSBpc0Rhcms7XG4gIH1cblxuICBzZXRBdXRvQ29udHJhc3RFbmFibGVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNBdXRvQ29udHJhc3QgPSB2YWw7XG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKE1hdENzc1BhbGV0dGVQcmVmaXguUHJpbWFyeSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUFuZFNldENvbnRyYXN0Q29sb3IoTWF0Q3NzUGFsZXR0ZVByZWZpeC5BY2NlbnQpO1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKE1hdENzc1BhbGV0dGVQcmVmaXguV2Fybik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkodGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSk7XG4gICAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRBY2NlbnQodGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50KTtcbiAgICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkV2Fybik7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkodGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuY29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkgPSB0aHJlc2hvbGQ7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkKHRocmVzaG9sZCwgTWF0Q3NzUGFsZXR0ZVByZWZpeC5QcmltYXJ5KTtcbiAgfVxuXG4gIHNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRBY2NlbnQodGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuY29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudCA9IHRocmVzaG9sZDtcbiAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkLCBNYXRDc3NQYWxldHRlUHJlZml4LkFjY2VudCk7XG4gIH1cblxuICBzZXRDb250cmFzdENvbG9yVGhyZXNob2xkV2Fybih0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkV2FybiA9IHRocmVzaG9sZDtcbiAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkLCBNYXRDc3NQYWxldHRlUHJlZml4Lldhcm4pO1xuICB9XG5cbiAgc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCh0aHJlc2hvbGQ6IEh1ZVZhbHVlLCBwYWxldHRlUHJlZml4OiBNYXRDc3NQYWxldHRlUHJlZml4KSB7XG4gICAgbGV0IGNvbG9yID0gTWF0ZXJpYWxDc3NWYXJzU2VydmljZS5EQVJLX1RFWFRfVkFSO1xuICAgIGNvbnN0IHVwZGF0ZXMgPSB0aGlzLmNmZy5zb3J0ZWRIdWVzLm1hcCgoaHVlKSA9PiB7XG4gICAgICBpZiAoaHVlID09PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgY29sb3IgPSBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkxJR0hUX1RFWFRfVkFSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsOiBgdmFyKCR7Y29sb3J9KWAsXG4gICAgICAgIG5hbWU6IGAke3BhbGV0dGVQcmVmaXggKyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkNPTlRSQVNUX1BSRUZJWH0ke2h1ZX1gLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLl9zZXRTdHlsZSh1cGRhdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBwYWxldHRlIGNvbG9yIGJhc2VkIG9uIHRyYWRpdGlvbmFsIHZhbHVlc1xuICAgKi9cbiAgc2V0QWx0ZXJuYXRpdmVDb2xvckFsZ29yaXRobSh0cmFkaXRpb25hbDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2ZnLmlzQWx0ZXJuYXRpdmVDb2xvckFsZ29yaXRobSA9IHRyYWRpdGlvbmFsO1xuICAgIHRoaXMuc2V0UHJpbWFyeUNvbG9yKHRoaXMucHJpbWFyeSk7XG4gICAgdGhpcy5zZXRBY2NlbnRDb2xvcih0aGlzLmFjY2VudCk7XG4gICAgdGhpcy5zZXRXYXJuQ29sb3IodGhpcy53YXJuKTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2Ugc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkgaW5zdGVhZCAqL1xuICBjaGFuZ2VDb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSh0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSh0aHJlc2hvbGQpO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBzZXRDb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50IGluc3RlYWQgKi9cbiAgY2hhbmdlQ29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudCh0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50KHRocmVzaG9sZCk7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRXYXJuIGluc3RlYWQgKi9cbiAgY2hhbmdlQ29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhyZXNob2xkKTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2Ugc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCBpbnN0ZWFkICovXG4gIGNoYW5nZUNvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkOiBIdWVWYWx1ZSwgcGFsZXR0ZVByZWZpeDogTWF0Q3NzUGFsZXR0ZVByZWZpeCkge1xuICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCh0aHJlc2hvbGQsIHBhbGV0dGVQcmVmaXgpO1xuICB9XG5cbiAgZ2V0UGFsZXR0ZUZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JNYXBJdGVtW10ge1xuICAgIGlmICh0aGlzLmNmZy5pc0FsdGVybmF0aXZlQ29sb3JBbGdvcml0aG0pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyYWRpdGlvbmFsUGFsZXR0ZUZvckNvbG9yKGhleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnN0YW50aW5QYWxldHRlRm9yQ29sb3IoaGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRyYWRpdGlvbmFsUGFsZXR0ZUZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JNYXBJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNmZy5jb2xvck1hcC5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBtYXBwZWRDb2xvciA9IG5ldyBUaW55Q29sb3IoaGV4KVxuICAgICAgICAubGlnaHRlbihpdGVtLm1hcFswXSlcbiAgICAgICAgLmRhcmtlbihpdGVtLm1hcFsxXSlcbiAgICAgICAgLnNhdHVyYXRlKGl0ZW0ubWFwWzJdKTtcbiAgICAgIGNvbnN0IGMgPSBuZXcgVGlueUNvbG9yKG1hcHBlZENvbG9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGh1ZTogaXRlbS5uYW1lLFxuICAgICAgICBpc0xpZ2h0OiBjLmlzTGlnaHQoKSxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAuLi5jLnRvUmdiKCksXG4gICAgICAgICAgc3RyOiBgcmdiKCR7Yy50b1JnYigpLnJ9LCR7Yy50b1JnYigpLmd9LCR7Yy50b1JnYigpLmJ9KWBcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uc3RhbnRpblBhbGV0dGVGb3JDb2xvcihoZXg6IHN0cmluZyk6IE1hdENzc0h1ZUNvbG9yTWFwSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5jZmcuY29sb3JNYXAubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb21wdXRlUGFsbGV0VHJpYWQoaGV4LCBpdGVtLm5hbWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaHVlOiBpdGVtLm5hbWUsXG4gICAgICAgIGlzTGlnaHQ6IGMuaXNMaWdodCxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAuLi5jLnJnYixcbiAgICAgICAgICBzdHI6IGByZ2IoJHtjLnJnYi5yfSwke2MucmdiLmd9LCR7Yy5yZ2IuYn0pYFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGFsZXR0ZVdpdGhDb250cmFzdEZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JDb250cmFzdE1hcEl0ZW1bXSB7XG4gICAgY29uc3QgbGlnaHRUZXh0ID0gdGhpcy5fZ2V0Q3NzVmFyVmFsdWUoTWF0ZXJpYWxDc3NWYXJzU2VydmljZS5MSUdIVF9URVhUX1ZBUik7XG4gICAgY29uc3QgZGFya1RleHQgPSB0aGlzLl9nZXRDc3NWYXJWYWx1ZShNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkRBUktfVEVYVF9WQVIpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLmdldFBhbGV0dGVGb3JDb2xvcihoZXgpO1xuXG4gICAgLy8gVE9ETyBoYW5kbGUgbm9uIGF1dG8gY2FzZVxuICAgIHJldHVybiBwYWxldHRlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgY29udHJhc3RTdHIgPSBpdGVtLmlzTGlnaHRcbiAgICAgICAgPyBsaWdodFRleHRcbiAgICAgICAgOiBkYXJrVGV4dDtcblxuICAgICAgY29uc3Qgc0xpZ2h0ID0gY29udHJhc3RTdHIuc3BsaXQoJywnKS5tYXAodiA9PiArdik7XG4gICAgICBjb25zdCBjY28gPSB7cjogc0xpZ2h0WzBdLCBnOiBzTGlnaHRbMV0sIGI6IHNMaWdodFsyXSwgYTogMX07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBjb250cmFzdDoge1xuICAgICAgICAgIC4uLmNjbyxcbiAgICAgICAgICBzdHI6IGByZ2IoJHtjY28ucn0sJHtjY28uZ30sJHtjY28uYn0pYFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXB1dGVQYWxldHRlQ29sb3JzKHByZWZpeDogTWF0Q3NzUGFsZXR0ZVByZWZpeCwgaGV4OiBzdHJpbmcpOiBDc3NWYXJpYWJsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQYWxldHRlRm9yQ29sb3IoaGV4KS5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBjID0gaXRlbS5jb2xvcjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGAke3ByZWZpeH0ke2l0ZW0uaHVlfWAsXG4gICAgICAgIHZhbDogYCR7Yy5yfSwgJHtjLmd9LCAke2MuYn1gXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKHBhbGV0dGVQcmVmaXg6IE1hdENzc1BhbGV0dGVQcmVmaXgpIHtcbiAgICBjb25zdCB1cGRhdGVzID0gdGhpcy5fY2FsY3VsYXRlQ29udHJhc3RDb2xvcnNGb3JDdXJyZW50VmFsdWVzKHBhbGV0dGVQcmVmaXgpXG4gICAgICAubWFwKCh7Y29udHJhc3RDb2xvclZhciwgaHVlfSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbDogYHZhcigke2NvbnRyYXN0Q29sb3JWYXJ9KWAsXG4gICAgICAgICAgbmFtZTogYCR7cGFsZXR0ZVByZWZpeCArIE1hdGVyaWFsQ3NzVmFyc1NlcnZpY2UuQ09OVFJBU1RfUFJFRklYfSR7aHVlfWAsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB0aGlzLl9zZXRTdHlsZSh1cGRhdGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRyYXN0Q29sb3JzRm9yQ3VycmVudFZhbHVlcyhwYWxldHRlUHJlZml4OiBNYXRDc3NQYWxldHRlUHJlZml4KTpcbiAgICB7IGNvbnRyYXN0Q29sb3JWYXI6IHN0cmluZywgaHVlOiBIdWVWYWx1ZSB9W10ge1xuICAgIHJldHVybiB0aGlzLmNmZy5zb3J0ZWRIdWVzLm1hcCgoaHVlKSA9PiB7XG4gICAgICBjb25zdCBodWVWYXJWYWwgPSB0aGlzLl9nZXRDc3NWYXJWYWx1ZShgJHtwYWxldHRlUHJlZml4fSR7aHVlfWApO1xuICAgICAgY29uc3QgYyA9IG5ldyBUaW55Q29sb3IoYHJnYigke2h1ZVZhclZhbH0pYCk7XG4gICAgICBjb25zdCBjb250cmFzdENvbG9yVmFyID0gYy5pc0RhcmsoKVxuICAgICAgICA/IE1hdGVyaWFsQ3NzVmFyc1NlcnZpY2UuTElHSFRfVEVYVF9WQVJcbiAgICAgICAgOiBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkRBUktfVEVYVF9WQVI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250cmFzdENvbG9yVmFyLFxuICAgICAgICBodWUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U3R5bGUodmFyczogQ3NzVmFyaWFibGVbXSkge1xuICAgIHZhcnMuZm9yRWFjaChzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ST09ULCBzLm5hbWUsIHMudmFsLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkRhc2hDYXNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENzc1ZhclZhbHVlKHY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUodGhpcy5ST09UKS5nZXRQcm9wZXJ0eVZhbHVlKHYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgcGFsbGV0IGNvbG9ycyBiYXNlZCBvbiBhIFRyaWFkIChDb25zdGFudGluKVxuICAgKiBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYml0c29uL21jZ1xuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlUGFsbGV0VHJpYWQoaGV4OiBzdHJpbmcsIGh1ZTogSHVlVmFsdWUpIHtcbiAgICBjb25zdCBiYXNlTGlnaHQgPSBuZXcgVGlueUNvbG9yKCcjZmZmZmZmJyk7XG4gICAgY29uc3QgYmFzZURhcmsgPSB0aGlzLm11bHRpcGx5KG5ldyBUaW55Q29sb3IoaGV4KS50b1JnYigpLCBuZXcgVGlueUNvbG9yKGhleCkudG9SZ2IoKSk7XG4gICAgY29uc3QgYmFzZVRyaWFkID0gbmV3IFRpbnlDb2xvcihoZXgpLnRldHJhZCgpO1xuICAgIGxldCBjb2xvcjogeyByZ2I6IE51bWJlcmlmeTxSR0JBPiwgaXNMaWdodDogYm9vbGVhbiB9O1xuXG4gICAgc3dpdGNoIChodWUpIHtcbiAgICAgIGNhc2UgJzUwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VMaWdodC5taXgoaGV4LCAxMikpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzEwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlTGlnaHQubWl4KGhleCwgMzApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcyMDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZUxpZ2h0Lm1peChoZXgsIDUwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMzAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VMaWdodC5taXgoaGV4LCA3MCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzQwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlTGlnaHQubWl4KGhleCwgODUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc1MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZUxpZ2h0Lm1peChoZXgsIDEwMCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzYwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoaGV4LCA4NykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzcwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoaGV4LCA3MCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzgwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoaGV4LCA1NCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzkwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoaGV4LCAyNSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0ExMDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGJhc2VUcmlhZFs0XSwgMTUpLnNhdHVyYXRlKDgwKS5saWdodGVuKDY1KSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQTIwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoYmFzZVRyaWFkWzRdLCAxNSkuc2F0dXJhdGUoODApLmxpZ2h0ZW4oNTUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBNDAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VEYXJrLm1peChiYXNlVHJpYWRbNF0sIDE1KS5zYXR1cmF0ZSgxMDApLmxpZ2h0ZW4oNDUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBNzAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VEYXJrLm1peChiYXNlVHJpYWRbNF0sIDE1KS5zYXR1cmF0ZSgxMDApLmxpZ2h0ZW4oNDApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBtdWx0aXBseShyZ2IxOiBOdW1iZXJpZnk8UkdCQT4sIHJnYjI6IE51bWJlcmlmeTxSR0JBPik6IFRpbnlDb2xvciB7XG4gICAgcmdiMS5iID0gTWF0aC5mbG9vcihyZ2IxLmIgKiByZ2IyLmIgLyAyNTUpO1xuICAgIHJnYjEuZyA9IE1hdGguZmxvb3IocmdiMS5nICogcmdiMi5nIC8gMjU1KTtcbiAgICByZ2IxLnIgPSBNYXRoLmZsb29yKHJnYjEuciAqIHJnYjIuciAvIDI1NSk7XG4gICAgcmV0dXJuIG5ldyBUaW55Q29sb3IoJ3JnYsKgJyArIHJnYjEuciArICfCoCcgKyByZ2IxLmcgKyAnwqAnICsgcmdiMS5iKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sb3JPYmplY3QodmFsdWU6IFRpbnlDb2xvcikge1xuICAgIGNvbnN0IGMgPSBuZXcgVGlueUNvbG9yKHZhbHVlKTtcbiAgICByZXR1cm4ge3JnYjogYy50b1JnYigpLCBpc0xpZ2h0OiBjLmlzTGlnaHQoKX07XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtY3NzLXZhcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWNzcy12YXJzL3NyYy9saWIvbWF0ZXJpYWwtY3NzLXZhcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQWtCLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFJTCxtQkFBbUIsRUFHcEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBT3BFLHdEQUF3RDtBQUN4RCxlQUFlO0FBSWYsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsWUFDRSxlQUFpQyxFQUNQLFFBQWtCLEVBQ2IsR0FBK0I7UUFEcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVA5QyxrQ0FBNkIsR0FBYSxLQUFLLENBQUM7UUFDaEQsaUNBQTRCLEdBQWEsS0FBSyxDQUFDO1FBQy9DLCtCQUEwQixHQUFhLEtBQUssQ0FBQztRQUM3QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU9yQixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFMUMsSUFBSSxDQUFDLEdBQUcsbUNBQ0gsbUJBQW1CLEdBQ25CLEdBQUcsQ0FDUCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNB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Q0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWdCO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQztJQUNoRCxDQUFDOztBQTNWYyxzQ0FBZSxHQUFHLFdBQVcsQ0FBQztBQUM5QixvQ0FBYSxHQUFHLHFCQUFxQixDQUFDO0FBQ3RDLHFDQUFjLEdBQUcsc0JBQXNCLENBQUM7OztZQU54RCxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXZCc0MsZ0JBQWdCO1lBNkNmLFFBQVEsdUJBQTNDLE1BQU0sU0FBQyxRQUFROzRDQUNmLE1BQU0sU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyLCBSZW5kZXJlclN0eWxlRmxhZ3MyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TnVtYmVyaWZ5LCBSR0JBLCBUaW55Q29sb3J9IGZyb20gJ0BjdHJsL3Rpbnljb2xvcic7XG5pbXBvcnQge1xuICBIdWVWYWx1ZSxcbiAgTWF0Q3NzSHVlQ29sb3JDb250cmFzdE1hcEl0ZW0sXG4gIE1hdENzc0h1ZUNvbG9yTWFwSXRlbSxcbiAgTWF0Q3NzUGFsZXR0ZVByZWZpeCxcbiAgTWF0ZXJpYWxDc3NWYXJpYWJsZXMsXG4gIE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnXG59IGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7REVGQVVMVF9NQVRfQ1NTX0NGR30gZnJvbSAnLi9kZWZhdWx0LWNmZy5jb25zdCc7XG5pbXBvcnQge01BVEVSSUFMX0NTU19WQVJTX0NGR30gZnJvbSAnLi4vbWF0LWNzcy1jb25maWctdG9rZW4uY29uc3QnO1xuXG5pbnRlcmZhY2UgQ3NzVmFyaWFibGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbDogc3RyaW5nO1xufVxuXG4vLyBAc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMDM1MVxuLyoqIEBkeW5hbWljICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgQ09OVFJBU1RfUFJFRklYID0gJ2NvbnRyYXN0LSc7XG4gIHByaXZhdGUgc3RhdGljIERBUktfVEVYVF9WQVIgPSAnLS1kYXJrLXByaW1hcnktdGV4dCc7XG4gIHByaXZhdGUgc3RhdGljIExJR0hUX1RFWFRfVkFSID0gJy0tbGlnaHQtcHJpbWFyeS10ZXh0JztcblxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgUk9PVDogSFRNTEVsZW1lbnQ7XG5cbiAgLy8gVGhpcyBzaG91bGQgYmUgcmVhZG9ubHkgZnJvbSB0aGUgb3V0c2lkZVxuICBjZmc6IE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnO1xuICBwcmltYXJ5OiBzdHJpbmc7XG4gIGFjY2VudDogc3RyaW5nO1xuICB3YXJuOiBzdHJpbmc7XG4gIGlzRGFya1RoZW1lOiBib29sZWFuO1xuICBjb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeTogSHVlVmFsdWUgPSAnNDAwJztcbiAgY29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudDogSHVlVmFsdWUgPSAnNDAwJztcbiAgY29udHJhc3RDb2xvclRocmVzaG9sZFdhcm46IEh1ZVZhbHVlID0gJzQwMCc7XG4gIGlzQXV0b0NvbnRyYXN0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoTUFURVJJQUxfQ1NTX1ZBUlNfQ0ZHKSBjZmc6IE1hdGVyaWFsQ3NzVmFyaWFibGVzQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuUk9PVCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgdGhpcy5jZmcgPSB7XG4gICAgICAuLi5ERUZBVUxUX01BVF9DU1NfQ0ZHLFxuICAgICAgLi4uY2ZnLFxuICAgIH07XG4gICAgdGhpcy5pc0F1dG9Db250cmFzdCA9IHRoaXMuY2ZnLmlzQXV0b0NvbnRyYXN0O1xuXG4gICAgaWYgKHRoaXMuY2ZnLmlzRGFya1RoZW1lKSB7XG4gICAgICB0aGlzLnNldERhcmtUaGVtZSh0aGlzLmNmZy5pc0RhcmtUaGVtZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNmZy5wcmltYXJ5KSB7XG4gICAgICB0aGlzLnNldFByaW1hcnlDb2xvcih0aGlzLmNmZy5wcmltYXJ5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2ZnLmFjY2VudCkge1xuICAgICAgdGhpcy5zZXRBY2NlbnRDb2xvcih0aGlzLmNmZy5hY2NlbnQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jZmcud2Fybikge1xuICAgICAgdGhpcy5zZXRXYXJuQ29sb3IodGhpcy5jZmcud2Fybik7XG4gICAgfVxuICB9XG5cbiAgc2V0UHJpbWFyeUNvbG9yKGhleDogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmltYXJ5ID0gaGV4O1xuICAgIGNvbnN0IHZhclByZWZpeCA9IE1hdENzc1BhbGV0dGVQcmVmaXguUHJpbWFyeTtcbiAgICBjb25zdCBzdHlsZVByaW1hcnkgPSB0aGlzLl9jb21wdXRlUGFsZXR0ZUNvbG9ycyh2YXJQcmVmaXgsIHRoaXMucHJpbWFyeSk7XG4gICAgdGhpcy5fc2V0U3R5bGUoc3R5bGVQcmltYXJ5KTtcblxuICAgIGlmICh0aGlzLmlzQXV0b0NvbnRyYXN0KSB7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUFuZFNldENvbnRyYXN0Q29sb3IodmFyUHJlZml4KTtcbiAgICB9XG4gIH1cblxuICBzZXRBY2NlbnRDb2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMuYWNjZW50ID0gaGV4O1xuICAgIGNvbnN0IHZhclByZWZpeCA9IE1hdENzc1BhbGV0dGVQcmVmaXguQWNjZW50O1xuICAgIGNvbnN0IHN0eWxlQWNjZW50ID0gdGhpcy5fY29tcHV0ZVBhbGV0dGVDb2xvcnModmFyUHJlZml4LCB0aGlzLmFjY2VudCk7XG4gICAgdGhpcy5fc2V0U3R5bGUoc3R5bGVBY2NlbnQpO1xuXG4gICAgaWYgKHRoaXMuaXNBdXRvQ29udHJhc3QpIHtcbiAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQW5kU2V0Q29udHJhc3RDb2xvcih2YXJQcmVmaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFdhcm5Db2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMud2FybiA9IGhleDtcbiAgICBjb25zdCB2YXJQcmVmaXggPSBNYXRDc3NQYWxldHRlUHJlZml4Lldhcm47XG4gICAgY29uc3Qgc3R5bGVXYXJuID0gdGhpcy5fY29tcHV0ZVBhbGV0dGVDb2xvcnModmFyUHJlZml4LCB0aGlzLndhcm4pO1xuICAgIHRoaXMuX3NldFN0eWxlKHN0eWxlV2Fybik7XG5cbiAgICBpZiAodGhpcy5pc0F1dG9Db250cmFzdCkge1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKHZhclByZWZpeCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmFyaWFibGUoY3NzVmFyTmFtZTogTWF0ZXJpYWxDc3NWYXJpYWJsZXMsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXRTdHlsZShbe1xuICAgICAgbmFtZTogY3NzVmFyTmFtZSxcbiAgICAgIHZhbDogdmFsdWUsXG4gICAgfV0pO1xuICB9XG5cbiAgc2V0RGFya1RoZW1lKGlzRGFyazogYm9vbGVhbikge1xuICAgIGlmIChpc0RhcmspIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2ZnLmxpZ2h0VGhlbWVDbGFzcyk7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCh0aGlzLmNmZy5kYXJrVGhlbWVDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2ZnLmRhcmtUaGVtZUNsYXNzKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKHRoaXMuY2ZnLmxpZ2h0VGhlbWVDbGFzcyk7XG4gICAgfVxuICAgIHRoaXMuaXNEYXJrVGhlbWUgPSBpc0Rhcms7XG4gIH1cblxuICBzZXRBdXRvQ29udHJhc3RFbmFibGVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNBdXRvQ29udHJhc3QgPSB2YWw7XG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKE1hdENzc1BhbGV0dGVQcmVmaXguUHJpbWFyeSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUFuZFNldENvbnRyYXN0Q29sb3IoTWF0Q3NzUGFsZXR0ZVByZWZpeC5BY2NlbnQpO1xuICAgICAgdGhpcy5fcmVjYWxjdWxhdGVBbmRTZXRDb250cmFzdENvbG9yKE1hdENzc1BhbGV0dGVQcmVmaXguV2Fybik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkodGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSk7XG4gICAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRBY2NlbnQodGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50KTtcbiAgICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkV2Fybik7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkodGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuY29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkgPSB0aHJlc2hvbGQ7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkKHRocmVzaG9sZCwgTWF0Q3NzUGFsZXR0ZVByZWZpeC5QcmltYXJ5KTtcbiAgfVxuXG4gIHNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRBY2NlbnQodGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuY29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudCA9IHRocmVzaG9sZDtcbiAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkLCBNYXRDc3NQYWxldHRlUHJlZml4LkFjY2VudCk7XG4gIH1cblxuICBzZXRDb250cmFzdENvbG9yVGhyZXNob2xkV2Fybih0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5jb250cmFzdENvbG9yVGhyZXNob2xkV2FybiA9IHRocmVzaG9sZDtcbiAgICB0aGlzLnNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkLCBNYXRDc3NQYWxldHRlUHJlZml4Lldhcm4pO1xuICB9XG5cbiAgc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCh0aHJlc2hvbGQ6IEh1ZVZhbHVlLCBwYWxldHRlUHJlZml4OiBNYXRDc3NQYWxldHRlUHJlZml4KSB7XG4gICAgbGV0IGNvbG9yID0gTWF0ZXJpYWxDc3NWYXJzU2VydmljZS5EQVJLX1RFWFRfVkFSO1xuICAgIGNvbnN0IHVwZGF0ZXMgPSB0aGlzLmNmZy5zb3J0ZWRIdWVzLm1hcCgoaHVlKSA9PiB7XG4gICAgICBpZiAoaHVlID09PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgY29sb3IgPSBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkxJR0hUX1RFWFRfVkFSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsOiB0aGlzLl9nZXRDc3NWYXJWYWx1ZShjb2xvciksXG4gICAgICAgIG5hbWU6IGAke3BhbGV0dGVQcmVmaXggKyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkNPTlRSQVNUX1BSRUZJWH0ke2h1ZX1gLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLl9zZXRTdHlsZSh1cGRhdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBwYWxldHRlIGNvbG9yIGJhc2VkIG9uIHRyYWRpdGlvbmFsIHZhbHVlc1xuICAgKi9cbiAgc2V0QWx0ZXJuYXRpdmVDb2xvckFsZ29yaXRobSh0cmFkaXRpb25hbDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2ZnLmlzQWx0ZXJuYXRpdmVDb2xvckFsZ29yaXRobSA9IHRyYWRpdGlvbmFsO1xuICAgIHRoaXMuc2V0UHJpbWFyeUNvbG9yKHRoaXMucHJpbWFyeSk7XG4gICAgdGhpcy5zZXRBY2NlbnRDb2xvcih0aGlzLmFjY2VudCk7XG4gICAgdGhpcy5zZXRXYXJuQ29sb3IodGhpcy53YXJuKTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2Ugc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFByaW1hcnkgaW5zdGVhZCAqL1xuICBjaGFuZ2VDb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSh0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkUHJpbWFyeSh0aHJlc2hvbGQpO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBzZXRDb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50IGluc3RlYWQgKi9cbiAgY2hhbmdlQ29udHJhc3RDb2xvclRocmVzaG9sZEFjY2VudCh0aHJlc2hvbGQ6IEh1ZVZhbHVlKSB7XG4gICAgdGhpcy5zZXRDb250cmFzdENvbG9yVGhyZXNob2xkQWNjZW50KHRocmVzaG9sZCk7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHNldENvbnRyYXN0Q29sb3JUaHJlc2hvbGRXYXJuIGluc3RlYWQgKi9cbiAgY2hhbmdlQ29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhyZXNob2xkOiBIdWVWYWx1ZSkge1xuICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZFdhcm4odGhyZXNob2xkKTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2Ugc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCBpbnN0ZWFkICovXG4gIGNoYW5nZUNvbnRyYXN0Q29sb3JUaHJlc2hvbGQodGhyZXNob2xkOiBIdWVWYWx1ZSwgcGFsZXR0ZVByZWZpeDogTWF0Q3NzUGFsZXR0ZVByZWZpeCkge1xuICAgIHRoaXMuc2V0Q29udHJhc3RDb2xvclRocmVzaG9sZCh0aHJlc2hvbGQsIHBhbGV0dGVQcmVmaXgpO1xuICB9XG5cbiAgZ2V0UGFsZXR0ZUZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JNYXBJdGVtW10ge1xuICAgIGlmICh0aGlzLmNmZy5pc0FsdGVybmF0aXZlQ29sb3JBbGdvcml0aG0pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyYWRpdGlvbmFsUGFsZXR0ZUZvckNvbG9yKGhleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnN0YW50aW5QYWxldHRlRm9yQ29sb3IoaGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRyYWRpdGlvbmFsUGFsZXR0ZUZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JNYXBJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNmZy5jb2xvck1hcC5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBtYXBwZWRDb2xvciA9IG5ldyBUaW55Q29sb3IoaGV4KVxuICAgICAgICAubGlnaHRlbihpdGVtLm1hcFswXSlcbiAgICAgICAgLmRhcmtlbihpdGVtLm1hcFsxXSlcbiAgICAgICAgLnNhdHVyYXRlKGl0ZW0ubWFwWzJdKTtcbiAgICAgIGNvbnN0IGMgPSBuZXcgVGlueUNvbG9yKG1hcHBlZENvbG9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGh1ZTogaXRlbS5uYW1lLFxuICAgICAgICBpc0xpZ2h0OiBjLmlzTGlnaHQoKSxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAuLi5jLnRvUmdiKCksXG4gICAgICAgICAgc3RyOiBgcmdiKCR7Yy50b1JnYigpLnJ9LCR7Yy50b1JnYigpLmd9LCR7Yy50b1JnYigpLmJ9KWBcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uc3RhbnRpblBhbGV0dGVGb3JDb2xvcihoZXg6IHN0cmluZyk6IE1hdENzc0h1ZUNvbG9yTWFwSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5jZmcuY29sb3JNYXAubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb21wdXRlUGFsbGV0VHJpYWQoaGV4LCBpdGVtLm5hbWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaHVlOiBpdGVtLm5hbWUsXG4gICAgICAgIGlzTGlnaHQ6IGMuaXNMaWdodCxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAuLi5jLnJnYixcbiAgICAgICAgICBzdHI6IGByZ2IoJHtjLnJnYi5yfSwke2MucmdiLmd9LCR7Yy5yZ2IuYn0pYFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGFsZXR0ZVdpdGhDb250cmFzdEZvckNvbG9yKGhleDogc3RyaW5nKTogTWF0Q3NzSHVlQ29sb3JDb250cmFzdE1hcEl0ZW1bXSB7XG4gICAgY29uc3QgbGlnaHRUZXh0ID0gdGhpcy5fZ2V0Q3NzVmFyVmFsdWUoTWF0ZXJpYWxDc3NWYXJzU2VydmljZS5MSUdIVF9URVhUX1ZBUik7XG4gICAgY29uc3QgZGFya1RleHQgPSB0aGlzLl9nZXRDc3NWYXJWYWx1ZShNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkRBUktfVEVYVF9WQVIpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLmdldFBhbGV0dGVGb3JDb2xvcihoZXgpO1xuXG4gICAgLy8gVE9ETyBoYW5kbGUgbm9uIGF1dG8gY2FzZVxuICAgIHJldHVybiBwYWxldHRlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgY29udHJhc3RTdHIgPSBpdGVtLmlzTGlnaHRcbiAgICAgICAgPyBsaWdodFRleHRcbiAgICAgICAgOiBkYXJrVGV4dDtcblxuICAgICAgY29uc3Qgc0xpZ2h0ID0gY29udHJhc3RTdHIuc3BsaXQoJywnKS5tYXAodiA9PiArdik7XG4gICAgICBjb25zdCBjY28gPSB7cjogc0xpZ2h0WzBdLCBnOiBzTGlnaHRbMV0sIGI6IHNMaWdodFsyXSwgYTogMX07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBjb250cmFzdDoge1xuICAgICAgICAgIC4uLmNjbyxcbiAgICAgICAgICBzdHI6IGAke2Njby5yfSwke2Njby5nfSwke2Njby5ifWBcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlUGFsZXR0ZUNvbG9ycyhwcmVmaXg6IE1hdENzc1BhbGV0dGVQcmVmaXgsIGhleDogc3RyaW5nKTogQ3NzVmFyaWFibGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFsZXR0ZUZvckNvbG9yKGhleCkubWFwKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgYyA9IGl0ZW0uY29sb3I7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBgJHtwcmVmaXh9JHtpdGVtLmh1ZX1gLFxuICAgICAgICB2YWw6IGAke2Mucn0sICR7Yy5nfSwgJHtjLmJ9YFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlY2FsY3VsYXRlQW5kU2V0Q29udHJhc3RDb2xvcihwYWxldHRlUHJlZml4OiBNYXRDc3NQYWxldHRlUHJlZml4KSB7XG4gICAgY29uc3QgdXBkYXRlcyA9IHRoaXMuX2NhbGN1bGF0ZUNvbnRyYXN0Q29sb3JzRm9yQ3VycmVudFZhbHVlcyhwYWxldHRlUHJlZml4KVxuICAgICAgLm1hcCgoe2NvbnRyYXN0Q29sb3JWYXIsIGh1ZX0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWw6IHRoaXMuX2dldENzc1ZhclZhbHVlKGNvbnRyYXN0Q29sb3JWYXIpLFxuICAgICAgICAgIG5hbWU6IGAke3BhbGV0dGVQcmVmaXggKyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkNPTlRSQVNUX1BSRUZJWH0ke2h1ZX1gLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgdGhpcy5fc2V0U3R5bGUodXBkYXRlcyk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVDb250cmFzdENvbG9yc0ZvckN1cnJlbnRWYWx1ZXMocGFsZXR0ZVByZWZpeDogTWF0Q3NzUGFsZXR0ZVByZWZpeCk6XG4gICAgeyBjb250cmFzdENvbG9yVmFyOiBzdHJpbmcsIGh1ZTogSHVlVmFsdWUgfVtdIHtcbiAgICByZXR1cm4gdGhpcy5jZmcuc29ydGVkSHVlcy5tYXAoKGh1ZSkgPT4ge1xuICAgICAgY29uc3QgaHVlVmFyVmFsID0gdGhpcy5fZ2V0Q3NzVmFyVmFsdWUoYCR7cGFsZXR0ZVByZWZpeH0ke2h1ZX1gKTtcbiAgICAgIGNvbnN0IGMgPSBuZXcgVGlueUNvbG9yKGByZ2IoJHtodWVWYXJWYWx9KWApO1xuICAgICAgY29uc3QgY29udHJhc3RDb2xvclZhciA9IGMuaXNEYXJrKClcbiAgICAgICAgPyBNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlLkxJR0hUX1RFWFRfVkFSXG4gICAgICAgIDogTWF0ZXJpYWxDc3NWYXJzU2VydmljZS5EQVJLX1RFWFRfVkFSO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udHJhc3RDb2xvclZhcixcbiAgICAgICAgaHVlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFN0eWxlKHZhcnM6IENzc1ZhcmlhYmxlW10pIHtcbiAgICB2YXJzLmZvckVhY2gocyA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuUk9PVCwgcy5uYW1lLCBzLnZhbCwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDc3NWYXJWYWx1ZSh2OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuUk9PVCkuZ2V0UHJvcGVydHlWYWx1ZSh2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIHBhbGxldCBjb2xvcnMgYmFzZWQgb24gYSBUcmlhZCAoQ29uc3RhbnRpbilcbiAgICogc2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWJpdHNvbi9tY2dcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVBhbGxldFRyaWFkKGhleDogc3RyaW5nLCBodWU6IEh1ZVZhbHVlKSB7XG4gICAgY29uc3QgYmFzZUxpZ2h0ID0gbmV3IFRpbnlDb2xvcignI2ZmZmZmZicpO1xuICAgIGNvbnN0IGJhc2VEYXJrID0gdGhpcy5tdWx0aXBseShuZXcgVGlueUNvbG9yKGhleCkudG9SZ2IoKSwgbmV3IFRpbnlDb2xvcihoZXgpLnRvUmdiKCkpO1xuICAgIGNvbnN0IGJhc2VUcmlhZCA9IG5ldyBUaW55Q29sb3IoaGV4KS50ZXRyYWQoKTtcbiAgICBsZXQgY29sb3I6IHsgcmdiOiBOdW1iZXJpZnk8UkdCQT4sIGlzTGlnaHQ6IGJvb2xlYW4gfTtcblxuICAgIHN3aXRjaCAoaHVlKSB7XG4gICAgICBjYXNlICc1MCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlTGlnaHQubWl4KGhleCwgMTIpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcxMDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZUxpZ2h0Lm1peChoZXgsIDMwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMjAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VMaWdodC5taXgoaGV4LCA1MCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzMwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlTGlnaHQubWl4KGhleCwgNzApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc0MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZUxpZ2h0Lm1peChoZXgsIDg1KSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnNTAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VMaWdodC5taXgoaGV4LCAxMDApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc2MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGhleCwgODcpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc3MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGhleCwgNzApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc4MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGhleCwgNTQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc5MDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGhleCwgMjUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBMTAwJzpcbiAgICAgICAgY29sb3IgPSB0aGlzLmdldENvbG9yT2JqZWN0KGJhc2VEYXJrLm1peChiYXNlVHJpYWRbNF0sIDE1KS5zYXR1cmF0ZSg4MCkubGlnaHRlbig2NSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0EyMDAnOlxuICAgICAgICBjb2xvciA9IHRoaXMuZ2V0Q29sb3JPYmplY3QoYmFzZURhcmsubWl4KGJhc2VUcmlhZFs0XSwgMTUpLnNhdHVyYXRlKDgwKS5saWdodGVuKDU1KSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQTQwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoYmFzZVRyaWFkWzRdLCAxNSkuc2F0dXJhdGUoMTAwKS5saWdodGVuKDQ1KSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQTcwMCc6XG4gICAgICAgIGNvbG9yID0gdGhpcy5nZXRDb2xvck9iamVjdChiYXNlRGFyay5taXgoYmFzZVRyaWFkWzRdLCAxNSkuc2F0dXJhdGUoMTAwKS5saWdodGVuKDQwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG4gIHByaXZhdGUgbXVsdGlwbHkocmdiMTogTnVtYmVyaWZ5PFJHQkE+LCByZ2IyOiBOdW1iZXJpZnk8UkdCQT4pOiBUaW55Q29sb3Ige1xuICAgIHJnYjEuYiA9IE1hdGguZmxvb3IocmdiMS5iICogcmdiMi5iIC8gMjU1KTtcbiAgICByZ2IxLmcgPSBNYXRoLmZsb29yKHJnYjEuZyAqIHJnYjIuZyAvIDI1NSk7XG4gICAgcmdiMS5yID0gTWF0aC5mbG9vcihyZ2IxLnIgKiByZ2IyLnIgLyAyNTUpO1xuICAgIHJldHVybiBuZXcgVGlueUNvbG9yKCdyZ2LCoCcgKyByZ2IxLnIgKyAnwqAnICsgcmdiMS5nICsgJ8KgJyArIHJnYjEuYik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yT2JqZWN0KHZhbHVlOiBUaW55Q29sb3IpIHtcbiAgICBjb25zdCBjID0gbmV3IFRpbnlDb2xvcih2YWx1ZSk7XG4gICAgcmV0dXJuIHtyZ2I6IGMudG9SZ2IoKSwgaXNMaWdodDogYy5pc0xpZ2h0KCl9O1xuICB9XG5cbn1cbiJdfQ==

@@ -1,3 +0,5 @@

import { InjectionToken, RendererStyleFlags2, ɵɵdefineInjectable, ɵɵinject, RendererFactory2, Injectable, Inject, NgModule } from '@angular/core';
import * as i0 from '@angular/core';
import { InjectionToken, RendererStyleFlags2, Injectable, RendererFactory2, Inject, NgModule } from '@angular/core';
import { TinyColor } from '@ctrl/tinycolor';
import * as i1 from '@angular/common';
import { DOCUMENT, CommonModule } from '@angular/common';

@@ -302,3 +304,3 @@

return {
val: `var(${color})`,
val: this._getCssVarValue(color),
name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,

@@ -377,3 +379,3 @@ };

const cco = { r: sLight[0], g: sLight[1], b: sLight[2], a: 1 };
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: `rgb(${cco.r},${cco.g},${cco.b})` }) });
return Object.assign(Object.assign({}, item), { contrast: Object.assign(Object.assign({}, cco), { str: `${cco.r},${cco.g},${cco.b}` }) });
});

@@ -394,3 +396,3 @@ }

return {
val: `var(${contrastColorVar})`,
val: this._getCssVarValue(contrastColorVar),
name: `${palettePrefix + MaterialCssVarsService.CONTRAST_PREFIX}${hue}`,

@@ -493,3 +495,3 @@ };

MaterialCssVarsService.LIGHT_TEXT_VAR = '--light-primary-text';
MaterialCssVarsService.ɵprov = ɵɵdefineInjectable({ factory: function MaterialCssVarsService_Factory() { return new MaterialCssVarsService(ɵɵinject(RendererFactory2), ɵɵinject(DOCUMENT), ɵɵinject(MATERIAL_CSS_VARS_CFG)); }, token: MaterialCssVarsService, providedIn: "root" });
MaterialCssVarsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MaterialCssVarsService_Factory() { return new MaterialCssVarsService(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(MATERIAL_CSS_VARS_CFG)); }, token: MaterialCssVarsService, providedIn: "root" });
MaterialCssVarsService.decorators = [

@@ -496,0 +498,0 @@ { type: Injectable, args: [{

{
"name": "angular-material-css-vars",
"version": "1.2.0",
"version": "2.0.0",
"description": "Little library to use css variables for @angular/material",

@@ -21,5 +21,5 @@ "author": "johannesjo <contact@super-productivity.com> (http://super-productivity.com)",

"peerDependencies": {
"@angular/common": ">=8.1.3 <12",
"@angular/core": ">=8.1.3 <12",
"@angular/material": ">=8.1.3 <12"
"@angular/common": ">=12",
"@angular/core": ">=12",
"@angular/material": ">=12"
},

@@ -26,0 +26,0 @@ "dependencies": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet