@infrab4a/connect-angular 4.10.0-beta.0 → 4.10.0-beta.10
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/angular-connect.module.d.ts +8 -7
- package/angular-vertex-search.module.d.ts +2 -2
- package/esm2020/angular-connect.module.mjs +15 -7
- package/esm2020/angular-vertex-search.module.mjs +4 -4
- package/esm2020/services/catalog/catalog.service.mjs +60 -32
- package/esm2020/services/catalog/wishlist.service.mjs +10 -6
- package/fesm2015/infrab4a-connect-angular.mjs +115 -76
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
- package/fesm2020/infrab4a-connect-angular.mjs +114 -75
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/services/catalog/catalog.service.d.ts +4 -4
- package/services/catalog/wishlist.service.d.ts +3 -2
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { ModuleWithProviders, Type } from '@angular/core';
|
|
2
2
|
import { FirebaseOptions } from '@angular/fire/app';
|
|
3
|
-
import { AxiosElasticSearchConfig, Shops,
|
|
3
|
+
import { AxiosElasticSearchConfig, Shops, VertexSearchConfig } from '@infrab4a/connect';
|
|
4
4
|
import { HasuraGraphQLOptions } from './angular-hasura-graphql.module';
|
|
5
5
|
import { DataPersistence } from './persistence';
|
|
6
6
|
import { FirebaseAppConfig } from './types';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/fire/app";
|
|
9
9
|
import * as i2 from "@angular/fire/storage";
|
|
10
|
-
import * as i3 from "./angular-
|
|
11
|
-
import * as i4 from "./angular-
|
|
12
|
-
import * as i5 from "./angular-
|
|
13
|
-
import * as i6 from "./angular-
|
|
10
|
+
import * as i3 from "./angular-elastic-search.module";
|
|
11
|
+
import * as i4 from "./angular-vertex-search.module";
|
|
12
|
+
import * as i5 from "./angular-firebase-auth.module";
|
|
13
|
+
import * as i6 from "./angular-firestore.module";
|
|
14
|
+
import * as i7 from "./angular-hasura-graphql.module";
|
|
14
15
|
export declare class AngularConnectModule {
|
|
15
16
|
static initializeApp(defaultShop: Shops, options: {
|
|
16
17
|
firebase: FirebaseOptions;
|
|
17
18
|
elasticSearch?: AxiosElasticSearchConfig;
|
|
18
|
-
|
|
19
|
+
vertexConfig?: VertexSearchConfig;
|
|
19
20
|
hasura: HasuraGraphQLOptions;
|
|
20
21
|
backendUrl: string;
|
|
21
22
|
oldCategoryStructure?: boolean;
|
|
@@ -23,6 +24,6 @@ export declare class AngularConnectModule {
|
|
|
23
24
|
persistenceProvider?: Type<DataPersistence>;
|
|
24
25
|
}, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularConnectModule>;
|
|
25
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<AngularConnectModule, never>;
|
|
26
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AngularConnectModule, never, [typeof i1.FirebaseAppModule, typeof i2.StorageModule, typeof i3.
|
|
27
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AngularConnectModule, never, [typeof i1.FirebaseAppModule, typeof i2.StorageModule, typeof i3.AngularElasticSeachModule, typeof i4.AngularVertexSeachModule, typeof i5.AngularFirebaseAuthModule, typeof i6.AngularFirestoreModule, typeof i7.AngularHasuraGraphQLModule], never>;
|
|
27
28
|
static ɵinj: i0.ɵɵInjectorDeclaration<AngularConnectModule>;
|
|
28
29
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { VertexSearchConfig } from '@infrab4a/connect';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class AngularVertexSeachModule {
|
|
5
|
-
static initializeApp(options:
|
|
5
|
+
static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule>;
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<AngularVertexSeachModule, never>;
|
|
7
7
|
static ɵmod: i0.ɵɵNgModuleDeclaration<AngularVertexSeachModule, never, never, never>;
|
|
8
8
|
static ɵinj: i0.ɵɵInjectorDeclaration<AngularVertexSeachModule>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { FirebaseApp, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app';
|
|
3
3
|
import { getStorage, provideStorage, Storage } from '@angular/fire/storage';
|
|
4
|
-
import { FirebaseFileUploaderService, isNil, UpdateUserImage, } from '@infrab4a/connect';
|
|
4
|
+
import { FirebaseFileUploaderService, isNil, ProductsVertexSearch, UpdateUserImage, } from '@infrab4a/connect';
|
|
5
|
+
import { AngularElasticSeachModule } from './angular-elastic-search.module';
|
|
5
6
|
import { AngularFirebaseAuthModule } from './angular-firebase-auth.module';
|
|
6
7
|
import { AngularFirestoreModule } from './angular-firestore.module';
|
|
7
8
|
import { AngularHasuraGraphQLModule } from './angular-hasura-graphql.module';
|
|
@@ -30,7 +31,7 @@ export class AngularConnectModule {
|
|
|
30
31
|
...(isNil(options?.firebase) ? [] : [{ provide: FIREBASE_OPTIONS, useValue: options?.firebase }]),
|
|
31
32
|
...(isNil(options?.firebase) ? [] : [{ provide: FIREBASE_APP_NAME, useValue: nameOrConfig }]),
|
|
32
33
|
...(isNil(options?.elasticSearch) ? [] : [{ provide: ES_CONFIG, useValue: options.elasticSearch }]),
|
|
33
|
-
...(isNil(options?.
|
|
34
|
+
...(isNil(options?.vertexConfig) ? [] : [{ provide: VERTEX_CONFIG, useValue: options.vertexConfig }]),
|
|
34
35
|
...(isNil(options?.hasura) ? [] : [{ provide: HASURA_OPTIONS, useValue: options.hasura }]),
|
|
35
36
|
...(isNil(options?.backendUrl) ? [] : [{ provide: BACKEND_URL, useValue: options.backendUrl }]),
|
|
36
37
|
...(isNil(options?.storageBaseUrl) ? [] : [{ provide: STORAGE_BASE_URL, useValue: options.storageBaseUrl }]),
|
|
@@ -39,8 +40,7 @@ export class AngularConnectModule {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
AngularConnectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularConnectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
42
|
-
AngularConnectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularConnectModule, imports: [i1.FirebaseAppModule, i2.StorageModule,
|
|
43
|
-
// AngularElasticSeachModule,
|
|
43
|
+
AngularConnectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularConnectModule, imports: [i1.FirebaseAppModule, i2.StorageModule, AngularElasticSeachModule,
|
|
44
44
|
AngularVertexSeachModule,
|
|
45
45
|
AngularFirebaseAuthModule,
|
|
46
46
|
AngularFirestoreModule,
|
|
@@ -71,6 +71,10 @@ AngularConnectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
|
|
|
71
71
|
},
|
|
72
72
|
deps: [Storage, STORAGE_BASE_URL],
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
provide: 'ProductSearch',
|
|
76
|
+
useExisting: ProductsVertexSearch,
|
|
77
|
+
},
|
|
74
78
|
], imports: [provideFirebaseApp((injector) => {
|
|
75
79
|
const appName = injector.get(FIREBASE_APP_NAME) || '[DEFAULT]';
|
|
76
80
|
try {
|
|
@@ -81,7 +85,7 @@ AngularConnectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
|
|
|
81
85
|
}
|
|
82
86
|
}),
|
|
83
87
|
provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
|
|
84
|
-
|
|
88
|
+
AngularElasticSeachModule,
|
|
85
89
|
AngularVertexSeachModule,
|
|
86
90
|
AngularFirebaseAuthModule,
|
|
87
91
|
AngularFirestoreModule,
|
|
@@ -100,7 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
100
104
|
}
|
|
101
105
|
}),
|
|
102
106
|
provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
|
|
103
|
-
|
|
107
|
+
AngularElasticSeachModule,
|
|
104
108
|
AngularVertexSeachModule,
|
|
105
109
|
AngularFirebaseAuthModule,
|
|
106
110
|
AngularFirestoreModule,
|
|
@@ -132,7 +136,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
132
136
|
},
|
|
133
137
|
deps: [Storage, STORAGE_BASE_URL],
|
|
134
138
|
},
|
|
139
|
+
{
|
|
140
|
+
provide: 'ProductSearch',
|
|
141
|
+
useExisting: ProductsVertexSearch,
|
|
142
|
+
},
|
|
135
143
|
],
|
|
136
144
|
}]
|
|
137
145
|
}] });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb25uZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvYW5ndWxhci1jb25uZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUdMLDJCQUEyQixFQUMzQixLQUFLLEVBRUwsZUFBZSxHQUdoQixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBd0IsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixhQUFhLEdBQ2QsTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLGVBQWUsQ0FBQTtBQUN0RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsYUFBYSxF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OUIsVUFBVSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsRUFBRTtnQ0FDaEQsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTs0QkFDMUQsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7eUJBQ2xDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIEZpcmViYXNlT3B0aW9ucywgZ2V0QXBwLCBpbml0aWFsaXplQXBwLCBwcm92aWRlRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCdcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHJvdmlkZVN0b3JhZ2UsIFN0b3JhZ2UgfSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnXHJcbmltcG9ydCB7XHJcbiAgQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnLFxyXG4gIEZpbGVVcGxvYWRlclNlcnZpY2UsXHJcbiAgRmlyZWJhc2VGaWxlVXBsb2FkZXJTZXJ2aWNlLFxyXG4gIGlzTmlsLFxyXG4gIFNob3BzLFxyXG4gIFVwZGF0ZVVzZXJJbWFnZSxcclxuICBVc2VyUmVwb3NpdG9yeSxcclxuICBWZXJ0ZXhDb25maWcsXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IEFuZ3VsYXJGaXJlYmFzZUF1dGhNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZmlyZWJhc2UtYXV0aC5tb2R1bGUnXHJcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZmlyZXN0b3JlLm1vZHVsZSdcclxuaW1wb3J0IHsgQW5ndWxhckhhc3VyYUdyYXBoUUxNb2R1bGUsIEhhc3VyYUdyYXBoUUxPcHRpb25zIH0gZnJvbSAnLi9hbmd1bGFyLWhhc3VyYS1ncmFwaHFsLm1vZHVsZSdcclxuaW1wb3J0IHsgQW5ndWxhclZlcnRleFNlYWNoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLXZlcnRleC1zZWFyY2gubW9kdWxlJ1xyXG5pbXBvcnQge1xyXG4gIEJBQ0tFTkRfVVJMLFxyXG4gIENBVEVHT1JZX1NUUlVDVFVSRSxcclxuICBERUZBVUxUX1NIT1AsXHJcbiAgRVNfQ09ORklHLFxyXG4gIEZJUkVCQVNFX0FQUF9OQU1FLFxyXG4gIEZJUkVCQVNFX09QVElPTlMsXHJcbiAgSEFTVVJBX09QVElPTlMsXHJcbiAgUEVSU0lTVEVOQ0VfUFJPVklERVIsXHJcbiAgVkVSVEVYX0NPTkZJRyxcclxufSBmcm9tICcuL2NvbnN0cydcclxuaW1wb3J0IHsgU1RPUkFHRV9CQVNFX1VSTCB9IGZyb20gJy4vY29uc3RzL3N0b3JhZ2UtYmFzZS11cmwuY29uc3QnXHJcbmltcG9ydCB7IENvb2tpZURhdGFQZXJzaXN0ZW5jZSwgRGF0YVBlcnNpc3RlbmNlIH0gZnJvbSAnLi9wZXJzaXN0ZW5jZSdcclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSxcclxuICBDYXJ0U2VydmljZSxcclxuICBDYXRhbG9nU2VydmljZSxcclxuICBDYXRlZ29yeVNlcnZpY2UsXHJcbiAgQ2hlY2tvdXRTZXJ2aWNlLFxyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uU2VydmljZSxcclxuICBDb3Vwb25TZXJ2aWNlLFxyXG4gIEhvbWVTaG9wU2VydmljZSxcclxuICBPcmRlclNlcnZpY2UsXHJcbiAgU2hpcHBpbmdTZXJ2aWNlLFxyXG4gIFdpc2hsaXN0U2VydmljZSxcclxufSBmcm9tICcuL3NlcnZpY2VzJ1xyXG5pbXBvcnQgeyBOZXdDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIsIE9sZENhdGVnb3J5U3RydWN0dXJlQWRhcHRlciB9IGZyb20gJy4vc2VydmljZXMvY2F0YWxvZy9hZGFwdGVycydcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHBDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBwcm92aWRlRmlyZWJhc2VBcHAoKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xyXG4gICAgICBjb25zdCBhcHBOYW1lID0gaW5qZWN0b3IuZ2V0PHN0cmluZz4oRklSRUJBU0VfQVBQX05BTUUpIHx8ICdbREVGQVVMVF0nXHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBnZXRBcHAoYXBwTmFtZSlcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZUFwcChpbmplY3Rvci5nZXQoRklSRUJBU0VfT1BUSU9OUyksIGFwcE5hbWUpXHJcbiAgICAgIH1cclxuICAgIH0pLFxyXG4gICAgcHJvdmlkZVN0b3JhZ2UoKGluamVjdG9yOiBJbmplY3RvcikgPT4gZ2V0U3RvcmFnZShpbmplY3Rvci5nZXQoRmlyZWJhc2VBcHApKSksXHJcbiAgICAvLyBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlLFxyXG4gICAgQW5ndWxhclZlcnRleFNlYWNoTW9kdWxlLFxyXG4gICAgQW5ndWxhckZpcmViYXNlQXV0aE1vZHVsZSxcclxuICAgIEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXHJcbiAgICBBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBDYXJ0U2VydmljZSxcclxuICAgIENhdGFsb2dTZXJ2aWNlLFxyXG4gICAgQ2F0ZWdvcnlTZXJ2aWNlLFxyXG4gICAgQ2hlY2tvdXRTZXJ2aWNlLFxyXG4gICAgQ2hlY2tvdXRTdWJzY3JpcHRpb25TZXJ2aWNlLFxyXG4gICAgQ291cG9uU2VydmljZSxcclxuICAgIEhvbWVTaG9wU2VydmljZSxcclxuICAgIE9yZGVyU2VydmljZSxcclxuICAgIFNoaXBwaW5nU2VydmljZSxcclxuICAgIFdpc2hsaXN0U2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogVXBkYXRlVXNlckltYWdlLFxyXG4gICAgICB1c2VGYWN0b3J5OiAodXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LCBmaWxlVXBsb2FkZXI6IEZpbGVVcGxvYWRlclNlcnZpY2UpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFVwZGF0ZVVzZXJJbWFnZSh1c2VyUmVwb3NpdG9yeSwgZmlsZVVwbG9hZGVyKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ1VzZXJSZXBvc2l0b3J5JywgJ0ZpbGVVcGxvYWRlclNlcnZpY2UnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdGaWxlVXBsb2FkZXJTZXJ2aWNlJyxcclxuICAgICAgdXNlRmFjdG9yeTogKHN0b3JhZ2U6IFN0b3JhZ2UsIGJhc2VVcmw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlyZWJhc2VGaWxlVXBsb2FkZXJTZXJ2aWNlKHN0b3JhZ2UsIGJhc2VVcmwpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtTdG9yYWdlLCBTVE9SQUdFX0JBU0VfVVJMXSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJDb25uZWN0TW9kdWxlIHtcclxuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcclxuICAgIGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgZmlyZWJhc2U6IEZpcmViYXNlT3B0aW9uc1xyXG4gICAgICBlbGFzdGljU2VhcmNoPzogQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnXHJcbiAgICAgIHZlcnRleEFpQ29uZmlnPzogVmVydGV4Q29uZmlnXHJcbiAgICAgIGhhc3VyYTogSGFzdXJhR3JhcGhRTE9wdGlvbnNcclxuICAgICAgYmFja2VuZFVybDogc3RyaW5nXHJcbiAgICAgIG9sZENhdGVnb3J5U3RydWN0dXJlPzogYm9vbGVhblxyXG4gICAgICBzdG9yYWdlQmFzZVVybD86IHN0cmluZ1xyXG4gICAgICBwZXJzaXN0ZW5jZVByb3ZpZGVyPzogVHlwZTxEYXRhUGVyc2lzdGVuY2U+XHJcbiAgICB9LFxyXG4gICAgbmFtZU9yQ29uZmlnPzogc3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcsXHJcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFyQ29ubmVjdE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJDb25uZWN0TW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBDQVRFR09SWV9TVFJVQ1RVUkUsXHJcbiAgICAgICAgICB1c2VDbGFzczpcclxuICAgICAgICAgICAgaXNOaWwob3B0aW9ucz8ub2xkQ2F0ZWdvcnlTdHJ1Y3R1cmUpIHx8IG9wdGlvbnM/Lm9sZENhdGVnb3J5U3RydWN0dXJlXHJcbiAgICAgICAgICAgICAgPyBPbGRDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXJcclxuICAgICAgICAgICAgICA6IE5ld0NhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogUEVSU0lTVEVOQ0VfUFJPVklERVIsIHVzZUNsYXNzOiBvcHRpb25zPy5wZXJzaXN0ZW5jZVByb3ZpZGVyIHx8IENvb2tpZURhdGFQZXJzaXN0ZW5jZSB9LFxyXG4gICAgICAgIC4uLihpc05pbChkZWZhdWx0U2hvcCkgPyBbXSA6IFt7IHByb3ZpZGU6IERFRkFVTFRfU0hPUCwgdXNlVmFsdWU6IGRlZmF1bHRTaG9wIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uZmlyZWJhc2UpID8gW10gOiBbeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucz8uZmlyZWJhc2UgfV0pLFxyXG4gICAgICAgIC4uLihpc05pbChvcHRpb25zPy5maXJlYmFzZSkgPyBbXSA6IFt7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uZWxhc3RpY1NlYXJjaCkgPyBbXSA6IFt7IHByb3ZpZGU6IEVTX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMuZWxhc3RpY1NlYXJjaCB9XSksXHJcbiAgICAgICAgLi4uKGlzTmlsKG9wdGlvbnM/LnZlcnRleEFpQ29uZmlnKSA/IFtdIDogW3sgcHJvdmlkZTogVkVSVEVYX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMudmVydGV4QWlDb25maWcgfV0pLFxyXG4gICAgICAgIC4uLihpc05pbChvcHRpb25zPy5oYXN1cmEpID8gW10gOiBbeyBwcm92aWRlOiBIQVNVUkFfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMuaGFzdXJhIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uYmFja2VuZFVybCkgPyBbXSA6IFt7IHByb3ZpZGU6IEJBQ0tFTkRfVVJMLCB1c2VWYWx1ZTogb3B0aW9ucy5iYWNrZW5kVXJsIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uc3RvcmFnZUJhc2VVcmwpID8gW10gOiBbeyBwcm92aWRlOiBTVE9SQUdFX0JBU0VfVVJMLCB1c2VWYWx1ZTogb3B0aW9ucy5zdG9yYWdlQmFzZVVybCB9XSksXHJcbiAgICAgIF0sXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb25uZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvYW5ndWxhci1jb25uZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUdMLDJCQUEyQixFQUMzQixLQUFLLEVBQ0wsb0JBQW9CLEVBRXBCLGVBQWUsR0FHaEIsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMzRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQXdCLE1BQU0saUNBQWlDLENBQUE7QUFDbEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDekUsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxHQUNkLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBbUIsTUFBTSxlQUFlLENBQUE7QUFDdEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxX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LFlBQVksQ0FBQyxDQUFBOzRCQUMxRCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO3lCQUNoRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixVQUFVLEVBQUUsQ0FBQyxPQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFO2dDQUNoRCxPQUFPLElBQUksMkJBQTJCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBOzRCQUMxRCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDbEM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7eUJBQ2xDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIEZpcmViYXNlT3B0aW9ucywgZ2V0QXBwLCBpbml0aWFsaXplQXBwLCBwcm92aWRlRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCdcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHJvdmlkZVN0b3JhZ2UsIFN0b3JhZ2UgfSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnXHJcbmltcG9ydCB7XHJcbiAgQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnLFxyXG4gIEZpbGVVcGxvYWRlclNlcnZpY2UsXHJcbiAgRmlyZWJhc2VGaWxlVXBsb2FkZXJTZXJ2aWNlLFxyXG4gIGlzTmlsLFxyXG4gIFByb2R1Y3RzVmVydGV4U2VhcmNoLFxyXG4gIFNob3BzLFxyXG4gIFVwZGF0ZVVzZXJJbWFnZSxcclxuICBVc2VyUmVwb3NpdG9yeSxcclxuICBWZXJ0ZXhTZWFyY2hDb25maWcsXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZWxhc3RpYy1zZWFyY2gubW9kdWxlJ1xyXG5pbXBvcnQgeyBBbmd1bGFyRmlyZWJhc2VBdXRoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWZpcmViYXNlLWF1dGgubW9kdWxlJ1xyXG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUnXHJcbmltcG9ydCB7IEFuZ3VsYXJIYXN1cmFHcmFwaFFMTW9kdWxlLCBIYXN1cmFHcmFwaFFMT3B0aW9ucyB9IGZyb20gJy4vYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUnXHJcbmltcG9ydCB7IEFuZ3VsYXJWZXJ0ZXhTZWFjaE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci12ZXJ0ZXgtc2VhcmNoLm1vZHVsZSdcclxuaW1wb3J0IHtcclxuICBCQUNLRU5EX1VSTCxcclxuICBDQVRFR09SWV9TVFJVQ1RVUkUsXHJcbiAgREVGQVVMVF9TSE9QLFxyXG4gIEVTX0NPTkZJRyxcclxuICBGSVJFQkFTRV9BUFBfTkFNRSxcclxuICBGSVJFQkFTRV9PUFRJT05TLFxyXG4gIEhBU1VSQV9PUFRJT05TLFxyXG4gIFBFUlNJU1RFTkNFX1BST1ZJREVSLFxyXG4gIFZFUlRFWF9DT05GSUcsXHJcbn0gZnJvbSAnLi9jb25zdHMnXHJcbmltcG9ydCB7IFNUT1JBR0VfQkFTRV9VUkwgfSBmcm9tICcuL2NvbnN0cy9zdG9yYWdlLWJhc2UtdXJsLmNvbnN0J1xyXG5pbXBvcnQgeyBDb29raWVEYXRhUGVyc2lzdGVuY2UsIERhdGFQZXJzaXN0ZW5jZSB9IGZyb20gJy4vcGVyc2lzdGVuY2UnXHJcbmltcG9ydCB7XHJcbiAgQXV0aFNlcnZpY2UsXHJcbiAgQ2FydFNlcnZpY2UsXHJcbiAgQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgQ2F0ZWdvcnlTZXJ2aWNlLFxyXG4gIENoZWNrb3V0U2VydmljZSxcclxuICBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2UsXHJcbiAgQ291cG9uU2VydmljZSxcclxuICBIb21lU2hvcFNlcnZpY2UsXHJcbiAgT3JkZXJTZXJ2aWNlLFxyXG4gIFNoaXBwaW5nU2VydmljZSxcclxuICBXaXNobGlzdFNlcnZpY2UsXHJcbn0gZnJvbSAnLi9zZXJ2aWNlcydcclxuaW1wb3J0IHsgTmV3Q2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLCBPbGRDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL3NlcnZpY2VzL2NhdGFsb2cvYWRhcHRlcnMnXHJcbmltcG9ydCB7IEZpcmViYXNlQXBwQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgcHJvdmlkZUZpcmViYXNlQXBwKChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcclxuICAgICAgY29uc3QgYXBwTmFtZSA9IGluamVjdG9yLmdldDxzdHJpbmc+KEZJUkVCQVNFX0FQUF9OQU1FKSB8fCAnW0RFRkFVTFRdJ1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gZ2V0QXBwKGFwcE5hbWUpXHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBcHAoaW5qZWN0b3IuZ2V0KEZJUkVCQVNFX09QVElPTlMpLCBhcHBOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgIHByb3ZpZGVTdG9yYWdlKChpbmplY3RvcjogSW5qZWN0b3IpID0+IGdldFN0b3JhZ2UoaW5qZWN0b3IuZ2V0KEZpcmViYXNlQXBwKSkpLFxyXG4gICAgQW5ndWxhckVsYXN0aWNTZWFjaE1vZHVsZSxcclxuICAgIEFuZ3VsYXJWZXJ0ZXhTZWFjaE1vZHVsZSxcclxuICAgIEFuZ3VsYXJGaXJlYmFzZUF1dGhNb2R1bGUsXHJcbiAgICBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlLFxyXG4gICAgQW5ndWxhckhhc3VyYUdyYXBoUUxNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEF1dGhTZXJ2aWNlLFxyXG4gICAgQ2FydFNlcnZpY2UsXHJcbiAgICBDYXRhbG9nU2VydmljZSxcclxuICAgIENhdGVnb3J5U2VydmljZSxcclxuICAgIENoZWNrb3V0U2VydmljZSxcclxuICAgIENoZWNrb3V0U3Vic2NyaXB0aW9uU2VydmljZSxcclxuICAgIENvdXBvblNlcnZpY2UsXHJcbiAgICBIb21lU2hvcFNlcnZpY2UsXHJcbiAgICBPcmRlclNlcnZpY2UsXHJcbiAgICBTaGlwcGluZ1NlcnZpY2UsXHJcbiAgICBXaXNobGlzdFNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFVwZGF0ZVVzZXJJbWFnZSxcclxuICAgICAgdXNlRmFjdG9yeTogKHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSwgZmlsZVVwbG9hZGVyOiBGaWxlVXBsb2FkZXJTZXJ2aWNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVcGRhdGVVc2VySW1hZ2UodXNlclJlcG9zaXRvcnksIGZpbGVVcGxvYWRlcilcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydVc2VyUmVwb3NpdG9yeScsICdGaWxlVXBsb2FkZXJTZXJ2aWNlJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnRmlsZVVwbG9hZGVyU2VydmljZScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChzdG9yYWdlOiBTdG9yYWdlLCBiYXNlVXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpcmViYXNlRmlsZVVwbG9hZGVyU2VydmljZShzdG9yYWdlLCBiYXNlVXJsKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbU3RvcmFnZSwgU1RPUkFHRV9CQVNFX1VSTF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFNlYXJjaCcsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBQcm9kdWN0c1ZlcnRleFNlYXJjaCxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJDb25uZWN0TW9kdWxlIHtcclxuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcclxuICAgIGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgZmlyZWJhc2U6IEZpcmViYXNlT3B0aW9uc1xyXG4gICAgICBlbGFzdGljU2VhcmNoPzogQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnXHJcbiAgICAgIHZlcnRleENvbmZpZz86IFZlcnRleFNlYXJjaENvbmZpZ1xyXG4gICAgICBoYXN1cmE6IEhhc3VyYUdyYXBoUUxPcHRpb25zXHJcbiAgICAgIGJhY2tlbmRVcmw6IHN0cmluZ1xyXG4gICAgICBvbGRDYXRlZ29yeVN0cnVjdHVyZT86IGJvb2xlYW5cclxuICAgICAgc3RvcmFnZUJhc2VVcmw/OiBzdHJpbmdcclxuICAgICAgcGVyc2lzdGVuY2VQcm92aWRlcj86IFR5cGU8RGF0YVBlcnNpc3RlbmNlPlxyXG4gICAgfSxcclxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxyXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckNvbm5lY3RNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyQ29ubmVjdE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogQ0FURUdPUllfU1RSVUNUVVJFLFxyXG4gICAgICAgICAgdXNlQ2xhc3M6XHJcbiAgICAgICAgICAgIGlzTmlsKG9wdGlvbnM/Lm9sZENhdGVnb3J5U3RydWN0dXJlKSB8fCBvcHRpb25zPy5vbGRDYXRlZ29yeVN0cnVjdHVyZVxyXG4gICAgICAgICAgICAgID8gT2xkQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyXHJcbiAgICAgICAgICAgICAgOiBOZXdDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFBFUlNJU1RFTkNFX1BST1ZJREVSLCB1c2VDbGFzczogb3B0aW9ucz8ucGVyc2lzdGVuY2VQcm92aWRlciB8fCBDb29raWVEYXRhUGVyc2lzdGVuY2UgfSxcclxuICAgICAgICAuLi4oaXNOaWwoZGVmYXVsdFNob3ApID8gW10gOiBbeyBwcm92aWRlOiBERUZBVUxUX1NIT1AsIHVzZVZhbHVlOiBkZWZhdWx0U2hvcCB9XSksXHJcbiAgICAgICAgLi4uKGlzTmlsKG9wdGlvbnM/LmZpcmViYXNlKSA/IFtdIDogW3sgcHJvdmlkZTogRklSRUJBU0VfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnM/LmZpcmViYXNlIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uZmlyZWJhc2UpID8gW10gOiBbeyBwcm92aWRlOiBGSVJFQkFTRV9BUFBfTkFNRSwgdXNlVmFsdWU6IG5hbWVPckNvbmZpZyB9XSksXHJcbiAgICAgICAgLi4uKGlzTmlsKG9wdGlvbnM/LmVsYXN0aWNTZWFyY2gpID8gW10gOiBbeyBwcm92aWRlOiBFU19DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zLmVsYXN0aWNTZWFyY2ggfV0pLFxyXG4gICAgICAgIC4uLihpc05pbChvcHRpb25zPy52ZXJ0ZXhDb25maWcpID8gW10gOiBbeyBwcm92aWRlOiBWRVJURVhfQ09ORklHLCB1c2VWYWx1ZTogb3B0aW9ucy52ZXJ0ZXhDb25maWcgfV0pLFxyXG4gICAgICAgIC4uLihpc05pbChvcHRpb25zPy5oYXN1cmEpID8gW10gOiBbeyBwcm92aWRlOiBIQVNVUkFfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMuaGFzdXJhIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uYmFja2VuZFVybCkgPyBbXSA6IFt7IHByb3ZpZGU6IEJBQ0tFTkRfVVJMLCB1c2VWYWx1ZTogb3B0aW9ucy5iYWNrZW5kVXJsIH1dKSxcclxuICAgICAgICAuLi4oaXNOaWwob3B0aW9ucz8uc3RvcmFnZUJhc2VVcmwpID8gW10gOiBbeyBwcm92aWRlOiBTVE9SQUdFX0JBU0VfVVJMLCB1c2VWYWx1ZTogb3B0aW9ucy5zdG9yYWdlQmFzZVVybCB9XSksXHJcbiAgICAgIF0sXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { ProductsVertexSearch, VertexAxiosAdapter } from '@infrab4a/connect';
|
|
3
3
|
import { VERTEX_CONFIG } from './consts';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class AngularVertexSeachModule {
|
|
@@ -15,7 +15,7 @@ AngularVertexSeachModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0"
|
|
|
15
15
|
AngularVertexSeachModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularVertexSeachModule, providers: [
|
|
16
16
|
{
|
|
17
17
|
provide: ProductsVertexSearch,
|
|
18
|
-
useFactory: (configuration) => new ProductsVertexSearch(new
|
|
18
|
+
useFactory: (configuration) => new ProductsVertexSearch(new VertexAxiosAdapter(configuration)),
|
|
19
19
|
deps: [VERTEX_CONFIG],
|
|
20
20
|
},
|
|
21
21
|
] });
|
|
@@ -25,10 +25,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
25
25
|
providers: [
|
|
26
26
|
{
|
|
27
27
|
provide: ProductsVertexSearch,
|
|
28
|
-
useFactory: (configuration) => new ProductsVertexSearch(new
|
|
28
|
+
useFactory: (configuration) => new ProductsVertexSearch(new VertexAxiosAdapter(configuration)),
|
|
29
29
|
deps: [VERTEX_CONFIG],
|
|
30
30
|
},
|
|
31
31
|
],
|
|
32
32
|
}]
|
|
33
33
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci12ZXJ0ZXgtc2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvYW5ndWxhci12ZXJ0ZXgtc2VhcmNoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQXNCLE1BQU0sbUJBQW1CLENBQUE7QUFFaEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7QUFZeEMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQTJCO1FBQzlDLE9BQU87WUFDTCxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDM0QsQ0FBQTtJQUNILENBQUM7O3FIQU5VLHdCQUF3QjtzSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsYUFUeEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsVUFBVSxFQUFFLENBQUMsYUFBaUMsRUFBd0IsRUFBRSxDQUN0RSxJQUFJLG9CQUFvQixDQUFDLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakUsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO1NBQ3RCO0tBQ0Y7MkZBRVUsd0JBQXdCO2tCQVZwQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixVQUFVLEVBQUUsQ0FBQyxhQUFpQyxFQUF3QixFQUFFLENBQ3RFLElBQUksb0JBQW9CLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDakUsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO3lCQUN0QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgUHJvZHVjdHNWZXJ0ZXhTZWFyY2gsIFZlcnRleEF4aW9zQWRhcHRlciwgVmVydGV4U2VhcmNoQ29uZmlnIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBWRVJURVhfQ09ORklHIH0gZnJvbSAnLi9jb25zdHMnXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBQcm9kdWN0c1ZlcnRleFNlYXJjaCxcclxuICAgICAgdXNlRmFjdG9yeTogKGNvbmZpZ3VyYXRpb246IFZlcnRleFNlYXJjaENvbmZpZyk6IFByb2R1Y3RzVmVydGV4U2VhcmNoID0+XHJcbiAgICAgICAgbmV3IFByb2R1Y3RzVmVydGV4U2VhcmNoKG5ldyBWZXJ0ZXhBeGlvc0FkYXB0ZXIoY29uZmlndXJhdGlvbikpLFxyXG4gICAgICBkZXBzOiBbVkVSVEVYX0NPTkZJR10sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmd1bGFyVmVydGV4U2VhY2hNb2R1bGUge1xyXG4gIHN0YXRpYyBpbml0aWFsaXplQXBwKG9wdGlvbnM6IFZlcnRleFNlYXJjaENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhclZlcnRleFNlYWNoTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQW5ndWxhclZlcnRleFNlYWNoTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZFUlRFWF9DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zIH1dLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { InvalidArgumentError,
|
|
2
|
+
import { InvalidArgumentError, RoundProductPricesHelper, set, Shops, Where, } from '@infrab4a/connect';
|
|
3
3
|
import { CATEGORY_STRUCTURE, DEFAULT_SHOP } from '../../consts';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@infrab4a/connect";
|
|
6
6
|
export class CatalogService {
|
|
7
|
-
constructor(productRepository, productStockNotificationRepository, categoryRepository, categoryStructureAdapter, shop,
|
|
8
|
-
// private readonly productIndex: ProductsIndex,
|
|
9
|
-
productVertexSearch) {
|
|
7
|
+
constructor(productRepository, productStockNotificationRepository, categoryRepository, categoryStructureAdapter, shop, productSearch) {
|
|
10
8
|
this.productRepository = productRepository;
|
|
11
9
|
this.productStockNotificationRepository = productStockNotificationRepository;
|
|
12
10
|
this.categoryRepository = categoryRepository;
|
|
13
11
|
this.categoryStructureAdapter = categoryStructureAdapter;
|
|
14
12
|
this.shop = shop;
|
|
15
|
-
this.
|
|
13
|
+
this.productSearch = productSearch;
|
|
16
14
|
this.productsByTerm = {};
|
|
17
15
|
this.buildFilterQuery = ({ clubDiscount, brands, prices, gender, tags, rate, customOptions, }) => {
|
|
18
16
|
const filters = {};
|
|
@@ -75,6 +73,7 @@ export class CatalogService {
|
|
|
75
73
|
throw new InvalidArgumentError(`It couldn't filled tags when profile is given`);
|
|
76
74
|
if (this.hasTerm(options) && options.filters?.customOptions)
|
|
77
75
|
throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`);
|
|
76
|
+
console.log('fetchProducts', options);
|
|
78
77
|
return await this.findCatalog(options, limits).then(({ data, count: total, maximum, minimal, distinct }) => ({
|
|
79
78
|
products: { data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)), total },
|
|
80
79
|
pages: Math.ceil(total / limits.limit),
|
|
@@ -93,7 +92,8 @@ export class CatalogService {
|
|
|
93
92
|
}
|
|
94
93
|
async findCatalog(options, limits) {
|
|
95
94
|
if (this.hasTerm(options) && options.sort === 'most-relevant') {
|
|
96
|
-
|
|
95
|
+
// console.log('Step 1')
|
|
96
|
+
const productsIds = await this.findCatalogIdsBySearch(options.term);
|
|
97
97
|
return this.findCatalogAndSortByMostRevelantByTerm(productsIds, options, limits);
|
|
98
98
|
}
|
|
99
99
|
if (this.hasCategory(options) && options.sort === 'most-relevant') {
|
|
@@ -132,8 +132,8 @@ export class CatalogService {
|
|
|
132
132
|
if (profile)
|
|
133
133
|
return { tags: { operator: Where.LIKE, value: profile } };
|
|
134
134
|
if (term)
|
|
135
|
-
return this.
|
|
136
|
-
.search(term, 999, this.shop)
|
|
135
|
+
return this.productSearch
|
|
136
|
+
.search(term, 999, this.shop == Shops.GLAMSHOP ? 'female' : 'male')
|
|
137
137
|
.then((data) => ({ id: { operator: Where.IN, value: data.map((_source) => _source.id) } }));
|
|
138
138
|
}
|
|
139
139
|
async findCatalogAndSortByMostRevelant(mostRelevants, productIds, options, limits) {
|
|
@@ -168,10 +168,18 @@ export class CatalogService {
|
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
170
|
async findCatalogAndSortByMostRevelantByTerm(productIds, options, limits) {
|
|
171
|
+
// console.log('findCatalogAndSortByMostRevelantByTerm', this.shop, options, limits)
|
|
172
|
+
// console.log(
|
|
173
|
+
// 'productIds from search',
|
|
174
|
+
// productIds.length,
|
|
175
|
+
// 'preview -> ',
|
|
176
|
+
// productIds.slice(limits.offset, limits.offset + limits.limit),
|
|
177
|
+
// )
|
|
171
178
|
const totalResult = await this.productRepository.findCatalog({
|
|
172
|
-
fields: ['id', 'stock'],
|
|
179
|
+
fields: ['id', 'stock', 'gender'],
|
|
173
180
|
filters: {
|
|
174
181
|
id: { operator: Where.IN, value: productIds },
|
|
182
|
+
published: { operator: Where.EQUALS, value: true },
|
|
175
183
|
...this.buildFilterQuery(options?.filters || {}),
|
|
176
184
|
},
|
|
177
185
|
options: {
|
|
@@ -180,19 +188,50 @@ export class CatalogService {
|
|
|
180
188
|
distinct: ['brand'],
|
|
181
189
|
},
|
|
182
190
|
}, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female');
|
|
191
|
+
// const productsTotalResult = totalResult.data.slice(limits.offset, limits.offset + limits.limit)
|
|
192
|
+
// console.log(
|
|
193
|
+
// 'productsTotalResult',
|
|
194
|
+
// productsTotalResult.map((p) => {
|
|
195
|
+
// return {
|
|
196
|
+
// id: p.id,
|
|
197
|
+
// stock: p.stock.quantity,
|
|
198
|
+
// }
|
|
199
|
+
// }),
|
|
200
|
+
// )
|
|
201
|
+
const defaultGender = options?.filters?.gender
|
|
202
|
+
? options?.filters?.gender.at(0)
|
|
203
|
+
: this.shop === Shops.GLAMSHOP
|
|
204
|
+
? 'female'
|
|
205
|
+
: 'male';
|
|
183
206
|
const stockData = totalResult.data.filter((product) => product.stock.quantity > 0);
|
|
184
207
|
const stockOut = totalResult.data.filter((product) => product.stock.quantity <= 0);
|
|
185
|
-
const
|
|
186
|
-
const
|
|
208
|
+
const productIdsStockGender = productIds.filter((product) => stockData.some((result) => result.id === product && (result.gender?.includes(defaultGender) || result.gender?.includes('unisex'))));
|
|
209
|
+
const productIdsStockNotGender = productIds.filter((product) => stockData.some((result) => result.id === product && !result.gender?.includes(defaultGender) && !result.gender?.includes('unisex')));
|
|
210
|
+
const productIdsStock = productIdsStockGender.concat(productIdsStockNotGender);
|
|
211
|
+
const productIdsStockOut = productIds.filter((product) => stockOut.some((result) => result.id === product));
|
|
187
212
|
const limitedProductId = productIdsStock
|
|
188
213
|
.concat(productIdsStockOut)
|
|
189
214
|
.slice(limits.offset, limits.offset + limits.limit);
|
|
215
|
+
// console.log('limitedProductId', limitedProductId)
|
|
190
216
|
const orderedId = productIds.filter((product) => limitedProductId.includes(product));
|
|
191
217
|
const productResult = await this.productRepository.findCatalog({
|
|
192
218
|
filters: {
|
|
193
219
|
id: { operator: Where.IN, value: orderedId },
|
|
194
220
|
},
|
|
195
221
|
});
|
|
222
|
+
const finalResult = limitedProductId
|
|
223
|
+
.map((id) => productResult.data.find((product) => product.id === id))
|
|
224
|
+
.filter(Boolean);
|
|
225
|
+
// console.log(
|
|
226
|
+
// 'finalResult',
|
|
227
|
+
// finalResult.map((p) => {
|
|
228
|
+
// return {
|
|
229
|
+
// id: p.id,
|
|
230
|
+
// name: p.name,
|
|
231
|
+
// brand: p.brand,
|
|
232
|
+
// }
|
|
233
|
+
// }),
|
|
234
|
+
// )
|
|
196
235
|
return {
|
|
197
236
|
data: limitedProductId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),
|
|
198
237
|
count: totalResult.count,
|
|
@@ -201,29 +240,15 @@ export class CatalogService {
|
|
|
201
240
|
distinct: totalResult.distinct,
|
|
202
241
|
};
|
|
203
242
|
}
|
|
204
|
-
|
|
205
|
-
// if (this.productsByTerm[term]) return this.productsByTerm[term]
|
|
206
|
-
// return (this.productsByTerm[term] = await this.productIndex
|
|
207
|
-
// .search(term, 999, this.shop)
|
|
208
|
-
// .then(({ hits: products }) => {
|
|
209
|
-
// const withStock = products.filter(({ _source }) => _source.stock.quantity > 0)
|
|
210
|
-
// const withOutStock = products.filter(({ _source }) => _source.stock.quantity <= 0)
|
|
211
|
-
// const sorted = [...withStock, ...withOutStock]
|
|
212
|
-
// return [...new Set(sorted.map(({ _source }) => _source.id))]
|
|
213
|
-
// }))
|
|
214
|
-
// }
|
|
215
|
-
async findCatalogIdsByVertexAiSearch(term) {
|
|
243
|
+
async findCatalogIdsBySearch(term, preview = false) {
|
|
216
244
|
if (this.productsByTerm[term])
|
|
217
245
|
return this.productsByTerm[term];
|
|
218
|
-
return (this.productsByTerm[term] = await this.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const sorted = [...withStock, ...withOutStock];
|
|
222
|
-
return [...new Set(sorted.map((products) => products.id))];
|
|
223
|
-
}));
|
|
246
|
+
return (this.productsByTerm[term] = await this.productSearch
|
|
247
|
+
.search(term, 999, this.shop == Shops.GLAMSHOP ? 'female' : 'male')
|
|
248
|
+
.then((products) => [...new Set(products.map((product) => product.id))]));
|
|
224
249
|
}
|
|
225
250
|
}
|
|
226
|
-
CatalogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'ProductStockNotificationRepository' }, { token: 'CategoryRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }, { token:
|
|
251
|
+
CatalogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'ProductStockNotificationRepository' }, { token: 'CategoryRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }, { token: 'ProductSearch' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
227
252
|
CatalogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService });
|
|
228
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, decorators: [{
|
|
229
254
|
type: Injectable
|
|
@@ -242,5 +267,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
242
267
|
}] }, { type: i1.Shops, decorators: [{
|
|
243
268
|
type: Inject,
|
|
244
269
|
args: [DEFAULT_SHOP]
|
|
245
|
-
}] }, { type:
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBS3BCLG9CQUFvQixFQUlwQix3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUVqRSxrQ0FBc0UsRUFDeEMsa0JBQXNDLEVBQ3hDLHdCQUFrRCxFQUN4RCxJQUFXO0lBQ2xELGdEQUFnRDtJQUMvQixtQkFBeUM7UUFQWixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRWpFLHVDQUFrQyxHQUFsQyxrQ0FBa0MsQ0FBb0M7UUFDeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN4Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hELFNBQUksR0FBSixJQUFJLENBQU87UUFFakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFzQjtRQVZwRCxtQkFBYyxHQUE2QixFQUFFLENBQUE7UUF5TzdDLHFCQUFnQixHQUFHLENBQUMsRUFDMUIsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osYUFBYSxHQUNRLEVBQW1DLEVBQUU7WUFDMUQsTUFBTSxPQUFPLEdBQUcsRUFBcUMsQ0FBQTtZQUVyRCxJQUFJLFlBQVksRUFBRSxNQUFNO2dCQUN0QixHQUFHLENBQUMsT0FB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SUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEgsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUNqRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3JFLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQTtZQUU5QyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDOzsyR0F4T1UsY0FBYyxrQkFJZixtQkFBbUIsYUFDbkIsb0NBQW9DLGFBRXBDLG9CQUFvQixhQUNwQixrQkFBa0IsYUFDbEIsWUFBWTsrR0FUWCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQUtOLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQ0FBb0M7OzBCQUUzQyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDYXRlZ29yeSxcclxuICBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgRmluZFJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXHJcbiAgUHJvZHVjdCxcclxuICBQcm9kdWN0R2VuZGVyLFxyXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gIFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdHNWZXJ0ZXhTZWFyY2gsXHJcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcclxuICBSZXBvc2l0b3J5RmluZFJlc3VsdCxcclxuICBSZXBvc2l0b3J5T3JkZXJCeSxcclxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXHJcbiAgc2V0LFxyXG4gIFNob3BzLFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgeyBDQVRFR09SWV9TVFJVQ1RVUkUsIERFRkFVTFRfU0hPUCB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcclxuaW1wb3J0IHsgUHJvZHVjdFNvcnQgfSBmcm9tICcuL3R5cGVzL3Byb2R1Y3Qtc29ydC50eXBlJ1xyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcclxuICBjbHViRGlzY291bnQ/OiBudW1iZXJbXVxyXG4gIGJyYW5kcz86IHN0cmluZ1tdXHJcbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XHJcbiAgZ2VuZGVyPzogUHJvZHVjdEdlbmRlcltdXHJcbiAgcmF0ZT86IG51bWJlclxyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxyXG4gIHRhZ3M/OiBzdHJpbmdbXVxyXG59XHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNPcHRpb25zID0ge1xyXG4gIHBhZ2U/OiBudW1iZXJcclxuICBwZXJQYWdlPzogbnVtYmVyXHJcbiAgc29ydD86IFByb2R1Y3RTb3J0XHJcbiAgbWFpbkdlbmRlcj86IFByb2R1Y3RHZW5kZXJcclxufVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUIGV4dGVuZHMgQ2F0ZWdvcnk+ID0ge1xyXG4gIGNhdGVnb3J5PzogVFxyXG4gIHByb2ZpbGU/OiBzdHJpbmdbXVxyXG4gIHRlcm0/OiBzdHJpbmdcclxufVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmXHJcbiAgKFxyXG4gICAgfCB7XHJcbiAgICAgICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXHJcbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXHJcbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXI7IHRhZ3M/OiBuZXZlciB9XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICAgIH1cclxuICApXHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcclxuICBwcm9kdWN0czogeyBkYXRhOiBQcm9kdWN0W107IHRvdGFsOiBudW1iZXIgfVxyXG4gIHBhZ2VzOiBudW1iZXJcclxuICBwcmljZXM6IHtcclxuICAgIHByaWNlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9XHJcbiAgICBzdWJzY3JpYmVyUHJpY2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH1cclxuICB9XHJcbiAgYnJhbmRzPzogc3RyaW5nW11cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2F0YWxvZ1NlcnZpY2U8VCBleHRlbmRzIENhdGVnb3J5ID0gQ2F0ZWdvcnk+IHtcclxuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeTogUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IHNob3A6IFNob3BzLFxyXG4gICAgLy8gcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0SW5kZXg6IFByb2R1Y3RzSW5kZXgsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RWZXJ0ZXhTZWFyY2g6IFByb2R1Y3RzVmVydGV4U2VhcmNoLFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZmV0Y2hQcm9kdWN0cyhvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+KTogUHJvbWlzZTxGZXRjaFByb2R1Y3RzUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGxpbWl0cyA9IHRoaXMuYnVpbGRMaW1pdFF1ZXJ5KG9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LmN1c3RvbU9wdGlvbnMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIGN1c3RvbU9wdGlvbnMgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcclxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCB0YWdzIHdoZW4gcHJvZmlsZSBpcyBnaXZlbmApXHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nKG9wdGlvbnMsIGxpbWl0cykudGhlbigoeyBkYXRhLCBjb3VudDogdG90YWwsIG1heGltdW0sIG1pbmltYWwsIGRpc3RpbmN0IH0pID0+ICh7XHJcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcclxuICAgICAgcGFnZXM6IE1hdGguY2VpbCh0b3RhbCAvIGxpbWl0cy5saW1pdCksXHJcbiAgICAgIHByaWNlczoge1xyXG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXHJcbiAgICAgICAgc3Vic2NyaWJlclByaWNlOiB7XHJcbiAgICAgICAgICBtaW46ICttaW5pbWFsPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkQ3VzdG9tZXJUb1N0b2NrTm90aWZpY2F0aW9uKHNob3A6IFNob3BzLCBwcm9kdWN0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LmFkZEN1c3RvbWVyRW1haWwoc2hvcCwgcHJvZHVjdElkLCBuYW1lLCBlbWFpbClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZ0lkc0J5VmVydGV4QWlTZWFyY2gob3B0aW9ucy50ZXJtKVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnRCeVRlcm0ocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xyXG4gICAgICBjb25zdCBtb3N0UmVsZXZhbnQgPSBvcHRpb25zLmNhdGVnb3J5LmlzV2lzaGxpc3QgPyBbXSA6IG9wdGlvbnMuY2F0ZWdvcnkuZ2V0TW9zdFJlbGV2YW50QnlTaG9wKHRoaXMuc2hvcClcclxuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XHJcbiAgICAgICAgLmZpbmRDYXRhbG9nKHtcclxuICAgICAgICAgIGZpZWxkczogWydpZCddLFxyXG4gICAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxyXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHByb2R1Y3RzKSA9PiBwcm9kdWN0cy5kYXRhLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCkpXHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChtb3N0UmVsZXZhbnQsIHByb2R1Y3RzSWRzLCBvcHRpb25zLCBsaW1pdHMpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVwb1BhcmFtczogRmluZFJlcG9zaXRvcnlQYXJhbXM8UHJvZHVjdD4gPSB7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxyXG4gICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcclxuICAgICAgfSxcclxuICAgICAgLi4uKG9wdGlvbnM/LnNvcnQgPyB7IG9yZGVyQnk6IHRoaXMuYnVpbGRTb3J0UXVlcnkob3B0aW9ucz8uc29ydCkgfSA6IHt9KSxcclxuICAgICAgbGltaXRzLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICAuLi4oIXRoaXMuaGFzQ2F0ZWdvcnkob3B0aW9ucykgPyB7IGRpc3RpbmN0OiBbJ2JyYW5kJ10gfSA6IHt9KSxcclxuICAgICAgfSxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoWydiaWdnZXN0LXByaWNlJywgJ2xvd2VzdC1wcmljZScsICdiaWdnZXN0LWRpc2NvdW50JywgJ2Jlc3QtcmF0aW5nJ10uaW5jbHVkZXMob3B0aW9ucy5zb3J0KSlcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2cocmVwb1BhcmFtcylcclxuXHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAgcmVwb1BhcmFtcyxcclxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRNYWluRmlsdGVyKHtcclxuICAgIGNhdGVnb3J5LFxyXG4gICAgcHJvZmlsZSxcclxuICAgIHRlcm0sXHJcbiAgfTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD4pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4+IHtcclxuICAgIGlmIChjYXRlZ29yeSkgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpXHJcbiAgICBpZiAocHJvZmlsZSkgcmV0dXJuIHsgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSB9XHJcbiAgICBpZiAodGVybSlcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdFZlcnRleFNlYXJjaFxyXG4gICAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXHJcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGRhdGEubWFwKChfc291cmNlKSA9PiBfc291cmNlLmlkKSB9IH0pKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChcclxuICAgIG1vc3RSZWxldmFudHM6IHN0cmluZ1tdLFxyXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10sXHJcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xyXG4gICAgICB0ZXJtPzogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICB9LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyA9IFsuLi5uZXcgU2V0KG1vc3RSZWxldmFudHMuY29uY2F0KHByb2R1Y3RJZHMpKV1cclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KCdiZXN0LXNlbGxlcnMnKSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcblxyXG4gICAgY29uc3QgbW9zdFJlbGV2YW50V2l0aG91eVN0b2NrID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoXHJcbiAgICAgIChwcm9kdWN0KSA9PiBtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpICYmIHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMCxcclxuICAgIClcclxuICAgIGNvbnN0IGZpcnN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXHJcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+IG1vc3RSZWxldmFudHMuaW5jbHVkZXMocHJvZHVjdC5pZCkgJiYgcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBtb3N0UmVsZXZhbnRzLmluZGV4T2YoYS5pZCkgLSBtb3N0UmVsZXZhbnRzLmluZGV4T2YoYi5pZCkpXHJcbiAgICBjb25zdCBsYXN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXHJcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+ICFtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpKVxyXG4gICAgICAuY29uY2F0KG1vc3RSZWxldmFudFdpdGhvdXlTdG9jaylcclxuICAgIGNvbnN0IGNhdGVnb3J5TW9zdFJlbGV2YW50cyA9IGZpcnN0UHJvZHVjdHMuY29uY2F0KGxhc3RQcm9kdWN0cylcclxuICAgIGNvbnN0IHJlc3VsdEZpbmFsID0gY2F0ZWdvcnlNb3N0UmVsZXZhbnRzLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogcmVzdWx0RmluYWwsXHJcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcclxuICAgICAgbWF4aW11bTogdG90YWxSZXN1bHQubWF4aW11bSxcclxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcclxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShcclxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxyXG4gICAgb3B0aW9uczogT21pdDxGZXRjaFByb2R1Y3RzT3B0aW9ucywgJ3NvcnQnPiAmIHtcclxuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgfSxcclxuICAgIGxpbWl0czoge1xyXG4gICAgICBsaW1pdD86IG51bWJlclxyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcclxuICAgIH0sXHJcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgY29uc3QgdG90YWxSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgJ3N0b2NrJ10sXHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxyXG4gICAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxyXG4gICAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IHN0b2NrRGF0YSA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5ID4gMClcclxuICAgIGNvbnN0IHN0b2NrT3V0ID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMClcclxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9jayA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBzdG9ja0RhdGEuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCkpXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCkpXHJcblxyXG4gICAgY29uc3QgbGltaXRlZFByb2R1Y3RJZCA9IHByb2R1Y3RJZHNTdG9ja1xyXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcclxuICAgICAgLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgY29uc3Qgb3JkZXJlZElkID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IGxpbWl0ZWRQcm9kdWN0SWQuaW5jbHVkZXMocHJvZHVjdCkpXHJcbiAgICBjb25zdCBwcm9kdWN0UmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyh7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBvcmRlcmVkSWQgfSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogbGltaXRlZFByb2R1Y3RJZC5tYXAoKGlkKSA9PiBwcm9kdWN0UmVzdWx0LmRhdGEuZmluZCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCA9PT0gaWQpKS5maWx0ZXIoQm9vbGVhbiksXHJcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcclxuICAgICAgbWF4aW11bTogdG90YWxSZXN1bHQubWF4aW11bSxcclxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcclxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0lkc0J5RWxhc3RpY1NlYXJjaCh0ZXJtOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgLy8gICBpZiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSkgcmV0dXJuIHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV1cclxuXHJcbiAgLy8gICByZXR1cm4gKHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV0gPSBhd2FpdCB0aGlzLnByb2R1Y3RJbmRleFxyXG4gIC8vICAgICAuc2VhcmNoKHRlcm0sIDk5OSwgdGhpcy5zaG9wKVxyXG4gIC8vICAgICAudGhlbigoeyBoaXRzOiBwcm9kdWN0cyB9KSA9PiB7XHJcbiAgLy8gICAgICAgY29uc3Qgd2l0aFN0b2NrID0gcHJvZHVjdHMuZmlsdGVyKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgLy8gICAgICAgY29uc3Qgd2l0aE91dFN0b2NrID0gcHJvZHVjdHMuZmlsdGVyKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5zdG9jay5xdWFudGl0eSA8PSAwKVxyXG4gIC8vICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi53aXRoU3RvY2ssIC4uLndpdGhPdXRTdG9ja11cclxuXHJcbiAgLy8gICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHNvcnRlZC5tYXAoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLmlkKSldXHJcbiAgLy8gICAgIH0pKVxyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0lkc0J5VmVydGV4QWlTZWFyY2godGVybTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV0pIHJldHVybiB0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dXHJcblxyXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgdGhpcy5wcm9kdWN0VmVydGV4U2VhcmNoLnNlYXJjaCh0ZXJtLCA5OTksIHRoaXMuc2hvcCkudGhlbigocHJvZHVjdHMpID0+IHtcclxuICAgICAgY29uc3Qgd2l0aFN0b2NrID0gcHJvZHVjdHMuZmlsdGVyKChfc291cmNlKSA9PiBfc291cmNlLnN0b2NrID4gMClcclxuICAgICAgY29uc3Qgd2l0aE91dFN0b2NrID0gcHJvZHVjdHMuZmlsdGVyKChfc291cmNlKSA9PiBfc291cmNlLnN0b2NrIDw9IDApXHJcbiAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi53aXRoU3RvY2ssIC4uLndpdGhPdXRTdG9ja11cclxuXHJcbiAgICAgIHJldHVybiBbLi4ubmV3IFNldChzb3J0ZWQubWFwKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuaWQpKV1cclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZpbHRlclF1ZXJ5ID0gKHtcclxuICAgIGNsdWJEaXNjb3VudCxcclxuICAgIGJyYW5kcyxcclxuICAgIHByaWNlcyxcclxuICAgIGdlbmRlcixcclxuICAgIHRhZ3MsXHJcbiAgICByYXRlLFxyXG4gICAgY3VzdG9tT3B0aW9ucyxcclxuICB9OiBGZXRjaFByb2R1Y3RzRmlsdGVycyk6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4gPT4ge1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHt9IGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD5cclxuXHJcbiAgICBpZiAoY2x1YkRpc2NvdW50Py5sZW5ndGgpXHJcbiAgICAgIHNldChmaWx0ZXJzLCAncHJpY2Uuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsIHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2x1YkRpc2NvdW50IH0pXHJcbiAgICBpZiAoYnJhbmRzPy5sZW5ndGgpIGZpbHRlcnMuYnJhbmQgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGJyYW5kcyB9XHJcbiAgICBpZiAoZ2VuZGVyPy5sZW5ndGgpIGZpbHRlcnMuZ2VuZGVyID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBnZW5kZXIgfVxyXG4gICAgaWYgKHByaWNlcz8ubWluIHx8IHByaWNlcz8ubWF4KVxyXG4gICAgICBzZXQoZmlsdGVycywgcHJpY2VzLnN1YnNjcmliZXJQcmljZSA/ICdwcmljZS5zdWJzY3JpYmVyUHJpY2UnIDogJ3ByaWNlLnByaWNlJywgW1xyXG4gICAgICAgIC4uLihwcmljZXMubWluID8gW3sgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IE1hdGgucm91bmQocHJpY2VzLm1pbikgfV0gOiBbXSksXHJcbiAgICAgICAgLi4uKHByaWNlcy5tYXggPyBbeyBvcGVyYXRvcjogV2hlcmUuTFRFLCB2YWx1ZTogTWF0aC5jZWlsKHByaWNlcy5tYXgpIH1dIDogW10pLFxyXG4gICAgICBdKVxyXG4gICAgaWYgKHJhdGUpIGZpbHRlcnMucmF0ZSA9IHsgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IHJhdGUgfVxyXG4gICAgaWYgKHRhZ3M/Lmxlbmd0aCkgZmlsdGVycy50YWdzID0geyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHRhZ3MgfVxyXG4gICAgaWYgKGN1c3RvbU9wdGlvbnM/Lmxlbmd0aCkgZmlsdGVycy5maWx0ZXJzID0geyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IGN1c3RvbU9wdGlvbnMgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU29ydFF1ZXJ5ID0gKHNvcnQ6IFByb2R1Y3RTb3J0KTogUmVwb3NpdG9yeU9yZGVyQnk8UHJvZHVjdD4gPT4ge1xyXG4gICAgaWYgKCFzb3J0IHx8IHNvcnQgPT09ICdtb3N0LXJlbGV2YW50JykgcmV0dXJuIHt9XHJcblxyXG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXNlbGxlcnMnKVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHNob3BwaW5nQ291bnQ6ICdkZXNjJyxcclxuICAgICAgICByYXRlOiAnZGVzYycsXHJcbiAgICAgICAgc3RvY2s6ICdkZXNjJyxcclxuICAgICAgICBuYW1lOiAnYXNjJyxcclxuICAgICAgfVxyXG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnZGVzYycsIHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH0gYXMgYW55XHJcbiAgICBpZiAoc29ydCA9PT0gJ2xvd2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2FzYycsIHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH0gYXMgYW55XHJcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3QtcmF0aW5nJykgcmV0dXJuIHsgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycsIHN0b2NrOiAnZGVzYycsIG5hbWU6ICdhc2MnIH1cclxuICAgIGlmIChzb3J0ID09PSAnbmV3cycpIHJldHVybiB7IGNyZWF0ZWRBdDogJ2Rlc2MnIH1cclxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1kaXNjb3VudCcpXHJcbiAgICAgIHJldHVybiB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRMaW1pdFF1ZXJ5ID0gKG9wdGlvbnM6IHsgcGFnZT86IG51bWJlcjsgcGVyUGFnZT86IG51bWJlciB9KTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPT4ge1xyXG4gICAgY29uc3QgbGltaXQgPSBvcHRpb25zPy5wZXJQYWdlIHx8IDIwXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGltaXQsXHJcbiAgICAgIG9mZnNldDogKChvcHRpb25zPy5wYWdlIHx8IDEpIC0gMSkgKiBsaW1pdCxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUHJvZmlsZSA9IChcclxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXHJcbiAgKTogb3B0aW9ucyBpcyBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmIHtcclxuICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cclxuICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxyXG4gIH0gPT4gJ3Byb2ZpbGUnIGluIG9wdGlvbnNcclxuXHJcbiAgcHJpdmF0ZSBoYXNUZXJtID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgdGVybTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gIH0gPT4gJ3Rlcm0nIGluIG9wdGlvbnNcclxuXHJcbiAgcHJpdmF0ZSBoYXNDYXRlZ29yeSA9IChcclxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXHJcbiAgKTogb3B0aW9ucyBpcyBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmIHtcclxuICAgIGNhdGVnb3J5OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsnY2F0ZWdvcnknXVxyXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gIH0gPT4gJ2NhdGVnb3J5JyBpbiBvcHRpb25zXHJcbn1cclxuIl19
|
|
270
|
+
}] }, { type: undefined, decorators: [{
|
|
271
|
+
type: Inject,
|
|
272
|
+
args: ['ProductSearch']
|
|
273
|
+
}] }]; } });
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBVXBCLHdCQUF3QixFQUN4QixHQUFHLEVBQ0gsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7OztBQXNEL0QsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFDZ0QsaUJBQW9DLEVBRWpFLGtDQUFzRSxFQUN4QyxrQkFBc0MsRUFDeEMsd0JBQWtELEVBQ3hELElBQVcsRUFDUixhQUFpQztRQU43QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRWpFLHVDQUFrQyxHQUFsQyxrQ0FBa0MsQ0FBb0M7UUFDeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN4Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hELFNBQUksR0FBSixJQUFJLENBQU87UUFDUixrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7UUFUckUsbUJBQWMsR0FBNkIsRUFBRSxDQUFBO1FBOFE3QyxxQkFBZ0IsR0FBRyxDQUFDLEVBQzFCLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxFQUNKLGFBQWEsR0FDUSxFQUFtQyxFQUFFO1lBQzFELE1BQU0sT0FBTyxHQUFHLEVBQXFDLENBQUE7WUFFckQsSUFBSSxZQUFZLEVBQUUsTUFBTTtnQkFDdEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO1lBQ2pHLElBQUksTUFBTSxFQUFFLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtZQUN6RSxJQUFJLE1BQU0sRUFBRSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUE7WUFDMUUsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLE1BQU0sRUFBRSxHQUFHO2dCQUM1QixHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUU7b0JBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMvRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDL0UsQ0FBQyxDQUFBO1lBQ0osSUFBSSxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUE7WUFDN0QsSUFBSSxJQUFJLEVBQUUsTUFBTTtnQkFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO1lBQ3RFLElBQUksYUFBYSxFQUFFLE1BQU07Z0JBQUUsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQTtZQUUzRixPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUE7UUFFTyxtQkFBYyxHQUFHLENBQUMsSUFBaUIsRUFBOEIsRUFBRTtZQUN6RSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxlQUFlO2dCQUFFLE9BQU8sRUFBRSxDQUFBO1lBRWhELElBQUksSUFBSSxLQUFLLGNBQWM7Z0JBQ3pCLE9BQU87b0JBQ0wsYUFBYSxFQUFFLE1BQU07b0JBQ3JCLElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxNQUFNO29CQUNiLElBQUksRUFBRSxLQUFLO2lCQUNaLENBQUE7WUFDSCxJQUFJLElBQUksS0FBSyxlQUFlO2dCQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBUyxDQUFBO1lBQzVHLElBQUksSUFBSSxLQUFLLGNBQWM7Z0JBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFTLENBQUE7WUFDMUcsSUFBSSxJQUFJLEtBQUssYUFBYTtnQkFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFBO1lBQ3RHLElBQUksSUFBSSxLQUFLLE1BQU07Z0JBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQTtZQUNqRCxJQUFJLElBQUksS0FBSyxrQkFBa0I7Z0JBQzdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFTLENBQUE7UUFDL0YsQ0FBQyxDQUFBO1FBRU8sb0JBQWUsR0FBRyxDQUFDLE9BQTRDLEVBQXVDLEVBQUU7WUFDOUcsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7WUFFcEMsT0FBTztnQkFDTCxLQUFLO2dCQUNMLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLO2FBQzNDLENBQUE7UUFDSCxDQUFDLENBQUE7UUFFTyxlQUFVLEdBQUcsQ0FDbkIsT0FBK0IsRUFJL0IsRUFBRSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUE7UUFFakIsWUFBTyxHQUFHLENBQ2hCLE9BQStCLEVBSS9CLEVBQUUsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFBO1FBRWQsZ0JBQVcsR0FBRyxDQUNwQixPQUErQixFQUkvQixFQUFFLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQTtJQTdVdkIsQ0FBQztJQUVKLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBK0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU1QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhO1lBQzVELE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx3REFBd0QsQ0FBQyxDQUFBO1FBQzFGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUk7WUFDbkQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLCtDQUErQyxDQUFDLENBQUE7UUFDakYsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYTtZQUN6RCxNQUFNLElBQUksb0JBQW9CLENBQUMscURBQXFELENBQUMsQ0FBQTtRQUV2RixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNyQyxPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtZQUN0RyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN0QyxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0YsZUFBZSxFQUFFO29CQUNmLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ2pELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ2xEO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLDhCQUE4QixDQUFDLElBQVcsRUFBRSxTQUFpQixFQUFFLElBQVksRUFBRSxLQUFhO1FBQzlGLE9BQU8sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVyxDQUN2QixPQUErQixFQUMvQixNQUdDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFO1lBQzdELHdCQUF3QjtZQUN4QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFbkUsT0FBTyxJQUFJLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtTQUNqRjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUNqRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN6RyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUI7aUJBQzdDLFdBQVcsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2lCQUNqRDthQUNGLENBQUM7aUJBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFakUsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDekY7UUFFRCxNQUFNLFVBQVUsR0FBa0M7WUFDaEQsT0FBTyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ2pEO1lBQ0QsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxNQUFNO1lBQ04sT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUMvRDtTQUNGLENBQUE7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUM3RixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFdkQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUN2QyxVQUFVLEVBQ1YsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUMxRSxDQUFBO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFDNUIsUUFBUSxFQUNSLE9BQU8sRUFDUCxJQUFJLEdBQ3VCO1FBQzNCLElBQUksUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3pGLElBQUksT0FBTztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUN0RSxJQUFJLElBQUk7WUFDTixPQUFPLElBQUksQ0FBQyxhQUFhO2lCQUN0QixNQUFNLENBQVUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUMzRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDakcsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FDNUMsYUFBdUIsRUFDdkIsVUFBb0IsRUFDcEIsT0FHQyxFQUNELE1BR0M7UUFFRCxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzFEO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtnQkFDMUQsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDakQ7WUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDNUMsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDcEI7U0FDRixFQUNELE9BQU8sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDMUUsQ0FBQTtRQUVELE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3RELENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQy9FLENBQUE7UUFDRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSTthQUNuQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzthQUNyRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzVFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN4RCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNuQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDaEUsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFNUYsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztZQUN4QixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87WUFDNUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtTQUMvQixDQUFBO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQ0FBc0MsQ0FDbEQsVUFBb0IsRUFDcEIsT0FHQyxFQUNELE1BR0M7UUFFRCxvRkFBb0Y7UUFDcEYsZUFBZTtRQUNmLDhCQUE4QjtRQUM5Qix1QkFBdUI7UUFDdkIsbUJBQW1CO1FBQ25CLG1FQUFtRTtRQUNuRSxJQUFJO1FBQ0osTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUMxRDtZQUNFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO1lBQ2pDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUM3QyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNsRCxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUNqRDtZQUNELE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ3BCO1NBQ0YsRUFDRCxPQUFPLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzFFLENBQUE7UUFFRCxrR0FBa0c7UUFDbEcsZUFBZTtRQUNmLDJCQUEyQjtRQUMzQixxQ0FBcUM7UUFDckMsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixpQ0FBaUM7UUFDakMsUUFBUTtRQUNSLFFBQVE7UUFDUixJQUFJO1FBRUosTUFBTSxhQUFhLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNO1lBQzVDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRO2dCQUM5QixDQUFDLENBQUMsUUFBUTtnQkFDVixDQUFDLENBQUMsTUFBTSxDQUFBO1FBRVYsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUMxRCxTQUFTLENBQUMsSUFBSSxDQUNaLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxNQUFNLENBQUMsRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ3pHLENBQ0YsQ0FBQTtRQUNELE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdELFNBQVMsQ0FBQyxJQUFJLENBQ1osQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxFQUFFLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FDekcsQ0FDRixDQUFBO1FBQ0QsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFM0csTUFBTSxnQkFBZ0IsR0FBRyxlQUFlO2FBQ3JDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzthQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVyRCxvREFBb0Q7UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFcEYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDO1lBQzdELE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2FBQzdDO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDcEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWxCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsNkJBQTZCO1FBQzdCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4QixRQUFRO1FBQ1IsUUFBUTtRQUNSLElBQUk7UUFFSixPQUFPO1lBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzNHLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztZQUN4QixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87WUFDNUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtTQUMvQixDQUFBO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsVUFBbUIsS0FBSztRQUN6RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRS9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWE7YUFDekQsTUFBTSxDQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDakYsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQzs7MkdBN1FVLGNBQWMsa0JBSWYsbUJBQW1CLGFBQ25CLG9DQUFvQyxhQUVwQyxvQkFBb0IsYUFDcEIsa0JBQWtCLGFBQ2xCLFlBQVksYUFDWixlQUFlOytHQVZkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBS04sTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG9DQUFvQzs7MEJBRTNDLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcclxuICBQcm9kdWN0LFxyXG4gIFByb2R1Y3RHZW5kZXIsXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFNlYXJjaCxcclxuICBQcm9kdWN0U2VhcmNoSW5kZXgsXHJcbiAgUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcclxuICBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzLFxyXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxyXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxyXG4gIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlcixcclxuICBzZXQsXHJcbiAgU2hvcHMsXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xyXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzJ1xyXG5pbXBvcnQgeyBQcm9kdWN0U29ydCB9IGZyb20gJy4vdHlwZXMvcHJvZHVjdC1zb3J0LnR5cGUnXHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNGaWx0ZXJzID0ge1xyXG4gIGNsdWJEaXNjb3VudD86IG51bWJlcltdXHJcbiAgYnJhbmRzPzogc3RyaW5nW11cclxuICBwcmljZXM/OiB7IG1pbj86IG51bWJlcjsgbWF4PzogbnVtYmVyOyBzdWJzY3JpYmVyUHJpY2U/OiBib29sZWFuIH1cclxuICBnZW5kZXI/OiBQcm9kdWN0R2VuZGVyW11cclxuICByYXRlPzogbnVtYmVyXHJcbiAgY3VzdG9tT3B0aW9ucz86IHN0cmluZ1tdXHJcbiAgdGFncz86IHN0cmluZ1tdXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c09wdGlvbnMgPSB7XHJcbiAgcGFnZT86IG51bWJlclxyXG4gIHBlclBhZ2U/OiBudW1iZXJcclxuICBzb3J0PzogUHJvZHVjdFNvcnRcclxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxyXG59XHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XHJcbiAgY2F0ZWdvcnk/OiBUXHJcbiAgcHJvZmlsZT86IHN0cmluZ1tdXHJcbiAgdGVybT86IHN0cmluZ1xyXG59XHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcclxuICAoXHJcbiAgICB8IHtcclxuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cclxuICAgICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cclxuICAgICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgdGVybTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gIClcclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c1Jlc3BvbnNlID0ge1xyXG4gIHByb2R1Y3RzOiB7IGRhdGE6IFByb2R1Y3RbXTsgdG90YWw6IG51bWJlciB9XHJcbiAgcGFnZXM6IG51bWJlclxyXG4gIHByaWNlczoge1xyXG4gICAgcHJpY2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH1cclxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxyXG4gIH1cclxuICBicmFuZHM/OiBzdHJpbmdbXVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xyXG4gIHByaXZhdGUgcHJvZHVjdHNCeVRlcm06IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1Byb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnknKVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5OiBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoQ0FURUdPUllfU1RSVUNUVVJFKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5U3RydWN0dXJlQWRhcHRlcjogQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgc2hvcDogU2hvcHMsXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0U2VhcmNoJykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VhcmNoOiBQcm9kdWN0U2VhcmNoSW5kZXgsXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBmZXRjaFByb2R1Y3RzKG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4pOiBQcm9taXNlPEZldGNoUHJvZHVjdHNSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5oYXNQcm9maWxlKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxyXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LnRhZ3MpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIHRhZ3Mgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcclxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCBjdXN0b21PcHRpb25zIHdoZW4gdGVybSBpcyBnaXZlbmApXHJcblxyXG4gICAgY29uc29sZS5sb2coJ2ZldGNoUHJvZHVjdHMnLCBvcHRpb25zKVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZENhdGFsb2cob3B0aW9ucywgbGltaXRzKS50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4gKHtcclxuICAgICAgcHJvZHVjdHM6IHsgZGF0YTogZGF0YS5tYXAoKHByb2R1Y3QpID0+IFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMocHJvZHVjdCkpLCB0b3RhbCB9LFxyXG4gICAgICBwYWdlczogTWF0aC5jZWlsKHRvdGFsIC8gbGltaXRzLmxpbWl0KSxcclxuICAgICAgcHJpY2VzOiB7XHJcbiAgICAgICAgcHJpY2U6IHsgbWluOiArbWluaW1hbD8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpLCBtYXg6ICttYXhpbXVtPy5wcmljZT8ucHJpY2U/LnRvRml4ZWQoMikgfSxcclxuICAgICAgICBzdWJzY3JpYmVyUHJpY2U6IHtcclxuICAgICAgICAgIG1pbjogK21pbmltYWw/LnByaWNlPy5zdWJzY3JpYmVyUHJpY2U/LnRvRml4ZWQoMiksXHJcbiAgICAgICAgICBtYXg6ICttYXhpbXVtPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIGJyYW5kczogZGlzdGluY3Q/LmJyYW5kLFxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRDdXN0b21lclRvU3RvY2tOb3RpZmljYXRpb24oc2hvcDogU2hvcHMsIHByb2R1Y3RJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnkuYWRkQ3VzdG9tZXJFbWFpbChzaG9wLCBwcm9kdWN0SWQsIG5hbWUsIGVtYWlsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZyhcclxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXHJcbiAgICBsaW1pdHM6IHtcclxuICAgICAgbGltaXQ/OiBudW1iZXJcclxuICAgICAgb2Zmc2V0PzogbnVtYmVyXHJcbiAgICB9LFxyXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcclxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5zb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ1N0ZXAgMScpXHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZ0lkc0J5U2VhcmNoKG9wdGlvbnMudGVybSlcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50QnlUZXJtKHByb2R1Y3RzSWRzLCBvcHRpb25zLCBsaW1pdHMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzQ2F0ZWdvcnkob3B0aW9ucykgJiYgb3B0aW9ucy5zb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHtcclxuICAgICAgY29uc3QgbW9zdFJlbGV2YW50ID0gb3B0aW9ucy5jYXRlZ29yeS5pc1dpc2hsaXN0ID8gW10gOiBvcHRpb25zLmNhdGVnb3J5LmdldE1vc3RSZWxldmFudEJ5U2hvcCh0aGlzLnNob3ApXHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxyXG4gICAgICAgIC5maW5kQ2F0YWxvZyh7XHJcbiAgICAgICAgICBmaWVsZHM6IFsnaWQnXSxcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcclxuICAgICAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQobW9zdFJlbGV2YW50LCBwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlcG9QYXJhbXM6IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3Q+ID0ge1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcclxuICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLihvcHRpb25zPy5zb3J0ID8geyBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KG9wdGlvbnM/LnNvcnQpIH0gOiB7fSksXHJcbiAgICAgIGxpbWl0cyxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgLi4uKCF0aGlzLmhhc0NhdGVnb3J5KG9wdGlvbnMpID8geyBkaXN0aW5jdDogWydicmFuZCddIH0gOiB7fSksXHJcbiAgICAgIH0sXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFsnYmlnZ2VzdC1wcmljZScsICdsb3dlc3QtcHJpY2UnLCAnYmlnZ2VzdC1kaXNjb3VudCcsICdiZXN0LXJhdGluZyddLmluY2x1ZGVzKG9wdGlvbnMuc29ydCkpXHJcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHJlcG9QYXJhbXMpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHJlcG9QYXJhbXMsXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGJ1aWxkTWFpbkZpbHRlcih7XHJcbiAgICBjYXRlZ29yeSxcclxuICAgIHByb2ZpbGUsXHJcbiAgICB0ZXJtLFxyXG4gIH06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+PiB7XHJcbiAgICBpZiAoY2F0ZWdvcnkpIHJldHVybiB0aGlzLmNhdGVnb3J5U3RydWN0dXJlQWRhcHRlci5idWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5KVxyXG4gICAgaWYgKHByb2ZpbGUpIHJldHVybiB7IHRhZ3M6IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBwcm9maWxlIH0gfVxyXG4gICAgaWYgKHRlcm0pXHJcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RTZWFyY2hcclxuICAgICAgICAuc2VhcmNoPFByb2R1Y3Q+KHRlcm0sIDk5OSwgdGhpcy5zaG9wID09IFNob3BzLkdMQU1TSE9QID8gJ2ZlbWFsZScgOiAnbWFsZScpXHJcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGRhdGEubWFwKChfc291cmNlKSA9PiBfc291cmNlLmlkKSB9IH0pKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChcclxuICAgIG1vc3RSZWxldmFudHM6IHN0cmluZ1tdLFxyXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10sXHJcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xyXG4gICAgICB0ZXJtPzogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICB9LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyA9IFsuLi5uZXcgU2V0KG1vc3RSZWxldmFudHMuY29uY2F0KHByb2R1Y3RJZHMpKV1cclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KCdiZXN0LXNlbGxlcnMnKSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcblxyXG4gICAgY29uc3QgbW9zdFJlbGV2YW50V2l0aG91eVN0b2NrID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoXHJcbiAgICAgIChwcm9kdWN0KSA9PiBtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpICYmIHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMCxcclxuICAgIClcclxuICAgIGNvbnN0IGZpcnN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXHJcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+IG1vc3RSZWxldmFudHMuaW5jbHVkZXMocHJvZHVjdC5pZCkgJiYgcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBtb3N0UmVsZXZhbnRzLmluZGV4T2YoYS5pZCkgLSBtb3N0UmVsZXZhbnRzLmluZGV4T2YoYi5pZCkpXHJcbiAgICBjb25zdCBsYXN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXHJcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+ICFtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpKVxyXG4gICAgICAuY29uY2F0KG1vc3RSZWxldmFudFdpdGhvdXlTdG9jaylcclxuICAgIGNvbnN0IGNhdGVnb3J5TW9zdFJlbGV2YW50cyA9IGZpcnN0UHJvZHVjdHMuY29uY2F0KGxhc3RQcm9kdWN0cylcclxuICAgIGNvbnN0IHJlc3VsdEZpbmFsID0gY2F0ZWdvcnlNb3N0UmVsZXZhbnRzLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogcmVzdWx0RmluYWwsXHJcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcclxuICAgICAgbWF4aW11bTogdG90YWxSZXN1bHQubWF4aW11bSxcclxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcclxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShcclxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxyXG4gICAgb3B0aW9uczogT21pdDxGZXRjaFByb2R1Y3RzT3B0aW9ucywgJ3NvcnQnPiAmIHtcclxuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgfSxcclxuICAgIGxpbWl0czoge1xyXG4gICAgICBsaW1pdD86IG51bWJlclxyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcclxuICAgIH0sXHJcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2ZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50QnlUZXJtJywgdGhpcy5zaG9wLCBvcHRpb25zLCBsaW1pdHMpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgIC8vICAgJ3Byb2R1Y3RJZHMgZnJvbSBzZWFyY2gnLFxyXG4gICAgLy8gICBwcm9kdWN0SWRzLmxlbmd0aCxcclxuICAgIC8vICAgJ3ByZXZpZXcgLT4gJyxcclxuICAgIC8vICAgcHJvZHVjdElkcy5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KSxcclxuICAgIC8vIClcclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jaycsICdnZW5kZXInXSxcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0SWRzIH0sXHJcbiAgICAgICAgICBwdWJsaXNoZWQ6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICAgIGRpc3RpbmN0OiBbJ2JyYW5kJ10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcclxuICAgIClcclxuXHJcbiAgICAvLyBjb25zdCBwcm9kdWN0c1RvdGFsUmVzdWx0ID0gdG90YWxSZXN1bHQuZGF0YS5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxyXG4gICAgLy8gY29uc29sZS5sb2coXHJcbiAgICAvLyAgICdwcm9kdWN0c1RvdGFsUmVzdWx0JyxcclxuICAgIC8vICAgcHJvZHVjdHNUb3RhbFJlc3VsdC5tYXAoKHApID0+IHtcclxuICAgIC8vICAgICByZXR1cm4ge1xyXG4gICAgLy8gICAgICAgaWQ6IHAuaWQsXHJcbiAgICAvLyAgICAgICBzdG9jazogcC5zdG9jay5xdWFudGl0eSxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pLFxyXG4gICAgLy8gKVxyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRHZW5kZXIgPSBvcHRpb25zPy5maWx0ZXJzPy5nZW5kZXJcclxuICAgICAgPyBvcHRpb25zPy5maWx0ZXJzPy5nZW5kZXIuYXQoMClcclxuICAgICAgOiB0aGlzLnNob3AgPT09IFNob3BzLkdMQU1TSE9QXHJcbiAgICAgID8gJ2ZlbWFsZSdcclxuICAgICAgOiAnbWFsZSdcclxuXHJcbiAgICBjb25zdCBzdG9ja0RhdGEgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICBjb25zdCBzdG9ja091dCA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tHZW5kZXIgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT5cclxuICAgICAgc3RvY2tEYXRhLnNvbWUoXHJcbiAgICAgICAgKHJlc3VsdCkgPT5cclxuICAgICAgICAgIHJlc3VsdC5pZCA9PT0gcHJvZHVjdCAmJiAocmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoZGVmYXVsdEdlbmRlcikgfHwgcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoJ3VuaXNleCcpKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja05vdEdlbmRlciA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PlxyXG4gICAgICBzdG9ja0RhdGEuc29tZShcclxuICAgICAgICAocmVzdWx0KSA9PlxyXG4gICAgICAgICAgcmVzdWx0LmlkID09PSBwcm9kdWN0ICYmICFyZXN1bHQuZ2VuZGVyPy5pbmNsdWRlcyhkZWZhdWx0R2VuZGVyKSAmJiAhcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoJ3VuaXNleCcpLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkc1N0b2NrR2VuZGVyLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tOb3RHZW5kZXIpXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT09IHByb2R1Y3QpKVxyXG5cclxuICAgIGNvbnN0IGxpbWl0ZWRQcm9kdWN0SWQgPSBwcm9kdWN0SWRzU3RvY2tcclxuICAgICAgLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tPdXQpXHJcbiAgICAgIC5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdsaW1pdGVkUHJvZHVjdElkJywgbGltaXRlZFByb2R1Y3RJZClcclxuICAgIGNvbnN0IG9yZGVyZWRJZCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxyXG5cclxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG9yZGVyZWRJZCB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBmaW5hbFJlc3VsdCA9IGxpbWl0ZWRQcm9kdWN0SWRcclxuICAgICAgLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgIC8vICAgJ2ZpbmFsUmVzdWx0JyxcclxuICAgIC8vICAgZmluYWxSZXN1bHQubWFwKChwKSA9PiB7XHJcbiAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgIC8vICAgICAgIGlkOiBwLmlkLFxyXG4gICAgLy8gICAgICAgbmFtZTogcC5uYW1lLFxyXG4gICAgLy8gICAgICAgYnJhbmQ6IHAuYnJhbmQsXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KSxcclxuICAgIC8vIClcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcclxuICAgICAgY291bnQ6IHRvdGFsUmVzdWx0LmNvdW50LFxyXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxyXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxyXG4gICAgICBkaXN0aW5jdDogdG90YWxSZXN1bHQuZGlzdGluY3QsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nSWRzQnlTZWFyY2godGVybTogc3RyaW5nLCBwcmV2aWV3OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICBpZiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSkgcmV0dXJuIHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV1cclxuXHJcbiAgICByZXR1cm4gKHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV0gPSBhd2FpdCB0aGlzLnByb2R1Y3RTZWFyY2hcclxuICAgICAgLnNlYXJjaDxQcm9kdWN0U2VhcmNoPih0ZXJtLCA5OTksIHRoaXMuc2hvcCA9PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1hbGUnIDogJ21hbGUnKVxyXG4gICAgICAudGhlbigocHJvZHVjdHMpID0+IFsuLi5uZXcgU2V0KHByb2R1Y3RzLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCkpXSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlsdGVyUXVlcnkgPSAoe1xyXG4gICAgY2x1YkRpc2NvdW50LFxyXG4gICAgYnJhbmRzLFxyXG4gICAgcHJpY2VzLFxyXG4gICAgZ2VuZGVyLFxyXG4gICAgdGFncyxcclxuICAgIHJhdGUsXHJcbiAgICBjdXN0b21PcHRpb25zLFxyXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0ge30gYXMgUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PlxyXG5cclxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcclxuICAgICAgc2V0KGZpbHRlcnMsICdwcmljZS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlJywgeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjbHViRGlzY291bnQgfSlcclxuICAgIGlmIChicmFuZHM/Lmxlbmd0aCkgZmlsdGVycy5icmFuZCA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogYnJhbmRzIH1cclxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XHJcbiAgICBpZiAocHJpY2VzPy5taW4gfHwgcHJpY2VzPy5tYXgpXHJcbiAgICAgIHNldChmaWx0ZXJzLCBwcmljZXMuc3Vic2NyaWJlclByaWNlID8gJ3ByaWNlLnN1YnNjcmliZXJQcmljZScgOiAncHJpY2UucHJpY2UnLCBbXHJcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5yb3VuZChwcmljZXMubWluKSB9XSA6IFtdKSxcclxuICAgICAgICAuLi4ocHJpY2VzLm1heCA/IFt7IG9wZXJhdG9yOiBXaGVyZS5MVEUsIHZhbHVlOiBNYXRoLmNlaWwocHJpY2VzLm1heCkgfV0gOiBbXSksXHJcbiAgICAgIF0pXHJcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XHJcbiAgICBpZiAodGFncz8ubGVuZ3RoKSBmaWx0ZXJzLnRhZ3MgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogdGFncyB9XHJcbiAgICBpZiAoY3VzdG9tT3B0aW9ucz8ubGVuZ3RoKSBmaWx0ZXJzLmZpbHRlcnMgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogY3VzdG9tT3B0aW9ucyB9XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTb3J0UXVlcnkgPSAoc29ydDogUHJvZHVjdFNvcnQpOiBSZXBvc2l0b3J5T3JkZXJCeTxQcm9kdWN0PiA9PiB7XHJcbiAgICBpZiAoIXNvcnQgfHwgc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSByZXR1cm4ge31cclxuXHJcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3Qtc2VsbGVycycpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLFxyXG4gICAgICAgIHJhdGU6ICdkZXNjJyxcclxuICAgICAgICBzdG9jazogJ2Rlc2MnLFxyXG4gICAgICAgIG5hbWU6ICdhc2MnLFxyXG4gICAgICB9XHJcbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcclxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcclxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1yYXRpbmcnKSByZXR1cm4geyByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJywgc3RvY2s6ICdkZXNjJywgbmFtZTogJ2FzYycgfVxyXG4gICAgaWYgKHNvcnQgPT09ICduZXdzJykgcmV0dXJuIHsgY3JlYXRlZEF0OiAnZGVzYycgfVxyXG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LWRpc2NvdW50JylcclxuICAgICAgcmV0dXJuIHsgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZExpbWl0UXVlcnkgPSAob3B0aW9uczogeyBwYWdlPzogbnVtYmVyOyBwZXJQYWdlPzogbnVtYmVyIH0pOiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSA9PiB7XHJcbiAgICBjb25zdCBsaW1pdCA9IG9wdGlvbnM/LnBlclBhZ2UgfHwgMjBcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsaW1pdCxcclxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQcm9maWxlID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgcHJvZmlsZTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Byb2ZpbGUnXVxyXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXI7IHRhZ3M/OiBuZXZlciB9XHJcbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc1Rlcm0gPSAoXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XHJcbiAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAndGVybScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAnY2F0ZWdvcnknIGluIG9wdGlvbnNcclxufVxyXG4iXX0=
|