@infrab4a/connect-angular 5.0.0-beta.93 → 5.0.0-beta.94

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.
@@ -1,15 +1,13 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
- import { HasuraGraphQLAuthOptions } from '@infrab4a/connect';
2
+ import { CacheConfig, HasuraGraphQLAuthOptions } from '@infrab4a/connect';
3
3
  import * as i0 from "@angular/core";
4
4
  export type HasuraGraphQLOptions = {
5
5
  endpoint: string;
6
6
  credentials?: HasuraGraphQLAuthOptions;
7
+ cache?: CacheConfig;
7
8
  };
8
9
  export declare class AngularHasuraGraphQLModule {
9
- static initializeApp(options: {
10
- endpoint: string;
11
- credentials: HasuraGraphQLAuthOptions;
12
- }): ModuleWithProviders<AngularHasuraGraphQLModule>;
10
+ static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule>;
13
11
  static ɵfac: i0.ɵɵFactoryDeclaration<AngularHasuraGraphQLModule, never>;
14
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<AngularHasuraGraphQLModule, never, never, never>;
15
13
  static ɵinj: i0.ɵɵInjectorDeclaration<AngularHasuraGraphQLModule>;
@@ -18,6 +18,7 @@ export class AngularHasuraGraphQLModule {
18
18
  useFactory: (options, platformId) => ({
19
19
  endpoint: options.endpoint,
20
20
  authOptions: options.credentials,
21
+ cache: options.cache,
21
22
  interceptors: {
22
23
  request: (request) => {
23
24
  if (isPlatformBrowser(platformId))
@@ -177,6 +178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
177
178
  useFactory: (options, platformId) => ({
178
179
  endpoint: options.endpoint,
179
180
  authOptions: options.credentials,
181
+ cache: options.cache,
180
182
  interceptors: {
181
183
  request: (request) => {
182
184
  if (isPlatformBrowser(platformId))
@@ -328,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
328
330
  ],
329
331
  }]
330
332
  }] });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2FuZ3VsYXItaGFzdXJhLWdyYXBocWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ25ELE9BQU8sRUFBdUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRSxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELHFDQUFxQyxFQUVyQywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBRXRDLDZCQUE2QixFQUM3QixtQ0FBbUMsRUFPbkMsb0NBQW9DLEVBRXBDLDhCQUE4QixFQUU5QixvQ0FBb0MsRUFFcEMsK0NBQStDLEVBRS9DLDhCQUE4QixFQUU5QiwrQkFBK0IsR0FDaEMsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBOztBQW1MekMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BR3BCO1FBQ0MsT0FBTztZQUNMLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUM1RCxDQUFBO0lBQ0gsQ0FBQzs4R0FUVSwwQkFBMEI7K0dBQTFCLDBCQUEwQjsrR0FBMUIsMEJBQTBCLGFBOUsxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxPQUE2QixFQUFFLFVBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDMUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUNoQyxZQUFZLEVBQUU7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LEVBQUUsc0NBQXNDO3lCQUNwRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxVQUFVLEVBQUUsQ0FDVixPQUFZLEVBQ1oseUJBQWlFLEVBQ2hDLEVBQUU7Z0NBQ25DLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQTs0QkFDaEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsc0NBQXNDLENBQUM7eUJBQy9EO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsRUFBRSwrQkFBK0I7eUJBQzdDO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxvQ0FBb0M7NEJBQzdDLFVBQVUsRUFBRSxDQUNWLE9BQStDLEVBQy9DLGlCQUFpRCxFQUN4QixFQUFFO2dDQUMzQixPQUFPLElBQUksb0NBQW9DLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7NEJBQzdFLENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLDhCQUE4QixDQUFDO3lCQUN2RDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxXQUFXLEVBQUUsb0NBQW9DO3lCQUNsRDtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBGaWx0ZXJPcHRpb25SZXBvc2l0b3J5LFxuICBGaWx0ZXJSZXBvc2l0b3J5LFxuICBHcmFwaFFMUGFyYW1zLFxuICBIYXN1cmFDb25zdHJ1Y3RvclBhcmFtcyxcbiAgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zLFxuICBQcm9kdWN0RXJyb3JzLFxuICBQcm9kdWN0RXJyb3JzSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RFcnJvcnNSZXBvc2l0b3J5LFxuICBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBQcm9kdWN0UmV2aWV3SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXZpZXdSZXBvc2l0b3J5LFxuICBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcbiAgVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbiAgV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBIQVNVUkFfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xuXG5leHBvcnQgdHlwZSBIYXN1cmFHcmFwaFFMT3B0aW9ucyA9IHsgZW5kcG9pbnQ6IHN0cmluZzsgY3JlZGVudGlhbHM/OiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnMgfVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiAnSGFzdXJhQ29uZmlnJyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBIYXN1cmFHcmFwaFFMT3B0aW9ucywgcGxhdGZvcm1JZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICBlbmRwb2ludDogb3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgYXV0aE9wdGlvbnM6IG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgIGludGVyY2VwdG9yczoge1xuICAgICAgICAgIHJlcXVlc3Q6IChyZXF1ZXN0OiBHcmFwaFFMUGFyYW1zPGFueT4gJiB7IGludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHJldHVybiByZXF1ZXN0XG5cbiAgICAgICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge30sIDEwMClcblxuICAgICAgICAgICAgcmVxdWVzdC5pbnRlcnZhbCA9IGludGVydmFsXG5cbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZTogKHJlc3BvbnNlOiBhbnksIHJlcXVlc3Q6IEdyYXBoUUxQYXJhbXM8YW55PiAmIHsgaW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHJlc3BvbnNlXG5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVxdWVzdC5pbnRlcnZhbClcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgZGVwczogW0hBU1VSQV9PUFRJT05TLCBQTEFURk9STV9JRF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2F0ZWdvcnlSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBDYXRlZ29yeUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogYW55LFxuICAgICAgICBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgICBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICApOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkob3B0aW9ucywgcHJvZHVjdFJlcG9zaXRvcnksIGNhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZycsIFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSwgQ2F0ZWdvcnlGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChoYXN1cmFDb25maWc6IGFueSk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkoaGFzdXJhQ29uZmlnKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFJldmlld1JlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFByb2R1Y3RSZXZpZXdIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RSZXZpZXdIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChoYXN1cmFDb25maWc6IGFueSk6IFByb2R1Y3RSZXZpZXdSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0UmV2aWV3SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkoaGFzdXJhQ29uZmlnKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVmFyaWFudFJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFZhcmlhbnRIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFZhcmlhbnRIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChoYXN1cmFDb25maWc6IGFueSk6IFZhcmlhbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWYXJpYW50SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkoaGFzdXJhQ29uZmlnKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChoYXN1cmFDb25maWc6IGFueSk6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KGhhc3VyYUNvbmZpZylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogQ2F0ZWdvcnlGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogYW55KTogQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdGaWx0ZXJPcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IGFueSk6IEZpbHRlck9wdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdGaWx0ZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBvcHRpb25zOiBhbnksXG4gICAgICAgIGZpbHRlck9wdGlvblJlcG9zaXRvcnk6IEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgICBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICApOiBGaWx0ZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zLCBmaWx0ZXJPcHRpb25SZXBvc2l0b3J5LCBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnLCBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSwgQ2F0ZWdvcnlGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IGFueSk6IENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkgPT5cbiAgICAgICAgbmV3IENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkob3B0aW9ucyksXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogQ2F0ZWdvcnlDb2xsZWN0aW9uQ2hpbGRyZW5IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IENhdGVnb3J5UHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IGFueSk6IENhdGVnb3J5UHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeVByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2F0ZWdvcnlQcm9kdWN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogQ2F0ZWdvcnlQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBXaXNobGlzdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBvcHRpb25zOiBhbnksXG4gICAgICAgIGNhdGVnb3J5UHJvZHVjdFJlcG9zaXRvcnk6IENhdGVnb3J5UHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgKTogV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zLCBjYXRlZ29yeVByb2R1Y3RSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJywgQ2F0ZWdvcnlQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnldLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1dpc2hsaXN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RFcnJvcnNIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogSGFzdXJhQ29uc3RydWN0b3JQYXJhbXM8UHJvZHVjdEVycm9ycz4sXG4gICAgICAgIHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICApOiBQcm9kdWN0RXJyb3JzUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdEVycm9yc0hhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMsIHByb2R1Y3RSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJywgUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdQcm9kdWN0RXJyb3JzUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogUHJvZHVjdEVycm9yc0hhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJIYXN1cmFHcmFwaFFMTW9kdWxlIHtcbiAgc3RhdGljIGluaXRpYWxpemVBcHAob3B0aW9uczoge1xuICAgIGVuZHBvaW50OiBzdHJpbmdcbiAgICBjcmVkZW50aWFsczogSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zXG4gIH0pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJIYXN1cmFHcmFwaFFMTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSEFTVVJBX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH1dLFxuICAgIH1cbiAgfVxufVxuIl19
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2FuZ3VsYXItaGFzdXJhLWdyYXBocWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ25ELE9BQU8sRUFBdUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRSxPQUFPLEVBRUwsaURBQWlELEVBQ2pELHFDQUFxQyxFQUVyQywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBRXRDLDZCQUE2QixFQUM3QixtQ0FBbUMsRUFPbkMsb0NBQW9DLEVBRXBDLDhCQUE4QixFQUU5QixvQ0FBb0MsRUFFcEMsK0NBQStDLEVBRS9DLDhCQUE4QixFQUU5QiwrQkFBK0IsR0FDaEMsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBOztBQW9MekMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQTZCO1FBQ2hELE9BQU87WUFDTCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDNUQsQ0FBQTtJQUNILENBQUM7OEdBTlUsMEJBQTBCOytHQUExQiwwQkFBMEI7K0dBQTFCLDBCQUEwQixhQS9LMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIsVUFBVSxFQUFFLENBQUMsT0FBNkIsRUFBRSxVQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7b0JBQzFCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDaEMsS0FBSyxFQUFF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QUUsQ0FBQyxjQUFjLENBQUM7eUJBQ3ZCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFdBQVcsRUFBRSxzQ0FBc0M7eUJBQ3BEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFVBQVUsRUFBRSxDQUNWLE9BQVksRUFDWix5QkFBaUUsRUFDaEMsRUFBRTtnQ0FDbkMsT0FBTyxJQUFJLCtCQUErQixDQUFDLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxDQUFBOzRCQUNoRixDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxzQ0FBc0MsQ0FBQzt5QkFDL0Q7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsV0FBVyxFQUFFLCtCQUErQjt5QkFDN0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsVUFBVSxFQUFFLENBQ1YsT0FBK0MsRUFDL0MsaUJBQWlELEVBQ3hCLEVBQUU7Z0NBQzNCLE9BQU8sSUFBSSxvQ0FBb0MsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTs0QkFDN0UsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsOEJBQThCLENBQUM7eUJBQ3ZEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsRUFBRSxvQ0FBb0M7eUJBQ2xEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2FjaGVDb25maWcsXG4gIENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBGaWx0ZXJPcHRpb25SZXBvc2l0b3J5LFxuICBGaWx0ZXJSZXBvc2l0b3J5LFxuICBHcmFwaFFMUGFyYW1zLFxuICBIYXN1cmFDb25zdHJ1Y3RvclBhcmFtcyxcbiAgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zLFxuICBQcm9kdWN0RXJyb3JzLFxuICBQcm9kdWN0RXJyb3JzSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RFcnJvcnNSZXBvc2l0b3J5LFxuICBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBQcm9kdWN0UmV2aWV3SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXZpZXdSZXBvc2l0b3J5LFxuICBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcbiAgVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbiAgV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBIQVNVUkFfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xuXG5leHBvcnQgdHlwZSBIYXN1cmFHcmFwaFFMT3B0aW9ucyA9IHsgZW5kcG9pbnQ6IHN0cmluZzsgY3JlZGVudGlhbHM/OiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnM7IGNhY2hlPzogQ2FjaGVDb25maWcgfVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiAnSGFzdXJhQ29uZmlnJyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBIYXN1cmFHcmFwaFFMT3B0aW9ucywgcGxhdGZvcm1JZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICBlbmRwb2ludDogb3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgYXV0aE9wdGlvbnM6IG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgIGNhY2hlOiBvcHRpb25zLmNhY2hlLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IHtcbiAgICAgICAgICByZXF1ZXN0OiAocmVxdWVzdDogR3JhcGhRTFBhcmFtczxhbnk+ICYgeyBpbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm4gcmVxdWVzdFxuXG4gICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHt9LCAxMDApXG5cbiAgICAgICAgICAgIHJlcXVlc3QuaW50ZXJ2YWwgPSBpbnRlcnZhbFxuXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2U6IChyZXNwb25zZTogYW55LCByZXF1ZXN0OiBHcmFwaFFMUGFyYW1zPGFueT4gJiB7IGludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHJldHVybiByZXNwb25zZVxuXG4gICAgICAgICAgICBjbGVhckludGVydmFsKHJlcXVlc3QuaW50ZXJ2YWwpXG5cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGRlcHM6IFtIQVNVUkFfT1BUSU9OUywgUExBVEZPUk1fSURdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5UmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IENhdGVnb3J5SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IGFueSxcbiAgICAgICAgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgICAgY2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5OiBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgKTogQ2F0ZWdvcnlSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMsIHByb2R1Y3RSZXBvc2l0b3J5LCBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnLCBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksIENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnldLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Byb2R1Y3RSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoaGFzdXJhQ29uZmlnOiBhbnkpOiBQcm9kdWN0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KGhhc3VyYUNvbmZpZylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Byb2R1Y3RSZXZpZXdSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBQcm9kdWN0UmV2aWV3SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0UmV2aWV3SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoaGFzdXJhQ29uZmlnOiBhbnkpOiBQcm9kdWN0UmV2aWV3UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFJldmlld0hhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KGhhc3VyYUNvbmZpZylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1ZhcmlhbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBWYXJpYW50SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBWYXJpYW50SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoaGFzdXJhQ29uZmlnOiBhbnkpOiBWYXJpYW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KGhhc3VyYUNvbmZpZylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Byb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoaGFzdXJhQ29uZmlnOiBhbnkpOiBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShoYXN1cmFDb25maWcpXG4gICAgICB9LFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDYXRlZ29yeUZpbHRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IGFueSk6IENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlsdGVyT3B0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogRmlsdGVyT3B0aW9uSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBhbnkpOiBGaWx0ZXJPcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlsdGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogYW55LFxuICAgICAgICBmaWx0ZXJPcHRpb25SZXBvc2l0b3J5OiBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgICAgY2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5OiBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgKTogRmlsdGVyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkob3B0aW9ucywgZmlsdGVyT3B0aW9uUmVwb3NpdG9yeSwgY2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnSGFzdXJhQ29uZmlnJywgRmlsdGVyT3B0aW9uSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksIENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnldLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2F0ZWdvcnlDb2xsZWN0aW9uQ2hpbGRyZW5IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBhbnkpOiBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5ID0+XG4gICAgICAgIG5ldyBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMpLFxuICAgICAgZGVwczogWydIYXN1cmFDb25maWcnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlblJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeVByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBhbnkpOiBDYXRlZ29yeVByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5UHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IENhdGVnb3J5UHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogV2lzaGxpc3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogYW55LFxuICAgICAgICBjYXRlZ29yeVByb2R1Y3RSZXBvc2l0b3J5OiBDYXRlZ29yeVByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgICk6IFdpc2hsaXN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFdpc2hsaXN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkob3B0aW9ucywgY2F0ZWdvcnlQcm9kdWN0UmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZycsIENhdGVnb3J5UHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdXaXNobGlzdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFdpc2hsaXN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0RXJyb3JzSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IEhhc3VyYUNvbnN0cnVjdG9yUGFyYW1zPFByb2R1Y3RFcnJvcnM+LFxuICAgICAgICBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgKTogUHJvZHVjdEVycm9yc1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RFcnJvcnNIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zLCBwcm9kdWN0UmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0hhc3VyYUNvbmZpZycsIFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUHJvZHVjdEVycm9yc1JlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IFByb2R1Y3RFcnJvcnNIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZSB7XG4gIHN0YXRpYyBpbml0aWFsaXplQXBwKG9wdGlvbnM6IEhhc3VyYUdyYXBoUUxPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhckhhc3VyYUdyYXBoUUxNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEhBU1VSQV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9XSxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -13,6 +13,30 @@ export class CatalogService {
13
13
  this.productSearch = productSearch;
14
14
  this.productsByTerm = {};
15
15
  this.brandsList = {};
16
+ this.fields = [
17
+ 'id',
18
+ 'name',
19
+ 'slug',
20
+ 'images',
21
+ 'miniatures',
22
+ 'price',
23
+ 'stock',
24
+ 'published',
25
+ 'CEST',
26
+ 'EAN',
27
+ 'NCM',
28
+ 'brand',
29
+ 'costPrice',
30
+ 'hasVariants',
31
+ 'isKit',
32
+ 'sku',
33
+ 'rate',
34
+ 'tags',
35
+ 'type',
36
+ 'shoppingCount',
37
+ 'gender',
38
+ 'createdAt',
39
+ ];
16
40
  this.buildFilterQuery = ({ clubDiscount, brands, prices, gender, tags, rate, customOptions, }) => {
17
41
  const filters = {};
18
42
  if (clubDiscount?.length)
@@ -75,7 +99,7 @@ export class CatalogService {
75
99
  return '';
76
100
  };
77
101
  }
78
- async fetchProducts(options) {
102
+ async fetchProducts(options, optionsCache) {
79
103
  const limits = this.buildLimitQuery(options);
80
104
  if (this.hasProfile(options) && options.filters?.customOptions)
81
105
  throw new InvalidArgumentError(`It couldn't filled customOptions when profile is given`);
@@ -83,7 +107,7 @@ export class CatalogService {
83
107
  throw new InvalidArgumentError(`It couldn't filled tags when profile is given`);
84
108
  if (this.hasTerm(options) && options.filters?.customOptions)
85
109
  throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`);
86
- return await this.findCatalog(options, limits).then(async ({ data, count: total, maximum, minimal, distinct }) => {
110
+ return await this.findCatalog(options, limits, optionsCache).then(async ({ data, count: total, maximum, minimal, distinct }) => {
87
111
  await this.setBrandsList(options, distinct?.brand);
88
112
  return {
89
113
  products: { data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)), total },
@@ -102,7 +126,7 @@ export class CatalogService {
102
126
  async addCustomerToStockNotification(shop, productId, name, email) {
103
127
  return this.productStockNotificationRepository.addCustomerEmail(shop, productId, name, email);
104
128
  }
105
- async findCatalog(options, limits) {
129
+ async findCatalog(options, limits, optionsCache) {
106
130
  if (this.hasTerm(options) && options.sort === 'most-relevant') {
107
131
  const productsIds = await this.findCatalogIdsBySearch(options.term);
108
132
  return this.findCatalogAndSortByMostRevelantByTerm(productsIds, options, limits);
@@ -116,11 +140,12 @@ export class CatalogService {
116
140
  ...(await this.buildMainFilter(options)),
117
141
  ...this.buildFilterQuery(options?.filters || {}),
118
142
  },
119
- })
143
+ }, undefined, optionsCache)
120
144
  .then((products) => products.data.map((product) => product.id));
121
- return this.findCatalogAndSortByMostRevelant(mostRelevant, productsIds, options, limits);
145
+ return this.findCatalogAndSortByMostRevelant(mostRelevant, productsIds, options, limits, optionsCache);
122
146
  }
123
147
  const repoParams = {
148
+ fields: this.fields,
124
149
  filters: {
125
150
  ...(await this.buildMainFilter(options)),
126
151
  ...this.buildFilterQuery(options?.filters || {}),
@@ -136,8 +161,8 @@ export class CatalogService {
136
161
  },
137
162
  };
138
163
  if (['biggest-price', 'lowest-price', 'biggest-discount', 'best-rating'].includes(options.sort))
139
- return this.productRepository.findCatalog(repoParams);
140
- return this.productRepository.findCatalog(repoParams, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female');
164
+ return this.productRepository.findCatalog(repoParams, undefined, optionsCache);
165
+ return this.productRepository.findCatalog(repoParams, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female', optionsCache);
141
166
  }
142
167
  async buildMainFilter({ category, profile, term, }) {
143
168
  if (category)
@@ -149,10 +174,11 @@ export class CatalogService {
149
174
  .search(term, 999, this.shop == Shops.GLAMSHOP ? 'female' : 'male')
150
175
  .then((data) => ({ id: { operator: Where.IN, value: data.map((_source) => _source.id) } }));
151
176
  }
152
- async findCatalogAndSortByMostRevelant(mostRelevants, productIds, options, limits) {
177
+ async findCatalogAndSortByMostRevelant(mostRelevants, productIds, options, limits, optionsCache) {
153
178
  const brandsList = this.brandsList[this.buildIndexBrands(options)];
154
179
  const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
155
180
  const totalResult = await this.productRepository.findCatalog({
181
+ fields: this.fields,
156
182
  filters: {
157
183
  id: { operator: Where.IN, value: mostRelevantProductsIds },
158
184
  ...this.buildFilterQuery(options?.filters || {}),
@@ -163,7 +189,7 @@ export class CatalogService {
163
189
  maximum: ['price'],
164
190
  ...(!brandsList && isEmpty(options.filters?.brands) ? { distinct: ['brand'] } : {}),
165
191
  },
166
- }, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female');
192
+ }, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female', optionsCache);
167
193
  const mostRelevantWithouyStock = totalResult.data.filter((product) => mostRelevants.includes(product.id) && product.stock.quantity <= 0);
168
194
  const firstProducts = totalResult.data
169
195
  .filter((product) => mostRelevants.includes(product.id) && product.stock.quantity > 0)
@@ -219,6 +245,7 @@ export class CatalogService {
219
245
  filters: {
220
246
  id: { operator: Where.IN, value: orderedId },
221
247
  },
248
+ fields: this.fields,
222
249
  });
223
250
  await this.setBrandsList(options, totalResult.distinct?.brand);
224
251
  return {
@@ -292,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
292
319
  type: Inject,
293
320
  args: ['ProductSearch']
294
321
  }] }] });
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBVXBCLHdCQUF3QixFQUN4QixLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sRUFDUCxHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQ2dELGlCQUFvQyxFQUVqRSxrQ0FBc0UsRUFDeEMsa0JBQXNDLEVBQ3hDLHdCQUFrRCxFQUN4RCxJQUFXLEVBQ1IsYUFBaUM7UUFON0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVqRSx1Q0FBa0MsR0FBbEMsa0NBQWtDLENBQW9DO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ1Isa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBVnJFLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQUM3QyxlQUFVLEdBQTZCLEVBQUUsQ0FBQTtRQStSekMscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FB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MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQ0FBb0M7OzBCQUUzQyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGVnb3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIEZpbmRSZXBvc2l0b3J5UGFyYW1zLFxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcbiAgUHJvZHVjdCxcbiAgUHJvZHVjdEdlbmRlcixcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFByb2R1Y3RTZWFyY2gsXG4gIFByb2R1Y3RTZWFyY2hJbmRleCxcbiAgUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIFNob3BzLFxuICBXaGVyZSxcbiAgaXNFbXB0eSxcbiAgc2V0LFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcblxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cbiAgYnJhbmRzPzogc3RyaW5nW11cbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxuICByYXRlPzogbnVtYmVyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxuICB0YWdzPzogc3RyaW5nW11cbn1cblxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcbiAgcGFnZT86IG51bWJlclxuICBwZXJQYWdlPzogbnVtYmVyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxufVxuXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XG4gIGNhdGVnb3J5PzogVFxuICBwcm9maWxlPzogc3RyaW5nW11cbiAgdGVybT86IHN0cmluZ1xufVxuXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICBwcml2YXRlIGJyYW5kc0xpc3Q6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnk6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBASW5qZWN0KCdQcm9kdWN0U2VhcmNoJykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VhcmNoOiBQcm9kdWN0U2VhcmNoSW5kZXgsXG4gICkge31cblxuICBhc3luYyBmZXRjaFByb2R1Y3RzKG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4pOiBQcm9taXNlPEZldGNoUHJvZHVjdHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IGxpbWl0cyA9IHRoaXMuYnVpbGRMaW1pdFF1ZXJ5KG9wdGlvbnMpXG5cbiAgICBpZiAodGhpcy5oYXNQcm9maWxlKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIGN1c3RvbU9wdGlvbnMgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcbiAgICBpZiAodGhpcy5oYXNQcm9maWxlKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8udGFncylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIHRhZ3Mgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIGN1c3RvbU9wdGlvbnMgd2hlbiB0ZXJtIGlzIGdpdmVuYClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nKG9wdGlvbnMsIGxpbWl0cykudGhlbihhc3luYyAoeyBkYXRhLCBjb3VudDogdG90YWwsIG1heGltdW0sIG1pbmltYWwsIGRpc3RpbmN0IH0pID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0QnJhbmRzTGlzdChvcHRpb25zLCBkaXN0aW5jdD8uYnJhbmQpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcbiAgICAgICAgcGFnZXM6IE1hdGguY2VpbCh0b3RhbCAvIGxpbWl0cy5saW1pdCksXG4gICAgICAgIHByaWNlczoge1xuICAgICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXG4gICAgICAgICAgc3Vic2NyaWJlclByaWNlOiB7XG4gICAgICAgICAgICBtaW46ICttaW5pbWFsPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxuICAgICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBicmFuZHM6IHRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldLFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBhZGRDdXN0b21lclRvU3RvY2tOb3RpZmljYXRpb24oc2hvcDogU2hvcHMsIHByb2R1Y3RJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LmFkZEN1c3RvbWVyRW1haWwoc2hvcCwgcHJvZHVjdElkLCBuYW1lLCBlbWFpbClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nSWRzQnlTZWFyY2gob3B0aW9ucy50ZXJtKVxuXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NhdGVnb3J5KG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XG4gICAgICBjb25zdCBtb3N0UmVsZXZhbnQgPSBvcHRpb25zLmNhdGVnb3J5LmlzV2lzaGxpc3QgPyBbXSA6IG9wdGlvbnMuY2F0ZWdvcnkuZ2V0TW9zdFJlbGV2YW50QnlTaG9wKHRoaXMuc2hvcClcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxuICAgICAgICAuZmluZENhdGFsb2coe1xuICAgICAgICAgIGZpZWxkczogWydpZCddLFxuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIC4uLihhd2FpdCB0aGlzLmJ1aWxkTWFpbkZpbHRlcihvcHRpb25zKSksXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHByb2R1Y3RzKSA9PiBwcm9kdWN0cy5kYXRhLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCkpXG5cbiAgICAgIHJldHVybiB0aGlzLmZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KG1vc3RSZWxldmFudCwgcHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcbiAgICB9XG5cbiAgICBjb25zdCByZXBvUGFyYW1zOiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0PiA9IHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcbiAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxuICAgICAgfSxcbiAgICAgIC4uLihvcHRpb25zPy5zb3J0ID8geyBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KG9wdGlvbnM/LnNvcnQpIH0gOiB7fSksXG4gICAgICBsaW1pdHMsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAuLi4oIXRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldICYmIGlzRW1wdHkob3B0aW9ucy5maWx0ZXJzPy5icmFuZHMpXG4gICAgICAgICAgPyB7IGRpc3RpbmN0OiBbJ2JyYW5kJ10gfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBpZiAoWydiaWdnZXN0LXByaWNlJywgJ2xvd2VzdC1wcmljZScsICdiaWdnZXN0LWRpc2NvdW50JywgJ2Jlc3QtcmF0aW5nJ10uaW5jbHVkZXMob3B0aW9ucy5zb3J0KSlcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHJlcG9QYXJhbXMpXG5cbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHJlcG9QYXJhbXMsXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRNYWluRmlsdGVyKHtcbiAgICBjYXRlZ29yeSxcbiAgICBwcm9maWxlLFxuICAgIHRlcm0sXG4gIH06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+PiB7XG4gICAgaWYgKGNhdGVnb3J5KSByZXR1cm4gdGhpcy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSlcbiAgICBpZiAocHJvZmlsZSkgcmV0dXJuIHsgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSB9XG4gICAgaWYgKHRlcm0pXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0U2VhcmNoXG4gICAgICAgIC5zZWFyY2g8UHJvZHVjdD4odGVybSwgOTk5LCB0aGlzLnNob3AgPT0gU2hvcHMuR0xBTVNIT1AgPyAnZmVtYWxlJyA6ICdtYWxlJylcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGRhdGEubWFwKChfc291cmNlKSA9PiBfc291cmNlLmlkKSB9IH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChcbiAgICBtb3N0UmVsZXZhbnRzOiBzdHJpbmdbXSxcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xuICAgICAgY2F0ZWdvcnk/OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsnY2F0ZWdvcnknXVxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgIH0sXG4gICAgbGltaXRzOiB7XG4gICAgICBsaW1pdD86IG51bWJlclxuICAgICAgb2Zmc2V0PzogbnVtYmVyXG4gICAgfSxcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IGJyYW5kc0xpc3QgPSB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXVxuICAgIGNvbnN0IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzID0gWy4uLm5ldyBTZXQobW9zdFJlbGV2YW50cy5jb25jYXQocHJvZHVjdElkcykpXVxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXG4gICAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgICBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KCdiZXN0LXNlbGxlcnMnKSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgLi4uKCFicmFuZHNMaXN0ICYmIGlzRW1wdHkob3B0aW9ucy5maWx0ZXJzPy5icmFuZHMpID8geyBkaXN0aW5jdDogWydicmFuZCddIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcbiAgICApXG5cbiAgICBjb25zdCBtb3N0UmVsZXZhbnRXaXRob3V5U3RvY2sgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcihcbiAgICAgIChwcm9kdWN0KSA9PiBtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpICYmIHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMCxcbiAgICApXG4gICAgY29uc3QgZmlyc3RQcm9kdWN0cyA9IHRvdGFsUmVzdWx0LmRhdGFcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+IG1vc3RSZWxldmFudHMuaW5jbHVkZXMocHJvZHVjdC5pZCkgJiYgcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXG4gICAgICAuc29ydCgoYSwgYikgPT4gbW9zdFJlbGV2YW50cy5pbmRleE9mKGEuaWQpIC0gbW9zdFJlbGV2YW50cy5pbmRleE9mKGIuaWQpKVxuICAgIGNvbnN0IGxhc3RQcm9kdWN0cyA9IHRvdGFsUmVzdWx0LmRhdGFcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3QpID0+ICFtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpKVxuICAgICAgLmNvbmNhdChtb3N0UmVsZXZhbnRXaXRob3V5U3RvY2spXG4gICAgY29uc3QgY2F0ZWdvcnlNb3N0UmVsZXZhbnRzID0gZmlyc3RQcm9kdWN0cy5jb25jYXQobGFzdFByb2R1Y3RzKVxuICAgIGNvbnN0IHJlc3VsdEZpbmFsID0gY2F0ZWdvcnlNb3N0UmVsZXZhbnRzLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXG5cbiAgICBhd2FpdCB0aGlzLnNldEJyYW5kc0xpc3Qob3B0aW9ucywgdG90YWxSZXN1bHQuZGlzdGluY3Q/LmJyYW5kKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHJlc3VsdEZpbmFsLFxuICAgICAgY291bnQ6IHRvdGFsUmVzdWx0LmNvdW50LFxuICAgICAgbWF4aW11bTogdG90YWxSZXN1bHQubWF4aW11bSxcbiAgICAgIG1pbmltYWw6IHRvdGFsUmVzdWx0Lm1pbmltYWwsXG4gICAgICBkaXN0aW5jdDoge1xuICAgICAgICAuLi50b3RhbFJlc3VsdC5kaXN0aW5jdCxcbiAgICAgICAgYnJhbmQ6IHRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50QnlUZXJtKFxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IE9taXQ8RmV0Y2hQcm9kdWN0c09wdGlvbnMsICdzb3J0Jz4gJiB7XG4gICAgICB0ZXJtPzogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgIH0sXG4gICAgbGltaXRzOiB7XG4gICAgICBsaW1pdD86IG51bWJlclxuICAgICAgb2Zmc2V0PzogbnVtYmVyXG4gICAgfSxcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IGJyYW5kc0xpc3QgPSB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXVxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHtcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgJ3N0b2NrJywgJ2dlbmRlciddLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxuICAgICAgICAgIHB1Ymxpc2hlZDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgLi4uKCFicmFuZHNMaXN0ICYmIGlzRW1wdHkob3B0aW9ucy5maWx0ZXJzPy5icmFuZHMpID8geyBkaXN0aW5jdDogWydicmFuZCddIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcbiAgICApXG4gICAgY29uc3QgZGVmYXVsdEdlbmRlciA9IG9wdGlvbnM/LmZpbHRlcnM/LmdlbmRlclxuICAgICAgPyBvcHRpb25zPy5maWx0ZXJzPy5nZW5kZXIuYXQoMClcbiAgICAgIDogdGhpcy5zaG9wID09PSBTaG9wcy5HTEFNU0hPUFxuICAgICAgPyAnZmVtYWxlJ1xuICAgICAgOiAnbWFsZSdcbiAgICBjb25zdCBzdG9ja0RhdGEgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja0dlbmRlciA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PlxuICAgICAgc3RvY2tEYXRhLnNvbWUoXG4gICAgICAgIChyZXN1bHQpID0+XG4gICAgICAgICAgcmVzdWx0LmlkID09PSBwcm9kdWN0ICYmIChyZXN1bHQuZ2VuZGVyPy5pbmNsdWRlcyhkZWZhdWx0R2VuZGVyKSB8fCByZXN1bHQuZ2VuZGVyPy5pbmNsdWRlcygndW5pc2V4JykpLFxuICAgICAgKSxcbiAgICApXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrTm90R2VuZGVyID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+XG4gICAgICBzdG9ja0RhdGEuc29tZShcbiAgICAgICAgKHJlc3VsdCkgPT5cbiAgICAgICAgICByZXN1bHQuaWQgPT09IHByb2R1Y3QgJiYgIXJlc3VsdC5nZW5kZXI/LmluY2x1ZGVzKGRlZmF1bHRHZW5kZXIpICYmICFyZXN1bHQuZ2VuZGVyPy5pbmNsdWRlcygndW5pc2V4JyksXG4gICAgICApLFxuICAgIClcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2sgPSBwcm9kdWN0SWRzU3RvY2tHZW5kZXIuY29uY2F0KHByb2R1Y3RJZHNTdG9ja05vdEdlbmRlcilcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT09IHByb2R1Y3QpKVxuICAgIGNvbnN0IGxpbWl0ZWRQcm9kdWN0SWQgPSBwcm9kdWN0SWRzU3RvY2tcbiAgICAgIC5jb25jYXQocHJvZHVjdElkc1N0b2NrT3V0KVxuICAgICAgLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXG4gICAgY29uc3Qgb3JkZXJlZElkID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IGxpbWl0ZWRQcm9kdWN0SWQuaW5jbHVkZXMocHJvZHVjdCkpXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBvcmRlcmVkSWQgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMuc2V0QnJhbmRzTGlzdChvcHRpb25zLCB0b3RhbFJlc3VsdC5kaXN0aW5jdD8uYnJhbmQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbGltaXRlZFByb2R1Y3RJZC5tYXAoKGlkKSA9PiBwcm9kdWN0UmVzdWx0LmRhdGEuZmluZCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCA9PT0gaWQpKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICBjb3VudDogdG90YWxSZXN1bHQuY291bnQsXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcbiAgICAgIGRpc3RpbmN0OiB7XG4gICAgICAgIC4uLnRvdGFsUmVzdWx0LmRpc3RpbmN0LFxuICAgICAgICBicmFuZDogdGhpcy5icmFuZHNMaXN0W3RoaXMuYnVpbGRJbmRleEJyYW5kcyhvcHRpb25zKV0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeVNlYXJjaCh0ZXJtOiBzdHJpbmcsIHByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSkgcmV0dXJuIHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV1cblxuICAgIHJldHVybiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSA9IGF3YWl0IHRoaXMucHJvZHVjdFNlYXJjaFxuICAgICAgLnNlYXJjaDxQcm9kdWN0U2VhcmNoPih0ZXJtLCA5OTksIHRoaXMuc2hvcCA9PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1hbGUnIDogJ21hbGUnKVxuICAgICAgLnRoZW4oKHByb2R1Y3RzKSA9PiBbLi4ubmV3IFNldChwcm9kdWN0cy5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKV0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEJyYW5kc09ubHkoXG4gICAgb3B0aW9uczogUGljazxGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LCAnZmlsdGVycycgfCAnbWFpbkdlbmRlcic+LFxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdID0gW10sXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxuICAgICAgLmZpbmRDYXRhbG9nKFxuICAgICAgICB7XG4gICAgICAgICAgZmllbGRzOiBbJ2lkJ10sXG4gICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgLi4uKCFpc0VtcHR5KHByb2R1Y3RJZHMpID8geyBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0SWRzIH0gfSA6IHt9KSxcbiAgICAgICAgICAgIHB1Ymxpc2hlZDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRpc3RpbmN0LmJyYW5kXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRCcmFuZHNMaXN0KG9wdGlvbnM6IFBhcnRpYWw8RmV0Y2hQcm9kdWN0c1BhcmFtczxUPj4sIGJyYW5kczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBmaWx0ZXJCcmFuZHMgPSBvcHRpb25zLmZpbHRlcnM/LmJyYW5kc1xuXG4gICAgaWYgKGlzRW1wdHkoYnJhbmRzKSkgZGVsZXRlIG9wdGlvbnMuZmlsdGVycz8uYnJhbmRzXG5cbiAgICB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSA9XG4gICAgICB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSB8fCBicmFuZHMgfHwgKGF3YWl0IHRoaXMuZmV0Y2hCcmFuZHNPbmx5KG9wdGlvbnMpKVxuXG4gICAgdGhpcy5icmFuZHNMaXN0W3RoaXMuYnVpbGRJbmRleEJyYW5kcyhvcHRpb25zKV0gPSB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXS5maWx0ZXIoQm9vbGVhbilcblxuICAgIG9wdGlvbnMuZmlsdGVycyA9IHtcbiAgICAgIC4uLm9wdGlvbnMuZmlsdGVycyxcbiAgICAgIGJyYW5kczogZmlsdGVyQnJhbmRzLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWx0ZXJRdWVyeSA9ICh7XG4gICAgY2x1YkRpc2NvdW50LFxuICAgIGJyYW5kcyxcbiAgICBwcmljZXMsXG4gICAgZ2VuZGVyLFxuICAgIHRhZ3MsXG4gICAgcmF0ZSxcbiAgICBjdXN0b21PcHRpb25zLFxuICB9OiBGZXRjaFByb2R1Y3RzRmlsdGVycyk6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4gPT4ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7fSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+XG5cbiAgICBpZiAoY2x1YkRpc2NvdW50Py5sZW5ndGgpXG4gICAgICBzZXQoZmlsdGVycywgJ3ByaWNlLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UnLCB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGNsdWJEaXNjb3VudCB9KVxuICAgIGlmIChicmFuZHM/Lmxlbmd0aCkgZmlsdGVycy5icmFuZCA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogYnJhbmRzIH1cbiAgICBpZiAoZ2VuZGVyPy5sZW5ndGgpIGZpbHRlcnMuZ2VuZGVyID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBnZW5kZXIgfVxuICAgIGlmIChwcmljZXM/Lm1pbiB8fCBwcmljZXM/Lm1heClcbiAgICAgIHNldChmaWx0ZXJzLCBwcmljZXMuc3Vic2NyaWJlclByaWNlID8gJ3ByaWNlLnN1YnNjcmliZXJQcmljZScgOiAncHJpY2UucHJpY2UnLCBbXG4gICAgICAgIC4uLihwcmljZXMubWluID8gW3sgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IE1hdGguZmxvb3IocHJpY2VzLm1pbikgfV0gOiBbXSksXG4gICAgICAgIC4uLihwcmljZXMubWF4ID8gW3sgb3BlcmF0b3I6IFdoZXJlLkxURSwgdmFsdWU6IE1hdGguY2VpbChwcmljZXMubWF4KSB9XSA6IFtdKSxcbiAgICAgIF0pXG4gICAgaWYgKHJhdGUpIGZpbHRlcnMucmF0ZSA9IHsgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IHJhdGUgfVxuICAgIGlmICh0YWdzPy5sZW5ndGgpIGZpbHRlcnMudGFncyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiB0YWdzIH1cbiAgICBpZiAoY3VzdG9tT3B0aW9ucz8ubGVuZ3RoKSBmaWx0ZXJzLmZpbHRlcnMgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogY3VzdG9tT3B0aW9ucyB9XG5cbiAgICByZXR1cm4gZmlsdGVyc1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNvcnRRdWVyeSA9IChzb3J0OiBQcm9kdWN0U29ydCk6IFJlcG9zaXRvcnlPcmRlckJ5PFByb2R1Y3Q+ID0+IHtcbiAgICBpZiAoIXNvcnQgfHwgc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSByZXR1cm4ge31cblxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1zZWxsZXJzJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNob3BwaW5nQ291bnQ6ICdkZXNjJyxcbiAgICAgICAgcmF0ZTogJ2Rlc2MnLFxuICAgICAgICBzdG9jazogJ2Rlc2MnLFxuICAgICAgICBuYW1lOiAnYXNjJyxcbiAgICAgIH1cbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgICBpZiAoc29ydCA9PT0gJ2xvd2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2FzYycsIHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH0gYXMgYW55XG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXJhdGluZycpIHJldHVybiB7IHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLCBzdG9jazogJ2Rlc2MnLCBuYW1lOiAnYXNjJyB9XG4gICAgaWYgKHNvcnQgPT09ICduZXdzJykgcmV0dXJuIHsgY3JlYXRlZEF0OiAnZGVzYycgfVxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1kaXNjb3VudCcpXG4gICAgICByZXR1cm4geyBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiAnZGVzYycsIHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH0gYXMgYW55XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGltaXRRdWVyeSA9IChvcHRpb25zOiB7IHBhZ2U/OiBudW1iZXI7IHBlclBhZ2U/OiBudW1iZXIgfSk6IHsgbGltaXQ/OiBudW1iZXI7IG9mZnNldD86IG51bWJlciB9ID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IG9wdGlvbnM/LnBlclBhZ2UgfHwgMjBcblxuICAgIHJldHVybiB7XG4gICAgICBsaW1pdCxcbiAgICAgIG9mZnNldDogKChvcHRpb25zPy5wYWdlIHx8IDEpIC0gMSkgKiBsaW1pdCxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc1Byb2ZpbGUgPSAoXG4gICAgb3B0aW9uczogUGFydGlhbDxGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+PixcbiAgKTogb3B0aW9ucyBpcyBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmIHtcbiAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXI7IHRhZ3M/OiBuZXZlciB9XG4gIH0gPT4gJ3Byb2ZpbGUnIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGhhc1Rlcm0gPSAoXG4gICAgb3B0aW9uczogUGFydGlhbDxGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+PixcbiAgKTogb3B0aW9ucyBpcyBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmIHtcbiAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICB9ID0+ICd0ZXJtJyBpbiBvcHRpb25zXG5cbiAgcHJpdmF0ZSBoYXNDYXRlZ29yeSA9IChcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEZldGNoUHJvZHVjdHNQYXJhbXM8VD4+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIGNhdGVnb3J5OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsnY2F0ZWdvcnknXVxuICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgfSA9PiAnY2F0ZWdvcnknIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGJ1aWxkSW5kZXhCcmFuZHMgPSAob3B0aW9uczogUGFydGlhbDxGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+Pik6IHN0cmluZyA9PiB7XG4gICAgaWYgKHRoaXMuaGFzQ2F0ZWdvcnkob3B0aW9ucykpIHJldHVybiBgY2F0ZWdvcnktJHtvcHRpb25zLmNhdGVnb3J5LmlkfWBcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpKSByZXR1cm4gYHRlcm0tJHtvcHRpb25zLnRlcm19YFxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykpIHJldHVybiBgcHJvZmlsZS0ke29wdGlvbnMucHJvZmlsZS5qb2luKCcsJyl9YFxuXG4gICAgcmV0dXJuICcnXG4gIH1cbn1cbiJdfQ==
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBWXBCLHdCQUF3QixFQUN4QixLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sRUFDUCxHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBNEJ6QixZQUNnRCxpQkFBb0MsRUFFakUsa0NBQXNFLEVBQ3hDLGtCQUFzQyxFQUN4Qyx3QkFBa0QsRUFDeEQsSUFBVyxFQUNSLGFBQWlDO1FBTjdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFakUsdUNBQWtDLEdBQWxDLGtDQUFrQyxDQUFvQztRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3hDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDeEQsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNSLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQWxDckUsbUJBQWMsR0FBNkIsRUFBRSxDQUFBO1FBQzdDLGVBQVUsR0FBNkIsRUFBRSxDQUFBO1FBQ3pDLFdBQU0sR0FBd0M7WUFDcEQsSUFBSTtZQUNKLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFlBQVk7WUFDWixPQUFPO1lBQ1AsT0FBTztZQUNQLFdBQVc7WUFDWCxNQUFNO1lBQ04sS0FBSztZQUNMLEtBQUs7WUFDTCxPQUFPO1lBQ1AsV0FBVztZQUNYLGFBQWE7WUFDYixPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLGVBQWU7WUFDZixRQUFRO1lBQ1IsV0FBVztTQUNaLENBQUE7UUErU08scUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQTtZQUNqRyxJQUFJLE1BQU0sRUFBRSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUE7WUFDekUsSUFBSSxNQUFNLEVBQUUsTUFBTTtnQkFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO1lBQzFFLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUUsR0FBRztnQkFDNUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFO29CQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDL0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQy9FLENBQUMsQ0FBQTtZQUNKLElBQUksSUFBSTtnQkFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO1lBQzdELElBQUksSUFBSSxFQUFFLE1BQU07Z0JBQUUsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUN0RSxJQUFJLGFBQWEsRUFBRSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUE7WUFFM0YsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQyxDQUFBO1FBRU8sbUJBQWMsR0FBRyxDQUFDLElBQWlCLEVBQThCLEVBQUU7WUFDekUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssZUFBZTtnQkFBRSxPQUFPLEVBQUUsQ0FBQTtZQUVoRCxJQUFJLElBQUksS0FBSyxjQUFjO2dCQUN6QixPQUFPO29CQUNMLGFBQWEsRUFBRSxNQUFNO29CQUNyQixJQUFJLEVBQUUsTUFBTTtvQkFDWixLQUFLLEVBQUUsTUFBTTtvQkFDYixJQUFJLEVBQUUsS0FBSztpQkFDWixDQUFBO1lBQ0gsSUFBSSxJQUFJLEtBQUssZUFBZTtnQkFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQVMsQ0FBQTtZQUM1RyxJQUFJLElBQUksS0FBSyxjQUFjO2dCQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBUyxDQUFBO1lBQzFHLElBQUksSUFBSSxLQUFLLGFBQWE7Z0JBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQTtZQUN0RyxJQUFJLElBQUksS0FBSyxNQUFNO2dCQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUE7WUFDakQsSUFBSSxJQUFJLEtBQUssa0JBQWtCO2dCQUM3QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBUyxDQUFBO1FBQy9GLENBQUMsQ0FBQTtRQUVPLG9CQUFlLEdBQUcsQ0FBQyxPQUE0QyxFQUF1QyxFQUFFO1lBQzlHLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO1lBRXBDLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSzthQUMzQyxDQUFBO1FBQ0gsQ0FBQyxDQUFBO1FBRU8sZUFBVSxHQUFHLENBQ25CLE9BQXdDLEVBSXhDLEVBQUUsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFBO1FBRWpCLFlBQU8sR0FBRyxDQUNoQixPQUF3QyxFQUl4QyxFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQTtRQUVkLGdCQUFXLEdBQUcsQ0FDcEIsT0FBd0MsRUFJeEMsRUFBRSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUE7UUFFbEIscUJBQWdCLEdBQUcsQ0FBQyxPQUF3QyxFQUFVLEVBQUU7WUFDOUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztnQkFBRSxPQUFPLFlBQVksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtZQUN2RSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUFFLE9BQU8sUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDeEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFBRSxPQUFPLFdBQVcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtZQUUzRSxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUMsQ0FBQTtJQXRYRSxDQUFDO0lBRUosS0FBSyxDQUFDLGFBQWEsQ0FDakIsT0FBK0IsRUFDL0IsWUFBaUQ7UUFFakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU1QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhO1lBQzVELE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx3REFBd0QsQ0FBQyxDQUFBO1FBQzFGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUk7WUFDbkQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLCtDQUErQyxDQUFDLENBQUE7UUFDakYsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYTtZQUN6RCxNQUFNLElBQUksb0JBQW9CLENBQUMscURBQXFELENBQUMsQ0FBQTtRQUV2RixPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDL0QsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzNELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBRWxELE9BQU87Z0JBQ0wsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO2dCQUN0RyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDdEMsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzNGLGVBQWUsRUFBRTt3QkFDZixHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUNqRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUNsRDtpQkFDRjtnQkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEQsQ0FBQTtRQUNILENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxJQUFXLEVBQUUsU0FBaUIsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUM5RixPQUFPLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FDdkIsT0FBK0IsRUFDL0IsTUFHQyxFQUNELFlBQWlEO1FBRWpELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUM3RCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFbkUsT0FBTyxJQUFJLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtTQUNqRjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUNqRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN6RyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUI7aUJBQzdDLFdBQVcsQ0FDVjtnQkFDRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2lCQUNqRDthQUNGLEVBQ0QsU0FBUyxFQUNULFlBQVksQ0FDYjtpQkFDQSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUVqRSxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUE7U0FDdkc7UUFFRCxNQUFNLFVBQVUsR0FBa0M7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE9BQU8sRUFBRTtnQkFDUCxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUNqRDtZQUNELEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsTUFBTTtZQUNOLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7b0JBQ3RGLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN6QixDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7U0FDRixDQUFBO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDN0YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFFaEYsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUN2QyxVQUFVLEVBQ1YsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUN6RSxZQUFZLENBQ2IsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzVCLFFBQVEsRUFDUixPQUFPLEVBQ1AsSUFBSSxHQUN1QjtRQUMzQixJQUFJLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN6RixJQUFJLE9BQU87WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDdEUsSUFBSSxJQUFJO1lBQ04sT0FBTyxJQUFJLENBQUMsYUFBYTtpQkFDdEIsTUFBTSxDQUFVLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztpQkFDM0UsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2pHLENBQUM7SUFFTyxLQUFLLENBQUMsZ0NBQWdDLENBQzVDLGFBQXVCLEVBQ3ZCLFVBQW9CLEVBQ3BCLE9BR0MsRUFDRCxNQUdDLEVBQ0QsWUFBaUQ7UUFFakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzFEO1lBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzFELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ2pEO1lBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1lBQzVDLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNwRjtTQUNGLEVBQ0QsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUN6RSxZQUFZLENBQ2IsQ0FBQTtRQUVELE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3RELENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQy9FLENBQUE7UUFDRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSTthQUNuQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzthQUNyRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzVFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN4RCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNuQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDaEUsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFNUYsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBRTlELE9BQU87WUFDTCxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztZQUM1QixRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxXQUFXLENBQUMsUUFBUTtnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0NBQXNDLENBQ2xELFVBQW9CLEVBQ3BCLE9BR0MsRUFDRCxNQUdDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzFEO1lBQ0UsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7WUFDakMsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQzdDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ2xELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ2pEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixHQUFHLENBQUMsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3BGO1NBQ0YsRUFDRCxPQUFPLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzFFLENBQUE7UUFDRCxNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU07WUFDNUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDVixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzFELFNBQVMsQ0FBQyxJQUFJLENBQ1osQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxFQUFFLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDekcsQ0FDRixDQUFBO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDN0QsU0FBUyxDQUFDLElBQUksQ0FDWixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsTUFBTSxDQUFDLEVBQUUsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUN6RyxDQUNGLENBQUE7UUFDRCxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUM5RSxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMzRyxNQUFNLGdCQUFnQixHQUFHLGVBQWU7YUFDckMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO2FBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztZQUM3RCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTthQUM3QztZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFFOUQsT0FBTztZQUNMLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMzRyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztZQUM1QixRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxXQUFXLENBQUMsUUFBUTtnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLFVBQW1CLEtBQUs7UUFDekUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhO2FBQ3pELE1BQU0sQ0FBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2FBQ2pGLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUMzQixPQUErRCxFQUMvRCxhQUF1QixFQUFFO1FBRXpCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQjthQUMxQixXQUFXLENBQ1Y7WUFDRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xGLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ2xELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ2pEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNwQjtTQUNGLEVBQ0QsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUMxRTthQUNBLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQXdDLEVBQUUsTUFBZ0I7UUFDcEYsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUE7UUFFNUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtRQUVuRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRXBHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFakgsT0FBTyxDQUFDLE9BQU8sR0FBRztZQUNoQixHQUFHLE9BQU8sQ0FBQyxPQUFPO1lBQ2xCLE1BQU0sRUFBRSxZQUFZO1NBQ3JCLENBQUE7SUFDSCxDQUFDOzhHQXZVVSxjQUFjLGtCQTZCZixtQkFBbUIsYUFDbkIsb0NBQW9DLGFBRXBDLG9CQUFvQixhQUNwQixrQkFBa0IsYUFDbEIsWUFBWSxhQUNaLGVBQWU7a0hBbkNkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQThCTixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsb0NBQW9DOzswQkFFM0MsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lcyxcbiAgUHJvZHVjdCxcbiAgUHJvZHVjdEdlbmRlcixcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFByb2R1Y3RTZWFyY2gsXG4gIFByb2R1Y3RTZWFyY2hJbmRleCxcbiAgUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeSxcbiAgUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIFNob3BzLFxuICBXaGVyZSxcbiAgaXNFbXB0eSxcbiAgc2V0LFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcblxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cbiAgYnJhbmRzPzogc3RyaW5nW11cbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxuICByYXRlPzogbnVtYmVyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxuICB0YWdzPzogc3RyaW5nW11cbn1cblxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcbiAgcGFnZT86IG51bWJlclxuICBwZXJQYWdlPzogbnVtYmVyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxufVxuXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XG4gIGNhdGVnb3J5PzogVFxuICBwcm9maWxlPzogc3RyaW5nW11cbiAgdGVybT86IHN0cmluZ1xufVxuXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICBwcml2YXRlIGJyYW5kc0xpc3Q6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gIHByaXZhdGUgZmllbGRzOiBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8UHJvZHVjdD5bXSA9IFtcbiAgICAnaWQnLFxuICAgICduYW1lJyxcbiAgICAnc2x1ZycsXG4gICAgJ2ltYWdlcycsXG4gICAgJ21pbmlhdHVyZXMnLFxuICAgICdwcmljZScsXG4gICAgJ3N0b2NrJyxcbiAgICAncHVibGlzaGVkJyxcbiAgICAnQ0VTVCcsXG4gICAgJ0VBTicsXG4gICAgJ05DTScsXG4gICAgJ2JyYW5kJyxcbiAgICAnY29zdFByaWNlJyxcbiAgICAnaGFzVmFyaWFudHMnLFxuICAgICdpc0tpdCcsXG4gICAgJ3NrdScsXG4gICAgJ3JhdGUnLFxuICAgICd0YWdzJyxcbiAgICAndHlwZScsXG4gICAgJ3Nob3BwaW5nQ291bnQnLFxuICAgICdnZW5kZXInLFxuICAgICdjcmVhdGVkQXQnLFxuICBdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnk6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBASW5qZWN0KCdQcm9kdWN0U2VhcmNoJykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VhcmNoOiBQcm9kdWN0U2VhcmNoSW5kZXgsXG4gICkge31cblxuICBhc3luYyBmZXRjaFByb2R1Y3RzKFxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXG4gICAgb3B0aW9uc0NhY2hlPzogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSxcbiAgKTogUHJvbWlzZTxGZXRjaFByb2R1Y3RzUmVzcG9uc2U+IHtcbiAgICBjb25zdCBsaW1pdHMgPSB0aGlzLmJ1aWxkTGltaXRRdWVyeShvcHRpb25zKVxuXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LmN1c3RvbU9wdGlvbnMpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCBjdXN0b21PcHRpb25zIHdoZW4gcHJvZmlsZSBpcyBnaXZlbmApXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LnRhZ3MpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCB0YWdzIHdoZW4gcHJvZmlsZSBpcyBnaXZlbmApXG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LmN1c3RvbU9wdGlvbnMpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCBjdXN0b21PcHRpb25zIHdoZW4gdGVybSBpcyBnaXZlbmApXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZyhvcHRpb25zLCBsaW1pdHMsIG9wdGlvbnNDYWNoZSkudGhlbihcbiAgICAgIGFzeW5jICh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldEJyYW5kc0xpc3Qob3B0aW9ucywgZGlzdGluY3Q/LmJyYW5kKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvZHVjdHM6IHsgZGF0YTogZGF0YS5tYXAoKHByb2R1Y3QpID0+IFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMocHJvZHVjdCkpLCB0b3RhbCB9LFxuICAgICAgICAgIHBhZ2VzOiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdHMubGltaXQpLFxuICAgICAgICAgIHByaWNlczoge1xuICAgICAgICAgICAgcHJpY2U6IHsgbWluOiArbWluaW1hbD8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpLCBtYXg6ICttYXhpbXVtPy5wcmljZT8ucHJpY2U/LnRvRml4ZWQoMikgfSxcbiAgICAgICAgICAgIHN1YnNjcmliZXJQcmljZToge1xuICAgICAgICAgICAgICBtaW46ICttaW5pbWFsPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxuICAgICAgICAgICAgICBtYXg6ICttYXhpbXVtPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJyYW5kczogdGhpcy5icmFuZHNMaXN0W3RoaXMuYnVpbGRJbmRleEJyYW5kcyhvcHRpb25zKV0sXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgYWRkQ3VzdG9tZXJUb1N0b2NrTm90aWZpY2F0aW9uKHNob3A6IFNob3BzLCBwcm9kdWN0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeS5hZGRDdXN0b21lckVtYWlsKHNob3AsIHByb2R1Y3RJZCwgbmFtZSwgZW1haWwpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nKFxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXG4gICAgbGltaXRzOiB7XG4gICAgICBsaW1pdD86IG51bWJlclxuICAgICAgb2Zmc2V0PzogbnVtYmVyXG4gICAgfSxcbiAgICBvcHRpb25zQ2FjaGU/OiB7IGNhY2hlPzogUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nSWRzQnlTZWFyY2gob3B0aW9ucy50ZXJtKVxuXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NhdGVnb3J5KG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XG4gICAgICBjb25zdCBtb3N0UmVsZXZhbnQgPSBvcHRpb25zLmNhdGVnb3J5LmlzV2lzaGxpc3QgPyBbXSA6IG9wdGlvbnMuY2F0ZWdvcnkuZ2V0TW9zdFJlbGV2YW50QnlTaG9wKHRoaXMuc2hvcClcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxuICAgICAgICAuZmluZENhdGFsb2coXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGRzOiBbJ2lkJ10sXG4gICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgIC4uLihhd2FpdCB0aGlzLmJ1aWxkTWFpbkZpbHRlcihvcHRpb25zKSksXG4gICAgICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgb3B0aW9uc0NhY2hlLFxuICAgICAgICApXG4gICAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxuXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChtb3N0UmVsZXZhbnQsIHByb2R1Y3RzSWRzLCBvcHRpb25zLCBsaW1pdHMsIG9wdGlvbnNDYWNoZSlcbiAgICB9XG5cbiAgICBjb25zdCByZXBvUGFyYW1zOiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0PiA9IHtcbiAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICBmaWx0ZXJzOiB7XG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmJ1aWxkTWFpbkZpbHRlcihvcHRpb25zKSksXG4gICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgIH0sXG4gICAgICAuLi4ob3B0aW9ucz8uc29ydCA/IHsgb3JkZXJCeTogdGhpcy5idWlsZFNvcnRRdWVyeShvcHRpb25zPy5zb3J0KSB9IDoge30pLFxuICAgICAgbGltaXRzLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXG4gICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcbiAgICAgICAgLi4uKCF0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSAmJiBpc0VtcHR5KG9wdGlvbnMuZmlsdGVycz8uYnJhbmRzKVxuICAgICAgICAgID8geyBkaXN0aW5jdDogWydicmFuZCddIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgaWYgKFsnYmlnZ2VzdC1wcmljZScsICdsb3dlc3QtcHJpY2UnLCAnYmlnZ2VzdC1kaXNjb3VudCcsICdiZXN0LXJhdGluZyddLmluY2x1ZGVzKG9wdGlvbnMuc29ydCkpXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhyZXBvUGFyYW1zLCB1bmRlZmluZWQsIG9wdGlvbnNDYWNoZSlcblxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxuICAgICAgcmVwb1BhcmFtcyxcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXG4gICAgICBvcHRpb25zQ2FjaGUsXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZE1haW5GaWx0ZXIoe1xuICAgIGNhdGVnb3J5LFxuICAgIHByb2ZpbGUsXG4gICAgdGVybSxcbiAgfTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD4pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4+IHtcbiAgICBpZiAoY2F0ZWdvcnkpIHJldHVybiB0aGlzLmNhdGVnb3J5U3RydWN0dXJlQWRhcHRlci5idWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5KVxuICAgIGlmIChwcm9maWxlKSByZXR1cm4geyB0YWdzOiB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogcHJvZmlsZSB9IH1cbiAgICBpZiAodGVybSlcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RTZWFyY2hcbiAgICAgICAgLnNlYXJjaDxQcm9kdWN0Pih0ZXJtLCA5OTksIHRoaXMuc2hvcCA9PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1hbGUnIDogJ21hbGUnKVxuICAgICAgICAudGhlbigoZGF0YSkgPT4gKHsgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogZGF0YS5tYXAoKF9zb3VyY2UpID0+IF9zb3VyY2UuaWQpIH0gfSkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KFxuICAgIG1vc3RSZWxldmFudHM6IHN0cmluZ1tdLFxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IE9taXQ8RmV0Y2hQcm9kdWN0c09wdGlvbnMsICdzb3J0Jz4gJiB7XG4gICAgICBjYXRlZ29yeT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gICAgfSxcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICAgIG9wdGlvbnNDYWNoZT86IHsgY2FjaGU/OiBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCBicmFuZHNMaXN0ID0gdGhpcy5icmFuZHNMaXN0W3RoaXMuYnVpbGRJbmRleEJyYW5kcyhvcHRpb25zKV1cbiAgICBjb25zdCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyA9IFsuLi5uZXcgU2V0KG1vc3RSZWxldmFudHMuY29uY2F0KHByb2R1Y3RJZHMpKV1cbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyB9LFxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JkZXJCeTogdGhpcy5idWlsZFNvcnRRdWVyeSgnYmVzdC1zZWxsZXJzJyksXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAgIC4uLighYnJhbmRzTGlzdCAmJiBpc0VtcHR5KG9wdGlvbnMuZmlsdGVycz8uYnJhbmRzKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXG4gICAgICBvcHRpb25zQ2FjaGUsXG4gICAgKVxuXG4gICAgY29uc3QgbW9zdFJlbGV2YW50V2l0aG91eVN0b2NrID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoXG4gICAgICAocHJvZHVjdCkgPT4gbW9zdFJlbGV2YW50cy5pbmNsdWRlcyhwcm9kdWN0LmlkKSAmJiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDAsXG4gICAgKVxuICAgIGNvbnN0IGZpcnN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXG4gICAgICAuZmlsdGVyKChwcm9kdWN0KSA9PiBtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpICYmIHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IG1vc3RSZWxldmFudHMuaW5kZXhPZihhLmlkKSAtIG1vc3RSZWxldmFudHMuaW5kZXhPZihiLmlkKSlcbiAgICBjb25zdCBsYXN0UHJvZHVjdHMgPSB0b3RhbFJlc3VsdC5kYXRhXG4gICAgICAuZmlsdGVyKChwcm9kdWN0KSA9PiAhbW9zdFJlbGV2YW50cy5pbmNsdWRlcyhwcm9kdWN0LmlkKSlcbiAgICAgIC5jb25jYXQobW9zdFJlbGV2YW50V2l0aG91eVN0b2NrKVxuICAgIGNvbnN0IGNhdGVnb3J5TW9zdFJlbGV2YW50cyA9IGZpcnN0UHJvZHVjdHMuY29uY2F0KGxhc3RQcm9kdWN0cylcbiAgICBjb25zdCByZXN1bHRGaW5hbCA9IGNhdGVnb3J5TW9zdFJlbGV2YW50cy5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxuXG4gICAgYXdhaXQgdGhpcy5zZXRCcmFuZHNMaXN0KG9wdGlvbnMsIHRvdGFsUmVzdWx0LmRpc3RpbmN0Py5icmFuZClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiByZXN1bHRGaW5hbCxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHtcbiAgICAgICAgLi4udG90YWxSZXN1bHQuZGlzdGluY3QsXG4gICAgICAgIGJyYW5kOiB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICB9LFxuICAgIGxpbWl0czoge1xuICAgICAgbGltaXQ/OiBudW1iZXJcbiAgICAgIG9mZnNldD86IG51bWJlclxuICAgIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCBicmFuZHNMaXN0ID0gdGhpcy5icmFuZHNMaXN0W3RoaXMuYnVpbGRJbmRleEJyYW5kcyhvcHRpb25zKV1cbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jaycsICdnZW5kZXInXSxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RJZHMgfSxcbiAgICAgICAgICBwdWJsaXNoZWQ6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAgIC4uLighYnJhbmRzTGlzdCAmJiBpc0VtcHR5KG9wdGlvbnMuZmlsdGVycz8uYnJhbmRzKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXG4gICAgKVxuICAgIGNvbnN0IGRlZmF1bHRHZW5kZXIgPSBvcHRpb25zPy5maWx0ZXJzPy5nZW5kZXJcbiAgICAgID8gb3B0aW9ucz8uZmlsdGVycz8uZ2VuZGVyLmF0KDApXG4gICAgICA6IHRoaXMuc2hvcCA9PT0gU2hvcHMuR0xBTVNIT1BcbiAgICAgID8gJ2ZlbWFsZSdcbiAgICAgIDogJ21hbGUnXG4gICAgY29uc3Qgc3RvY2tEYXRhID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxuICAgIGNvbnN0IHN0b2NrT3V0ID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMClcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tHZW5kZXIgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT5cbiAgICAgIHN0b2NrRGF0YS5zb21lKFxuICAgICAgICAocmVzdWx0KSA9PlxuICAgICAgICAgIHJlc3VsdC5pZCA9PT0gcHJvZHVjdCAmJiAocmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoZGVmYXVsdEdlbmRlcikgfHwgcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoJ3VuaXNleCcpKSxcbiAgICAgICksXG4gICAgKVxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja05vdEdlbmRlciA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PlxuICAgICAgc3RvY2tEYXRhLnNvbWUoXG4gICAgICAgIChyZXN1bHQpID0+XG4gICAgICAgICAgcmVzdWx0LmlkID09PSBwcm9kdWN0ICYmICFyZXN1bHQuZ2VuZGVyPy5pbmNsdWRlcyhkZWZhdWx0R2VuZGVyKSAmJiAhcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoJ3VuaXNleCcpLFxuICAgICAgKSxcbiAgICApXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkc1N0b2NrR2VuZGVyLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tOb3RHZW5kZXIpXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrT3V0ID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrT3V0LnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0LmlkID09PSBwcm9kdWN0KSlcbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcbiAgICAgIC5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxuICAgIGNvbnN0IG9yZGVyZWRJZCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogb3JkZXJlZElkIH0sXG4gICAgICB9LFxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy5zZXRCcmFuZHNMaXN0KG9wdGlvbnMsIHRvdGFsUmVzdWx0LmRpc3RpbmN0Py5icmFuZClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHtcbiAgICAgICAgLi4udG90YWxSZXN1bHQuZGlzdGluY3QsXG4gICAgICAgIGJyYW5kOiB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0lkc0J5U2VhcmNoKHRlcm06IHN0cmluZywgcHJldmlldzogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxuXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgdGhpcy5wcm9kdWN0U2VhcmNoXG4gICAgICAuc2VhcmNoPFByb2R1Y3RTZWFyY2g+KHRlcm0sIDk5OSwgdGhpcy5zaG9wID09IFNob3BzLkdMQU1TSE9QID8gJ2ZlbWFsZScgOiAnbWFsZScpXG4gICAgICAudGhlbigocHJvZHVjdHMpID0+IFsuLi5uZXcgU2V0KHByb2R1Y3RzLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCkpXSkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQnJhbmRzT25seShcbiAgICBvcHRpb25zOiBQaWNrPEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sICdmaWx0ZXJzJyB8ICdtYWluR2VuZGVyJz4sXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10gPSBbXSxcbiAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XG4gICAgICAuZmluZENhdGFsb2coXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFsnaWQnXSxcbiAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAuLi4oIWlzRW1wdHkocHJvZHVjdElkcykgPyB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RJZHMgfSB9IDoge30pLFxuICAgICAgICAgICAgcHVibGlzaGVkOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXG4gICAgICApXG4gICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGlzdGluY3QuYnJhbmRcbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldEJyYW5kc0xpc3Qob3B0aW9uczogUGFydGlhbDxGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+PiwgYnJhbmRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZpbHRlckJyYW5kcyA9IG9wdGlvbnMuZmlsdGVycz8uYnJhbmRzXG5cbiAgICBpZiAoaXNFbXB0eShicmFuZHMpKSBkZWxldGUgb3B0aW9ucy5maWx0ZXJzPy5icmFuZHNcblxuICAgIHRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldID1cbiAgICAgIHRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldIHx8IGJyYW5kcyB8fCAoYXdhaXQgdGhpcy5mZXRjaEJyYW5kc09ubHkob3B0aW9ucykpXG5cbiAgICB0aGlzLmJyYW5kc0xpc3RbdGhpcy5idWlsZEluZGV4QnJhbmRzKG9wdGlvbnMpXSA9IHRoaXMuYnJhbmRzTGlzdFt0aGlzLmJ1aWxkSW5kZXhCcmFuZHMob3B0aW9ucyldLmZpbHRlcihCb29sZWFuKVxuXG4gICAgb3B0aW9ucy5maWx0ZXJzID0ge1xuICAgICAgLi4ub3B0aW9ucy5maWx0ZXJzLFxuICAgICAgYnJhbmRzOiBmaWx0ZXJCcmFuZHMsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZpbHRlclF1ZXJ5ID0gKHtcbiAgICBjbHViRGlzY291bnQsXG4gICAgYnJhbmRzLFxuICAgIHByaWNlcyxcbiAgICBnZW5kZXIsXG4gICAgdGFncyxcbiAgICByYXRlLFxuICAgIGN1c3RvbU9wdGlvbnMsXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHt9IGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD5cblxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcbiAgICAgIHNldChmaWx0ZXJzLCAncHJpY2Uuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsIHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2x1YkRpc2NvdW50IH0pXG4gICAgaWYgKGJyYW5kcz8ubGVuZ3RoKSBmaWx0ZXJzLmJyYW5kID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBicmFuZHMgfVxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XG4gICAgaWYgKHByaWNlcz8ubWluIHx8IHByaWNlcz8ubWF4KVxuICAgICAgc2V0KGZpbHRlcnMsIHByaWNlcy5zdWJzY3JpYmVyUHJpY2UgPyAncHJpY2Uuc3Vic2NyaWJlclByaWNlJyA6ICdwcmljZS5wcmljZScsIFtcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5mbG9vcihwcmljZXMubWluKSB9XSA6IFtdKSxcbiAgICAgICAgLi4uKHByaWNlcy5tYXggPyBbeyBvcGVyYXRvcjogV2hlcmUuTFRFLCB2YWx1ZTogTWF0aC5jZWlsKHByaWNlcy5tYXgpIH1dIDogW10pLFxuICAgICAgXSlcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XG4gICAgaWYgKHRhZ3M/Lmxlbmd0aCkgZmlsdGVycy50YWdzID0geyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHRhZ3MgfVxuICAgIGlmIChjdXN0b21PcHRpb25zPy5sZW5ndGgpIGZpbHRlcnMuZmlsdGVycyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBjdXN0b21PcHRpb25zIH1cblxuICAgIHJldHVybiBmaWx0ZXJzXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU29ydFF1ZXJ5ID0gKHNvcnQ6IFByb2R1Y3RTb3J0KTogUmVwb3NpdG9yeU9yZGVyQnk8UHJvZHVjdD4gPT4ge1xuICAgIGlmICghc29ydCB8fCBzb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHJldHVybiB7fVxuXG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXNlbGxlcnMnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLFxuICAgICAgICByYXRlOiAnZGVzYycsXG4gICAgICAgIHN0b2NrOiAnZGVzYycsXG4gICAgICAgIG5hbWU6ICdhc2MnLFxuICAgICAgfVxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3QtcmF0aW5nJykgcmV0dXJuIHsgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycsIHN0b2NrOiAnZGVzYycsIG5hbWU6ICdhc2MnIH1cbiAgICBpZiAoc29ydCA9PT0gJ25ld3MnKSByZXR1cm4geyBjcmVhdGVkQXQ6ICdkZXNjJyB9XG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LWRpc2NvdW50JylcbiAgICAgIHJldHVybiB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaW1pdFF1ZXJ5ID0gKG9wdGlvbnM6IHsgcGFnZT86IG51bWJlcjsgcGVyUGFnZT86IG51bWJlciB9KTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucz8ucGVyUGFnZSB8fCAyMFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbWl0LFxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzUHJvZmlsZSA9IChcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEZldGNoUHJvZHVjdHNQYXJhbXM8VD4+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xuXG4gIHByaXZhdGUgaGFzVGVybSA9IChcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEZldGNoUHJvZHVjdHNQYXJhbXM8VD4+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gIH0gPT4gJ3Rlcm0nIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8RmV0Y2hQcm9kdWN0c1BhcmFtczxUPj4sXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICB9ID0+ICdjYXRlZ29yeScgaW4gb3B0aW9uc1xuXG4gIHByaXZhdGUgYnVpbGRJbmRleEJyYW5kcyA9IChvcHRpb25zOiBQYXJ0aWFsPEZldGNoUHJvZHVjdHNQYXJhbXM8VD4+KTogc3RyaW5nID0+IHtcbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSkgcmV0dXJuIGBjYXRlZ29yeS0ke29wdGlvbnMuY2F0ZWdvcnkuaWR9YFxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykpIHJldHVybiBgdGVybS0ke29wdGlvbnMudGVybX1gXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSkgcmV0dXJuIGBwcm9maWxlLSR7b3B0aW9ucy5wcm9maWxlLmpvaW4oJywnKX1gXG5cbiAgICByZXR1cm4gJydcbiAgfVxufVxuIl19
@@ -11,20 +11,20 @@ export class CategoryService {
11
11
  this.categoryStructureAdapter = categoryStructureAdapter;
12
12
  this.shop = shop;
13
13
  }
14
- async fetchBrands(category, options) {
14
+ async fetchBrands(category, options, optionsCache) {
15
15
  const brands = await this.productRepository
16
16
  .findCatalog({
17
17
  filters: await this.categoryStructureAdapter.buildProductFilterByCategory(category),
18
18
  fields: ['brand'],
19
- }, options?.mainGender ? options?.mainGender : this.shop === Shops.MENSMARKET ? 'male' : 'female')
19
+ }, options?.mainGender ? options?.mainGender : this.shop === Shops.MENSMARKET ? 'male' : 'female', optionsCache)
20
20
  .then(({ data }) => Object.keys(data.map((product) => product.brand).reduce((brands, brand) => ({ ...brands, [brand]: true }), {})));
21
21
  return this.categoryRepository
22
- .find({ filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } })
22
+ .find({ filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } }, optionsCache)
23
23
  .then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)));
24
24
  }
25
- async fetchFilterOptions(category) {
25
+ async fetchFilterOptions(category, optionsCache) {
26
26
  return await this.categoryFilterRepository
27
- .find({ filters: { categoryId: +category.id } })
27
+ .find({ filters: { categoryId: +category.id } }, optionsCache)
28
28
  .then(({ data }) => data.map((categoryFilter) => categoryFilter.filter));
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CategoryService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: 'CategoryFilterRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
48
48
  type: Inject,
49
49
  args: [DEFAULT_SHOP]
50
50
  }] }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy9jYXRlZ29yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFPTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFTL0QsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDZ0QsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUNoQyx3QkFBa0QsRUFDMUQsd0JBQWtELEVBQ3hELElBQVc7UUFKSixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDaEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUMxRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hELFNBQUksR0FBSixJQUFJLENBQU87SUFDakQsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBa0IsRUFBRSxPQUE0QjtRQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUI7YUFDeEMsV0FBVyxDQUNWO1lBQ0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQztZQUNuRixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDbEIsRUFDRCxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUMvRjthQUNBLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ2hILENBQUE7UUFFSCxPQUFPLElBQUksQ0FBQyxrQkFBa0I7YUFDM0IsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7YUFDdEcsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQWtCO1FBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsd0JBQXdCO2FBQ3ZDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7OEdBL0JVLGVBQWUsa0JBRWhCLG1CQUFtQixhQUNuQixvQkFBb0IsYUFDcEIsMEJBQTBCLGFBQzFCLGtCQUFrQixhQUNsQixZQUFZO2tIQU5YLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQ2pDLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGVnb3J5LFxuICBDYXRlZ29yeUZpbHRlclJlcG9zaXRvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmlsdGVyLFxuICBQcm9kdWN0R2VuZGVyLFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgU2hvcHMsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgQ0FURUdPUllfU1RSVUNUVVJFLCBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi8uLi9jb25zdHMnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzJ1xuXG50eXBlIEZldGNoQnJhbmRzT3B0aW9ucyA9IHtcbiAgbWFpbkdlbmRlcj86IFByb2R1Y3RHZW5kZXJcbiAgc2hvcD86IFNob3BzXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoQnJhbmRzKGNhdGVnb3J5OiBDYXRlZ29yeSwgb3B0aW9ucz86IEZldGNoQnJhbmRzT3B0aW9ucyk6IFByb21pc2U8Q2F0ZWdvcnlbXT4ge1xuICAgIGNvbnN0IGJyYW5kcyA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnlcbiAgICAgIC5maW5kQ2F0YWxvZyhcbiAgICAgICAge1xuICAgICAgICAgIGZpbHRlcnM6IGF3YWl0IHRoaXMuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpLFxuICAgICAgICAgIGZpZWxkczogWydicmFuZCddLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zPy5tYWluR2VuZGVyID8gb3B0aW9ucz8ubWFpbkdlbmRlciA6IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHsgZGF0YSB9KSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5icmFuZCkucmVkdWNlKChicmFuZHMsIGJyYW5kKSA9PiAoeyAuLi5icmFuZHMsIFticmFuZF06IHRydWUgfSksIHt9KSksXG4gICAgICApXG5cbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnlcbiAgICAgIC5maW5kKHsgZmlsdGVyczogeyBicmFuZENhdGVnb3J5OiB0cnVlLCBzaG9wOiBvcHRpb25zPy5zaG9wIHx8IHRoaXMuc2hvcCB9LCBvcmRlckJ5OiB7IG5hbWU6ICdhc2MnIH0gfSlcbiAgICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5maWx0ZXIoKGNhdGVnb3J5KSA9PiBicmFuZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY29uZGl0aW9ucy5icmFuZCkpKVxuICB9XG5cbiAgYXN5bmMgZmV0Y2hGaWx0ZXJPcHRpb25zKGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jYXRlZ29yeUZpbHRlclJlcG9zaXRvcnlcbiAgICAgIC5maW5kKHsgZmlsdGVyczogeyBjYXRlZ29yeUlkOiArY2F0ZWdvcnkuaWQgfSB9KVxuICAgICAgLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhLm1hcCgoY2F0ZWdvcnlGaWx0ZXIpID0+IGNhdGVnb3J5RmlsdGVyLmZpbHRlcikpXG4gIH1cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy9jYXRlZ29yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFRTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFTL0QsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDZ0QsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUNoQyx3QkFBa0QsRUFDMUQsd0JBQWtELEVBQ3hELElBQVc7UUFKSixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDaEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUMxRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ3hELFNBQUksR0FBSixJQUFJLENBQU87SUFDakQsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXLENBQ2YsUUFBa0IsRUFDbEIsT0FBNEIsRUFDNUIsWUFBaUQ7UUFFakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCO2FBQ3hDLFdBQVcsQ0FDVjtZQUNFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUM7WUFDbkYsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQ2xCLEVBQ0QsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFDOUYsWUFBWSxDQUNiO2FBQ0EsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDaEgsQ0FBQTtRQUVILE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixJQUFJLENBQ0gsRUFBRSxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFDaEcsWUFBWSxDQUNiO2FBQ0EsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQWtCLEVBQUUsWUFBaUQ7UUFDNUYsT0FBTyxNQUFNLElBQUksQ0FBQyx3QkFBd0I7YUFDdkMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDO2FBQzdELElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7OEdBdkNVLGVBQWUsa0JBRWhCLG1CQUFtQixhQUNuQixvQkFBb0IsYUFDcEIsMEJBQTBCLGFBQzFCLGtCQUFrQixhQUNsQixZQUFZO2tIQU5YLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQ2pDLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGVnb3J5LFxuICBDYXRlZ29yeUZpbHRlclJlcG9zaXRvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmlsdGVyLFxuICBQcm9kdWN0R2VuZGVyLFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyxcbiAgU2hvcHMsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgQ0FURUdPUllfU1RSVUNUVVJFLCBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi8uLi9jb25zdHMnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzJ1xuXG50eXBlIEZldGNoQnJhbmRzT3B0aW9ucyA9IHtcbiAgbWFpbkdlbmRlcj86IFByb2R1Y3RHZW5kZXJcbiAgc2hvcD86IFNob3BzXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoQnJhbmRzKFxuICAgIGNhdGVnb3J5OiBDYXRlZ29yeSxcbiAgICBvcHRpb25zPzogRmV0Y2hCcmFuZHNPcHRpb25zLFxuICAgIG9wdGlvbnNDYWNoZT86IHsgY2FjaGU/OiBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zIH0sXG4gICk6IFByb21pc2U8Q2F0ZWdvcnlbXT4ge1xuICAgIGNvbnN0IGJyYW5kcyA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnlcbiAgICAgIC5maW5kQ2F0YWxvZyhcbiAgICAgICAge1xuICAgICAgICAgIGZpbHRlcnM6IGF3YWl0IHRoaXMuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpLFxuICAgICAgICAgIGZpZWxkczogWydicmFuZCddLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zPy5tYWluR2VuZGVyID8gb3B0aW9ucz8ubWFpbkdlbmRlciA6IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgICAgICBvcHRpb25zQ2FjaGUsXG4gICAgICApXG4gICAgICAudGhlbigoeyBkYXRhIH0pID0+XG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEubWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0LmJyYW5kKS5yZWR1Y2UoKGJyYW5kcywgYnJhbmQpID0+ICh7IC4uLmJyYW5kcywgW2JyYW5kXTogdHJ1ZSB9KSwge30pKSxcbiAgICAgIClcblxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeVxuICAgICAgLmZpbmQoXG4gICAgICAgIHsgZmlsdGVyczogeyBicmFuZENhdGVnb3J5OiB0cnVlLCBzaG9wOiBvcHRpb25zPy5zaG9wIHx8IHRoaXMuc2hvcCB9LCBvcmRlckJ5OiB7IG5hbWU6ICdhc2MnIH0gfSxcbiAgICAgICAgb3B0aW9uc0NhY2hlLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhLmZpbHRlcigoY2F0ZWdvcnkpID0+IGJyYW5kcy5pbmNsdWRlcyhjYXRlZ29yeS5jb25kaXRpb25zLmJyYW5kKSkpXG4gIH1cblxuICBhc3luYyBmZXRjaEZpbHRlck9wdGlvbnMoY2F0ZWdvcnk6IENhdGVnb3J5LCBvcHRpb25zQ2FjaGU/OiB7IGNhY2hlPzogUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyB9KTogUHJvbWlzZTxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeVxuICAgICAgLmZpbmQoeyBmaWx0ZXJzOiB7IGNhdGVnb3J5SWQ6ICtjYXRlZ29yeS5pZCB9IH0sIG9wdGlvbnNDYWNoZSlcbiAgICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5tYXAoKGNhdGVnb3J5RmlsdGVyKSA9PiBjYXRlZ29yeUZpbHRlci5maWx0ZXIpKVxuICB9XG59XG4iXX0=