tango-app-ui-manage-settings 3.7.52 → 3.7.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/configurations/trax-configuration/trax-configuration.component.mjs +3 -5
- package/fesm2022/tango-app-ui-manage-settings.mjs +2 -4
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/configurations/trax-configuration/trax-configuration.component.d.ts +0 -2
- package/package.json +1 -1
package/esm2022/lib/components/configurations/trax-configuration/trax-configuration.component.mjs
CHANGED
|
@@ -25,8 +25,6 @@ export class TraxConfigurationComponent {
|
|
|
25
25
|
{ pass: 'Compliant', fail: 'Non-Compliant' },
|
|
26
26
|
{ pass: 'Satisfactory', fail: 'Unsatisfactory' }
|
|
27
27
|
];
|
|
28
|
-
/** Pass mark shown in the preview; per-audit pass marks live on each audit. */
|
|
29
|
-
previewPassMark = 75;
|
|
30
28
|
clientId = '';
|
|
31
29
|
isDisabled = true;
|
|
32
30
|
saving = false;
|
|
@@ -127,10 +125,10 @@ export class TraxConfigurationComponent {
|
|
|
127
125
|
});
|
|
128
126
|
}
|
|
129
127
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, deps: [{ token: i1.ClientApiService }, { token: i2.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-
|
|
128
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
131
129
|
}
|
|
132
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, decorators: [{
|
|
133
131
|
type: Component,
|
|
134
|
-
args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-
|
|
132
|
+
args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
|
|
135
133
|
}], ctorParameters: () => [{ type: i1.ClientApiService }, { type: i2.ToastService }] });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvdHJheC1jb25maWd1cmF0aW9uL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL3RyYXgtY29uZmlndXJhdGlvbi90cmF4LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVzFDLE1BQU0sUUFBUSxHQUFlO0lBQzNCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLHNCQUFzQixFQUFFLG9CQUFvQjtDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFrQmpCO0lBQW1DO0lBakJ2RCxNQUFNLEdBQWUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBMEM7UUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7UUFDOUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7UUFDNUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtLQUNqRCxDQUFDO0lBQ0YsK0VBQStFO0lBQ3RFLGVBQWUsR0FB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LENBQUM7WUFDM0ksQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBOUdVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLDhEQzdCdkMsczJJQStFQTs7NEZEbERhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmF4Q29uZmlnIHtcclxuICBwYXNzTGFiZWw6IHN0cmluZztcclxuICBmYWlsTGFiZWw6IHN0cmluZztcclxuICByZW1hcmtzTGFiZWw6IHN0cmluZztcclxuICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRTOiBUcmF4Q29uZmlnID0ge1xyXG4gIHBhc3NMYWJlbDogJ1Bhc3MnLFxyXG4gIGZhaWxMYWJlbDogJ0ZhaWwnLFxyXG4gIHJlbWFya3NMYWJlbDogJ1JlbWFya3MnLFxyXG4gIGFkZGl0aW9uYWxSZW1hcmtzTGFiZWw6ICdBZGRpdGlvbmFsIFJlbWFya3MnXHJcbn07XHJcblxyXG4vKipcclxuICogTWFuYWdlIC0+IFNldHRpbmdzIC0+IFRyYXggQ29uZmlndXJhdGlvbi4gUmVuYW1lcyB0aGUgdHdvIHNjb3Jpbmcgb3V0Y29tZXMgKFBhc3MgLyBGYWlsKVxyXG4gKiBhbmQgdGhlIHR3byBmcmVlLXRleHQgcmVtYXJrIGZpZWxkcyBmb3IgdGhlIHdob2xlIGNsaWVudC4gUmVhZCBhbmQgc2F2ZWQgdGhyb3VnaCB0aGVcclxuICogVHJheCBBUEkgKC90cmF4L2F1ZGl0L3NldHRpbmdzKTsgdGhlIEF1ZGl0IG1vZHVsZSByZWFkcyB0aGUgc2FtZSBkb2N1bWVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRyYXgtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYXhDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBjb25maWc6IFRyYXhDb25maWcgPSB7IC4uLkRFRkFVTFRTIH07XHJcbiAgcmVhZG9ubHkgcHJlc2V0czogQXJyYXk8eyBwYXNzOiBzdHJpbmc7IGZhaWw6IHN0cmluZyB9PiA9IFtcclxuICAgIHsgcGFzczogJ1Bhc3MnLCBmYWlsOiAnRmFpbCcgfSxcclxuICAgIHsgcGFzczogJ0NvbXBsaWFudCcsIGZhaWw6ICdOb24tQ29tcGxpYW50JyB9LFxyXG4gICAgeyBwYXNzOiAnU2F0aXNmYWN0b3J5JywgZmFpbDogJ1Vuc2F0aXNmYWN0b3J5JyB9XHJcbiAgXTtcclxuICAvKiogUGFzcyBtYXJrIHNob3duIGluIHRoZSBwcmV2aWV3OyBwZXItYXVkaXQgcGFzcyBtYXJrcyBsaXZlIG9uIGVhY2ggYXVkaXQuICovXHJcbiAgcmVhZG9ubHkgcHJldmlld1Bhc3NNYXJrID0gNzU7XHJcblxyXG4gIGNsaWVudElkID0gJyc7XHJcbiAgaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNhdmVkOiBUcmF4Q29uZmlnID0geyAuLi5ERUZBVUxUUyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IENsaWVudEFwaVNlcnZpY2UsIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNsaWVudERhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZT8uY2xpZW50SWQgJiYgZS5jbGllbnRJZCAhPT0gdGhpcy5jbGllbnRJZCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBlLmNsaWVudElkO1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFRyYXhDb25maWcodGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuc2F2ZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwaWNrKHNyYzogYW55KTogVHJheENvbmZpZyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXNzTGFiZWw6IHNyYz8ucGFzc0xhYmVsIHx8IERFRkFVTFRTLnBhc3NMYWJlbCxcclxuICAgICAgZmFpbExhYmVsOiBzcmM/LmZhaWxMYWJlbCB8fCBERUZBVUxUUy5mYWlsTGFiZWwsXHJcbiAgICAgIHJlbWFya3NMYWJlbDogc3JjPy5yZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMucmVtYXJrc0xhYmVsLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzcmM/LmFkZGl0aW9uYWxSZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMuYWRkaXRpb25hbFJlbWFya3NMYWJlbFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSAhdGhpcy5pc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5UHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuY29uZmlnLnBhc3NMYWJlbCA9IHAucGFzcztcclxuICAgIHRoaXMuY29uZmlnLmZhaWxMYWJlbCA9IHAuZmFpbDtcclxuICB9XHJcblxyXG4gIGlzUHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCkgPT09IHAucGFzcyAmJiB0aGlzLmNvbmZpZy5mYWlsTGFiZWwudHJpbSgpID09PSBwLmZhaWw7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU2F2ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGMgPSB0aGlzLmNvbmZpZztcclxuICAgIHJldHVybiAhdGhpcy5zYXZpbmcgJiYgW2MucGFzc0xhYmVsLCBjLmZhaWxMYWJlbCwgYy5yZW1hcmtzTGFiZWwsIGMuYWRkaXRpb25hbFJlbWFya3NMYWJlbF1cclxuICAgICAgLmV2ZXJ5KHYgPT4gdi50cmltKCkubGVuZ3RoID4gMCAmJiB2LnRyaW0oKS5sZW5ndGggPD0gNDApO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU2F2ZSB8fCAhdGhpcy5jbGllbnRJZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBwYXNzTGFiZWw6IHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCksXHJcbiAgICAgIGZhaWxMYWJlbDogdGhpcy5jb25maWcuZmFpbExhYmVsLnRyaW0oKSxcclxuICAgICAgcmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5yZW1hcmtzTGFiZWwudHJpbSgpLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5hZGRpdGlvbmFsUmVtYXJrc0xhYmVsLnRyaW0oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlVHJheENvbmZpZyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEgfHwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KCdUcmF4IGNvbmZpZ3VyYXRpb24gc2F2ZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KHJlcz8ubWVzc2FnZSB8fCAnQ291bGQgbm90IHNhdmUgdGhlIFRyYXggY29uZmlndXJhdGlvbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8uZXJyb3I/LmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCBzYXZlIHRoZSBUcmF4IGNvbmZpZ3VyYXRpb24nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUZvcm0oKVwiICpuZ0lmPVwiaXNEaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBhbGlnbi1pdGVtcy1lbmRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE0LjE2NyAyLjVhMi4zNTcgMi4zNTcgMCAxIDEgMy4zMzMgMy4zMzNMNi4yNSAxNy4wODMgMi41IDE3LjVsLjQxNy0zLjc1TDE0LjE2NyAyLjVaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgdHJheC1jb25maWdcIiBbY2xhc3MuaXMtcmVhZG9ubHldPVwiaXNEaXNhYmxlZFwiPlxyXG4gIDwhLS0gQXVkaXQgTGFiZWxzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPkF1ZGl0IExhYmVsczwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRjLWhlbHBcIj5SZW5hbWUgdGhlIHR3byBzY29yaW5nIG91dGNvbWVzLiBUaGVzZSBsYWJlbHMgcmVwbGFjZSBQYXNzIGFuZCBGYWlsIGV2ZXJ5d2hlcmUgaW4gdGhlIEF1ZGl0XHJcbiAgICAgIG1vZHVsZSDigJQgZGFzaGJvYXJkcywgc3RvcmUgbGlzdHMsIGdhbGxlcnkgZmlsdGVycywgcmVwb3J0cyBhbmQgZXhwb3J0cy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1wYXNzXCIgZm9yPVwidHJheFBhc3NMYWJlbFwiPkF0IG9yIGFib3ZlIHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhQYXNzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5wYXNzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlBhc3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1mYWlsXCIgZm9yPVwidHJheEZhaWxMYWJlbFwiPkJlbG93IHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhGYWlsTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5mYWlsTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIkZhaWxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Yy1sYWJlbFwiPlByZXZpZXc8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGMtcHJldmlldyB0Yy1wcmV2aWV3LS1jaGlwc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLXBhc3NcIiBbdGl0bGVdPVwiKGNvbmZpZy5wYXNzTGFiZWwudHJpbSgpIHx8ICdQYXNzJykgKyAnIOKJpSAnICsgcHJldmlld1Bhc3NNYXJrICsgJyUnXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGMtY2hpcC1uYW1lXCI+e3sgY29uZmlnLnBhc3NMYWJlbC50cmltKCkgfHwgJ1Bhc3MnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbWFya1wiPuKJpSB7eyBwcmV2aWV3UGFzc01hcmsgfX0lPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLWZhaWxcIiBbdGl0bGVdPVwiKGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJykgKyAnIDwgJyArIHByZXZpZXdQYXNzTWFyayArICclJ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbmFtZVwiPnt7IGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwLW1hcmtcIj4mbHQ7IHt7IHByZXZpZXdQYXNzTWFyayB9fSU8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRjLXByZXNldHMgbXQtNFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRjLXByZXNldHMtbGFiZWxcIj5QcmVzZXRzPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLXByZXNldFwiICpuZ0Zvcj1cImxldCBwIG9mIHByZXNldHNcIiBbY2xhc3MuaXMtb25dPVwiaXNQcmVzZXQocClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KHApXCI+e3sgcC5wYXNzIH19IC8ge3sgcC5mYWlsIH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZW1hcmsgRmllbGRzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPlJlbWFyayBGaWVsZHM8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy1oZWxwXCI+UmVuYW1lIHRoZSB0d28gZnJlZS10ZXh0IGZpZWxkcyBhdWRpdG9ycyBmaWxsIGluIHRoZSBtb2JpbGUgYXBwLiBUaGUgbmFtZXMgYXBwbHkgdG8gdGhlIG1vYmlsZVxyXG4gICAgICBmb3JtLCB0aGUgR2FsbGVyeSwgZXhwb3J0cyBhbmQgQ1NWIGRvd25sb2Fkcy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheFJlbWFya3NMYWJlbFwiPlJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhSZW1hcmtzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5yZW1hcmtzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlJlbWFya3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheEFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIj5BZGRpdGlvbmFsIFJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhBZGRpdGlvbmFsUmVtYXJrc0xhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIHBsYWNlaG9sZGVyPVwiQWRkaXRpb25hbCBSZW1hcmtzXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTUgdy0xMDAgZm9vdGVyLXNlcGVyYXRvclwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxhIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtdC0xIG1lLTRcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNFwiIFtkaXNhYmxlZF09XCIhY2FuU2F2ZVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgc2F2aW5nID8gJ1NhdmluZ+KApicgOiAnU2F2ZSBDaGFuZ2VzJyB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvdHJheC1jb25maWd1cmF0aW9uL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL3RyYXgtY29uZmlndXJhdGlvbi90cmF4LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVzFDLE1BQU0sUUFBUSxHQUFlO0lBQzNCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLHNCQUFzQixFQUFFLG9CQUFvQjtDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFnQmpCO0lBQW1DO0lBZnZELE1BQU0sR0FBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDNUIsT0FBTyxHQUEwQztRQUN4RCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtRQUM5QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtRQUM1QyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO0tBQ2pELENBQUM7SUFFRixRQUFRLEdBQUcsRUFBRSxDQUFDO0lB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Qzt3R0E1R1UsMEJBQTBCOzRGQUExQiwwQkFBMEIsOERDN0J2Qyw0aUhBa0VBOzs0RkRyQ2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgQ2xpZW50QXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NsaWVudC1hcGkuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYXhDb25maWcge1xyXG4gIHBhc3NMYWJlbDogc3RyaW5nO1xyXG4gIGZhaWxMYWJlbDogc3RyaW5nO1xyXG4gIHJlbWFya3NMYWJlbDogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxSZW1hcmtzTGFiZWw6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgREVGQVVMVFM6IFRyYXhDb25maWcgPSB7XHJcbiAgcGFzc0xhYmVsOiAnUGFzcycsXHJcbiAgZmFpbExhYmVsOiAnRmFpbCcsXHJcbiAgcmVtYXJrc0xhYmVsOiAnUmVtYXJrcycsXHJcbiAgYWRkaXRpb25hbFJlbWFya3NMYWJlbDogJ0FkZGl0aW9uYWwgUmVtYXJrcydcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2UgLT4gU2V0dGluZ3MgLT4gVHJheCBDb25maWd1cmF0aW9uLiBSZW5hbWVzIHRoZSB0d28gc2NvcmluZyBvdXRjb21lcyAoUGFzcyAvIEZhaWwpXHJcbiAqIGFuZCB0aGUgdHdvIGZyZWUtdGV4dCByZW1hcmsgZmllbGRzIGZvciB0aGUgd2hvbGUgY2xpZW50LiBSZWFkIGFuZCBzYXZlZCB0aHJvdWdoIHRoZVxyXG4gKiBUcmF4IEFQSSAoL3RyYXgvYXVkaXQvc2V0dGluZ3MpOyB0aGUgQXVkaXQgbW9kdWxlIHJlYWRzIHRoZSBzYW1lIGRvY3VtZW50LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdHJheC1jb25maWd1cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJheENvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGNvbmZpZzogVHJheENvbmZpZyA9IHsgLi4uREVGQVVMVFMgfTtcclxuICByZWFkb25seSBwcmVzZXRzOiBBcnJheTx7IHBhc3M6IHN0cmluZzsgZmFpbDogc3RyaW5nIH0+ID0gW1xyXG4gICAgeyBwYXNzOiAnUGFzcycsIGZhaWw6ICdGYWlsJyB9LFxyXG4gICAgeyBwYXNzOiAnQ29tcGxpYW50JywgZmFpbDogJ05vbi1Db21wbGlhbnQnIH0sXHJcbiAgICB7IHBhc3M6ICdTYXRpc2ZhY3RvcnknLCBmYWlsOiAnVW5zYXRpc2ZhY3RvcnknIH1cclxuICBdO1xyXG5cclxuICBjbGllbnRJZCA9ICcnO1xyXG4gIGlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gIHNhdmluZyA9IGZhbHNlO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzYXZlZDogVHJheENvbmZpZyA9IHsgLi4uREVGQVVMVFMgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2VydmljZS5jbGllbnREYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgaWYgKGU/LmNsaWVudElkICYmIGUuY2xpZW50SWQgIT09IHRoaXMuY2xpZW50SWQpIHtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gZS5jbGllbnRJZDtcclxuICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNsaWVudElkKSB7IHJldHVybjsgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5nZXRUcmF4Q29uZmlnKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDAgJiYgcmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVkID0gdGhpcy5waWNrKHJlcy5kYXRhKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLnNhdmVkIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGljayhzcmM6IGFueSk6IFRyYXhDb25maWcge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGFzc0xhYmVsOiBzcmM/LnBhc3NMYWJlbCB8fCBERUZBVUxUUy5wYXNzTGFiZWwsXHJcbiAgICAgIGZhaWxMYWJlbDogc3JjPy5mYWlsTGFiZWwgfHwgREVGQVVMVFMuZmFpbExhYmVsLFxyXG4gICAgICByZW1hcmtzTGFiZWw6IHNyYz8ucmVtYXJrc0xhYmVsIHx8IERFRkFVTFRTLnJlbWFya3NMYWJlbCxcclxuICAgICAgYWRkaXRpb25hbFJlbWFya3NMYWJlbDogc3JjPy5hZGRpdGlvbmFsUmVtYXJrc0xhYmVsIHx8IERFRkFVTFRTLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gIXRoaXMuaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuc2F2ZWQgfTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhcHBseVByZXNldChwOiB7IHBhc3M6IHN0cmluZzsgZmFpbDogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmNvbmZpZy5wYXNzTGFiZWwgPSBwLnBhc3M7XHJcbiAgICB0aGlzLmNvbmZpZy5mYWlsTGFiZWwgPSBwLmZhaWw7XHJcbiAgfVxyXG5cclxuICBpc1ByZXNldChwOiB7IHBhc3M6IHN0cmluZzsgZmFpbDogc3RyaW5nIH0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYXNzTGFiZWwudHJpbSgpID09PSBwLnBhc3MgJiYgdGhpcy5jb25maWcuZmFpbExhYmVsLnRyaW0oKSA9PT0gcC5mYWlsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhblNhdmUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjID0gdGhpcy5jb25maWc7XHJcbiAgICByZXR1cm4gIXRoaXMuc2F2aW5nICYmIFtjLnBhc3NMYWJlbCwgYy5mYWlsTGFiZWwsIGMucmVtYXJrc0xhYmVsLCBjLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxdXHJcbiAgICAgIC5ldmVyeSh2ID0+IHYudHJpbSgpLmxlbmd0aCA+IDAgJiYgdi50cmltKCkubGVuZ3RoIDw9IDQwKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhblNhdmUgfHwgIXRoaXMuY2xpZW50SWQpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgcGFzc0xhYmVsOiB0aGlzLmNvbmZpZy5wYXNzTGFiZWwudHJpbSgpLFxyXG4gICAgICBmYWlsTGFiZWw6IHRoaXMuY29uZmlnLmZhaWxMYWJlbC50cmltKCksXHJcbiAgICAgIHJlbWFya3NMYWJlbDogdGhpcy5jb25maWcucmVtYXJrc0xhYmVsLnRyaW0oKSxcclxuICAgICAgYWRkaXRpb25hbFJlbWFya3NMYWJlbDogdGhpcy5jb25maWcuYWRkaXRpb25hbFJlbWFya3NMYWJlbC50cmltKClcclxuICAgIH07XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2F2ZVRyYXhDb25maWcocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVkID0gdGhpcy5waWNrKHJlcy5kYXRhIHx8IHBheWxvYWQpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuc2F2ZWQgfTtcclxuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdCgnVHJheCBjb25maWd1cmF0aW9uIHNhdmVkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChyZXM/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCBzYXZlIHRoZSBUcmF4IGNvbmZpZ3VyYXRpb24nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/LmVycm9yPy5lcnJvciB8fCBlcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdDb3VsZCBub3Qgc2F2ZSB0aGUgVHJheCBjb25maWd1cmF0aW9uJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVGb3JtKClcIiAqbmdJZj1cImlzRGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNC4xNjcgMi41YTIuMzU3IDIuMzU3IDAgMSAxIDMuMzMzIDMuMzMzTDYuMjUgMTcuMDgzIDIuNSAxNy41bC40MTctMy43NUwxNC4xNjcgMi41WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicm93IHRyYXgtY29uZmlnXCIgW2NsYXNzLmlzLXJlYWRvbmx5XT1cImlzRGlzYWJsZWRcIj5cclxuICA8IS0tIEF1ZGl0IExhYmVscyAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRjLWJsb2NrXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGMtdGl0bGVcIj5BdWRpdCBMYWJlbHM8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy1oZWxwXCI+UmVuYW1lIHRoZSB0d28gc2NvcmluZyBvdXRjb21lcy4gVGhlc2UgbGFiZWxzIHJlcGxhY2UgUGFzcyBhbmQgRmFpbCBldmVyeXdoZXJlIGluIHRoZSBBdWRpdFxyXG4gICAgICBtb2R1bGUg4oCUIGRhc2hib2FyZHMsIHN0b3JlIGxpc3RzLCBnYWxsZXJ5IGZpbHRlcnMsIHJlcG9ydHMgYW5kIGV4cG9ydHMuPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBnLTQgbXQtMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Yy1sYWJlbCB0Yy1sYWJlbC0tcGFzc1wiIGZvcj1cInRyYXhQYXNzTGFiZWxcIj5BdCBvciBhYm92ZSB0aGUgcGFzcyBtYXJrPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgaWQ9XCJ0cmF4UGFzc0xhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCIgWyhuZ01vZGVsKV09XCJjb25maWcucGFzc0xhYmVsXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgcGxhY2Vob2xkZXI9XCJQYXNzXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Yy1sYWJlbCB0Yy1sYWJlbC0tZmFpbFwiIGZvcj1cInRyYXhGYWlsTGFiZWxcIj5CZWxvdyB0aGUgcGFzcyBtYXJrPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgaWQ9XCJ0cmF4RmFpbExhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCIgWyhuZ01vZGVsKV09XCJjb25maWcuZmFpbExhYmVsXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgcGxhY2Vob2xkZXI9XCJGYWlsXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRjLXByZXNldHMgbXQtNFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRjLXByZXNldHMtbGFiZWxcIj5QcmVzZXRzPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLXByZXNldFwiICpuZ0Zvcj1cImxldCBwIG9mIHByZXNldHNcIiBbY2xhc3MuaXMtb25dPVwiaXNQcmVzZXQocClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KHApXCI+e3sgcC5wYXNzIH19IC8ge3sgcC5mYWlsIH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZW1hcmsgRmllbGRzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPlJlbWFyayBGaWVsZHM8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy1oZWxwXCI+UmVuYW1lIHRoZSB0d28gZnJlZS10ZXh0IGZpZWxkcyBhdWRpdG9ycyBmaWxsIGluIHRoZSBtb2JpbGUgYXBwLiBUaGUgbmFtZXMgYXBwbHkgdG8gdGhlIG1vYmlsZVxyXG4gICAgICBmb3JtLCB0aGUgR2FsbGVyeSwgZXhwb3J0cyBhbmQgQ1NWIGRvd25sb2Fkcy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheFJlbWFya3NMYWJlbFwiPlJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhSZW1hcmtzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5yZW1hcmtzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlJlbWFya3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheEFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIj5BZGRpdGlvbmFsIFJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhBZGRpdGlvbmFsUmVtYXJrc0xhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIHBsYWNlaG9sZGVyPVwiQWRkaXRpb25hbCBSZW1hcmtzXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTUgdy0xMDAgZm9vdGVyLXNlcGVyYXRvclwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxhIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtdC0xIG1lLTRcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNFwiIFtkaXNhYmxlZF09XCIhY2FuU2F2ZVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgc2F2aW5nID8gJ1NhdmluZ+KApicgOiAnU2F2ZSBDaGFuZ2VzJyB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -11918,8 +11918,6 @@ class TraxConfigurationComponent {
|
|
|
11918
11918
|
{ pass: 'Compliant', fail: 'Non-Compliant' },
|
|
11919
11919
|
{ pass: 'Satisfactory', fail: 'Unsatisfactory' }
|
|
11920
11920
|
];
|
|
11921
|
-
/** Pass mark shown in the preview; per-audit pass marks live on each audit. */
|
|
11922
|
-
previewPassMark = 75;
|
|
11923
11921
|
clientId = '';
|
|
11924
11922
|
isDisabled = true;
|
|
11925
11923
|
saving = false;
|
|
@@ -12020,11 +12018,11 @@ class TraxConfigurationComponent {
|
|
|
12020
12018
|
});
|
|
12021
12019
|
}
|
|
12022
12020
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, deps: [{ token: ClientApiService }, { token: i4.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
12023
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-
|
|
12021
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
12024
12022
|
}
|
|
12025
12023
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, decorators: [{
|
|
12026
12024
|
type: Component,
|
|
12027
|
-
args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-
|
|
12025
|
+
args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
|
|
12028
12026
|
}], ctorParameters: () => [{ type: ClientApiService }, { type: i4.ToastService }] });
|
|
12029
12027
|
|
|
12030
12028
|
class ConfigurationsComponent {
|