techlify-inventory-common 18.35.0 → 18.36.1
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/inventory-common/product/product-list/product-list.component.mjs +15 -17
- package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +8 -8
- package/esm2022/lib/inventory-common/product/product.module.mjs +5 -5
- package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.component.mjs +65 -66
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-page/stock-issue-page.component.mjs +96 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-page/stock-issue-page.module.mjs +91 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.mjs +35 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-product-form/stock-issue-product-form.component.mjs +102 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-product.service.mjs +16 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-products-list/stock-issue-products-list.component.mjs +138 -0
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-routing.module.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue.module.mjs +5 -21
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +153 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.mjs +37 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.mjs +80 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +146 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product.service.mjs +18 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.mjs +70 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +29 -11
- package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +4 -4
- package/esm2022/public-api.mjs +13 -4
- package/fesm2022/{techlify-inventory-common-category.module-CjruFhHc.mjs → techlify-inventory-common-category.module-qyYKbe_g.mjs} +14 -14
- package/fesm2022/techlify-inventory-common-category.module-qyYKbe_g.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-measure.module-B8UHsYQT.mjs → techlify-inventory-common-measure.module-Azgdcpqu.mjs} +11 -11
- package/fesm2022/{techlify-inventory-common-measure.module-B8UHsYQT.mjs.map → techlify-inventory-common-measure.module-Azgdcpqu.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-C5DXKp05.mjs → techlify-inventory-common-purchase-order-view.component-tSf0_Lj_.mjs} +10 -10
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-C5DXKp05.mjs.map → techlify-inventory-common-purchase-order-view.component-tSf0_Lj_.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-batch-form.component-D5Df9-Xg.mjs → techlify-inventory-common-stock-issue-batch-form.component-8u8sZ4gb.mjs} +7 -7
- package/fesm2022/{techlify-inventory-common-stock-issue-batch-form.component-D5Df9-Xg.mjs.map → techlify-inventory-common-stock-issue-batch-form.component-8u8sZ4gb.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-Cm9zHnNw.mjs → techlify-inventory-common-stock-issue-view.component-C-SHFxmY.mjs} +4 -4
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-Cm9zHnNw.mjs.map → techlify-inventory-common-stock-issue-view.component-C-SHFxmY.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-ekkMO8hI.mjs → techlify-inventory-common-techlify-inventory-common-CqakmnCI.mjs} +2245 -1618
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CqakmnCI.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +4 -4
- package/lib/inventory-common/product/product.module.d.ts +2 -2
- package/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.component.d.ts +15 -16
- package/lib/inventory-common/stock-issuances/stock-issue-page/stock-issue-page.component.d.ts +28 -0
- package/lib/inventory-common/stock-issuances/stock-issue-page/stock-issue-page.module.d.ts +21 -0
- package/lib/inventory-common/stock-issuances/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.d.ts +12 -0
- package/lib/inventory-common/stock-issuances/stock-issue-product-form/stock-issue-product-form.component.d.ts +21 -0
- package/lib/inventory-common/stock-issuances/stock-issue-product.service.d.ts +7 -0
- package/lib/inventory-common/stock-issuances/stock-issue-products-list/stock-issue-products-list.component.d.ts +27 -0
- package/lib/inventory-common/stock-issuances/stock-issue.module.d.ts +6 -10
- package/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.d.ts +30 -0
- package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.d.ts +12 -0
- package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.d.ts +17 -0
- package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +28 -0
- package/lib/inventory-common/stock-receipts/stock-receipt-product.service.d.ts +7 -0
- package/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.d.ts +21 -0
- package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +17 -14
- package/package.json +1 -1
- package/public-api.d.ts +12 -3
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.module.mjs +0 -71
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +0 -158
- package/fesm2022/techlify-inventory-common-category.module-CjruFhHc.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-ekkMO8hI.mjs.map +0 -1
- package/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.module.d.ts +0 -18
- package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +0 -29
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, effect, input, output } from "@angular/core";
|
|
3
|
+
import { TechlifyListingControllerInterface } from 'ngx-techlify-core';
|
|
4
|
+
import { UntilDestroy } from "@ngneat/until-destroy";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../stock-receipt-product.service";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "ngx-techlify-core";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@angular/material/card";
|
|
11
|
+
import * as i6 from "@angular/material/progress-bar";
|
|
12
|
+
import * as i7 from "@angular/material/sort";
|
|
13
|
+
import * as i8 from "@angular/material/table";
|
|
14
|
+
import * as i9 from "@angular/material/tooltip";
|
|
15
|
+
import * as i10 from "@angular/router";
|
|
16
|
+
import * as i11 from "ngx-infinite-scroll";
|
|
17
|
+
import * as i12 from "../../product/widgets/product-category-badges/product-category-badges.component";
|
|
18
|
+
import * as i13 from "../stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component";
|
|
19
|
+
let StockReceiptProductsListComponent = class StockReceiptProductsListComponent extends TechlifyListingControllerInterface {
|
|
20
|
+
service;
|
|
21
|
+
formBuilder;
|
|
22
|
+
featureService;
|
|
23
|
+
filters = input({});
|
|
24
|
+
isProductView = input(false);
|
|
25
|
+
selectedColumns = input([]);
|
|
26
|
+
exportInProgress = input(false);
|
|
27
|
+
listUpdated = output();
|
|
28
|
+
columnConfigReady = output();
|
|
29
|
+
productViewHiddenColumns = ['product', 'sku', 'measure'];
|
|
30
|
+
_defaultSelectedColumns = [];
|
|
31
|
+
columnConfig = [
|
|
32
|
+
{ label: '#', def: 'no', isSelected: true, isEditable: false },
|
|
33
|
+
{ label: 'Receipt #', def: 'receipt_number', isSelected: true, isEditable: false },
|
|
34
|
+
{ label: 'Product', def: 'product', isSelected: true, isEditable: false },
|
|
35
|
+
{ label: 'Product Categories', def: 'product_categories', isSelected: false, isEditable: true, isExportable: false },
|
|
36
|
+
{ label: 'Categories', def: 'categories', isSelected: false, isEditable: false, isExportable: true },
|
|
37
|
+
{ label: 'SKU', def: 'sku', isSelected: true, isEditable: false },
|
|
38
|
+
{ label: 'Date', def: 'date', isSelected: true, isEditable: false },
|
|
39
|
+
{ label: 'Quantity', def: 'quantity', isSelected: true, isEditable: false },
|
|
40
|
+
{ label: 'Measure', def: 'measure', isSelected: true, isEditable: true },
|
|
41
|
+
{ label: 'Location', def: 'location', isSelected: true, isEditable: false },
|
|
42
|
+
{ label: 'Purchase Price', def: 'purchase_price', isSelected: true, isEditable: false },
|
|
43
|
+
{ label: 'Total Value', def: 'amount', isSelected: true, isEditable: false },
|
|
44
|
+
{ label: 'Supplier', def: 'supplier', isSelected: true, isEditable: false },
|
|
45
|
+
{ label: 'Supplier Contact', def: 'supplier_contact', isSelected: false, isEditable: true },
|
|
46
|
+
{ label: 'Supplier Phone', def: 'supplier_phone', isSelected: false, isEditable: true },
|
|
47
|
+
{ label: 'Particulars', def: 'particulars', isSelected: true, isEditable: false },
|
|
48
|
+
{ label: 'Creator', def: 'creator', isSelected: false, isEditable: true },
|
|
49
|
+
{ label: 'Actions', def: 'actions', isSelected: true, isEditable: false, isExportable: false },
|
|
50
|
+
];
|
|
51
|
+
get displayedColumns() {
|
|
52
|
+
const cols = this.selectedColumns().length > 0 ? this.selectedColumns() : this._defaultSelectedColumns;
|
|
53
|
+
const selectedDefs = new Set(cols.map(col => col.def));
|
|
54
|
+
return this.columnConfig.filter(col => {
|
|
55
|
+
if (this.isProductView() && this.productViewHiddenColumns.includes(col.def))
|
|
56
|
+
return false;
|
|
57
|
+
if (this.exportInProgress()) {
|
|
58
|
+
if (col.isExportable === true) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (col.isExportable === false) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return selectedDefs.has(col.def);
|
|
66
|
+
}).map(col => col.def);
|
|
67
|
+
}
|
|
68
|
+
get totalPurchasePrice() {
|
|
69
|
+
return this.models.reduce((sum, model) => sum + Number(model?.purchase_price ?? 0), 0);
|
|
70
|
+
}
|
|
71
|
+
get totalValue() {
|
|
72
|
+
return this.models.reduce((sum, model) => sum + Number(model?.amount ?? 0), 0);
|
|
73
|
+
}
|
|
74
|
+
get footerColumns() {
|
|
75
|
+
return this.displayedColumns.map(col => `footer-${col}`);
|
|
76
|
+
}
|
|
77
|
+
constructor(service, formBuilder, featureService) {
|
|
78
|
+
super();
|
|
79
|
+
this.service = service;
|
|
80
|
+
this.formBuilder = formBuilder;
|
|
81
|
+
this.featureService = featureService;
|
|
82
|
+
this.filterFormConfiguration = {
|
|
83
|
+
date_from: { date: true },
|
|
84
|
+
date_to: { date: true },
|
|
85
|
+
category_ids: { multiple: true },
|
|
86
|
+
supplier_ids: { multiple: true },
|
|
87
|
+
location_ids: { multiple: true },
|
|
88
|
+
measure_ids: { multiple: true },
|
|
89
|
+
product_ids: { multiple: true },
|
|
90
|
+
};
|
|
91
|
+
this.filterForm = this.formBuilder.group({
|
|
92
|
+
category_ids: [''],
|
|
93
|
+
date_from: [''],
|
|
94
|
+
date_to: [''],
|
|
95
|
+
duration: [''],
|
|
96
|
+
location_ids: [''],
|
|
97
|
+
measure_ids: [''],
|
|
98
|
+
product_ids: [''],
|
|
99
|
+
search: [''],
|
|
100
|
+
sort_by: ['date|desc'],
|
|
101
|
+
supplier_ids: [''],
|
|
102
|
+
page: this.page,
|
|
103
|
+
perPage: this.perPage,
|
|
104
|
+
});
|
|
105
|
+
let initialized = false;
|
|
106
|
+
effect(() => {
|
|
107
|
+
const filters = this.filters();
|
|
108
|
+
if (!initialized) {
|
|
109
|
+
initialized = true;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.filterForm.patchValue(filters, { emitEvent: true });
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
ngOnInit() {
|
|
116
|
+
this.loadFeatures();
|
|
117
|
+
this._defaultSelectedColumns = this.columnConfig.filter(col => col.isSelected);
|
|
118
|
+
this.columnConfigReady.emit(this.columnConfig);
|
|
119
|
+
const initialFilters = this.filters();
|
|
120
|
+
if (initialFilters) {
|
|
121
|
+
this.filterForm.patchValue(initialFilters, { emitEvent: false });
|
|
122
|
+
}
|
|
123
|
+
this.patchFiltersFromRoute();
|
|
124
|
+
this.listenFilterChanges();
|
|
125
|
+
this.loadData();
|
|
126
|
+
}
|
|
127
|
+
loadFeatures() {
|
|
128
|
+
if (this.featureService.isFeatureExists('product-batch-numbers')) {
|
|
129
|
+
const qtyIndex = this.columnConfig.findIndex(c => c.def === 'quantity');
|
|
130
|
+
if (qtyIndex >= 0) {
|
|
131
|
+
this.columnConfig.splice(qtyIndex + 1, 0, { label: 'Batch', def: 'batch', isSelected: true, isEditable: false });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptProductsListComponent, deps: [{ token: i1.StockReceiptProductService }, { token: i2.FormBuilder }, { token: i3.TechlifyFeatureService }], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: StockReceiptProductsListComponent, selector: "app-stock-receipt-product-list", inputs: { filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, isProductView: { classPropertyName: "isProductView", publicName: "isProductView", isSignal: true, isRequired: false, transformFunction: null }, selectedColumns: { classPropertyName: "selectedColumns", publicName: "selectedColumns", isSignal: true, isRequired: false, transformFunction: null }, exportInProgress: { classPropertyName: "exportInProgress", publicName: "exportInProgress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { listUpdated: "listUpdated", columnConfigReady: "columnConfigReady" }, usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-header *ngIf=\"isProductView()\" class=\"d-flex align-items-center gap-2\">\n <mat-card-title>Stock Receipts</mat-card-title>\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/batch-form']\"\n class='ms-2'></app-techlify-icon>\n </mat-card-header>\n\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Receipt Products\" infiniteScroll\n id=\"stockReceiptTable\" [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt_number\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"Stock Receipt ID\">Receipt #</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts', element?.stock_receipt_id, 'view']\">\n {{ element?.stock_receipt_id }}\n </a>\n </td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\">\n {{ element?.product?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Product Categories Column -->\n <ng-container matColumnDef=\"product_categories\">\n <th mat-header-cell *matHeaderCellDef>Product Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <!-- Categories Column (export only) -->\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngFor=\"let category of element?.product?.categories; let last = last\">\n {{ category?.title }}<ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.date | date }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <!-- Batch Column -->\n <ng-container matColumnDef=\"batch\">\n <th mat-header-cell *matHeaderCellDef>Batch</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\" *ngIf=\"element?.batch?.batch_number\">{{ element?.batch?.batch_number }}</p>\n <small class=\"text-secondary\" *ngIf=\"element?.batch?.expires_on\">\n Expires {{ element?.batch?.expires_on | date }}\n </small>\n </td>\n </ng-container>\n\n <!-- Measure Column -->\n <ng-container matColumnDef=\"measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Measure</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', element?.location_id, 'view']\">\n {{ element?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.purchase_price | currency }}</td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.amount | currency }}</td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.company_name }}</td>\n </ng-container>\n\n <!-- Supplier Contact Column -->\n <ng-container matColumnDef=\"supplier_contact\">\n <th mat-header-cell *matHeaderCellDef>Supplier Contact</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.contact_name }}</td>\n </ng-container>\n\n <!-- Supplier Phone Column -->\n <ng-container matColumnDef=\"supplier_phone\">\n <th mat-header-cell *matHeaderCellDef>Supplier Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.phone }}</td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.stock_receipt?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.stock_receipt?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1 text-secondary\">\n <app-techlify-icon role='button' name='view' class='text-secondary'\n [routerLink]=\"['/inventory', 'stock-receipts', element?.id, 'view']\"></app-techlify-icon>\n <app-stock-receipt-product-form-button [stockReceiptId]=\"element?.stock_receipt_id\"\n [stockReceiptProduct]=\"element\" (saved)=\"reload(); listUpdated.emit(true)\">\n </app-stock-receipt-product-form-button>\n <app-techlify-delete-button [model]=\"element\" [service]=\"service\"\n [data]=\"{ title: element?.product?.name, type: 'Stock Receipt Product' }\"\n (deleted)=\"reload(); listUpdated.emit(true)\">\n </app-techlify-delete-button>\n </div>\n </td>\n </ng-container>\n\n <!-- Footer Cells for Total Row -->\n <ng-container matColumnDef=\"footer-no\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-receipt_number\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product\">\n <td mat-footer-cell *matFooterCellDef><strong>Total</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product_categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-sku\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-date\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-quantity\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-batch\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-measure\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-location\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-purchase_price\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalPurchasePrice | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-amount\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalValue | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-particulars\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_contact\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_phone\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-creator\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-actions\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr mat-footer-row *matFooterRowDef=\"footerColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i8.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i8.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i12.ProductCategoryBadgesComponent, selector: "app-product-category-badges", inputs: ["product"] }, { kind: "component", type: i3.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i3.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: i13.StockReceiptProductFormButtonComponent, selector: "app-stock-receipt-product-form-button", inputs: ["stockReceiptProduct", "stockReceiptId"], outputs: ["saved"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i4.DatePipe, name: "date" }], preserveWhitespaces: true });
|
|
137
|
+
};
|
|
138
|
+
StockReceiptProductsListComponent = __decorate([
|
|
139
|
+
UntilDestroy()
|
|
140
|
+
], StockReceiptProductsListComponent);
|
|
141
|
+
export { StockReceiptProductsListComponent };
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptProductsListComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'app-stock-receipt-product-list', template: "<mat-card>\n <mat-card-header *ngIf=\"isProductView()\" class=\"d-flex align-items-center gap-2\">\n <mat-card-title>Stock Receipts</mat-card-title>\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/batch-form']\"\n class='ms-2'></app-techlify-icon>\n </mat-card-header>\n\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Receipt Products\" infiniteScroll\n id=\"stockReceiptTable\" [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt_number\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"Stock Receipt ID\">Receipt #</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts', element?.stock_receipt_id, 'view']\">\n {{ element?.stock_receipt_id }}\n </a>\n </td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\">\n {{ element?.product?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Product Categories Column -->\n <ng-container matColumnDef=\"product_categories\">\n <th mat-header-cell *matHeaderCellDef>Product Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <!-- Categories Column (export only) -->\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngFor=\"let category of element?.product?.categories; let last = last\">\n {{ category?.title }}<ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.date | date }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <!-- Batch Column -->\n <ng-container matColumnDef=\"batch\">\n <th mat-header-cell *matHeaderCellDef>Batch</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\" *ngIf=\"element?.batch?.batch_number\">{{ element?.batch?.batch_number }}</p>\n <small class=\"text-secondary\" *ngIf=\"element?.batch?.expires_on\">\n Expires {{ element?.batch?.expires_on | date }}\n </small>\n </td>\n </ng-container>\n\n <!-- Measure Column -->\n <ng-container matColumnDef=\"measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Measure</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', element?.location_id, 'view']\">\n {{ element?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.purchase_price | currency }}</td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.amount | currency }}</td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.company_name }}</td>\n </ng-container>\n\n <!-- Supplier Contact Column -->\n <ng-container matColumnDef=\"supplier_contact\">\n <th mat-header-cell *matHeaderCellDef>Supplier Contact</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.contact_name }}</td>\n </ng-container>\n\n <!-- Supplier Phone Column -->\n <ng-container matColumnDef=\"supplier_phone\">\n <th mat-header-cell *matHeaderCellDef>Supplier Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.phone }}</td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.stock_receipt?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.stock_receipt?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1 text-secondary\">\n <app-techlify-icon role='button' name='view' class='text-secondary'\n [routerLink]=\"['/inventory', 'stock-receipts', element?.id, 'view']\"></app-techlify-icon>\n <app-stock-receipt-product-form-button [stockReceiptId]=\"element?.stock_receipt_id\"\n [stockReceiptProduct]=\"element\" (saved)=\"reload(); listUpdated.emit(true)\">\n </app-stock-receipt-product-form-button>\n <app-techlify-delete-button [model]=\"element\" [service]=\"service\"\n [data]=\"{ title: element?.product?.name, type: 'Stock Receipt Product' }\"\n (deleted)=\"reload(); listUpdated.emit(true)\">\n </app-techlify-delete-button>\n </div>\n </td>\n </ng-container>\n\n <!-- Footer Cells for Total Row -->\n <ng-container matColumnDef=\"footer-no\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-receipt_number\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product\">\n <td mat-footer-cell *matFooterCellDef><strong>Total</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product_categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-sku\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-date\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-quantity\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-batch\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-measure\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-location\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-purchase_price\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalPurchasePrice | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-amount\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalValue | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-particulars\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_contact\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_phone\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-creator\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-actions\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr mat-footer-row *matFooterRowDef=\"footerColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"] }]
|
|
145
|
+
}], ctorParameters: () => [{ type: i1.StockReceiptProductService }, { type: i2.FormBuilder }, { type: i3.TechlifyFeatureService }] });
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1wcm9kdWN0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdC1wcm9kdWN0LWxpc3Qvc3RvY2stcmVjZWlwdC1wcm9kdWN0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdC1wcm9kdWN0LWxpc3Qvc3RvY2stcmVjZWlwdC1wcm9kdWN0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGtDQUFrQyxFQUNuQyxNQUFNLG1CQUFtQixDQUFDO0FBRzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUTlDLElBQU0saUNBQWlDLEdBQXZDLE1BQU0saUNBQWtDLFNBQVEsa0NBQWtDO0lBOERsRTtJQUNYO0lBQ0E7SUEvRFYsT0FBTyxHQUFHLEtBQUssQ0FBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLGVBQWUsR0FBRyxLQUFLLENBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLGdCQUFnQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN6QyxXQUFXLEdBQUcsTUFBTSxFQUFPLENBQUM7SUFDNUIsaUJBQWlCLEdBQUcsTUFBTSxFQUFrQixDQUFDO0lB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QU8sRUFBRSxDQUFDO1FBQ3RDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztZQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDeEUsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkgsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3dHQTlIVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyx1dkJDZjlDLHNrVkE0UFc7O0FEN09FLGlDQUFpQztJQU43QyxZQUFZLEVBQUU7R0FNRixpQ0FBaUMsQ0ErSDdDOzs0RkEvSFksaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgQ29sdW1uQ29uZmlnLCBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlLFxuICBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFN0b2NrUmVjZWlwdFByb2R1Y3RTZXJ2aWNlIH0gZnJvbSBcIi4uL3N0b2NrLXJlY2VpcHQtcHJvZHVjdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95IH0gZnJvbSBcIkBuZ25lYXQvdW50aWwtZGVzdHJveVwiO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1yZWNlaXB0LXByb2R1Y3QtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1yZWNlaXB0LXByb2R1Y3QtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLXJlY2VpcHQtcHJvZHVjdC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrUmVjZWlwdFByb2R1Y3RzTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdGluZ0NvbnRyb2xsZXJJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaWx0ZXJzID0gaW5wdXQ8YW55Pih7fSk7XG4gIGlzUHJvZHVjdFZpZXcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHNlbGVjdGVkQ29sdW1ucyA9IGlucHV0PENvbHVtbkNvbmZpZ1tdPihbXSk7XG4gIGV4cG9ydEluUHJvZ3Jlc3MgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGxpc3RVcGRhdGVkID0gb3V0cHV0PGFueT4oKTtcbiAgY29sdW1uQ29uZmlnUmVhZHkgPSBvdXRwdXQ8Q29sdW1uQ29uZmlnW10+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0Vmlld0hpZGRlbkNvbHVtbnMgPSBbJ3Byb2R1Y3QnLCAnc2t1JywgJ21lYXN1cmUnXTtcbiAgcHJpdmF0ZSBfZGVmYXVsdFNlbGVjdGVkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcblxuICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZ1tdID0gW1xuICAgIHsgbGFiZWw6ICcjJywgZGVmOiAnbm8nLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdSZWNlaXB0ICMnLCBkZWY6ICdyZWNlaXB0X251bWJlcicsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBsYWJlbDogJ1Byb2R1Y3QnLCBkZWY6ICdwcm9kdWN0JywgaXNTZWxlY3RlZDogdHJ1ZSwgaXNFZGl0YWJsZTogZmFsc2UgfSxcbiAgICB7IGxhYmVsOiAnUHJvZHVjdCBDYXRlZ29yaWVzJywgZGVmOiAncHJvZHVjdF9jYXRlZ29yaWVzJywgaXNTZWxlY3RlZDogZmFsc2UsIGlzRWRpdGFibGU6IHRydWUsIGlzRXhwb3J0YWJsZTogZmFsc2UgfSxcbiAgICB7IGxhYmVsOiAnQ2F0ZWdvcmllcycsIGRlZjogJ2NhdGVnb3JpZXMnLCBpc1NlbGVjdGVkOiBmYWxzZSwgaXNFZGl0YWJsZTogZmFsc2UsIGlzRXhwb3J0YWJsZTogdHJ1ZSB9LFxuICAgIHsgbGFiZWw6ICdTS1UnLCBkZWY6ICdza3UnLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdEYXRlJywgZGVmOiAnZGF0ZScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBsYWJlbDogJ1F1YW50aXR5JywgZGVmOiAncXVhbnRpdHknLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdNZWFzdXJlJywgZGVmOiAnbWVhc3VyZScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnTG9jYXRpb24nLCBkZWY6ICdsb2NhdGlvbicsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBsYWJlbDogJ1B1cmNoYXNlIFByaWNlJywgZGVmOiAncHVyY2hhc2VfcHJpY2UnLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdUb3RhbCBWYWx1ZScsIGRlZjogJ2Ftb3VudCcsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBsYWJlbDogJ1N1cHBsaWVyJywgZGVmOiAnc3VwcGxpZXInLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdTdXBwbGllciBDb250YWN0JywgZGVmOiAnc3VwcGxpZXJfY29udGFjdCcsIGlzU2VsZWN0ZWQ6IGZhbHNlLCBpc0VkaXRhYmxlOiB0cnVlIH0sXG4gICAgeyBsYWJlbDogJ1N1cHBsaWVyIFBob25lJywgZGVmOiAnc3VwcGxpZXJfcGhvbmUnLCBpc1NlbGVjdGVkOiBmYWxzZSwgaXNFZGl0YWJsZTogdHJ1ZSB9LFxuICAgIHsgbGFiZWw6ICdQYXJ0aWN1bGFycycsIGRlZjogJ3BhcnRpY3VsYXJzJywgaXNTZWxlY3RlZDogdHJ1ZSwgaXNFZGl0YWJsZTogZmFsc2UgfSxcbiAgICB7IGxhYmVsOiAnQ3JlYXRvcicsIGRlZjogJ2NyZWF0b3InLCBpc1NlbGVjdGVkOiBmYWxzZSwgaXNFZGl0YWJsZTogdHJ1ZSB9LFxuICAgIHsgbGFiZWw6ICdBY3Rpb25zJywgZGVmOiAnYWN0aW9ucycsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlLCBpc0V4cG9ydGFibGU6IGZhbHNlIH0sXG4gIF07XG5cbiAgZ2V0IGRpc3BsYXllZENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucygpLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkQ29sdW1ucygpIDogdGhpcy5fZGVmYXVsdFNlbGVjdGVkQ29sdW1ucztcbiAgICBjb25zdCBzZWxlY3RlZERlZnMgPSBuZXcgU2V0KGNvbHMubWFwKGNvbCA9PiBjb2wuZGVmKSk7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlnLmZpbHRlcihjb2wgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNQcm9kdWN0VmlldygpICYmIHRoaXMucHJvZHVjdFZpZXdIaWRkZW5Db2x1bW5zLmluY2x1ZGVzKGNvbC5kZWYpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAodGhpcy5leHBvcnRJblByb2dyZXNzKCkpIHtcbiAgICAgICAgaWYgKGNvbC5pc0V4cG9ydGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sLmlzRXhwb3J0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxlY3RlZERlZnMuaGFzKGNvbC5kZWYpO1xuICAgIH0pLm1hcChjb2wgPT4gY29sLmRlZik7XG4gIH1cblxuICBnZXQgdG90YWxQdXJjaGFzZVByaWNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzLnJlZHVjZSgoc3VtLCBtb2RlbCkgPT4gc3VtICsgTnVtYmVyKG1vZGVsPy5wdXJjaGFzZV9wcmljZSA/PyAwKSwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vZGVscy5yZWR1Y2UoKHN1bSwgbW9kZWwpID0+IHN1bSArIE51bWJlcihtb2RlbD8uYW1vdW50ID8/IDApLCAwKTtcbiAgfVxuXG4gIGdldCBmb290ZXJDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLm1hcChjb2wgPT4gYGZvb3Rlci0ke2NvbH1gKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBTdG9ja1JlY2VpcHRQcm9kdWN0U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm1Db25maWd1cmF0aW9uID0ge1xuICAgICAgZGF0ZV9mcm9tOiB7IGRhdGU6IHRydWUgfSxcbiAgICAgIGRhdGVfdG86IHsgZGF0ZTogdHJ1ZSB9LFxuICAgICAgY2F0ZWdvcnlfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBzdXBwbGllcl9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICAgIGxvY2F0aW9uX2lkczogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgICAgbWVhc3VyZV9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICAgIHByb2R1Y3RfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgfTtcblxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgY2F0ZWdvcnlfaWRzOiBbJyddLFxuICAgICAgZGF0ZV9mcm9tOiBbJyddLFxuICAgICAgZGF0ZV90bzogWycnXSxcbiAgICAgIGR1cmF0aW9uOiBbJyddLFxuICAgICAgbG9jYXRpb25faWRzOiBbJyddLFxuICAgICAgbWVhc3VyZV9pZHM6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkczogWycnXSxcbiAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnZGF0ZXxkZXNjJ10sXG4gICAgICBzdXBwbGllcl9pZHM6IFsnJ10sXG4gICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgfSk7XG5cbiAgICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVycygpO1xuICAgICAgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKGZpbHRlcnMsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRmVhdHVyZXMoKTtcbiAgICB0aGlzLl9kZWZhdWx0U2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5Db25maWcuZmlsdGVyKGNvbCA9PiBjb2wuaXNTZWxlY3RlZCk7XG4gICAgdGhpcy5jb2x1bW5Db25maWdSZWFkeS5lbWl0KHRoaXMuY29sdW1uQ29uZmlnKTtcblxuICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJzID0gdGhpcy5maWx0ZXJzKCk7XG4gICAgaWYgKGluaXRpYWxGaWx0ZXJzKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShpbml0aWFsRmlsdGVycywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHRoaXMucGF0Y2hGaWx0ZXJzRnJvbVJvdXRlKCk7XG4gICAgdGhpcy5saXN0ZW5GaWx0ZXJDaGFuZ2VzKCk7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRmVhdHVyZXMoKSB7XG4gICAgaWYgKHRoaXMuZmVhdHVyZVNlcnZpY2UuaXNGZWF0dXJlRXhpc3RzKCdwcm9kdWN0LWJhdGNoLW51bWJlcnMnKSkge1xuICAgICAgY29uc3QgcXR5SW5kZXggPSB0aGlzLmNvbHVtbkNvbmZpZy5maW5kSW5kZXgoYyA9PiBjLmRlZiA9PT0gJ3F1YW50aXR5Jyk7XG4gICAgICBpZiAocXR5SW5kZXggPj0gMCkge1xuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5zcGxpY2UocXR5SW5kZXggKyAxLCAwLCB7IGxhYmVsOiAnQmF0Y2gnLCBkZWY6ICdiYXRjaCcsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1jYXJkPlxuICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwiaXNQcm9kdWN0VmlldygpXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlPlN0b2NrIFJlY2VpcHRzPC9tYXQtY2FyZC10aXRsZT5cbiAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJyBuYW1lPSdhZGQnIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9zdG9jay1yZWNlaXB0cy9iYXRjaC1mb3JtJ11cIlxuICAgICAgY2xhc3M9J21zLTInPjwvYXBwLXRlY2hsaWZ5LWljb24+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuXG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0wXCI+XG4gICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBjbGFzcz1cInctMTAwXCIgYXJpYS1kZXNjcmliZWRieT1cIlN0b2NrIFJlY2VpcHQgUHJvZHVjdHNcIiBpbmZpbml0ZVNjcm9sbFxuICAgICAgaWQ9XCJzdG9ja1JlY2VpcHRUYWJsZVwiIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydENvbHVtbigkZXZlbnQpXCI+XG5cbiAgICAgIDwhLS0gIyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5vXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IzwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+e3sgaSArIDEgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicmVjZWlwdF9udW1iZXJcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwiU3RvY2sgUmVjZWlwdCBJRFwiPlJlY2VpcHQgIzwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N0b2NrLXJlY2VpcHRzJywgZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9pZCwgJ3ZpZXcnXVwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9pZCB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFByb2R1Y3QgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwcm9kdWN0XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlByb2R1Y3Q8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1kYXJrXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9wcm9kdWN0cycsIGVsZW1lbnQ/LnByb2R1Y3Q/LmlkLCAndmlldyddXCI+XG4gICAgICAgICAgICB7eyBlbGVtZW50Py5wcm9kdWN0Py5uYW1lIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUHJvZHVjdCBDYXRlZ29yaWVzIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHJvZHVjdF9jYXRlZ29yaWVzXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+UHJvZHVjdCBDYXRlZ29yaWVzPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8YXBwLXByb2R1Y3QtY2F0ZWdvcnktYmFkZ2VzIFtwcm9kdWN0XT1cImVsZW1lbnQ/LnByb2R1Y3RcIj48L2FwcC1wcm9kdWN0LWNhdGVnb3J5LWJhZGdlcz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENhdGVnb3JpZXMgQ29sdW1uIChleHBvcnQgb25seSkgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNhdGVnb3JpZXNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5DYXRlZ29yaWVzPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgZWxlbWVudD8ucHJvZHVjdD8uY2F0ZWdvcmllczsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICB7eyBjYXRlZ29yeT8udGl0bGUgfX08bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3RcIj4sIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFNLVSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNrdVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5TS1U8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnByb2R1Y3Q/LnNrdSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBEYXRlIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGF0ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5EYXRlPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5zdG9ja19yZWNlaXB0Py5kYXRlIHwgZGF0ZSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBRdWFudGl0eSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInF1YW50aXR5XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlF1YW50aXR5PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICB7eyBlbGVtZW50Py5xdWFudGl0eSB9fSB7eyBlbGVtZW50Py5wcm9kdWN0Py5tZWFzdXJlPy50aXRsZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQmF0Y2ggQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJiYXRjaFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkJhdGNoPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIiAqbmdJZj1cImVsZW1lbnQ/LmJhdGNoPy5iYXRjaF9udW1iZXJcIj57eyBlbGVtZW50Py5iYXRjaD8uYmF0Y2hfbnVtYmVyIH19PC9wPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCIgKm5nSWY9XCJlbGVtZW50Py5iYXRjaD8uZXhwaXJlc19vblwiPlxuICAgICAgICAgICAgRXhwaXJlcyB7eyBlbGVtZW50Py5iYXRjaD8uZXhwaXJlc19vbiB8IGRhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gTWVhc3VyZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm1lYXN1cmVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+TWVhc3VyZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ucHJvZHVjdD8ubWVhc3VyZT8udGl0bGUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gTG9jYXRpb24gQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NhdGlvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Mb2NhdGlvbjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L2xvY2F0aW9ucycsIGVsZW1lbnQ/LmxvY2F0aW9uX2lkLCAndmlldyddXCI+XG4gICAgICAgICAgICB7eyBlbGVtZW50Py5sb2NhdGlvbj8udGl0bGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQdXJjaGFzZSBQcmljZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInB1cmNoYXNlX3ByaWNlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlB1cmNoYXNlIFByaWNlPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5wdXJjaGFzZV9wcmljZSB8IGN1cnJlbmN5IH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFRvdGFsIFZhbHVlIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYW1vdW50XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlRvdGFsIFZhbHVlPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5hbW91bnQgfCBjdXJyZW5jeSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQYXJ0aWN1bGFycyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInBhcnRpY3VsYXJzXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+UGFydGljdWxhcnM8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnBhcnRpY3VsYXJzIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFN1cHBsaWVyIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3VwcGxpZXJcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+U3VwcGxpZXI8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnN0b2NrX3JlY2VpcHQ/LnN1cHBsaWVyPy5jb21wYW55X25hbWUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gU3VwcGxpZXIgQ29udGFjdCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1cHBsaWVyX2NvbnRhY3RcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TdXBwbGllciBDb250YWN0PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5zdG9ja19yZWNlaXB0Py5zdXBwbGllcj8uY29udGFjdF9uYW1lIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFN1cHBsaWVyIFBob25lIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3VwcGxpZXJfcGhvbmVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TdXBwbGllciBQaG9uZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdD8uc3VwcGxpZXI/LnBob25lIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENyZWF0b3IgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjcmVhdG9yXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+Q3JlYXRvcjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0xXCI+e3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdD8uY3JlYXRvcj8ubmFtZSB9fTwvcD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPnt7IGVsZW1lbnQ/LnN0b2NrX3JlY2VpcHQ/LmNyZWF0ZWRfYXQgfCBkYXRlIH19PC9zbWFsbD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEFjdGlvbnMgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+QWN0aW9uczwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMSB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0ndmlldycgY2xhc3M9J3RleHQtc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnknLCAnc3RvY2stcmVjZWlwdHMnLCBlbGVtZW50Py5pZCwgJ3ZpZXcnXVwiPjwvYXBwLXRlY2hsaWZ5LWljb24+XG4gICAgICAgICAgICA8YXBwLXN0b2NrLXJlY2VpcHQtcHJvZHVjdC1mb3JtLWJ1dHRvbiBbc3RvY2tSZWNlaXB0SWRdPVwiZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9pZFwiXG4gICAgICAgICAgICAgIFtzdG9ja1JlY2VpcHRQcm9kdWN0XT1cImVsZW1lbnRcIiAoc2F2ZWQpPVwicmVsb2FkKCk7IGxpc3RVcGRhdGVkLmVtaXQodHJ1ZSlcIj5cbiAgICAgICAgICAgIDwvYXBwLXN0b2NrLXJlY2VpcHQtcHJvZHVjdC1mb3JtLWJ1dHRvbj5cbiAgICAgICAgICAgIDxhcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbiBbbW9kZWxdPVwiZWxlbWVudFwiIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJ7IHRpdGxlOiBlbGVtZW50Py5wcm9kdWN0Py5uYW1lLCB0eXBlOiAnU3RvY2sgUmVjZWlwdCBQcm9kdWN0JyB9XCJcbiAgICAgICAgICAgICAgKGRlbGV0ZWQpPVwicmVsb2FkKCk7IGxpc3RVcGRhdGVkLmVtaXQodHJ1ZSlcIj5cbiAgICAgICAgICAgIDwvYXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBGb290ZXIgQ2VsbHMgZm9yIFRvdGFsIFJvdyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLW5vXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1yZWNlaXB0X251bWJlclwiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmb290ZXItcHJvZHVjdFwiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjxzdHJvbmc+VG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLXByb2R1Y3RfY2F0ZWdvcmllc1wiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmb290ZXItc2t1XCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1jYXRlZ29yaWVzXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1kYXRlXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1xdWFudGl0eVwiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmb290ZXItYmF0Y2hcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLW1lYXN1cmVcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLWxvY2F0aW9uXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1wdXJjaGFzZV9wcmljZVwiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjxzdHJvbmc+e3sgdG90YWxQdXJjaGFzZVByaWNlIHwgY3VycmVuY3kgfX08L3N0cm9uZz48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLWFtb3VudFwiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjxzdHJvbmc+e3sgdG90YWxWYWx1ZSB8IGN1cnJlbmN5IH19PC9zdHJvbmc+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1wYXJ0aWN1bGFyc1wiPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmb290ZXItc3VwcGxpZXJcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLXN1cHBsaWVyX2NvbnRhY3RcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZm9vdGVyLXN1cHBsaWVyX3Bob25lXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1jcmVhdG9yXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZvb3Rlci1hY3Rpb25zXCI+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJmb290ZXJDb2x1bW5zXCI+PC90cj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TechlifyServiceBaseClass } from 'ngx-techlify-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-techlify-core";
|
|
5
|
+
export class StockReceiptProductService extends TechlifyServiceBaseClass {
|
|
6
|
+
constructor(httpService) {
|
|
7
|
+
super(httpService, 'stock-receipt-products');
|
|
8
|
+
}
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptProductService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptProductService, providedIn: 'root' });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptProductService, decorators: [{
|
|
13
|
+
type: Injectable,
|
|
14
|
+
args: [{
|
|
15
|
+
providedIn: 'root',
|
|
16
|
+
}]
|
|
17
|
+
}], ctorParameters: () => [{ type: i1.HttpService }] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1wcm9kdWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1yZWNlaXB0cy9zdG9jay1yZWNlaXB0LXByb2R1Y3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFLMUUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHdCQUF3QjtJQUN0RSxZQUFZLFdBQXdCO1FBQ2xDLEtBQUssQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO3dHQUhVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSwgVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0UHJvZHVjdFNlcnZpY2UgZXh0ZW5kcyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3Mge1xuICBjb25zdHJ1Y3RvcihodHRwU2VydmljZTogSHR0cFNlcnZpY2UpIHtcbiAgICBzdXBlcihodHRwU2VydmljZSwgJ3N0b2NrLXJlY2VpcHQtcHJvZHVjdHMnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, input, output, signal } from "@angular/core";
|
|
3
|
+
import { UntilDestroy } from "@ngneat/until-destroy";
|
|
4
|
+
import { toSignal } from "@angular/core/rxjs-interop";
|
|
5
|
+
import { startWith } from "rxjs";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/material/button-toggle";
|
|
10
|
+
import * as i4 from "@angular/material/card";
|
|
11
|
+
import * as i5 from "@angular/material/form-field";
|
|
12
|
+
import * as i6 from "@angular/material/input";
|
|
13
|
+
import * as i7 from "@angular/material/tooltip";
|
|
14
|
+
import * as i8 from "@angular/router";
|
|
15
|
+
import * as i9 from "ngx-techlify-core";
|
|
16
|
+
import * as i10 from "../../shared/export-to-excel-button/export-to-excel-button.component";
|
|
17
|
+
import * as i11 from "../stock-receipt-list/stock-receipt-list.component";
|
|
18
|
+
import * as i12 from "../stock-receipt-product-list/stock-receipt-product-list.component";
|
|
19
|
+
let StockReceiptPageComponent = class StockReceiptPageComponent {
|
|
20
|
+
formBuilder;
|
|
21
|
+
product = input(null);
|
|
22
|
+
supplierId = input(undefined);
|
|
23
|
+
listUpdated = output();
|
|
24
|
+
selectedView = signal('itemized');
|
|
25
|
+
exportInProgress = signal(false);
|
|
26
|
+
columnConfig = [];
|
|
27
|
+
selectedColumns = [];
|
|
28
|
+
filterForm;
|
|
29
|
+
filtersValue;
|
|
30
|
+
constructor(formBuilder) {
|
|
31
|
+
this.formBuilder = formBuilder;
|
|
32
|
+
this.filterForm = this.formBuilder.group({
|
|
33
|
+
category_ids: [''],
|
|
34
|
+
duration: [''],
|
|
35
|
+
location_ids: [''],
|
|
36
|
+
measure_ids: [''],
|
|
37
|
+
product_ids: [''],
|
|
38
|
+
search: [''],
|
|
39
|
+
supplier_ids: [''],
|
|
40
|
+
date_from: [''],
|
|
41
|
+
date_to: [''],
|
|
42
|
+
});
|
|
43
|
+
this.filtersValue = toSignal(this.filterForm.valueChanges.pipe(startWith(this.filterForm.value)));
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
const productVal = this.product();
|
|
47
|
+
if (productVal) {
|
|
48
|
+
this.filterForm.get('product_ids')?.setValue(productVal.id);
|
|
49
|
+
}
|
|
50
|
+
const supplierIdVal = this.supplierId();
|
|
51
|
+
if (supplierIdVal) {
|
|
52
|
+
this.filterForm.get('supplier_ids')?.setValue(supplierIdVal);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
onColumnConfigReady(config) {
|
|
56
|
+
this.columnConfig = config;
|
|
57
|
+
this.selectedColumns = config.filter(col => col.isSelected);
|
|
58
|
+
}
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptPageComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: StockReceiptPageComponent, selector: "app-stock-receipts-page", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, supplierId: { classPropertyName: "supplierId", publicName: "supplierId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { listUpdated: "listUpdated" }, ngImport: i0, template: "<mat-card *ngIf=\"!product()\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">Stock Receipts</h3>\n\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/batch-form']\"\n class='ms-2'></app-techlify-icon>\n\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n file_upload\n </span>\n\n <app-export-to-excel-button tableId=\"stockReceiptTable\" fileName=\"Stock Receipts\"\n (onExportStart)=\"exportInProgress.set(true)\" (onExportEnd)=\"exportInProgress.set(false)\">\n </app-export-to-excel-button>\n\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" class=\"mt-1 d-print-none\"\n [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n\n <mat-button-toggle-group class=\"view-toggle\" [value]=\"selectedView()\" (change)=\"selectedView.set($event.value)\">\n <mat-button-toggle value=\"itemized\">Itemized</mat-button-toggle>\n <mat-button-toggle value=\"grouped\">Grouped</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <form [formGroup]=\"filterForm\" class=\"d-flex align-items-center gap-2 flex-wrap\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl=\"api/suppliers\" formControlName=\"supplier_ids\" titleField=\"company_name\"\n [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card *ngIf=\"product()\" class=\"mb-2\">\n <mat-card-content class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> output_circle </span>\n <h3 class=\"mb-0\">Stock Receipts</h3>\n </div>\n </mat-card-content>\n</mat-card>\n\n<app-stock-receipt-product-list *ngIf=\"selectedView() === 'itemized'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-product-list>\n\n<app-stock-receipt-list *ngIf=\"selectedView() === 'grouped'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-list>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i9.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i9.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i9.ColumnSelectorComponent, selector: "app-column-selector", inputs: ["label", "mode", "columnConfigs", "selectedColumns", "isExportWorking"], outputs: ["selectedColumnsChange", "displayedColumnsChange"] }, { kind: "component", type: i9.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i10.ExportToExcelButtonComponent, selector: "app-export-to-excel-button", inputs: ["tableId", "fileName"], outputs: ["onExportStart", "onExportEnd"] }, { kind: "component", type: i11.StockReceiptListComponent, selector: "app-stock-receipt-list", inputs: ["filters", "selectedColumns", "exportInProgress"], outputs: ["listUpdated", "columnConfigReady"] }, { kind: "component", type: i12.StockReceiptProductsListComponent, selector: "app-stock-receipt-product-list", inputs: ["filters", "isProductView", "selectedColumns", "exportInProgress"], outputs: ["listUpdated", "columnConfigReady"] }], preserveWhitespaces: true });
|
|
61
|
+
};
|
|
62
|
+
StockReceiptPageComponent = __decorate([
|
|
63
|
+
UntilDestroy()
|
|
64
|
+
], StockReceiptPageComponent);
|
|
65
|
+
export { StockReceiptPageComponent };
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptPageComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'app-stock-receipts-page', template: "<mat-card *ngIf=\"!product()\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">Stock Receipts</h3>\n\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/batch-form']\"\n class='ms-2'></app-techlify-icon>\n\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n file_upload\n </span>\n\n <app-export-to-excel-button tableId=\"stockReceiptTable\" fileName=\"Stock Receipts\"\n (onExportStart)=\"exportInProgress.set(true)\" (onExportEnd)=\"exportInProgress.set(false)\">\n </app-export-to-excel-button>\n\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" class=\"mt-1 d-print-none\"\n [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n\n <mat-button-toggle-group class=\"view-toggle\" [value]=\"selectedView()\" (change)=\"selectedView.set($event.value)\">\n <mat-button-toggle value=\"itemized\">Itemized</mat-button-toggle>\n <mat-button-toggle value=\"grouped\">Grouped</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <form [formGroup]=\"filterForm\" class=\"d-flex align-items-center gap-2 flex-wrap\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl=\"api/suppliers\" formControlName=\"supplier_ids\" titleField=\"company_name\"\n [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card *ngIf=\"product()\" class=\"mb-2\">\n <mat-card-content class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> output_circle </span>\n <h3 class=\"mb-0\">Stock Receipts</h3>\n </div>\n </mat-card-content>\n</mat-card>\n\n<app-stock-receipt-product-list *ngIf=\"selectedView() === 'itemized'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-product-list>\n\n<app-stock-receipt-list *ngIf=\"selectedView() === 'grouped'\" [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-list>", styles: [":host ::ng-deep .mat-mdc-footer-row{position:sticky;bottom:0;background-color:#fff;z-index:10;box-shadow:0 -2px 4px #0000001a}\n"] }]
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdHMtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1yZWNlaXB0cy9zdG9jay1yZWNlaXB0cy1wYWdlL3N0b2NrLXJlY2VpcHRzLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdHMtcGFnZS9zdG9jay1yZWNlaXB0cy1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFrQixLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUzFCLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBY2hCO0lBYnBCLE9BQU8sR0FBRyxLQUFLLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDM0IsVUFBVSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbEQsV0FBVyxHQUFHLE1BQU0sRUFBTyxDQUFDO0lBRTVCLFlBQVksR0FBRyxNQUFNLENBQXlCLFVBQVUsQ0FBQyxDQUFDO0lBQzFELGdCQUFnQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUxQyxZQUFZLEdBQW1CLEVBQUUsQ0FBQztJQUNsQyxlQUFlLEdBQW1CLEVBQUUsQ0FBQztJQUVyQyxVQUFVLENBQVk7SUFDdEIsWUFBWSxDQUFjO0lBRTFCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDdkMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQixXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNaLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQixTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDZixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBc0I7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7d0dBL0NVLHlCQUF5Qjs0RkFBekIseUJBQXlCLHlYQ2J0Qyxnc0hBOEV5Qjs7QURqRVoseUJBQXlCO0lBTnJDLFlBQVksRUFBRTtHQU1GLHlCQUF5QixDQWdEckM7OzRGQWhEWSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFNpZ25hbCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gXCJAbmduZWF0L3VudGlsLWRlc3Ryb3lcIjtcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSBcIm5neC10ZWNobGlmeS1jb3JlXCI7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLXJlY2VpcHRzLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvY2stcmVjZWlwdHMtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLXJlY2VpcHRzLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb2R1Y3QgPSBpbnB1dDxhbnk+KG51bGwpO1xuICBzdXBwbGllcklkID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBsaXN0VXBkYXRlZCA9IG91dHB1dDxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRWaWV3ID0gc2lnbmFsPCdpdGVtaXplZCcgfCAnZ3JvdXBlZCc+KCdpdGVtaXplZCcpO1xuICBleHBvcnRJblByb2dyZXNzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZ1tdID0gW107XG4gIHNlbGVjdGVkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcblxuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIGZpbHRlcnNWYWx1ZTogU2lnbmFsPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZpbHRlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGNhdGVnb3J5X2lkczogWycnXSxcbiAgICAgIGR1cmF0aW9uOiBbJyddLFxuICAgICAgbG9jYXRpb25faWRzOiBbJyddLFxuICAgICAgbWVhc3VyZV9pZHM6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkczogWycnXSxcbiAgICAgIHNlYXJjaDogWycnXSxcbiAgICAgIHN1cHBsaWVyX2lkczogWycnXSxcbiAgICAgIGRhdGVfZnJvbTogWycnXSxcbiAgICAgIGRhdGVfdG86IFsnJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlcnNWYWx1ZSA9IHRvU2lnbmFsKFxuICAgICAgdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZpbHRlckZvcm0udmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9kdWN0VmFsID0gdGhpcy5wcm9kdWN0KCk7XG4gICAgaWYgKHByb2R1Y3RWYWwpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3Byb2R1Y3RfaWRzJyk/LnNldFZhbHVlKHByb2R1Y3RWYWwuaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1cHBsaWVySWRWYWwgPSB0aGlzLnN1cHBsaWVySWQoKTtcbiAgICBpZiAoc3VwcGxpZXJJZFZhbCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldCgnc3VwcGxpZXJfaWRzJyk/LnNldFZhbHVlKHN1cHBsaWVySWRWYWwpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uQ29uZmlnUmVhZHkoY29uZmlnOiBDb2x1bW5Db25maWdbXSkge1xuICAgIHRoaXMuY29sdW1uQ29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gY29uZmlnLmZpbHRlcihjb2wgPT4gY29sLmlzU2VsZWN0ZWQpO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgKm5nSWY9XCIhcHJvZHVjdCgpXCIgY2xhc3M9XCJtYi0yXCI+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPGgzIGNsYXNzPVwibWItMFwiPlN0b2NrIFJlY2VpcHRzPC9oMz5cblxuICAgICAgPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0nYWRkJyBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvc3RvY2stcmVjZWlwdHMvYmF0Y2gtZm9ybSddXCJcbiAgICAgICAgY2xhc3M9J21zLTInPjwvYXBwLXRlY2hsaWZ5LWljb24+XG5cbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJJbXBvcnRcIiByb3V0ZXJMaW5rPVwiaW1wb3J0XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XG4gICAgICAgIGZpbGVfdXBsb2FkXG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxhcHAtZXhwb3J0LXRvLWV4Y2VsLWJ1dHRvbiB0YWJsZUlkPVwic3RvY2tSZWNlaXB0VGFibGVcIiBmaWxlTmFtZT1cIlN0b2NrIFJlY2VpcHRzXCJcbiAgICAgICAgKG9uRXhwb3J0U3RhcnQpPVwiZXhwb3J0SW5Qcm9ncmVzcy5zZXQodHJ1ZSlcIiAob25FeHBvcnRFbmQpPVwiZXhwb3J0SW5Qcm9ncmVzcy5zZXQoZmFsc2UpXCI+XG4gICAgICA8L2FwcC1leHBvcnQtdG8tZXhjZWwtYnV0dG9uPlxuXG4gICAgICA8YXBwLWNvbHVtbi1zZWxlY3RvciAqbmdJZj1cImNvbHVtbkNvbmZpZy5sZW5ndGggPiAwXCIgbW9kZT1cImljb25cIiBjbGFzcz1cIm10LTEgZC1wcmludC1ub25lXCJcbiAgICAgICAgW2NvbHVtbkNvbmZpZ3NdPVwiY29sdW1uQ29uZmlnXCIgWyhzZWxlY3RlZENvbHVtbnMpXT1cInNlbGVjdGVkQ29sdW1uc1wiPjwvYXBwLWNvbHVtbi1zZWxlY3Rvcj5cblxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwidmlldy10b2dnbGVcIiBbdmFsdWVdPVwic2VsZWN0ZWRWaWV3KClcIiAoY2hhbmdlKT1cInNlbGVjdGVkVmlldy5zZXQoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJpdGVtaXplZFwiPkl0ZW1pemVkPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiZ3JvdXBlZFwiPkdyb3VwZWQ8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICA8L2Rpdj5cblxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LXdyYXBcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8YXBwLXRpbWVsaW5lLWZpbHRlciBsYWJlbFRleHQ9XCJEYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZHVyYXRpb25cIiBbZm9ybV09XCJmaWx0ZXJGb3JtXCI+PC9hcHAtdGltZWxpbmUtZmlsdGVyPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9J2ZsLXNtJz5cbiAgICAgICAgPG1hdC1sYWJlbD5DYXRlZ29yeTwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtY2F0ZWdvcmllc1wiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5X2lkc1wiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9J2ZsLXNtJz5cbiAgICAgICAgPG1hdC1sYWJlbD5NZWFzdXJlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvcHJvZHVjdC1tZWFzdXJlc1wiIGZvcm1Db250cm9sTmFtZT1cIm1lYXN1cmVfaWRzXCIgW211bHRpcGxlXT1cInRydWVcIj5cbiAgICAgICAgPC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz0nZmwtc20nPlxuICAgICAgICA8bWF0LWxhYmVsPkxvY2F0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2lkc1wiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9J2ZsLXNtJz5cbiAgICAgICAgPG1hdC1sYWJlbD5TdXBwbGllcjwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3N1cHBsaWVyc1wiIGZvcm1Db250cm9sTmFtZT1cInN1cHBsaWVyX2lkc1wiIHRpdGxlRmllbGQ9XCJjb21wYW55X25hbWVcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZm9ybT5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cblxuPG1hdC1jYXJkICpuZ0lmPVwicHJvZHVjdCgpXCIgY2xhc3M9XCJtYi0yXCI+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwibWItMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gb3V0cHV0X2NpcmNsZSA8L3NwYW4+XG4gICAgICA8aDMgY2xhc3M9XCJtYi0wXCI+U3RvY2sgUmVjZWlwdHM8L2gzPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuXG48YXBwLXN0b2NrLXJlY2VpcHQtcHJvZHVjdC1saXN0ICpuZ0lmPVwic2VsZWN0ZWRWaWV3KCkgPT09ICdpdGVtaXplZCdcIiBbZmlsdGVyc109XCJmaWx0ZXJzVmFsdWUoKVwiXG4gIFtzZWxlY3RlZENvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCIgW2V4cG9ydEluUHJvZ3Jlc3NdPVwiZXhwb3J0SW5Qcm9ncmVzcygpXCJcbiAgKGNvbHVtbkNvbmZpZ1JlYWR5KT1cIm9uQ29sdW1uQ29uZmlnUmVhZHkoJGV2ZW50KVwiIChsaXN0VXBkYXRlZCk9XCJsaXN0VXBkYXRlZC5lbWl0KCRldmVudClcIj5cbjwvYXBwLXN0b2NrLXJlY2VpcHQtcHJvZHVjdC1saXN0PlxuXG48YXBwLXN0b2NrLXJlY2VpcHQtbGlzdCAqbmdJZj1cInNlbGVjdGVkVmlldygpID09PSAnZ3JvdXBlZCdcIiBbZmlsdGVyc109XCJmaWx0ZXJzVmFsdWUoKVwiXG4gIFtzZWxlY3RlZENvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCIgW2V4cG9ydEluUHJvZ3Jlc3NdPVwiZXhwb3J0SW5Qcm9ncmVzcygpXCJcbiAgKGNvbHVtbkNvbmZpZ1JlYWR5KT1cIm9uQ29sdW1uQ29uZmlnUmVhZHkoJGV2ZW50KVwiIChsaXN0VXBkYXRlZCk9XCJsaXN0VXBkYXRlZC5lbWl0KCRldmVudClcIj5cbjwvYXBwLXN0b2NrLXJlY2VpcHQtbGlzdD4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { RouterModule } from '@angular/router';
|
|
3
|
-
import {
|
|
3
|
+
import { StockReceiptPageComponent } from './stock-receipts-page/stock-receipts-page.component';
|
|
4
4
|
import { StockReceiptImportPageComponent } from './stock-receipt-import-page/stock-receipt-import-page.component';
|
|
5
5
|
import { AuthenticationGuard } from 'ngx-techlify-core';
|
|
6
6
|
import { StockReceiptViewComponent } from "./stock-receipt-view/stock-receipt-view.component";
|
|
@@ -10,7 +10,7 @@ import * as i1 from "@angular/router";
|
|
|
10
10
|
const routes = [
|
|
11
11
|
{
|
|
12
12
|
path: '',
|
|
13
|
-
component:
|
|
13
|
+
component: StockReceiptPageComponent,
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
path: ':id/view',
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
44
44
|
exports: [RouterModule],
|
|
45
45
|
}]
|
|
46
46
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdHMtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1yZWNlaXB0cy9zdG9jay1yZWNlaXB0cy1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7O0FBRS9HLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUseUJBQXlCO0tBQ3JDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixTQUFTLEVBQUUseUJBQXlCO0tBQ3JDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFNBQVMsRUFBRSwrQkFBK0I7UUFDMUMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDL0I7SUFDRDtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSw4QkFBOEI7UUFDekMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDL0I7SUFDRDtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsU0FBUyxFQUFFLDhCQUE4QjtRQUN6QyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztLQUMvQjtDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sMEJBQTBCO3dHQUExQiwwQkFBMEI7eUdBQTFCLDBCQUEwQix3Q0FGM0IsWUFBWTt5R0FFWCwwQkFBMEIsWUFIM0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDN0IsWUFBWTs7NEZBRVgsMEJBQTBCO2tCQUp0QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vc3RvY2stcmVjZWlwdHMtcGFnZS9zdG9jay1yZWNlaXB0cy1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRJbXBvcnRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LWltcG9ydC1wYWdlL3N0b2NrLXJlY2VpcHQtaW1wb3J0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uR3VhcmQgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4vc3RvY2stcmVjZWlwdC12aWV3L3N0b2NrLXJlY2VpcHQtdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IFN0b2NrUmVjZWlwdEJhdGNoRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vc3RvY2stcmVjZWlwdC1iYXRjaC1mb3JtL3N0b2NrLXJlY2VpcHQtYmF0Y2gtZm9ybS5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICc6aWQvdmlldycsXG4gICAgY29tcG9uZW50OiBTdG9ja1JlY2VpcHRWaWV3Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnaW1wb3J0JyxcbiAgICBjb21wb25lbnQ6IFN0b2NrUmVjZWlwdEltcG9ydFBhZ2VDb21wb25lbnQsXG4gICAgY2FuTG9hZDogW0F1dGhlbnRpY2F0aW9uR3VhcmRdXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYmF0Y2gtZm9ybScsXG4gICAgY29tcG9uZW50OiBTdG9ja1JlY2VpcHRCYXRjaEZvcm1Db21wb25lbnQsXG4gICAgY2FuTG9hZDogW0F1dGhlbnRpY2F0aW9uR3VhcmRdXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYmF0Y2gtZm9ybS86aWQnLFxuICAgIGNvbXBvbmVudDogU3RvY2tSZWNlaXB0QmF0Y2hGb3JtQ29tcG9uZW50LFxuICAgIGNhbkxvYWQ6IFtBdXRoZW50aWNhdGlvbkd1YXJkXVxuICB9XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0c1JvdXRpbmdNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { StockReceiptsRoutingModule } from './stock-receipts-routing.module';
|
|
4
|
-
import {
|
|
4
|
+
import { StockReceiptPageComponent } from './stock-receipts-page/stock-receipts-page.component';
|
|
5
5
|
import { ColumnSelectorModule, EntityFilesViewAllModule, NoteModule, SearchableSelectorModule, TechlifyFeatureModule, TechlifyIconModule, TimelineFilterModule } from 'ngx-techlify-core';
|
|
6
6
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
|
|
@@ -11,15 +11,21 @@ import { PayeeSelectorModule } from '../supplier/payee-selector/payee-selector.m
|
|
|
11
11
|
import { TechlifyFilterModule } from '../techlify-filter/techlify-filter.module';
|
|
12
12
|
import { ProductCategoryBadgesComponent } from "../product/widgets/product-category-badges/product-category-badges.component";
|
|
13
13
|
import { StockReceiptViewComponent } from './stock-receipt-view/stock-receipt-view.component';
|
|
14
|
+
import { StockReceiptListComponent } from './stock-receipt-list/stock-receipt-list.component';
|
|
15
|
+
import { StockReceiptProductsListComponent } from './stock-receipt-product-list/stock-receipt-product-list.component';
|
|
16
|
+
import { TechlifyDeleteButtonComponent } from 'ngx-techlify-core';
|
|
14
17
|
import { MaterialModule } from '../material.module';
|
|
15
18
|
import { RouterModule } from '@angular/router';
|
|
16
19
|
import { ExportToExcelButtonComponent } from '../shared/export-to-excel-button/export-to-excel-button.component';
|
|
20
|
+
import { StockReceiptProductFormButtonComponent } from './stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component';
|
|
17
21
|
import * as i0 from "@angular/core";
|
|
18
22
|
export class StockReceiptsModule {
|
|
19
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, declarations: [
|
|
24
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, declarations: [StockReceiptPageComponent,
|
|
21
25
|
StockReceiptDeleteButtonComponent,
|
|
22
|
-
StockReceiptViewComponent
|
|
26
|
+
StockReceiptViewComponent,
|
|
27
|
+
StockReceiptListComponent,
|
|
28
|
+
StockReceiptProductsListComponent], imports: [CommonModule,
|
|
23
29
|
MaterialModule,
|
|
24
30
|
StockReceiptsRoutingModule,
|
|
25
31
|
TechlifyFilterModule,
|
|
@@ -36,8 +42,12 @@ export class StockReceiptsModule {
|
|
|
36
42
|
NoteModule,
|
|
37
43
|
TechlifyIconModule,
|
|
38
44
|
RouterModule,
|
|
39
|
-
ExportToExcelButtonComponent
|
|
40
|
-
|
|
45
|
+
ExportToExcelButtonComponent,
|
|
46
|
+
TechlifyDeleteButtonComponent,
|
|
47
|
+
StockReceiptProductFormButtonComponent], exports: [StockReceiptDeleteButtonComponent,
|
|
48
|
+
StockReceiptPageComponent,
|
|
49
|
+
StockReceiptListComponent,
|
|
50
|
+
StockReceiptProductsListComponent] });
|
|
41
51
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, imports: [CommonModule,
|
|
42
52
|
MaterialModule,
|
|
43
53
|
StockReceiptsRoutingModule,
|
|
@@ -53,19 +63,25 @@ export class StockReceiptsModule {
|
|
|
53
63
|
NoteModule,
|
|
54
64
|
TechlifyIconModule,
|
|
55
65
|
RouterModule,
|
|
56
|
-
ExportToExcelButtonComponent
|
|
66
|
+
ExportToExcelButtonComponent,
|
|
67
|
+
TechlifyDeleteButtonComponent,
|
|
68
|
+
StockReceiptProductFormButtonComponent] });
|
|
57
69
|
}
|
|
58
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockReceiptsModule, decorators: [{
|
|
59
71
|
type: NgModule,
|
|
60
72
|
args: [{
|
|
61
73
|
declarations: [
|
|
62
|
-
|
|
74
|
+
StockReceiptPageComponent,
|
|
63
75
|
StockReceiptDeleteButtonComponent,
|
|
64
|
-
StockReceiptViewComponent
|
|
76
|
+
StockReceiptViewComponent,
|
|
77
|
+
StockReceiptListComponent,
|
|
78
|
+
StockReceiptProductsListComponent
|
|
65
79
|
],
|
|
66
80
|
exports: [
|
|
67
81
|
StockReceiptDeleteButtonComponent,
|
|
68
|
-
|
|
82
|
+
StockReceiptPageComponent,
|
|
83
|
+
StockReceiptListComponent,
|
|
84
|
+
StockReceiptProductsListComponent
|
|
69
85
|
],
|
|
70
86
|
imports: [
|
|
71
87
|
CommonModule,
|
|
@@ -85,8 +101,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
85
101
|
NoteModule,
|
|
86
102
|
TechlifyIconModule,
|
|
87
103
|
RouterModule,
|
|
88
|
-
ExportToExcelButtonComponent
|
|
104
|
+
ExportToExcelButtonComponent,
|
|
105
|
+
TechlifyDeleteButtonComponent,
|
|
106
|
+
StockReceiptProductFormButtonComponent
|
|
89
107
|
],
|
|
90
108
|
}]
|
|
91
109
|
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stcmVjZWlwdHMvc3RvY2stcmVjZWlwdHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wsOEJBQThCLEVBQy9CLE1BQU0sOEVBQThFLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSw0R0FBNEcsQ0FBQzs7QUF1Q3BLLE1BQU0sT0FBTyxtQkFBbUI7d0dBQW5CLG1CQUFtQjt5R0FBbkIsbUJBQW1CLGlCQW5DNUIseUJBQXlCO1lBQ3pCLGlDQUFpQztZQUNqQyx5QkFBeUI7WUFDekIseUJBQXlCO1lBQ3pCLGlDQUFpQyxhQVNqQyxZQUFZO1lBQ1osY0FBYztZQUNkLDBCQUEwQjtZQUMxQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsOEJBQThCO1lBQzlCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIscUJBQXFCO1lBQ3JCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0Isc0NBQXNDLGFBekJ0QyxpQ0FBaUM7WUFDakMseUJBQXlCO1lBQ3pCLHlCQUF5QjtZQUN6QixpQ0FBaUM7eUdBeUJ4QixtQkFBbUIsWUF0QjVCLFlBQVk7WUFDWixjQUFjO1lBQ2QsMEJBQTBCO1lBQzFCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsb0JBQW9CO1lBQ3BCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFFbkIsc0JBQXNCO1lBRXRCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIscUJBQXFCO1lBQ3JCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0Isc0NBQXNDOzs0RkFHN0IsbUJBQW1CO2tCQXJDL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1oseUJBQXlCO3dCQUN6QixpQ0FBaUM7d0JBQ2pDLHlCQUF5Qjt3QkFDekIseUJBQXlCO3dCQUN6QixpQ0FBaUM7cUJBQ2xDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxpQ0FBaUM7d0JBQ2pDLHlCQUF5Qjt3QkFDekIseUJBQXlCO3dCQUN6QixpQ0FBaUM7cUJBQ2xDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLHNDQUFzQztxQkFDdkM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN0b2NrUmVjZWlwdHNSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0cy1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0cy1wYWdlL3N0b2NrLXJlY2VpcHRzLXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENvbHVtblNlbGVjdG9yTW9kdWxlLFxuICBFbnRpdHlGaWxlc1ZpZXdBbGxNb2R1bGUsXG4gIE5vdGVNb2R1bGUsXG4gIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICBUZWNobGlmeUljb25Nb2R1bGUsXG4gIFRpbWVsaW5lRmlsdGVyTW9kdWxlXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0Rm9ybU1vZHVsZSB9IGZyb20gJy4vc3RvY2stcmVjZWlwdC1mb3JtL3N0b2NrLXJlY2VpcHQtZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0RGVsZXRlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LWRlbGV0ZS1idXR0b24vc3RvY2stcmVjZWlwdC1kZWxldGUtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXllZVNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi4vc3VwcGxpZXIvcGF5ZWUtc2VsZWN0b3IvcGF5ZWUtc2VsZWN0b3IubW9kdWxlJztcbmltcG9ydCB7IFRlY2hsaWZ5RmlsdGVyTW9kdWxlIH0gZnJvbSAnLi4vdGVjaGxpZnktZmlsdGVyL3RlY2hsaWZ5LWZpbHRlci5tb2R1bGUnO1xuaW1wb3J0IHtcbiAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50XG59IGZyb20gXCIuLi9wcm9kdWN0L3dpZGdldHMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LXZpZXcvc3RvY2stcmVjZWlwdC12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1yZWNlaXB0LWxpc3Qvc3RvY2stcmVjZWlwdC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdG9ja1JlY2VpcHRQcm9kdWN0c0xpc3RDb21wb25lbnQgfSBmcm9tICcuL3N0b2NrLXJlY2VpcHQtcHJvZHVjdC1saXN0L3N0b2NrLXJlY2VpcHQtcHJvZHVjdC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZWNobGlmeURlbGV0ZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFeHBvcnRUb0V4Y2VsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2V4cG9ydC10by1leGNlbC1idXR0b24vZXhwb3J0LXRvLWV4Y2VsLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0UHJvZHVjdEZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3N0b2NrLXJlY2VpcHQtcHJvZHVjdC1mb3JtL3N0b2NrLXJlY2VpcHQtcHJvZHVjdC1mb3JtLWJ1dHRvbi9zdG9jay1yZWNlaXB0LXByb2R1Y3QtZm9ybS1idXR0b24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU3RvY2tSZWNlaXB0UGFnZUNvbXBvbmVudCxcbiAgICBTdG9ja1JlY2VpcHREZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgU3RvY2tSZWNlaXB0Vmlld0NvbXBvbmVudCxcbiAgICBTdG9ja1JlY2VpcHRMaXN0Q29tcG9uZW50LFxuICAgIFN0b2NrUmVjZWlwdFByb2R1Y3RzTGlzdENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU3RvY2tSZWNlaXB0RGVsZXRlQnV0dG9uQ29tcG9uZW50LFxuICAgIFN0b2NrUmVjZWlwdFBhZ2VDb21wb25lbnQsXG4gICAgU3RvY2tSZWNlaXB0TGlzdENvbXBvbmVudCxcbiAgICBTdG9ja1JlY2VpcHRQcm9kdWN0c0xpc3RDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBTdG9ja1JlY2VpcHRzUm91dGluZ01vZHVsZSxcbiAgICBUZWNobGlmeUZpbHRlck1vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgVGltZWxpbmVGaWx0ZXJNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBQYXllZVNlbGVjdG9yTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIFN0b2NrUmVjZWlwdEZvcm1Nb2R1bGUsXG4gICAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50LFxuICAgIENvbHVtblNlbGVjdG9yTW9kdWxlLFxuICAgIEVudGl0eUZpbGVzVmlld0FsbE1vZHVsZSxcbiAgICBUZWNobGlmeUZlYXR1cmVNb2R1bGUsXG4gICAgTm90ZU1vZHVsZSxcbiAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEV4cG9ydFRvRXhjZWxCdXR0b25Db21wb25lbnQsXG4gICAgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsXG4gICAgU3RvY2tSZWNlaXB0UHJvZHVjdEZvcm1CdXR0b25Db21wb25lbnRcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0c01vZHVsZSB7IH1cbiJdfQ==
|