@vendure/admin-ui 2.0.6 → 2.0.8
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/catalog/components/collection-detail/collection-detail.component.d.ts +3 -1
- package/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.d.ts +6 -4
- package/catalog/components/facet-detail/facet-detail.component.d.ts +3 -1
- package/catalog/components/product-detail/product-detail.component.d.ts +3 -1
- package/catalog/components/product-variant-list/product-variant-list-bulk-actions.d.ts +1 -2
- package/catalog/components/stock-location-detail/stock-location-detail.component.d.ts +3 -1
- package/core/common/utilities/custom-field-default-value.d.ts +6 -0
- package/core/common/version.d.ts +1 -1
- package/core/providers/data-table/data-table-filter-collection.d.ts +10 -6
- package/core/providers/data-table/data-table-filter.d.ts +13 -2
- package/core/public_api.d.ts +1 -0
- package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +2 -1
- package/core/shared/components/asset-preview/asset-preview.component.d.ts +9 -1
- package/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +2 -0
- package/customer/components/customer-detail/customer-detail.component.d.ts +3 -1
- package/customer/components/customer-group-detail/customer-group-detail.component.d.ts +3 -1
- package/customer/components/customer-list/customer-list.component.d.ts +1 -0
- package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +4 -4
- package/esm2022/catalog/components/asset-list/asset-list.component.mjs +1 -1
- package/esm2022/catalog/components/assets/assets.component.mjs +2 -2
- package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +3 -3
- package/esm2022/catalog/components/collection-list/collection-list.component.mjs +2 -1
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +8 -5
- package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +3 -3
- package/esm2022/catalog/components/facet-list/facet-list.component.mjs +2 -1
- package/esm2022/catalog/components/product-detail/product-detail.component.mjs +3 -3
- package/esm2022/catalog/components/product-list/product-list.component.mjs +2 -7
- package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +3 -3
- package/esm2022/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +1 -1
- package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +2 -7
- package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +1 -1
- package/esm2022/catalog/components/stock-location-detail/stock-location-detail.component.mjs +3 -3
- package/esm2022/catalog/components/stock-location-list/stock-location-list.component.mjs +2 -7
- package/esm2022/core/common/utilities/create-updated-translatable.mjs +5 -23
- package/esm2022/core/common/utilities/custom-field-default-value.mjs +28 -0
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/components/base-nav/base-nav.component.mjs +1 -1
- package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +3 -3
- package/esm2022/core/providers/dashboard-widget/register-dashboard-widget.mjs +1 -1
- package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +51 -22
- package/esm2022/core/providers/data-table/data-table-filter.mjs +8 -1
- package/esm2022/core/providers/local-storage/local-storage.service.mjs +1 -1
- package/esm2022/core/public_api.mjs +2 -1
- package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +8 -5
- package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +3 -3
- package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +36 -3
- package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +4 -3
- package/esm2022/core/shared/components/card/card.component.mjs +1 -1
- package/esm2022/core/shared/components/chip/chip.component.mjs +2 -2
- package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +3 -3
- package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +23 -4
- package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +2 -2
- package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +2 -2
- package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +3 -3
- package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +3 -3
- package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +3 -2
- package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +2 -1
- package/esm2022/customer/components/customer-list/customer-list.component.mjs +34 -30
- package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +1 -1
- package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
- package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +2 -1
- package/esm2022/order/components/order-detail/order-detail.component.mjs +3 -3
- package/esm2022/order/components/order-list/order-list.component.mjs +2 -1
- package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +3 -3
- package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +2 -1
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +10 -10
- package/esm2022/settings/components/channel-list/channel-list.component.mjs +2 -1
- package/esm2022/settings/components/country-detail/country-detail.component.mjs +3 -3
- package/esm2022/settings/components/country-list/country-list.component.mjs +3 -2
- package/esm2022/settings/components/global-settings/global-settings.component.mjs +3 -3
- package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +3 -3
- package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +2 -1
- package/esm2022/settings/components/profile/profile.component.mjs +3 -3
- package/esm2022/settings/components/role-list/role-list.component.mjs +2 -1
- package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +3 -3
- package/esm2022/settings/components/seller-list/seller-list.component.mjs +2 -1
- package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +3 -3
- package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +2 -1
- package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +3 -3
- package/esm2022/settings/components/tax-category-list/tax-category-list-bulk-actions.mjs +1 -1
- package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +2 -1
- package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +3 -3
- package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +2 -1
- package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +3 -3
- package/esm2022/settings/components/zone-list/zone-list.component.mjs +2 -1
- package/esm2022/settings/settings.module.mjs +1 -1
- package/esm2022/system/components/job-state-label/job-state-label.component.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +22 -32
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +165 -65
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +34 -29
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs +3 -2
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +3 -2
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +30 -20
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
- package/marketing/components/promotion-detail/promotion-detail.component.d.ts +3 -1
- package/order/components/order-detail/order-detail.component.d.ts +3 -1
- package/package.json +8 -8
- package/settings/components/admin-detail/admin-detail.component.d.ts +3 -1
- package/settings/components/channel-detail/channel-detail.component.d.ts +5 -3
- package/settings/components/country-detail/country-detail.component.d.ts +3 -1
- package/settings/components/global-settings/global-settings.component.d.ts +3 -1
- package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +3 -1
- package/settings/components/profile/profile.component.d.ts +3 -1
- package/settings/components/seller-detail/seller-detail.component.d.ts +3 -1
- package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +3 -1
- package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +3 -1
- package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +3 -1
- package/settings/components/zone-detail/zone-detail.component.d.ts +3 -1
- package/static/i18n-messages/it.json +169 -169
|
@@ -20,7 +20,9 @@ export declare class CollectionDetailComponent extends TypedBaseDetailComponent<
|
|
|
20
20
|
visible: import("@angular/forms").FormControl<boolean | null>;
|
|
21
21
|
inheritFilters: import("@angular/forms").FormControl<boolean | null>;
|
|
22
22
|
filters: import("@angular/forms").FormArray<import("@angular/forms").FormControl<unknown>>;
|
|
23
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
23
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
24
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
25
|
+
}>;
|
|
24
26
|
}>;
|
|
25
27
|
assetChanges: {
|
|
26
28
|
assets?: Asset[];
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
|
-
import { FormBuilder, FormControl } from '@angular/forms';
|
|
3
|
-
import { CreateProductVariantInput, Dialog, GetProductVariantOptionsQuery } from '@vendure/admin-ui/core';
|
|
2
|
+
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { CreateProductVariantInput, CurrencyCode, Dialog, GetProductVariantOptionsQuery } from '@vendure/admin-ui/core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class CreateProductVariantDialogComponent implements Dialog<CreateProductVariantInput>, OnInit {
|
|
6
6
|
private formBuilder;
|
|
7
7
|
resolveWith: (result?: CreateProductVariantInput) => void;
|
|
8
8
|
product: NonNullable<GetProductVariantOptionsQuery['product']>;
|
|
9
|
-
form:
|
|
9
|
+
form: FormGroup<{
|
|
10
10
|
name: FormControl<string | null>;
|
|
11
11
|
sku: FormControl<string | null>;
|
|
12
|
-
|
|
12
|
+
price: FormControl<string | null>;
|
|
13
|
+
options: FormGroup<{
|
|
13
14
|
[key: string]: FormControl<string | null>;
|
|
14
15
|
}>;
|
|
15
16
|
}>;
|
|
16
17
|
existingVariant: NonNullable<GetProductVariantOptionsQuery['product']>['variants'][number] | undefined;
|
|
18
|
+
currencyCode: CurrencyCode;
|
|
17
19
|
constructor(formBuilder: FormBuilder);
|
|
18
20
|
ngOnInit(): void;
|
|
19
21
|
confirm(): void;
|
|
@@ -16,7 +16,9 @@ export declare class FacetDetailComponent extends TypedBaseDetailComponent<typeo
|
|
|
16
16
|
code: import("@angular/forms").FormControl<string | null>;
|
|
17
17
|
name: import("@angular/forms").FormControl<string | null>;
|
|
18
18
|
visible: import("@angular/forms").FormControl<boolean | null>;
|
|
19
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
19
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
20
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
21
|
+
}>;
|
|
20
22
|
}>;
|
|
21
23
|
values: import("@angular/forms").FormArray<import("@angular/forms").FormControl<{
|
|
22
24
|
id: string;
|
|
@@ -26,7 +26,9 @@ export declare class ProductDetailComponent extends TypedBaseDetailComponent<typ
|
|
|
26
26
|
slug: import("@angular/forms").FormControl<string | null>;
|
|
27
27
|
description: import("@angular/forms").FormControl<string | null>;
|
|
28
28
|
facetValueIds: import("@angular/forms").FormControl<string[] | null>;
|
|
29
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
29
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
30
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
31
|
+
}>;
|
|
30
32
|
}>;
|
|
31
33
|
assetChanges: SelectedAssets;
|
|
32
34
|
productChannels$: Observable<ProductDetailFragment['channels']>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { BulkAction, GetProductVariantListQuery, ItemOf } from '@vendure/admin-ui/core';
|
|
2
|
-
import { ProductVariant } from 'package/core';
|
|
1
|
+
import { BulkAction, GetProductVariantListQuery, ItemOf, ProductVariant } from '@vendure/admin-ui/core';
|
|
3
2
|
import { ProductVariantListComponent } from './product-variant-list.component';
|
|
4
3
|
export declare const assignProductVariantsToChannelBulkAction: BulkAction<ItemOf<GetProductVariantListQuery, 'productVariants'>, ProductVariantListComponent>;
|
|
5
4
|
export declare const removeProductVariantsFromChannelBulkAction: BulkAction<any, import("@vendure/admin-ui/core").BaseListComponent<any, any, any>>;
|
|
@@ -14,7 +14,9 @@ export declare class StockLocationDetailComponent extends TypedBaseDetailCompone
|
|
|
14
14
|
detailForm: import("@angular/forms").FormGroup<{
|
|
15
15
|
name: import("@angular/forms").FormControl<string | null>;
|
|
16
16
|
description: import("@angular/forms").FormControl<string | null>;
|
|
17
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
17
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
18
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
19
|
+
}>;
|
|
18
20
|
}>;
|
|
19
21
|
constructor(changeDetector: ChangeDetectorRef, dataService: DataService, formBuilder: FormBuilder, notificationService: NotificationService);
|
|
20
22
|
ngOnInit(): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CustomFieldType } from '@vendure/common/lib/shared-types';
|
|
2
|
+
import { CustomFieldConfig } from '../generated-types';
|
|
3
|
+
export declare function getCustomFieldsDefaults(customFieldConfig: CustomFieldConfig[]): {
|
|
4
|
+
[key: string]: ReturnType<typeof getDefaultValue>;
|
|
5
|
+
};
|
|
6
|
+
export declare function getDefaultValue(type: CustomFieldType, isNullable?: boolean): false | 0 | "" | Date | null;
|
package/core/common/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ADMIN_UI_VERSION = "2.0.
|
|
1
|
+
export declare const ADMIN_UI_VERSION = "2.0.8";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
2
|
-
import { CustomFieldConfig, DateOperators } from '../../common/generated-types';
|
|
3
|
-
import { DataTableFilter, DataTableFilterBooleanType, DataTableFilterCustomType, DataTableFilterDateRangeType, DataTableFilterNumberType, DataTableFilterOptions, DataTableFilterSelectType, DataTableFilterTextType, DataTableFilterType, DataTableFilterValue } from './data-table-filter';
|
|
2
|
+
import { CustomFieldConfig, DateOperators, IdOperators } from '../../common/generated-types';
|
|
3
|
+
import { DataTableFilter, DataTableFilterBooleanType, DataTableFilterCustomType, DataTableFilterDateRangeType, DataTableFilterIDType, DataTableFilterNumberType, DataTableFilterOptions, DataTableFilterSelectType, DataTableFilterTextType, DataTableFilterType, DataTableFilterValue } from './data-table-filter';
|
|
4
4
|
export declare class FilterWithValue<Type extends DataTableFilterType = DataTableFilterType> {
|
|
5
5
|
readonly filter: DataTableFilter<any, Type>;
|
|
6
6
|
value: DataTableFilterValue<Type>;
|
|
@@ -8,6 +8,7 @@ export declare class FilterWithValue<Type extends DataTableFilterType = DataTabl
|
|
|
8
8
|
constructor(filter: DataTableFilter<any, Type>, value: DataTableFilterValue<Type>, onUpdate?: (value: DataTableFilterValue<Type>) => void);
|
|
9
9
|
onUpdate(fn: (value: DataTableFilterValue<Type>) => void): void;
|
|
10
10
|
updateValue(value: DataTableFilterValue<Type>): void;
|
|
11
|
+
isId(): this is FilterWithValue<DataTableFilterIDType>;
|
|
11
12
|
isText(): this is FilterWithValue<DataTableFilterTextType>;
|
|
12
13
|
isNumber(): this is FilterWithValue<DataTableFilterNumberType>;
|
|
13
14
|
isBoolean(): this is FilterWithValue<DataTableFilterBooleanType>;
|
|
@@ -24,6 +25,9 @@ export declare class DataTableFilterCollection<FilterInput extends Record<string
|
|
|
24
25
|
get activeFilters(): FilterWithValue[];
|
|
25
26
|
addFilter<FilterType extends DataTableFilterType>(config: DataTableFilterOptions<FilterInput, FilterType>): DataTableFilterCollection<FilterInput>;
|
|
26
27
|
addFilters<FilterType extends DataTableFilterType>(configs: Array<DataTableFilterOptions<FilterInput, FilterType>>): DataTableFilterCollection<FilterInput>;
|
|
28
|
+
addIdFilter(): FilterInput extends {
|
|
29
|
+
id?: IdOperators | null;
|
|
30
|
+
} ? DataTableFilterCollection<FilterInput> : never;
|
|
27
31
|
addDateFilters(): FilterInput extends {
|
|
28
32
|
createdAt?: DateOperators | null;
|
|
29
33
|
updatedAt?: DateOperators | null;
|
|
@@ -34,9 +38,9 @@ export declare class DataTableFilterCollection<FilterInput extends Record<string
|
|
|
34
38
|
removeActiveFilterAtIndex(index: number): void;
|
|
35
39
|
createFilterInput(): FilterInput;
|
|
36
40
|
connectToRoute(route: ActivatedRoute): this;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
private
|
|
41
|
+
serialize(): string;
|
|
42
|
+
private serializeValue;
|
|
43
|
+
private deserializeValue;
|
|
40
44
|
private onActivateFilter;
|
|
41
|
-
private
|
|
45
|
+
private createFilterWithValue;
|
|
42
46
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Type as ComponentType } from '@angular/core';
|
|
2
2
|
import { LocalizedString } from '@vendure/common/lib/generated-types';
|
|
3
3
|
import { FormInputComponent } from '../../common/component-registry-types';
|
|
4
|
-
import { BooleanOperators, DateOperators, NumberOperators, StringOperators } from '../../common/generated-types';
|
|
4
|
+
import { BooleanOperators, DateOperators, IdOperators, NumberOperators, StringOperators } from '../../common/generated-types';
|
|
5
|
+
export interface DataTableFilterIDType {
|
|
6
|
+
kind: 'id';
|
|
7
|
+
}
|
|
5
8
|
export interface DataTableFilterTextType {
|
|
6
9
|
kind: 'text';
|
|
7
10
|
placeholder?: string;
|
|
@@ -31,6 +34,13 @@ export interface DataTableFilterCustomType {
|
|
|
31
34
|
getLabel(value: any): string | Promise<string>;
|
|
32
35
|
}
|
|
33
36
|
export type KindValueMap = {
|
|
37
|
+
id: {
|
|
38
|
+
raw: {
|
|
39
|
+
operator: keyof IdOperators;
|
|
40
|
+
term: string;
|
|
41
|
+
};
|
|
42
|
+
input: IdOperators;
|
|
43
|
+
};
|
|
34
44
|
text: {
|
|
35
45
|
raw: {
|
|
36
46
|
operator: keyof StringOperators;
|
|
@@ -65,7 +75,7 @@ export type KindValueMap = {
|
|
|
65
75
|
input: any;
|
|
66
76
|
};
|
|
67
77
|
};
|
|
68
|
-
export type DataTableFilterType = DataTableFilterTextType | DataTableFilterSelectType | DataTableFilterBooleanType | DataTableFilterDateRangeType | DataTableFilterNumberType | DataTableFilterCustomType;
|
|
78
|
+
export type DataTableFilterType = DataTableFilterIDType | DataTableFilterTextType | DataTableFilterSelectType | DataTableFilterBooleanType | DataTableFilterDateRangeType | DataTableFilterNumberType | DataTableFilterCustomType;
|
|
69
79
|
export interface DataTableFilterOptions<FilterInput extends Record<string, any> = any, Type extends DataTableFilterType = DataTableFilterType> {
|
|
70
80
|
readonly name: string;
|
|
71
81
|
readonly type: Type;
|
|
@@ -85,6 +95,7 @@ export declare class DataTableFilter<FilterInput extends Record<string, any> = a
|
|
|
85
95
|
getFilterOperator(value: any): DataTableFilterOperator<Type>;
|
|
86
96
|
toFilterInput(value: DataTableFilterValue<Type>): Partial<FilterInput>;
|
|
87
97
|
activate(value: DataTableFilterValue<Type>): void;
|
|
98
|
+
isId(): this is DataTableFilter<FilterInput, DataTableFilterIDType>;
|
|
88
99
|
isText(): this is DataTableFilter<FilterInput, DataTableFilterTextType>;
|
|
89
100
|
isNumber(): this is DataTableFilter<FilterInput, DataTableFilterNumberType>;
|
|
90
101
|
isBoolean(): this is DataTableFilter<FilterInput, DataTableFilterBooleanType>;
|
package/core/public_api.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './common/title-setter';
|
|
|
15
15
|
export * from './common/utilities/bulk-action-utils';
|
|
16
16
|
export * from './common/utilities/configurable-operation-utils';
|
|
17
17
|
export * from './common/utilities/create-updated-translatable';
|
|
18
|
+
export * from './common/utilities/custom-field-default-value';
|
|
18
19
|
export * from './common/utilities/find-translation';
|
|
19
20
|
export * from './common/utilities/get-default-ui-language';
|
|
20
21
|
export * from './common/utilities/interpolate-description';
|
|
@@ -59,6 +59,7 @@ export declare class AssetGalleryComponent implements OnChanges {
|
|
|
59
59
|
y: number;
|
|
60
60
|
} | null | undefined;
|
|
61
61
|
}[]>;
|
|
62
|
+
editAssetClick: EventEmitter<void>;
|
|
62
63
|
selectionManager: SelectionManager<{
|
|
63
64
|
__typename?: "Asset" | undefined;
|
|
64
65
|
id: string;
|
|
@@ -92,5 +93,5 @@ export declare class AssetGalleryComponent implements OnChanges {
|
|
|
92
93
|
previewAsset(asset: AssetLike): void;
|
|
93
94
|
entityInfoClick(event: MouseEvent): void;
|
|
94
95
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetGalleryComponent, never>;
|
|
95
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AssetGalleryComponent, "vdr-asset-gallery", never, { "assets": { "alias": "assets"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; }, { "selectionChange": "selectionChange"; "deleteAssets": "deleteAssets"; }, never, never, false, never>;
|
|
96
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AssetGalleryComponent, "vdr-asset-gallery", never, { "assets": { "alias": "assets"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; }, { "selectionChange": "selectionChange"; "deleteAssets": "deleteAssets"; "editAssetClick": "editAssetClick"; }, never, never, false, never>;
|
|
96
97
|
}
|
|
@@ -15,6 +15,7 @@ export declare class AssetPreviewComponent implements OnInit, OnDestroy {
|
|
|
15
15
|
private changeDetector;
|
|
16
16
|
private modalService;
|
|
17
17
|
asset: AssetLike;
|
|
18
|
+
assets?: AssetLike[];
|
|
18
19
|
editable: boolean;
|
|
19
20
|
customFields: CustomFieldConfig[];
|
|
20
21
|
customFieldsForm: UntypedFormGroup | undefined;
|
|
@@ -30,6 +31,10 @@ export declare class AssetPreviewComponent implements OnInit, OnDestroy {
|
|
|
30
31
|
centered: boolean;
|
|
31
32
|
settingFocalPoint: boolean;
|
|
32
33
|
lastFocalPoint?: Point;
|
|
34
|
+
previewAssetIndex: number;
|
|
35
|
+
disableNextButton: boolean;
|
|
36
|
+
disablePreviousButton: boolean;
|
|
37
|
+
showSlideButtons: boolean;
|
|
33
38
|
private imageElementRef;
|
|
34
39
|
private previewDivRef;
|
|
35
40
|
private subscription;
|
|
@@ -48,6 +53,9 @@ export declare class AssetPreviewComponent implements OnInit, OnDestroy {
|
|
|
48
53
|
setFocalPointCancel(): void;
|
|
49
54
|
setFocalPointEnd(): void;
|
|
50
55
|
manageTags(): void;
|
|
56
|
+
nextImage(): void;
|
|
57
|
+
previousImage(): void;
|
|
58
|
+
updateButtonAccessibility(): void;
|
|
51
59
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetPreviewComponent, never>;
|
|
52
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AssetPreviewComponent, "vdr-asset-preview", never, { "asset": { "alias": "asset"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "customFields": { "alias": "customFields"; "required": false; }; "customFieldsForm": { "alias": "customFieldsForm"; "required": false; }; }, { "assetChange": "assetChange"; "editClick": "editClick"; }, never, never, false, never>;
|
|
60
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AssetPreviewComponent, "vdr-asset-preview", never, { "asset": { "alias": "asset"; "required": false; }; "assets": { "alias": "assets"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "customFields": { "alias": "customFields"; "required": false; }; "customFieldsForm": { "alias": "customFieldsForm"; "required": false; }; }, { "assetChange": "assetChange"; "editClick": "editClick"; }, never, never, false, never>;
|
|
53
61
|
}
|
|
@@ -10,9 +10,11 @@ export declare class AssetPreviewDialogComponent implements Dialog<void>, OnInit
|
|
|
10
10
|
private dataService;
|
|
11
11
|
constructor(dataService: DataService);
|
|
12
12
|
asset: AssetLike;
|
|
13
|
+
assets?: AssetLike[];
|
|
13
14
|
assetChanges?: UpdateAssetInput;
|
|
14
15
|
resolveWith: (result?: void) => void;
|
|
15
16
|
assetWithTags$: Observable<GetAssetQuery['asset']>;
|
|
17
|
+
assetsWithTags$: Observable<Array<GetAssetQuery['asset']>>;
|
|
16
18
|
ngOnInit(): void;
|
|
17
19
|
private hasTags;
|
|
18
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetPreviewDialogComponent, never>;
|
|
@@ -21,7 +21,9 @@ export declare class CustomerDetailComponent extends TypedBaseDetailComponent<ty
|
|
|
21
21
|
phoneNumber: import("@angular/forms").FormControl<string | null>;
|
|
22
22
|
emailAddress: import("@angular/forms").FormControl<string | null>;
|
|
23
23
|
password: import("@angular/forms").FormControl<string | null>;
|
|
24
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
24
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
25
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
26
|
+
}>;
|
|
25
27
|
}>;
|
|
26
28
|
addresses: import("@angular/forms").FormArray<any>;
|
|
27
29
|
}>;
|
|
@@ -12,7 +12,9 @@ export declare class CustomerGroupDetailComponent extends TypedBaseDetailCompone
|
|
|
12
12
|
customFields: import("@vendure/admin-ui/core").CustomFieldConfig[];
|
|
13
13
|
detailForm: import("@angular/forms").FormGroup<{
|
|
14
14
|
name: import("@angular/forms").FormControl<string | null>;
|
|
15
|
-
customFields: import("@angular/forms").FormGroup<{
|
|
15
|
+
customFields: import("@angular/forms").FormGroup<{
|
|
16
|
+
[x: string]: import("@angular/forms").FormControl<false | "" | 0 | Date | null>;
|
|
17
|
+
}>;
|
|
16
18
|
}>;
|
|
17
19
|
constructor(formBuilder: FormBuilder, dataService: DataService, modalService: ModalService, notificationService: NotificationService);
|
|
18
20
|
ngOnInit(): void;
|
|
@@ -3,6 +3,7 @@ import { CustomerListQueryDocument, TypedBaseListComponent } from '@vendure/admi
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare const CUSTOMER_LIST_QUERY: import("apollo-angular").TypedDocumentNode<unknown, unknown>;
|
|
5
5
|
export declare class CustomerListComponent extends TypedBaseListComponent<typeof CustomerListQueryDocument, 'customers'> implements OnInit {
|
|
6
|
+
readonly customFields: import("@vendure/admin-ui/core").CustomFieldConfig[];
|
|
6
7
|
readonly filters: import("@vendure/admin-ui/core").DataTableFilterCollection<import("@vendure/admin-ui/core").CustomerFilterParameter>;
|
|
7
8
|
readonly sorts: import("@vendure/admin-ui/core").DataTableSortCollection<import("@vendure/admin-ui/core").CustomerSortParameter, ["createdAt", "updatedAt", "lastName", "emailAddress"]>;
|
|
8
9
|
constructor();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
4
|
-
import { ASSET_FRAGMENT, TAG_FRAGMENT, TypedBaseDetailComponent, } from '@vendure/admin-ui/core';
|
|
4
|
+
import { ASSET_FRAGMENT, getCustomFieldsDefaults, TAG_FRAGMENT, TypedBaseDetailComponent, } from '@vendure/admin-ui/core';
|
|
5
5
|
import { gql } from 'apollo-angular';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@vendure/admin-ui/core";
|
|
@@ -30,7 +30,7 @@ export class AssetDetailComponent extends TypedBaseDetailComponent {
|
|
|
30
30
|
this.detailForm = new FormGroup({
|
|
31
31
|
name: new FormControl(''),
|
|
32
32
|
tags: new FormControl([]),
|
|
33
|
-
customFields: this.formBuilder.group(this.customFields
|
|
33
|
+
customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
ngOnInit() {
|
|
@@ -68,10 +68,10 @@ export class AssetDetailComponent extends TypedBaseDetailComponent {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetDetailComponent, deps: [{ token: i1.NotificationService }, { token: i1.DataService }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetDetailComponent, selector: "vdr-asset-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"asset-detail\"></vdr-action-bar-items>\r\n <button\r\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateAsset']\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-page-block>\r\n <vdr-asset-preview\r\n [asset]=\"entity$ | async\"\r\n [editable]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsForm]=\"detailForm.get('customFields')\"\r\n (assetChange)=\"onAssetChange($event)\"\r\n />\r\n</vdr-page-block>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}\n"], dependencies: [{ kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.AssetPreviewComponent, selector: "vdr-asset-preview", inputs: ["asset", "editable", "customFields", "customFieldsForm"], outputs: ["assetChange", "editClick"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetDetailComponent, selector: "vdr-asset-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"asset-detail\"></vdr-action-bar-items>\r\n <button\r\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateAsset']\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-page-block>\r\n <vdr-asset-preview\r\n [asset]=\"entity$ | async\"\r\n [editable]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsForm]=\"detailForm.get('customFields')\"\r\n (assetChange)=\"onAssetChange($event)\"\r\n />\r\n</vdr-page-block>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}\n"], dependencies: [{ kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.AssetPreviewComponent, selector: "vdr-asset-preview", inputs: ["asset", "assets", "editable", "customFields", "customFieldsForm"], outputs: ["assetChange", "editClick"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetDetailComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
75
|
args: [{ selector: 'vdr-asset-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"asset-detail\"></vdr-action-bar-items>\r\n <button\r\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateAsset']\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-page-block>\r\n <vdr-asset-preview\r\n [asset]=\"entity$ | async\"\r\n [editable]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsForm]=\"detailForm.get('customFields')\"\r\n (assetChange)=\"onAssetChange($event)\"\r\n />\r\n</vdr-page-block>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}\n"] }]
|
|
76
76
|
}], ctorParameters: function () { return [{ type: i1.NotificationService }, { type: i1.DataService }, { type: i2.UntypedFormBuilder }]; } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldC1kZXRhaWwvYXNzZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldC1kZXRhaWwvYXNzZXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILGNBQWMsRUFJZCx1QkFBdUIsRUFHdkIsWUFBWSxFQUNaLHdCQUF3QixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRXJDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7O01BUy9CLGNBQWM7TUFDZCxZQUFZO0NBQ2pCLENBQUM7QUFRRixNQUFNLE9BQU8sb0JBQ1QsU0FBUSx3QkFBa0U7SUFVMUUsWUFDWSxtQkFBd0MsRUFDdEMsV0FBd0IsRUFDMUIsV0FBK0I7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFKQSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQVZsQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBYyxDQUFDO1lBQ3JDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkYsQ0FBQyxDQUFDO0lBUUgsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFtRDtRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzthQUNuQixXQUFXLENBQUM7WUFDVCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWTtTQUNuRCxDQUFDO2FBQ0QsU0FBUyxDQUNOLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RixDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEVBQUUsT0FBTzthQUNsQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7SUFFUyxhQUFhLENBQ25CLE1BQW1ELEVBQ25ELFlBQTBCO1FBRTFCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkc7SUFDTCxDQUFDOzhHQTlEUSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrRUNuQ2pDLHM2QkEwQkE7OzJGRFNhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgQVNTRVRfRlJBR01FTlQsXHJcbiAgICBBc3NldERldGFpbFF1ZXJ5RG9jdW1lbnQsXHJcbiAgICBBc3NldERldGFpbFF1ZXJ5UXVlcnksXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIGdldEN1c3RvbUZpZWxkc0RlZmF1bHRzLFxyXG4gICAgTGFuZ3VhZ2VDb2RlLFxyXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIFRBR19GUkFHTUVOVCxcclxuICAgIFR5cGVkQmFzZURldGFpbENvbXBvbmVudCxcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFTU0VUX0RFVEFJTF9RVUVSWSA9IGdxbGBcclxuICAgIHF1ZXJ5IEFzc2V0RGV0YWlsUXVlcnkoJGlkOiBJRCEpIHtcclxuICAgICAgICBhc3NldChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWFzc2V0LWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Fzc2V0LWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NldERldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8dHlwZW9mIEFzc2V0RGV0YWlsUXVlcnlEb2N1bWVudCwgJ2Fzc2V0Jz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICAgcmVhZG9ubHkgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQXNzZXQnKTtcclxuICAgIGRldGFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIHRhZ3M6IG5ldyBGb3JtQ29udHJvbChbXSBhcyBzdHJpbmdbXSksXHJcbiAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdldEN1c3RvbUZpZWxkc0RlZmF1bHRzKHRoaXMuY3VzdG9tRmllbGRzKSksXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQXNzZXRDaGFuZ2UoZXZlbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB0YWdzOiBzdHJpbmdbXSB9KSB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldCgnbmFtZScpPy5zZXRWYWx1ZShldmVudC5uYW1lKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KCd0YWdzJyk/LnNldFZhbHVlKGV2ZW50LnRhZ3MpO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgIC51cGRhdGVBc3NldCh7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZGV0YWlsRm9ybS52YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdGFnczogdGhpcy5kZXRhaWxGb3JtLnZhbHVlLnRhZ3MsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZGV0YWlsRm9ybS52YWx1ZS5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7IGVudGl0eTogJ0Fzc2V0JyB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0Fzc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoXHJcbiAgICAgICAgZW50aXR5OiBOb25OdWxsYWJsZTxBc3NldERldGFpbFF1ZXJ5UXVlcnlbJ2Fzc2V0J10+LFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldCgnbmFtZScpPy5zZXRWYWx1ZShlbnRpdHkubmFtZSk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldCgndGFncycpPy5zZXRWYWx1ZShlbnRpdHkudGFncy5tYXAodCA9PiB0LmlkKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbUZpZWxkRm9ybVZhbHVlcyh0aGlzLmN1c3RvbUZpZWxkcywgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2N1c3RvbUZpZWxkcyddKSwgZW50aXR5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgPHZkci1hY3Rpb24tYmFyPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD48L3Zkci1hYi1sZWZ0PlxyXG5cclxuICAgICAgICA8dmRyLWFiLXJpZ2h0PlxyXG4gICAgICAgICAgICA8dmRyLWFjdGlvbi1iYXItaXRlbXMgbG9jYXRpb25JZD1cImFzc2V0LWRldGFpbFwiPjwvdmRyLWFjdGlvbi1iYXItaXRlbXM+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwiWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZUFzc2V0J11cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGV0YWlsRm9ybS5pbnZhbGlkIHx8IGRldGFpbEZvcm0ucHJpc3RpbmVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnY29tbW9uLnVwZGF0ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG48dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8dmRyLWFzc2V0LXByZXZpZXdcclxuICAgICAgICBbYXNzZXRdPVwiZW50aXR5JCB8IGFzeW5jXCJcclxuICAgICAgICBbZWRpdGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2N1c3RvbUZpZWxkc109XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgIFtjdXN0b21GaWVsZHNGb3JtXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgKGFzc2V0Q2hhbmdlKT1cIm9uQXNzZXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG4iXX0=
|
|
@@ -111,7 +111,7 @@ export class AssetListComponent extends BaseListComponent {
|
|
|
111
111
|
.pipe(switchMap(res => (res ? this.dataService.product.deleteAssets(assetIds, !!message) : EMPTY)), map(res => res.deleteAssets));
|
|
112
112
|
}
|
|
113
113
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetListComponent, deps: [{ token: i1.NotificationService }, { token: i1.ModalService }, { token: i1.DataService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
114
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetListComponent, selector: "vdr-asset-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <div class=\"my-2\">\r\n <vdr-asset-search-input\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n >\r\n <vdr-asset-file-input\r\n (selectFiles)=\"filesSelected($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".content-area\"\r\n ></vdr-asset-file-input>\r\n </vdr-asset-search-input>\r\n </div>\r\n <vdr-asset-gallery\r\n [assets]=\"(items$ | async)! | paginate : (paginationConfig$ | async) || {}\"\r\n [multiSelect]=\"true\"\r\n [canDelete]=\"['DeleteCatalog', 'DeleteAsset'] | hasPermission\"\r\n (deleteAssets)=\"deleteAssets($event)\"\r\n ></vdr-asset-gallery>\r\n\r\n <div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"currentPage$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</vdr-page-block>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between}.search-input{margin-top:6px;min-width:300px}\n"], dependencies: [{ kind: "component", type: i1.AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { kind: "component", type: i1.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { kind: "component", type: i1.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { kind: "component", type: i1.AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { kind: "component", type: i1.AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }] }); }
|
|
114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetListComponent, selector: "vdr-asset-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <div class=\"my-2\">\r\n <vdr-asset-search-input\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n >\r\n <vdr-asset-file-input\r\n (selectFiles)=\"filesSelected($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".content-area\"\r\n ></vdr-asset-file-input>\r\n </vdr-asset-search-input>\r\n </div>\r\n <vdr-asset-gallery\r\n [assets]=\"(items$ | async)! | paginate : (paginationConfig$ | async) || {}\"\r\n [multiSelect]=\"true\"\r\n [canDelete]=\"['DeleteCatalog', 'DeleteAsset'] | hasPermission\"\r\n (deleteAssets)=\"deleteAssets($event)\"\r\n ></vdr-asset-gallery>\r\n\r\n <div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"currentPage$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</vdr-page-block>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between}.search-input{margin-top:6px;min-width:300px}\n"], dependencies: [{ kind: "component", type: i1.AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { kind: "component", type: i1.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { kind: "component", type: i1.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { kind: "component", type: i1.AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { kind: "component", type: i1.AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets", "editAssetClick"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }] }); }
|
|
115
115
|
}
|
|
116
116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetListComponent, decorators: [{
|
|
117
117
|
type: Component,
|
|
@@ -56,7 +56,7 @@ export class AssetsComponent {
|
|
|
56
56
|
.fromComponent(AssetPreviewDialogComponent, {
|
|
57
57
|
size: 'xl',
|
|
58
58
|
closable: true,
|
|
59
|
-
locals: { asset },
|
|
59
|
+
locals: { asset, assets: this.assets },
|
|
60
60
|
})
|
|
61
61
|
.subscribe();
|
|
62
62
|
}
|
|
@@ -98,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
98
98
|
}], updatePermissions: [{
|
|
99
99
|
type: Input
|
|
100
100
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldHMvYXNzZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldHMvYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILDBCQUEwQixFQUMxQiwyQkFBMkIsR0FHOUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFPcEQ7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLGVBQWU7SUFDeEIsSUFBcUIsWUFBWSxDQUFDLEdBQVk7UUFDMUMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQWNELFlBQW9CLFlBQTBCLEVBQVUsY0FBaUM7UUFBckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFUekYsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQiw0REFBNEQ7UUFDbEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFNUMsV0FBTSxHQUFZLEVBQUUsQ0FBQztJQUtnRSxDQUFDO0lBRTdGLFlBQVk7UUFDUixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQywwQkFBMEIsRUFBRTtZ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c0JBRk4sV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBc3NldCxcclxuICAgIEFzc2V0UGlja2VyRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgQXNzZXRQcmV2aWV3RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgTW9kYWxTZXJ2aWNlLFxyXG4gICAgUGVybWlzc2lvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3NldENoYW5nZSB7XHJcbiAgICBhc3NldHM6IEFzc2V0W107XHJcbiAgICBmZWF0dXJlZEFzc2V0OiBBc3NldCB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHdoaWNoIGRpc3BsYXlzIHRoZSBBc3NldHMsIGFuZCBhbGxvd3MgYXNzZXRzIHRvIGJlIHJlbW92ZWQgYW5kXHJcbiAqIGFkZGVkLCBhbmQgZm9yIHRoZSBmZWF0dXJlZCBhc3NldCB0byBiZSBzZXQuXHJcbiAqXHJcbiAqIE5vdGU6IHJhdGhlciBjb21wbGV4IGNvZGUgZm9yIGRyYWcgZHJvcCBpcyBkdWUgdG8gYSBsaW1pdGF0aW9uIG9mIHRoZSBkZWZhdWx0IENESyBpbXBsZW1lbnRhdGlvblxyXG4gKiB3aGljaCBpcyBhZGRyZXNzZWQgYnkgYSB3b3JrLWFyb3VuZCBmcm9tIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzEzMzcyI2lzc3VlY29tbWVudC00ODM5OTgzNzhcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItYXNzZXRzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc3NldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXRzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2V0c0NvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoJ2Fzc2V0cycpIHNldCBhc3NldHNTZXR0ZXIodmFsOiBBc3NldFtdKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIGEgbmV3IG5vbi1yZWFkb25seSBhcnJheSBvZiBhc3NldHNcclxuICAgICAgICB0aGlzLmFzc2V0cyA9ICh2YWwgfHwgW10pLnNsaWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgZmVhdHVyZWRBc3NldDogQXNzZXQgfCB1bmRlZmluZWQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbXBhY3QnKVxyXG4gICAgQElucHV0KClcclxuICAgIGNvbXBhY3QgPSBmYWxzZTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxyXG4gICAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRDaGFuZ2U+KCk7XHJcblxyXG4gICAgcHVibGljIGFzc2V0czogQXNzZXRbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICB1cGRhdGVQZXJtaXNzaW9uczogc3RyaW5nIHwgc3RyaW5nW10gfCBQZXJtaXNzaW9uIHwgUGVybWlzc2lvbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICAgIHNlbGVjdEFzc2V0cygpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldHMgPSB1bmlxdWUodGhpcy5hc3NldHMuY29uY2F0KHJlc3VsdCksICdpZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mZWF0dXJlZEFzc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZWRBc3NldCA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQodGhpcy5hc3NldHMsIHRoaXMuZmVhdHVyZWRBc3NldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXNGZWF0dXJlZChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmZlYXR1cmVkQXNzZXQgPSBhc3NldDtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgYXNzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRmVhdHVyZWQoYXNzZXQ6IEFzc2V0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld0Fzc2V0KGFzc2V0OiBBc3NldCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEFzc2V0UHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7IGFzc2V0IH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBc3NldChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmFzc2V0cyA9IHRoaXMuYXNzZXRzLmZpbHRlcihhID0+IGEuaWQgIT09IGFzc2V0LmlkKTtcclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlZEFzc2V0ID0gdGhpcy5hc3NldHMubGVuZ3RoID4gMCA/IHRoaXMuYXNzZXRzWzBdIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudChhc3NldHM6IEFzc2V0W10sIGZlYXR1cmVkQXNzZXQ6IEFzc2V0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIGFzc2V0cyxcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkcm9wTGlzdERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPG51bWJlcj4pIHtcclxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5hc3NldHMsIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhKTtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiIWNvbXBhY3Q7IGVsc2UgY29tcGFjdFZpZXdcIiBjbGFzcz1cInN0YW5kYXJkLXZpZXctY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZWQtYXNzZXRcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZmVhdHVyZWRBc3NldFwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZWRBc3NldCB8IGFzc2V0UHJldmlldyA6ICdzbWFsbCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlld0Fzc2V0KGZlYXR1cmVkQXNzZXQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiICpuZ0lmPVwiIWZlYXR1cmVkQXNzZXRcIiAoY2xpY2spPVwic2VsZWN0QXNzZXRzKClcIj5cclxuICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiMTI4XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgPGRpdj57eyAnY2F0YWxvZy5uby1mZWF0dXJlZC1hc3NldCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFsbC1hc3NldHMtY29udGFpbmVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXNzZXRMaXN0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2ICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInNlbGVjdEFzc2V0cygpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImF0dGFjaG1lbnRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICB7eyAnYXNzZXQuYWRkLWFzc2V0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbXBhY3RWaWV3PlxyXG4gICAgPGRpdiBjbGFzcz1cImZlYXR1cmVkLWFzc2V0IGNvbXBhY3RcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZmVhdHVyZWRBc3NldFwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZWRBc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aHVtYidcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlld0Fzc2V0KGZlYXR1cmVkQXNzZXQpXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIiAqbmdJZj1cIiFmZWF0dXJlZEFzc2V0XCIgKGNsaWNrKT1cInNlbGVjdEFzc2V0cygpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjE1MFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhc3NldExpc3RcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b25cclxuICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cInVwZGF0ZVBlcm1pc3Npb25zXCJcclxuICAgICAgICBjbGFzcz1cImNvbXBhY3Qtc2VsZWN0IGJ0biBidG4taWNvbiBidG4tc20gYnRuLWJsb2NrXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2Fzc2V0LmFkZC1hc3NldCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RBc3NldHMoKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiYXR0YWNobWVudFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAge3sgJ2Fzc2V0LmFkZC1hc3NldCcgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhc3NldExpc3Q+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWxsLWFzc2V0c1wiIFtjbGFzcy5jb21wYWN0XT1cImNvbXBhY3RcIiBjZGtEcm9wTGlzdEdyb3VwPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFzc2V0IG9mIGFzc2V0czsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3AtbGlzdFwiXHJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJpbmRleFwiXHJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcExpc3REcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHZkci1kcm9wZG93biBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXQtdGh1bWJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duVHJpZ2dlclxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZWF0dXJlZF09XCJpc0ZlYXR1cmVkKGFzc2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB2ZHJEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInByZXZpZXdBc3NldChhc3NldClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnByZXZpZXcnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmVhdHVyZWQoYXNzZXQpIHx8ICEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QXNGZWF0dXJlZChhc3NldClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnNldC1hcy1mZWF0dXJlZC1hc3NldCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlLWFzc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQXNzZXQoYXNzZXQpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdhc3NldC5yZW1vdmUtYXNzZXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldHMvYXNzZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9hc3NldHMvYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILDBCQUEwQixFQUMxQiwyQkFBMkIsR0FHOUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFPcEQ7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLGVBQWU7SUFDeEIsSUFBcUIsWUFBWSxDQUFDLEdBQVk7UUFDMUMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQWNELFlBQW9CLFlBQTBCLEVBQVUsY0FBaUM7UUFBckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFUekYsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQiw0REFBNEQ7UUFDbEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFNUMsV0FBTSxHQUFZLEVBQUUsQ0FBQztJQUtnRSxDQUFDO0lBRTdGLFlBQVk7UUFDUixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQywwQkFBMEIsRUFBRTtZQUN2QyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUM7YUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN0QztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUNyQixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQywyQkFBMkIsRUFBRTtZQUN4QyxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1NBQ3pDLENBQUM7YUFDRCxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDNUU7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxlQUFlLENBQUMsTUFBZSxFQUFFLGFBQWdDO1FBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2IsTUFBTTtZQUNOLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUEwQjtRQUN0QyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQTFFUSxlQUFlO2tHQUFmLGVBQWUsOFJDckM1QixpOUhBK0ZBOzsyRkQxRGEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDSSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07bUlBRzFCLFlBQVk7c0JBQWhDLEtBQUs7dUJBQUMsUUFBUTtnQkFLTixhQUFhO3NCQUFyQixLQUFLO2dCQUdOLE9BQU87c0JBRk4sV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBc3NldCxcclxuICAgIEFzc2V0UGlja2VyRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgQXNzZXRQcmV2aWV3RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgTW9kYWxTZXJ2aWNlLFxyXG4gICAgUGVybWlzc2lvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3NldENoYW5nZSB7XHJcbiAgICBhc3NldHM6IEFzc2V0W107XHJcbiAgICBmZWF0dXJlZEFzc2V0OiBBc3NldCB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHdoaWNoIGRpc3BsYXlzIHRoZSBBc3NldHMsIGFuZCBhbGxvd3MgYXNzZXRzIHRvIGJlIHJlbW92ZWQgYW5kXHJcbiAqIGFkZGVkLCBhbmQgZm9yIHRoZSBmZWF0dXJlZCBhc3NldCB0byBiZSBzZXQuXHJcbiAqXHJcbiAqIE5vdGU6IHJhdGhlciBjb21wbGV4IGNvZGUgZm9yIGRyYWcgZHJvcCBpcyBkdWUgdG8gYSBsaW1pdGF0aW9uIG9mIHRoZSBkZWZhdWx0IENESyBpbXBsZW1lbnRhdGlvblxyXG4gKiB3aGljaCBpcyBhZGRyZXNzZWQgYnkgYSB3b3JrLWFyb3VuZCBmcm9tIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzEzMzcyI2lzc3VlY29tbWVudC00ODM5OTgzNzhcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItYXNzZXRzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc3NldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXRzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2V0c0NvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoJ2Fzc2V0cycpIHNldCBhc3NldHNTZXR0ZXIodmFsOiBBc3NldFtdKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIGEgbmV3IG5vbi1yZWFkb25seSBhcnJheSBvZiBhc3NldHNcclxuICAgICAgICB0aGlzLmFzc2V0cyA9ICh2YWwgfHwgW10pLnNsaWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgZmVhdHVyZWRBc3NldDogQXNzZXQgfCB1bmRlZmluZWQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbXBhY3QnKVxyXG4gICAgQElucHV0KClcclxuICAgIGNvbXBhY3QgPSBmYWxzZTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxyXG4gICAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRDaGFuZ2U+KCk7XHJcblxyXG4gICAgcHVibGljIGFzc2V0czogQXNzZXRbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICB1cGRhdGVQZXJtaXNzaW9uczogc3RyaW5nIHwgc3RyaW5nW10gfCBQZXJtaXNzaW9uIHwgUGVybWlzc2lvbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICAgIHNlbGVjdEFzc2V0cygpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldHMgPSB1bmlxdWUodGhpcy5hc3NldHMuY29uY2F0KHJlc3VsdCksICdpZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mZWF0dXJlZEFzc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZWRBc3NldCA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQodGhpcy5hc3NldHMsIHRoaXMuZmVhdHVyZWRBc3NldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXNGZWF0dXJlZChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmZlYXR1cmVkQXNzZXQgPSBhc3NldDtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgYXNzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRmVhdHVyZWQoYXNzZXQ6IEFzc2V0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld0Fzc2V0KGFzc2V0OiBBc3NldCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEFzc2V0UHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7IGFzc2V0LCBhc3NldHM6IHRoaXMuYXNzZXRzIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBc3NldChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmFzc2V0cyA9IHRoaXMuYXNzZXRzLmZpbHRlcihhID0+IGEuaWQgIT09IGFzc2V0LmlkKTtcclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlZEFzc2V0ID0gdGhpcy5hc3NldHMubGVuZ3RoID4gMCA/IHRoaXMuYXNzZXRzWzBdIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudChhc3NldHM6IEFzc2V0W10sIGZlYXR1cmVkQXNzZXQ6IEFzc2V0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIGFzc2V0cyxcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkcm9wTGlzdERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPG51bWJlcj4pIHtcclxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5hc3NldHMsIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhKTtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiIWNvbXBhY3Q7IGVsc2UgY29tcGFjdFZpZXdcIiBjbGFzcz1cInN0YW5kYXJkLXZpZXctY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZWQtYXNzZXRcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZmVhdHVyZWRBc3NldFwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZWRBc3NldCB8IGFzc2V0UHJldmlldyA6ICdzbWFsbCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlld0Fzc2V0KGZlYXR1cmVkQXNzZXQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiICpuZ0lmPVwiIWZlYXR1cmVkQXNzZXRcIiAoY2xpY2spPVwic2VsZWN0QXNzZXRzKClcIj5cclxuICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiMTI4XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgPGRpdj57eyAnY2F0YWxvZy5uby1mZWF0dXJlZC1hc3NldCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFsbC1hc3NldHMtY29udGFpbmVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXNzZXRMaXN0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2ICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInNlbGVjdEFzc2V0cygpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImF0dGFjaG1lbnRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICB7eyAnYXNzZXQuYWRkLWFzc2V0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbXBhY3RWaWV3PlxyXG4gICAgPGRpdiBjbGFzcz1cImZlYXR1cmVkLWFzc2V0IGNvbXBhY3RcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZmVhdHVyZWRBc3NldFwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZWRBc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aHVtYidcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlld0Fzc2V0KGZlYXR1cmVkQXNzZXQpXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIiAqbmdJZj1cIiFmZWF0dXJlZEFzc2V0XCIgKGNsaWNrKT1cInNlbGVjdEFzc2V0cygpXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjE1MFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhc3NldExpc3RcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b25cclxuICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cInVwZGF0ZVBlcm1pc3Npb25zXCJcclxuICAgICAgICBjbGFzcz1cImNvbXBhY3Qtc2VsZWN0IGJ0biBidG4taWNvbiBidG4tc20gYnRuLWJsb2NrXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2Fzc2V0LmFkZC1hc3NldCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RBc3NldHMoKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiYXR0YWNobWVudFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAge3sgJ2Fzc2V0LmFkZC1hc3NldCcgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhc3NldExpc3Q+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWxsLWFzc2V0c1wiIFtjbGFzcy5jb21wYWN0XT1cImNvbXBhY3RcIiBjZGtEcm9wTGlzdEdyb3VwPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFzc2V0IG9mIGFzc2V0czsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3AtbGlzdFwiXHJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJpbmRleFwiXHJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcExpc3REcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHZkci1kcm9wZG93biBjZGtEcmFnPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXQtdGh1bWJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duVHJpZ2dlclxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZWF0dXJlZF09XCJpc0ZlYXR1cmVkKGFzc2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB2ZHJEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInByZXZpZXdBc3NldChhc3NldClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnByZXZpZXcnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmVhdHVyZWQoYXNzZXQpIHx8ICEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QXNGZWF0dXJlZChhc3NldClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnNldC1hcy1mZWF0dXJlZC1hc3NldCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlLWFzc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQXNzZXQoYXNzZXQpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdhc3NldC5yZW1vdmUtYXNzZXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|