kivio 1.6.2 → 1.6.4
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/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/components/kv-item-card/kv-item-card.component.mjs +3 -3
- package/esm2022/lib/components/kv-main-table/kv-main-table.component.mjs +3 -3
- package/esm2022/lib/components/kv-popup/kv-popup.component.mjs +3 -3
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +3 -3
- package/fesm2022/kivio.mjs +10 -10
- package/fesm2022/kivio.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles/components/_form.scss +1 -1
- package/src/styles/components/_utils.scss +2 -2
|
@@ -34,11 +34,11 @@ export class DatePickerComponent {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DatePickerComponent, isStandalone: true, selector: "lib-kv-date-picker", inputs: { initialDate: "initialDate", showDetails: "showDetails" }, outputs: { dateSelected: "dateSelected" }, ngImport: i0, template: "<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n", styles: ["input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.date-picker{margin:10px 0;cursor:pointer}.date-details{font-size:.9em;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DatePickerComponent, isStandalone: true, selector: "lib-kv-date-picker", inputs: { initialDate: "initialDate", showDetails: "showDetails" }, outputs: { dateSelected: "dateSelected" }, ngImport: i0, template: "<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n", styles: ["input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.date-picker{margin:10px 0;cursor:pointer}.date-details{font-size:.9em;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'lib-kv-date-picker', standalone: true, imports: [FormsModule, CommonModule], template: "<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n", styles: ["input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.date-picker{margin:10px 0;cursor:pointer}.date-details{font-size:.9em;color:#666}\n"] }]
|
|
41
|
+
args: [{ selector: 'lib-kv-date-picker', standalone: true, imports: [FormsModule, CommonModule], template: "<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n", styles: ["input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.date-picker{margin:10px 0;cursor:pointer}.date-details{font-size:.9em;color:#666}\n"] }]
|
|
42
42
|
}], propDecorators: { initialDate: [{
|
|
43
43
|
type: Input
|
|
44
44
|
}], showDetails: [{
|
|
@@ -46,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
46
46
|
}], dateSelected: [{
|
|
47
47
|
type: Output
|
|
48
48
|
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l2aW8vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVM3QyxNQUFNLE9BQU8sbUJBQW1CO0lBUGhDO1FBU1csZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxELGlCQUFZLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxZQUFPLEdBQVcsRUFBRSxDQUFDO0tBNEJ0QjtJQTFCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ2hHO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVU7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztRQUVwRCxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDTCxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDNUI7SUFDSCxDQUFDOytHQWpDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw2TENYaEMsc1lBWUEsMDVCRExZLFdBQVcsOEJBQUUsWUFBWTs7NEZBSXhCLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQzs4QkFLM0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWt2LWRhdGUtcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGluaXRpYWxEYXRlPzogRGF0ZTtcclxuICBASW5wdXQoKSBzaG93RGV0YWlscyA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgbWluRGF0ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5taW5EYXRlID0gdGhpcy5mb3JtYXREYXRlRm9ySW5wdXQobmV3IERhdGUoKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5pdGlhbERhdGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLmluaXRpYWxEYXRlID49IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkgPyB0aGlzLmluaXRpYWxEYXRlIDogbmV3IERhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGVGb3JJbnB1dChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGlucHV0LnZhbHVlICsgXCJUMDA6MDA6MDBcIik7XHJcblxyXG4gICAgaWYgKG5ld0RhdGUgPj0gbmV3IERhdGUodGhpcy5taW5EYXRlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ld0RhdGU7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLm1pbkRhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxyXG4gICAgPGlucHV0IFxyXG4gICAgICAgIHR5cGU9XCJkYXRlXCIgXHJcbiAgICAgICAgW3ZhbHVlXT1cImZvcm1hdERhdGVGb3JJbnB1dChzZWxlY3RlZERhdGUpXCIgXHJcbiAgICAgICAgW21pbl09XCJtaW5EYXRlXCIgXHJcbiAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCIgXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICBcclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGV0YWlsc1wiIGNsYXNzPVwiZGF0ZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgPHA+e3sgc2VsZWN0ZWREYXRlIHwgZGF0ZTonZnVsbERhdGUnIH19PC9wPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -180,7 +180,7 @@ export class KvItemCardComponent {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvItemCardComponent, deps: [{ token: i1.FormFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvItemCardComponent, isStandalone: true, selector: "lib-kv-item-card", inputs: { shouldShowDatepicker: "shouldShowDatepicker", offerId: "offerId", showCostPopup: "showCostPopup", itemsSpecificationForm: "itemsSpecificationForm" }, outputs: { onContinue: "onContinue", onCancel: "onCancel", onItemsProcessed: "onItemsProcessed" }, ngImport: i0, template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: KvPopupComponent, selector: "lib-kv-popup", inputs: ["title", "description", "isCustomTemplate", "actionType", "showCloseButton"], outputs: ["onAccept", "onClose"] }, { kind: "component", type: DatePickerComponent, selector: "lib-kv-date-picker", inputs: ["initialDate", "showDetails"], outputs: ["dateSelected"] }] }); }
|
|
183
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvItemCardComponent, isStandalone: true, selector: "lib-kv-item-card", inputs: { shouldShowDatepicker: "shouldShowDatepicker", offerId: "offerId", showCostPopup: "showCostPopup", itemsSpecificationForm: "itemsSpecificationForm" }, outputs: { onContinue: "onContinue", onCancel: "onCancel", onItemsProcessed: "onItemsProcessed" }, ngImport: i0, template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: KvPopupComponent, selector: "lib-kv-popup", inputs: ["title", "description", "isCustomTemplate", "actionType", "showCloseButton"], outputs: ["onAccept", "onClose"] }, { kind: "component", type: DatePickerComponent, selector: "lib-kv-date-picker", inputs: ["initialDate", "showDetails"], outputs: ["dateSelected"] }] }); }
|
|
184
184
|
}
|
|
185
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvItemCardComponent, decorators: [{
|
|
186
186
|
type: Component,
|
|
@@ -189,7 +189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
189
189
|
ReactiveFormsModule,
|
|
190
190
|
KvPopupComponent,
|
|
191
191
|
DatePickerComponent,
|
|
192
|
-
], template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"] }]
|
|
192
|
+
], template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"] }]
|
|
193
193
|
}], ctorParameters: () => [{ type: i1.FormFactoryService }], propDecorators: { shouldShowDatepicker: [{
|
|
194
194
|
type: Input
|
|
195
195
|
}], offerId: [{
|
|
@@ -205,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
205
205
|
}], onItemsProcessed: [{
|
|
206
206
|
type: Output
|
|
207
207
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQStCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBckJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsSUFBSSxZ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LENBQUMsSUFBUyxFQUFFLFFBQW1CO1FBQ25ELFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBYztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQ3pDLENBQUM7UUFFRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzsrR0EzTlUsbUJBQW1CO21HQUFuQixtQkFBbUIsK1VDMUNoQywwdk9BOEhlLDJ2Y0Q3RlgsWUFBWSwrUEFDWixtQkFBbUIsczNEQUNuQixnQkFBZ0Isa0xBQ2hCLG1CQUFtQjs7NEZBTVYsbUJBQW1CO2tCQWIvQixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUVwQjt1RkFLUSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBLdlBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4va3YtcG9wdXAva3YtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FjdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWZpZWxkLmNvbmZpZyc7XHJcbmltcG9ydCB7IEZvcm1GYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZhY3Rvcmllcy9mb3JtLWZhY3Rvcnkuc2VydmljZSc7XHJcblxyXG5cclxuaW50ZXJmYWNlIENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdCB7XHJcbiAgY3VycmVuY3k6IHN0cmluZztcclxuICBvZmZlcl9pZDogc3RyaW5nO1xyXG4gIGl0ZW1faWQ6IHN0cmluZztcclxuICBwb2ludF9vZl9zYWxlX2lkOiBzdHJpbmc7XHJcbiAgYW1vdW50OiBudW1iZXI7XHJcbiAgYXZhaWxhYmlsaXR5OiBudW1iZXI7XHJcbiAgZXhwaXJlX2F0OiBzdHJpbmc7XHJcbiAgaXNfZXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgYWxsb3dfbXVsdGlwbGVfaXRlbXM6IGJvb2xlYW47XHJcbiAgYmFzZV9wcmljZTogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1rdi1pdGVtLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEt2UG9wdXBDb21wb25lbnQsXHJcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZJdGVtQ2FyZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc2hvdWxkU2hvd0RhdGVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvZmZlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dDb3N0UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpdGVtc1NwZWNpZmljYXRpb25Gb3JtOiBGb3JtQXJyYXk8Rm9ybUdyb3VwPiA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNvbnRpbnVlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25JdGVtc1Byb2Nlc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgbXVsdGlwbGVJdGVtczogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0W107XHJcbiAgICByZWd1bGFySXRlbXM6IGFueVtdO1xyXG4gIH0+KCk7XHJcblxyXG4gIHB1YmxpYyBhY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGU7XHJcbiAgcHVibGljIGRlZmF1bHREYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDI7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgTWF0aCA9IE1hdGg7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmFjdG9yeTogRm9ybUZhY3RvcnlTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApXHJcbiAgICAgIC5zbGljZSgodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbShpbmRleDogbnVtYmVyLCBpdGVtTmFtZT86IHN0cmluZywgaXRlbUlzRXh0ZXJuYWw/OiBib29sZWFuLCBpdGVtSW1hZ2U/OiBzdHJpbmcsIGF2YWlsYWJpbGl0eT86IG51bWJlciwgaXRlbUlkPzogc3RyaW5nLCBwb3NJZD86IHN0cmluZywgaXRlbUJhc2VQcmljZT86IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbVNwZWNGb3JtQ29uZmlnOiBGb3JtRmllbGRDb25maWdbXSA9IFtcclxuICAgICAgeyBuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnYXZhaWxhYmlsaXR5JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnY3VycmVuY3knLCBkZWZhdWx0VmFsdWU6ICdDT1AnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnZXhwaXJlX2F0JywgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHREYXRlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnb2ZmZXJfaWQnLCBkZWZhdWx0VmFsdWU6ICcnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2l0ZW1faWQnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2lzX2V4dGVybmFsJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAncG9pbnRfb2Zfc2FsZV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdpbWFnZV91cmwnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICB7IG5hbWU6ICdhbGxvd19tdWx0aXBsZV9pdGVtcycsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Jhc2VfcHJpY2UnLCBkZWZhdWx0VmFsdWU6IGl0ZW1CYXNlUHJpY2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm1GYWN0b3J5LmNyZWF0ZUZvcm0oaXRlbVNwZWNGb3JtQ29uZmlnKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKGl0ZW1OYW1lKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpc19leHRlcm5hbCcpPy5zZXRWYWx1ZShpdGVtSXNFeHRlcm5hbCA/PyBmYWxzZSk7XHJcbiAgICBuZXdJdGVtLmdldCgncG9pbnRfb2Zfc2FsZV9pZCcpPy5zZXRWYWx1ZShwb3NJZCk7XHJcbiAgICBuZXdJdGVtLmdldCgnaW1hZ2VfdXJsJyk/LnNldFZhbHVlKGl0ZW1JbWFnZSB8fCAnJyk7XHJcbiAgICBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnNldFZhbHVlKGF2YWlsYWJpbGl0eSB8fCBudWxsKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpdGVtX2lkJyk/LnNldFZhbHVlKGl0ZW1JZCk7XHJcbiAgICBhdmFpbGFiaWxpdHkgPyBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmRpc2FibGUoKSA6IG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucHVzaChuZXdJdGVtKTtcclxuICB9XHJcblxyXG4gIHByZXZlbnROZWdhdGl2ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBbJy0nLCAnZSddO1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICBpZiAoaW52YWxpZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSB8fFxyXG4gICAgICAoZXZlbnQua2V5ID09PSAnMCcgJiYgaW5wdXQudmFsdWUubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogRXZlbnQsIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBudW1iZXIgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXROdW1iZXIobnVtYmVyKTtcclxuICAgIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2FuY2VsQWN0aW9uKCkge1xyXG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY2xlYXIoKVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsVGltZXNIYXNDb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRvdGFsRXh0ZXJuYWxCYXNlUHJpY2UoKTogbnVtYmVyIHtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBjb25zdCBpc0V4dGVybmFsID0gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZTtcclxuXHJcbiAgICAgIGlmIChpc0V4dGVybmFsKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZVByaWNlID0gaXRlbUZvcm0uZ2V0KCdiYXNlX3ByaWNlJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eSA9IGl0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoYmFzZVByaWNlICYmIGF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgICAgdG90YWwgKz0gTnVtYmVyKGJhc2VQcmljZSkgKiBOdW1iZXIoYXZhaWxhYmlsaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0b3RhbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxCYXNlUHJpY2VXYXJuaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdG90YWxFeHRlcm5hbCA9IHRoaXMuZ2V0VG90YWxFeHRlcm5hbEJhc2VQcmljZSgpO1xyXG5cclxuICAgIGNvbnN0IGhhc0V4dGVybmFsUHJvZHVjdHMgPSB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuc29tZShcclxuICAgICAgaXRlbUZvcm0gPT4gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZSA9PT0gdHJ1ZVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gaGFzRXh0ZXJuYWxQcm9kdWN0cyAmJiB0b3RhbEV4dGVybmFsID4gMCAmJiB0b3RhbEV4dGVybmFsIDwgMTI5MDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gIXRoaXMuc2hvd0V4dGVybmFsQmFzZVByaWNlV2FybmluZygpO1xyXG4gIH1cclxuXHJcbiAgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbChcclxuICAgICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbHRlcigoaXRlbUZvcm0pID0+XHJcbiAgICAgICAgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLnRvTG93ZXJDYXNlKClcclxuICAgICAgKS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShkaXJlY3Rpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbmV3UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgKyBkaXJlY3Rpb247XHJcbiAgICBpZiAobmV3UGFnZSA+IDAgJiYgbmV3UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV3UGFnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc0l0ZW1zQXNzb2NpYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhblN1Ym1pdCgpKSB7XHJcbiAgICAgIHRoaXMub25Db250aW51ZS5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzSXRlbVNwZWNpZmljYXRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBpdGVtRm9ybS5nZXQoJ29mZmVyX2lkJyk/LnNldFZhbHVlKHRoaXMub2ZmZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93Q29zdFBvcHVwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgIGxldCBpdGVtQW1vdW50ID0gY29udHJvbC5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW1BbW91bnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpdGVtQW1vdW50ID0gaXRlbUFtb3VudC5yZXBsYWNlKC9cXC4vZywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKE51bWJlcihpdGVtQW1vdW50KSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtdWx0aXBsZUl0ZW1zU3BlY3M6IENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdFtdID0gW107XHJcbiAgICBjb25zdCByZWd1bGFySXRlbXNTcGVjczogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgY29uc3QgYWxsb3dNdWx0aXBsZSA9IGNvbnRyb2wuZ2V0KCdhbGxvd19tdWx0aXBsZV9pdGVtcycpPy52YWx1ZTtcclxuICAgICAgY29udHJvbC5nZXQoJ2F2YWlsYWJpbGl0eScpPy5lbmFibGUoKTtcclxuICAgICAgY29uc3QgaXRlbVNwZWMgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcclxuICAgICAgICBjb25zdCBtdWx0aXBsZUl0ZW1TcGVjOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3QgPSB7XHJcbiAgICAgICAgICBjdXJyZW5jeTogaXRlbVNwZWMuY3VycmVuY3ksXHJcbiAgICAgICAgICBvZmZlcl9pZDogaXRlbVNwZWMub2ZmZXJfaWQsXHJcbiAgICAgICAgICBpdGVtX2lkOiBpdGVtU3BlYy5pdGVtX2lkLFxyXG4gICAgICAgICAgcG9pbnRfb2Zfc2FsZV9pZDogaXRlbVNwZWMucG9pbnRfb2Zfc2FsZV9pZCxcclxuICAgICAgICAgIGFtb3VudDogaXRlbVNwZWMuYW1vdW50LFxyXG4gICAgICAgICAgYXZhaWxhYmlsaXR5OiBpdGVtU3BlYy5hdmFpbGFiaWxpdHksXHJcbiAgICAgICAgICBleHBpcmVfYXQ6IGl0ZW1TcGVjLmV4cGlyZV9hdCxcclxuICAgICAgICAgIGlzX2V4dGVybmFsOiBpdGVtU3BlYy5pc19leHRlcm5hbCxcclxuICAgICAgICAgIGFsbG93X211bHRpcGxlX2l0ZW1zOiB0cnVlLFxyXG4gICAgICAgICAgYmFzZV9wcmljZTogaXRlbVNwZWMuYmFzZV9wcmljZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbXVsdGlwbGVJdGVtc1NwZWNzLnB1c2gobXVsdGlwbGVJdGVtU3BlYyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVndWxhckl0ZW1zU3BlY3MucHVzaChpdGVtU3BlYyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25JdGVtc1Byb2Nlc3NlZC5lbWl0KHtcclxuICAgICAgbXVsdGlwbGVJdGVtczogbXVsdGlwbGVJdGVtc1NwZWNzLFxyXG4gICAgICByZWd1bGFySXRlbXM6IHJlZ3VsYXJJdGVtc1NwZWNzLFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRGF0ZVBpY2tlZChkYXRlOiBhbnksIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGl0ZW1Gb3JtLmdldCgnZXhwaXJlX2F0Jyk/LnNldFZhbHVlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjb250cm9sID0+XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdpdGVtX2lkJyk/LnZhbHVlID09PSBpdGVtSWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxsaWIta3YtcG9wdXAgKm5nSWY9XCJzaG93Q29zdFBvcHVwXCIgW3RpdGxlXT1cIidTZXQgcHJpY2luZyBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGl0ZW1zJ1wiIFtkZXNjcmlwdGlvbl09XCInQ29uZmlndXJlIHRoZSBjb3N0LCBhdmFpbGFiaWxpdHksIGFuZCBleHBpcmF0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbSBpbiB5b3VyIG9mZmVyLidcIiBbaXNDdXN0b21UZW1wbGF0ZV09XCJ0cnVlXCIgW2FjdGlvblR5cGVdPVwiYWN0aW9uVHlwZUVudW0uSW5mb1wiXHJcbiAgICAob25BY2NlcHQpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCIgKG9uQ2xvc2UpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYXNlLXByaWNlLXdhcm5pbmdcIiAqbmdJZj1cInNob3dFeHRlcm5hbEJhc2VQcmljZVdhcm5pbmcoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj53YXJuaW5nPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPkVsIHRvdGFsIGRlIGxvcyBwcm9kdWN0b3MgZXh0ZXJub3MgKFByZWNpbyBleHRlcm5vIMOXIGRpc3BvbmliaWxpZGFkKSBkZWJlIHNlciBhbCBtZW5vcyAkMTIuOTAwLiBUb3RhbCBhY3R1YWw6ICR7eyBnZXRUb3RhbEV4dGVybmFsQmFzZVByaWNlKCkudG9Mb2NhbGVTdHJpbmcoJ2VzLUNPJykgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbUZvcm0gb2YgZmlsdGVyZWREYXRhSXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdpbWFnZV91cmwnKT8udmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW1Gb3JtLmdldCgnaW1hZ2VfdXJsJyk/LnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpdGVtLW5hbWVcIj57eyBpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWUgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXR5cGVcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWVcIj5FeHRlcm5hbCBJdGVtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIml0ZW1Gb3JtXCIgY2xhc3M9XCJpdGVtLWZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5QcmljaW5nICYgQXZhaWxhYmlsaXR5PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYW1vdW50LXt7aX19XCI+Q29zdCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29zdC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYW1vdW50LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGNvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgaXRlbUZvcm0pXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImN1cnJlbmN5LXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09QXCI+Q09QPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy5pbnZhbGlkICYmIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29zdCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhdmFpbGFiaWxpdHkte3tpfX1cIj5BdmFpbGFiaWxpdHkgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYXZhaWxhYmlsaXR5LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdmFpbGFiaWxpdHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQXZhaWxhYmxlIHF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnROZWdhdGl2ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uaW52YWxpZCAmJiBpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5NdWx0aXBsZSBJdGVtcyBTZXR0aW5nczwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfbXVsdGlwbGVfaXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1zbGlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtdGV4dFwiPkFsbG93IG11bHRpcGxlIGl0ZW1zIHBlciB1c2VyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidG9nZ2xlLWRlc2NyaXB0aW9uXCI+V2hlbiBlbmFibGVkLCB1c2VycyBjYW4gYmlkIG9uIG11bHRpcGxlIHF1YW50aXRpZXMgb2YgdGhpcyBpdGVtPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCIgKm5nSWY9XCJzaG91bGRTaG93RGF0ZXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RXhwaXJhdGlvbjwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4cGlyZUF0LXt7aX19XCI+RXhwaXJlcyBvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWt2LWRhdGUtcGlja2VyIFtpbml0aWFsRGF0ZV09XCJkZWZhdWx0RGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0RldGFpbHNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0ZWQpPVwib25EYXRlUGlja2VkKCRldmVudCwgaXRlbUZvcm0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1rdi1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCIgKm5nSWY9XCJ0b3RhbFBhZ2VzKCkgPiAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24taW5mb1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj5TaG93aW5nIHt7IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxIH19IC0ge3sgTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwYWdlU2l6ZSwgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGgpIH19IG9mIHt7IGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoIH19IGl0ZW1zPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKC0xKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgICAgICAgICAgICDihpAgUHJldmlvdXNcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1pbmRpY2F0b3JcIj57eyBjdXJyZW50UGFnZSB9fSAvIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKClcIj5cclxuICAgICAgICAgICAgICAgIE5leHQg4oaSXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItaW5mb1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1zLWNvdW50XCI+e3sgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGggfX0gaXRlbShzKSBjb25maWd1cmVkPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbi0tY2FuY2VsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsQWN0aW9uKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24tLXByaW1hcnktbWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ29udGludWVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9saWIta3YtcG9wdXA+Il19
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQStCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBckJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsSUFBSSxZ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LENBQUMsSUFBUyxFQUFFLFFBQW1CO1FBQ25ELFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBYztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQ3pDLENBQUM7UUFFRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzsrR0EzTlUsbUJBQW1CO21HQUFuQixtQkFBbUIsK1VDMUNoQywwdk9BOEhlLG13Y0Q3RlgsWUFBWSwrUEFDWixtQkFBbUIsczNEQUNuQixnQkFBZ0Isa0xBQ2hCLG1CQUFtQjs7NEZBTVYsbUJBQW1CO2tCQWIvQixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUVwQjt1RkFLUSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBLdlBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4va3YtcG9wdXAva3YtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FjdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWZpZWxkLmNvbmZpZyc7XHJcbmltcG9ydCB7IEZvcm1GYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZhY3Rvcmllcy9mb3JtLWZhY3Rvcnkuc2VydmljZSc7XHJcblxyXG5cclxuaW50ZXJmYWNlIENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdCB7XHJcbiAgY3VycmVuY3k6IHN0cmluZztcclxuICBvZmZlcl9pZDogc3RyaW5nO1xyXG4gIGl0ZW1faWQ6IHN0cmluZztcclxuICBwb2ludF9vZl9zYWxlX2lkOiBzdHJpbmc7XHJcbiAgYW1vdW50OiBudW1iZXI7XHJcbiAgYXZhaWxhYmlsaXR5OiBudW1iZXI7XHJcbiAgZXhwaXJlX2F0OiBzdHJpbmc7XHJcbiAgaXNfZXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgYWxsb3dfbXVsdGlwbGVfaXRlbXM6IGJvb2xlYW47XHJcbiAgYmFzZV9wcmljZTogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1rdi1pdGVtLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEt2UG9wdXBDb21wb25lbnQsXHJcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZJdGVtQ2FyZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc2hvdWxkU2hvd0RhdGVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvZmZlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dDb3N0UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpdGVtc1NwZWNpZmljYXRpb25Gb3JtOiBGb3JtQXJyYXk8Rm9ybUdyb3VwPiA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNvbnRpbnVlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25JdGVtc1Byb2Nlc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgbXVsdGlwbGVJdGVtczogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0W107XHJcbiAgICByZWd1bGFySXRlbXM6IGFueVtdO1xyXG4gIH0+KCk7XHJcblxyXG4gIHB1YmxpYyBhY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGU7XHJcbiAgcHVibGljIGRlZmF1bHREYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDI7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgTWF0aCA9IE1hdGg7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmFjdG9yeTogRm9ybUZhY3RvcnlTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApXHJcbiAgICAgIC5zbGljZSgodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbShpbmRleDogbnVtYmVyLCBpdGVtTmFtZT86IHN0cmluZywgaXRlbUlzRXh0ZXJuYWw/OiBib29sZWFuLCBpdGVtSW1hZ2U/OiBzdHJpbmcsIGF2YWlsYWJpbGl0eT86IG51bWJlciwgaXRlbUlkPzogc3RyaW5nLCBwb3NJZD86IHN0cmluZywgaXRlbUJhc2VQcmljZT86IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbVNwZWNGb3JtQ29uZmlnOiBGb3JtRmllbGRDb25maWdbXSA9IFtcclxuICAgICAgeyBuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnYXZhaWxhYmlsaXR5JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnY3VycmVuY3knLCBkZWZhdWx0VmFsdWU6ICdDT1AnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnZXhwaXJlX2F0JywgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHREYXRlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnb2ZmZXJfaWQnLCBkZWZhdWx0VmFsdWU6ICcnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2l0ZW1faWQnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2lzX2V4dGVybmFsJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAncG9pbnRfb2Zfc2FsZV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdpbWFnZV91cmwnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICB7IG5hbWU6ICdhbGxvd19tdWx0aXBsZV9pdGVtcycsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Jhc2VfcHJpY2UnLCBkZWZhdWx0VmFsdWU6IGl0ZW1CYXNlUHJpY2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm1GYWN0b3J5LmNyZWF0ZUZvcm0oaXRlbVNwZWNGb3JtQ29uZmlnKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKGl0ZW1OYW1lKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpc19leHRlcm5hbCcpPy5zZXRWYWx1ZShpdGVtSXNFeHRlcm5hbCA/PyBmYWxzZSk7XHJcbiAgICBuZXdJdGVtLmdldCgncG9pbnRfb2Zfc2FsZV9pZCcpPy5zZXRWYWx1ZShwb3NJZCk7XHJcbiAgICBuZXdJdGVtLmdldCgnaW1hZ2VfdXJsJyk/LnNldFZhbHVlKGl0ZW1JbWFnZSB8fCAnJyk7XHJcbiAgICBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnNldFZhbHVlKGF2YWlsYWJpbGl0eSB8fCBudWxsKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpdGVtX2lkJyk/LnNldFZhbHVlKGl0ZW1JZCk7XHJcbiAgICBhdmFpbGFiaWxpdHkgPyBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmRpc2FibGUoKSA6IG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucHVzaChuZXdJdGVtKTtcclxuICB9XHJcblxyXG4gIHByZXZlbnROZWdhdGl2ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBbJy0nLCAnZSddO1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICBpZiAoaW52YWxpZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSB8fFxyXG4gICAgICAoZXZlbnQua2V5ID09PSAnMCcgJiYgaW5wdXQudmFsdWUubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogRXZlbnQsIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBudW1iZXIgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXROdW1iZXIobnVtYmVyKTtcclxuICAgIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2FuY2VsQWN0aW9uKCkge1xyXG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY2xlYXIoKVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsVGltZXNIYXNDb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRvdGFsRXh0ZXJuYWxCYXNlUHJpY2UoKTogbnVtYmVyIHtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBjb25zdCBpc0V4dGVybmFsID0gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZTtcclxuXHJcbiAgICAgIGlmIChpc0V4dGVybmFsKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZVByaWNlID0gaXRlbUZvcm0uZ2V0KCdiYXNlX3ByaWNlJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eSA9IGl0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoYmFzZVByaWNlICYmIGF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgICAgdG90YWwgKz0gTnVtYmVyKGJhc2VQcmljZSkgKiBOdW1iZXIoYXZhaWxhYmlsaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0b3RhbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxCYXNlUHJpY2VXYXJuaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdG90YWxFeHRlcm5hbCA9IHRoaXMuZ2V0VG90YWxFeHRlcm5hbEJhc2VQcmljZSgpO1xyXG5cclxuICAgIGNvbnN0IGhhc0V4dGVybmFsUHJvZHVjdHMgPSB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuc29tZShcclxuICAgICAgaXRlbUZvcm0gPT4gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZSA9PT0gdHJ1ZVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gaGFzRXh0ZXJuYWxQcm9kdWN0cyAmJiB0b3RhbEV4dGVybmFsID4gMCAmJiB0b3RhbEV4dGVybmFsIDwgMTI5MDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gIXRoaXMuc2hvd0V4dGVybmFsQmFzZVByaWNlV2FybmluZygpO1xyXG4gIH1cclxuXHJcbiAgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbChcclxuICAgICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbHRlcigoaXRlbUZvcm0pID0+XHJcbiAgICAgICAgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLnRvTG93ZXJDYXNlKClcclxuICAgICAgKS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShkaXJlY3Rpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbmV3UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgKyBkaXJlY3Rpb247XHJcbiAgICBpZiAobmV3UGFnZSA+IDAgJiYgbmV3UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV3UGFnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc0l0ZW1zQXNzb2NpYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhblN1Ym1pdCgpKSB7XHJcbiAgICAgIHRoaXMub25Db250aW51ZS5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzSXRlbVNwZWNpZmljYXRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBpdGVtRm9ybS5nZXQoJ29mZmVyX2lkJyk/LnNldFZhbHVlKHRoaXMub2ZmZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93Q29zdFBvcHVwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgIGxldCBpdGVtQW1vdW50ID0gY29udHJvbC5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW1BbW91bnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpdGVtQW1vdW50ID0gaXRlbUFtb3VudC5yZXBsYWNlKC9cXC4vZywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKE51bWJlcihpdGVtQW1vdW50KSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtdWx0aXBsZUl0ZW1zU3BlY3M6IENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdFtdID0gW107XHJcbiAgICBjb25zdCByZWd1bGFySXRlbXNTcGVjczogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgY29uc3QgYWxsb3dNdWx0aXBsZSA9IGNvbnRyb2wuZ2V0KCdhbGxvd19tdWx0aXBsZV9pdGVtcycpPy52YWx1ZTtcclxuICAgICAgY29udHJvbC5nZXQoJ2F2YWlsYWJpbGl0eScpPy5lbmFibGUoKTtcclxuICAgICAgY29uc3QgaXRlbVNwZWMgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcclxuICAgICAgICBjb25zdCBtdWx0aXBsZUl0ZW1TcGVjOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3QgPSB7XHJcbiAgICAgICAgICBjdXJyZW5jeTogaXRlbVNwZWMuY3VycmVuY3ksXHJcbiAgICAgICAgICBvZmZlcl9pZDogaXRlbVNwZWMub2ZmZXJfaWQsXHJcbiAgICAgICAgICBpdGVtX2lkOiBpdGVtU3BlYy5pdGVtX2lkLFxyXG4gICAgICAgICAgcG9pbnRfb2Zfc2FsZV9pZDogaXRlbVNwZWMucG9pbnRfb2Zfc2FsZV9pZCxcclxuICAgICAgICAgIGFtb3VudDogaXRlbVNwZWMuYW1vdW50LFxyXG4gICAgICAgICAgYXZhaWxhYmlsaXR5OiBpdGVtU3BlYy5hdmFpbGFiaWxpdHksXHJcbiAgICAgICAgICBleHBpcmVfYXQ6IGl0ZW1TcGVjLmV4cGlyZV9hdCxcclxuICAgICAgICAgIGlzX2V4dGVybmFsOiBpdGVtU3BlYy5pc19leHRlcm5hbCxcclxuICAgICAgICAgIGFsbG93X211bHRpcGxlX2l0ZW1zOiB0cnVlLFxyXG4gICAgICAgICAgYmFzZV9wcmljZTogaXRlbVNwZWMuYmFzZV9wcmljZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbXVsdGlwbGVJdGVtc1NwZWNzLnB1c2gobXVsdGlwbGVJdGVtU3BlYyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVndWxhckl0ZW1zU3BlY3MucHVzaChpdGVtU3BlYyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25JdGVtc1Byb2Nlc3NlZC5lbWl0KHtcclxuICAgICAgbXVsdGlwbGVJdGVtczogbXVsdGlwbGVJdGVtc1NwZWNzLFxyXG4gICAgICByZWd1bGFySXRlbXM6IHJlZ3VsYXJJdGVtc1NwZWNzLFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRGF0ZVBpY2tlZChkYXRlOiBhbnksIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGl0ZW1Gb3JtLmdldCgnZXhwaXJlX2F0Jyk/LnNldFZhbHVlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjb250cm9sID0+XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdpdGVtX2lkJyk/LnZhbHVlID09PSBpdGVtSWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxsaWIta3YtcG9wdXAgKm5nSWY9XCJzaG93Q29zdFBvcHVwXCIgW3RpdGxlXT1cIidTZXQgcHJpY2luZyBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGl0ZW1zJ1wiIFtkZXNjcmlwdGlvbl09XCInQ29uZmlndXJlIHRoZSBjb3N0LCBhdmFpbGFiaWxpdHksIGFuZCBleHBpcmF0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbSBpbiB5b3VyIG9mZmVyLidcIiBbaXNDdXN0b21UZW1wbGF0ZV09XCJ0cnVlXCIgW2FjdGlvblR5cGVdPVwiYWN0aW9uVHlwZUVudW0uSW5mb1wiXHJcbiAgICAob25BY2NlcHQpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCIgKG9uQ2xvc2UpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYXNlLXByaWNlLXdhcm5pbmdcIiAqbmdJZj1cInNob3dFeHRlcm5hbEJhc2VQcmljZVdhcm5pbmcoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj53YXJuaW5nPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPkVsIHRvdGFsIGRlIGxvcyBwcm9kdWN0b3MgZXh0ZXJub3MgKFByZWNpbyBleHRlcm5vIMOXIGRpc3BvbmliaWxpZGFkKSBkZWJlIHNlciBhbCBtZW5vcyAkMTIuOTAwLiBUb3RhbCBhY3R1YWw6ICR7eyBnZXRUb3RhbEV4dGVybmFsQmFzZVByaWNlKCkudG9Mb2NhbGVTdHJpbmcoJ2VzLUNPJykgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbUZvcm0gb2YgZmlsdGVyZWREYXRhSXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdpbWFnZV91cmwnKT8udmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW1Gb3JtLmdldCgnaW1hZ2VfdXJsJyk/LnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpdGVtLW5hbWVcIj57eyBpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWUgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXR5cGVcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWVcIj5FeHRlcm5hbCBJdGVtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIml0ZW1Gb3JtXCIgY2xhc3M9XCJpdGVtLWZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5QcmljaW5nICYgQXZhaWxhYmlsaXR5PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYW1vdW50LXt7aX19XCI+Q29zdCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29zdC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYW1vdW50LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGNvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgaXRlbUZvcm0pXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImN1cnJlbmN5LXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09QXCI+Q09QPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy5pbnZhbGlkICYmIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29zdCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhdmFpbGFiaWxpdHkte3tpfX1cIj5BdmFpbGFiaWxpdHkgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYXZhaWxhYmlsaXR5LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdmFpbGFiaWxpdHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQXZhaWxhYmxlIHF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnROZWdhdGl2ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uaW52YWxpZCAmJiBpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5NdWx0aXBsZSBJdGVtcyBTZXR0aW5nczwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfbXVsdGlwbGVfaXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1zbGlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtdGV4dFwiPkFsbG93IG11bHRpcGxlIGl0ZW1zIHBlciB1c2VyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidG9nZ2xlLWRlc2NyaXB0aW9uXCI+V2hlbiBlbmFibGVkLCB1c2VycyBjYW4gYmlkIG9uIG11bHRpcGxlIHF1YW50aXRpZXMgb2YgdGhpcyBpdGVtPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCIgKm5nSWY9XCJzaG91bGRTaG93RGF0ZXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RXhwaXJhdGlvbjwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4cGlyZUF0LXt7aX19XCI+RXhwaXJlcyBvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWt2LWRhdGUtcGlja2VyIFtpbml0aWFsRGF0ZV09XCJkZWZhdWx0RGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0RldGFpbHNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0ZWQpPVwib25EYXRlUGlja2VkKCRldmVudCwgaXRlbUZvcm0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1rdi1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCIgKm5nSWY9XCJ0b3RhbFBhZ2VzKCkgPiAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24taW5mb1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj5TaG93aW5nIHt7IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxIH19IC0ge3sgTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwYWdlU2l6ZSwgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGgpIH19IG9mIHt7IGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoIH19IGl0ZW1zPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKC0xKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgICAgICAgICAgICDihpAgUHJldmlvdXNcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1pbmRpY2F0b3JcIj57eyBjdXJyZW50UGFnZSB9fSAvIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKClcIj5cclxuICAgICAgICAgICAgICAgIE5leHQg4oaSXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItaW5mb1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1zLWNvdW50XCI+e3sgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGggfX0gaXRlbShzKSBjb25maWd1cmVkPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbi0tY2FuY2VsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsQWN0aW9uKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24tLXByaW1hcnktbWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ29udGludWVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9saWIta3YtcG9wdXA+Il19
|