@sumaris-net/ngx-components 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/public_api.mjs +2 -2
- package/esm2020/src/app/core/home/home.mjs +3 -3
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +2 -2
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +2 -2
- package/esm2020/src/app/social/job/job.model.mjs +1 -23
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +11 -8
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +3 -3
- package/esm2020/src/app/social/job/progression/job-progression.model.mjs +23 -0
- package/esm2020/src/app/social/job/progression/job-progression.service.mjs +71 -0
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +4 -5
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +2 -2
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +2 -2
- package/fesm2015/sumaris-net.ngx-components.mjs +28 -25
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +28 -24
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
- package/src/app/social/job/job.model.d.ts +0 -11
- package/src/app/social/job/progression/job-progression.icon.d.ts +2 -2
- package/src/app/social/job/progression/job-progression.list.d.ts +1 -1
- package/src/app/social/job/progression/job-progression.model.d.ts +11 -0
- package/src/app/social/job/{job.service.d.ts → progression/job-progression.service.d.ts} +5 -5
- package/src/app/social/job/testing/job-progression.testing.d.ts +4 -4
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +2 -2
- package/esm2020/src/app/social/job/job.service.mjs +0 -71
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
|
@@ -205,7 +205,7 @@ export * from './src/app/social/user-event/user-event.service';
|
|
|
205
205
|
export * from './src/app/social/user-event/notification/user-event-notification.icon';
|
|
206
206
|
export * from './src/app/social/job/job.module';
|
|
207
207
|
export * from './src/app/social/job/job.model';
|
|
208
|
-
export * from './src/app/social/job/job.service';
|
|
208
|
+
export * from './src/app/social/job/progression/job-progression.service';
|
|
209
209
|
export * from './src/app/social/job/progression/job-progression.icon';
|
|
210
210
|
export * from './src/app/social/job/progression/job-progression.list';
|
|
211
211
|
export * from './src/app/social/message/message.module';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Moment } from 'moment';
|
|
2
|
-
import { Entity } from '../../core/services/model/entity.model';
|
|
3
2
|
export declare type JobStatus = 'PENDING' | 'RUNNING' | 'SUCCESS' | 'ERROR' | 'FAILED' | 'WARNING' | 'CANCELLED';
|
|
4
3
|
export interface IJob {
|
|
5
4
|
id: number;
|
|
@@ -21,13 +20,3 @@ export declare class Job implements IJob {
|
|
|
21
20
|
configuration: string;
|
|
22
21
|
report: string;
|
|
23
22
|
}
|
|
24
|
-
export declare class JobProgression extends Entity<JobProgression> {
|
|
25
|
-
static fromObject: (source: any, opts?: any) => JobProgression;
|
|
26
|
-
id: number;
|
|
27
|
-
name: string;
|
|
28
|
-
message: string;
|
|
29
|
-
current: number;
|
|
30
|
-
total: number;
|
|
31
|
-
constructor(id?: number);
|
|
32
|
-
fromObject(source: any): void;
|
|
33
|
-
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { ThemePalette } from '@angular/material/core';
|
|
3
3
|
import { ProgressSpinnerMode } from '@angular/material/progress-spinner';
|
|
4
|
-
import { IJobProgressionService } from '
|
|
5
|
-
import { JobProgression } from '
|
|
4
|
+
import { IJobProgressionService } from './job-progression.service';
|
|
5
|
+
import { JobProgression } from './job-progression.model';
|
|
6
6
|
import { PopoverController } from '@ionic/angular';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export interface JobProgressionOptions {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Entity } from '../../../core/services/model/entity.model';
|
|
2
|
+
export declare class JobProgression extends Entity<JobProgression> {
|
|
3
|
+
static fromObject: (source: any, opts?: any) => JobProgression;
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
message: string;
|
|
7
|
+
current: number;
|
|
8
|
+
total: number;
|
|
9
|
+
constructor(id?: number);
|
|
10
|
+
fromObject(source: any): void;
|
|
11
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { JobProgression } from './job.model';
|
|
3
|
-
import { BaseGraphqlService } from '
|
|
4
|
-
import { GraphqlService } from '
|
|
5
|
-
import { Environment } from '
|
|
2
|
+
import { JobProgression } from './job-progression.model';
|
|
3
|
+
import { BaseGraphqlService } from '../../../core/services/base-graphql-service.class';
|
|
4
|
+
import { GraphqlService } from '../../../core/graphql/graphql.service';
|
|
5
|
+
import { Environment } from '../../../../environments/environment.class';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
7
7
|
import { FetchPolicy, WatchQueryFetchPolicy } from '@apollo/client/core';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
export declare const APP_JOB_PROGRESSION_SERVICE: InjectionToken<
|
|
9
|
+
export declare const APP_JOB_PROGRESSION_SERVICE: InjectionToken<IJobProgressionService>;
|
|
10
10
|
export interface IJobProgressionService {
|
|
11
11
|
watchAll(): Observable<JobProgression[]>;
|
|
12
12
|
addJob(id: number, job?: JobProgression): any;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { JobProgressionIcon, JobProgressionOptions } from '../progression/job-progression.icon';
|
|
2
|
-
import { JobProgression } from '../job.model';
|
|
3
|
-
import {
|
|
2
|
+
import { JobProgression } from '../progression/job-progression.model';
|
|
3
|
+
import { IJobProgressionService } from '../progression/job-progression.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class JobProgressionTestingPage {
|
|
6
|
-
protected jobProgressionService:
|
|
6
|
+
protected jobProgressionService: IJobProgressionService;
|
|
7
7
|
jobProgressionIcon: JobProgressionIcon;
|
|
8
8
|
jobId: number;
|
|
9
9
|
job: JobProgression;
|
|
10
10
|
options: JobProgressionOptions;
|
|
11
|
-
constructor(jobProgressionService:
|
|
11
|
+
constructor(jobProgressionService: IJobProgressionService);
|
|
12
12
|
incrementJob(value: number): void;
|
|
13
13
|
addJob(): void;
|
|
14
14
|
private createJob;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IJobProgressionService } from '../job.service';
|
|
1
|
+
import { IJobProgressionService } from '../progression/job-progression.service';
|
|
2
2
|
import { FetchPolicy } from '@apollo/client/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
import { JobProgression } from '../job.model';
|
|
4
|
+
import { JobProgression } from '../progression/job-progression.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class JobProgressionTestService implements IJobProgressionService {
|
|
7
7
|
private jobsSubject;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
|
-
import { JobProgression } from './job.model';
|
|
3
|
-
import { BaseGraphqlService } from '../../core/services/base-graphql-service.class';
|
|
4
|
-
import { ENVIRONMENT } from '../../../environments/environment.class';
|
|
5
|
-
import { of } from 'rxjs';
|
|
6
|
-
import { gql } from '@apollo/client/core';
|
|
7
|
-
import { isNil, toNumber } from '../../shared/functions';
|
|
8
|
-
import { map } from 'rxjs/operators';
|
|
9
|
-
import { SocialErrorCodes } from '../social.errors';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../../core/graphql/graphql.service";
|
|
12
|
-
import * as i2 from "../../../environments/environment.class";
|
|
13
|
-
export const APP_JOB_PROGRESSION_SERVICE = new InjectionToken('JobProgressionService');
|
|
14
|
-
const QUERIES = {
|
|
15
|
-
listenChanges: gql `subscription UpdateJobProgression($id: Int!, $interval: Int){
|
|
16
|
-
data: updateJobProgression(id: $id, interval: $interval) {
|
|
17
|
-
id
|
|
18
|
-
name
|
|
19
|
-
message
|
|
20
|
-
current
|
|
21
|
-
total
|
|
22
|
-
}
|
|
23
|
-
}`
|
|
24
|
-
};
|
|
25
|
-
export class JobProgressionService extends BaseGraphqlService {
|
|
26
|
-
constructor(graphql, environment) {
|
|
27
|
-
super(graphql, environment);
|
|
28
|
-
this.graphql = graphql;
|
|
29
|
-
this.environment = environment;
|
|
30
|
-
this._logPrefix = '[job-progression-service] ';
|
|
31
|
-
// For DEV only
|
|
32
|
-
this._debug = environment && !environment.production;
|
|
33
|
-
}
|
|
34
|
-
watchAll(options) {
|
|
35
|
-
return of([]); // TODO
|
|
36
|
-
}
|
|
37
|
-
addJob(id, job) {
|
|
38
|
-
throw new Error('no implemented');
|
|
39
|
-
}
|
|
40
|
-
removeJob(id) {
|
|
41
|
-
throw new Error('no implemented');
|
|
42
|
-
}
|
|
43
|
-
listenChanges(id, options) {
|
|
44
|
-
if (isNil(id))
|
|
45
|
-
throw new Error(`${this._logPrefix}Missing argument 'id'`);
|
|
46
|
-
if (this._debug)
|
|
47
|
-
console.debug(`${this._logPrefix}[WS] Listening changes for job progression {${id}}...`);
|
|
48
|
-
return this.graphql.subscribe({
|
|
49
|
-
query: QUERIES.listenChanges,
|
|
50
|
-
fetchPolicy: options?.fetchPolicy,
|
|
51
|
-
variables: { id, interval: toNumber(options?.interval, 10) },
|
|
52
|
-
error: { code: SocialErrorCodes.SUBSCRIBE_JOB_PROGRESSION_ERROR, message: 'SOCIAL.ERROR.SUBSCRIBE_JOB_PROGRESSION_ERROR' }
|
|
53
|
-
}).pipe(map(({ data }) => {
|
|
54
|
-
const progression = data && JobProgression.fromObject(data);
|
|
55
|
-
if (progression && this._debug)
|
|
56
|
-
console.debug(`${this._logPrefix}Job progression ${id} updated on server`, progression);
|
|
57
|
-
return progression;
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
JobProgressionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: JobProgressionService, deps: [{ token: i1.GraphqlService }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
-
JobProgressionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: JobProgressionService });
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: JobProgressionService, decorators: [{
|
|
64
|
-
type: Injectable
|
|
65
|
-
}], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: i2.Environment, decorators: [{
|
|
66
|
-
type: Optional
|
|
67
|
-
}, {
|
|
68
|
-
type: Inject,
|
|
69
|
-
args: [ENVIRONMENT]
|
|
70
|
-
}] }]; } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2Ivam9iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXBGLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxHQUFHLEVBQXdCLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFHcEQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQXdCLHVCQUF1QixDQUFDLENBQUM7QUFFOUcsTUFBTSxPQUFPLEdBQUc7SUFDZCxhQUFhLEVBQUUsR0FBRyxDQUFBOzs7Ozs7OztJQVFoQjtDQUNILENBQUE7QUFVRCxNQUFNLE9BQU8scUJBQ1gsU0FBUSxrQkFBa0M7SUFHMUMsWUFDWSxPQUF1QixFQUNVLFdBQXdCO1FBRW5FLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFIbEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUduRSxJQUFJLENBQUMsVUFBVSxHQUFHLDRCQUE0QixDQUFDO1FBQy9DLGVBQWU7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDdkQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUVSO1FBQ0MsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVSxFQUFFLEdBQW9CO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVU7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVSxFQUFFLE9BR3pCO1FBRUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHVCQUF1QixDQUFDLENBQUM7UUFDMUUsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSwrQ0FBK0MsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxRyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFnQjtZQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDNUIsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXO1lBQ2pDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUM7WUFDM0QsS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLCtCQUErQixFQUFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBQztTQUN6SCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN4SCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUosQ0FBQzs7a0hBakRVLHFCQUFxQixnREFNVixXQUFXO3NIQU50QixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVTs7MEJBT04sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uIH0gZnJvbSAnLi9qb2IubW9kZWwnO1xuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBHcmFwaHFsU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGZXRjaFBvbGljeSwgZ3FsLCBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3l9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwsIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTb2NpYWxFcnJvckNvZGVzIH0gZnJvbSAnLi4vc29jaWFsLmVycm9ycyc7XG5pbXBvcnQge0Jhc2VFbnRpdHlHcmFwaHFsUXVlcmllc30gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IEFQUF9KT0JfUFJPR1JFU1NJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxKb2JQcm9ncmVzc2lvblNlcnZpY2U+KCdKb2JQcm9ncmVzc2lvblNlcnZpY2UnKTtcblxuY29uc3QgUVVFUklFUyA9IHtcbiAgbGlzdGVuQ2hhbmdlczogZ3FsYHN1YnNjcmlwdGlvbiBVcGRhdGVKb2JQcm9ncmVzc2lvbigkaWQ6IEludCEsICRpbnRlcnZhbDogSW50KXtcbiAgICBkYXRhOiB1cGRhdGVKb2JQcm9ncmVzc2lvbihpZDogJGlkLCBpbnRlcnZhbDogJGludGVydmFsKSB7XG4gICAgICBpZFxuICAgICAgbmFtZVxuICAgICAgbWVzc2FnZVxuICAgICAgY3VycmVudFxuICAgICAgdG90YWxcbiAgICB9XG4gIH1gXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUpvYlByb2dyZXNzaW9uU2VydmljZSB7XG4gIHdhdGNoQWxsKCk6IE9ic2VydmFibGU8Sm9iUHJvZ3Jlc3Npb25bXT47XG4gIGFkZEpvYihpZDogbnVtYmVyLCBqb2I/OiBKb2JQcm9ncmVzc2lvbik7XG4gIHJlbW92ZUpvYihpZDogbnVtYmVyKTtcbiAgbGlzdGVuQ2hhbmdlcyhpZDogbnVtYmVyLCBvcHRpb25zPzogeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxKb2JQcm9ncmVzc2lvbj47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvblNlcnZpY2VcbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8Sm9iUHJvZ3Jlc3Npb24+XG4gIGltcGxlbWVudHMgSUpvYlByb2dyZXNzaW9uU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9ICdbam9iLXByb2dyZXNzaW9uLXNlcnZpY2VdICc7XG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSBlbnZpcm9ubWVudCAmJiAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIHdhdGNoQWxsKG9wdGlvbnM/OiB7XG4gICAgZmV0Y2hQb2xpY3k/OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3lcbiAgfSk6IE9ic2VydmFibGU8Sm9iUHJvZ3Jlc3Npb25bXT4ge1xuICAgIHJldHVybiBvZihbXSk7IC8vIFRPRE9cbiAgfVxuXG4gIGFkZEpvYihpZDogbnVtYmVyLCBqb2I/OiBKb2JQcm9ncmVzc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignbm8gaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHJlbW92ZUpvYihpZDogbnVtYmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgbGlzdGVuQ2hhbmdlcyhpZDogbnVtYmVyLCBvcHRpb25zPzoge1xuICAgIGludGVydmFsPzogbnVtYmVyO1xuICAgIGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3lcbiAgfSk6IE9ic2VydmFibGU8Sm9iUHJvZ3Jlc3Npb24+IHtcblxuICAgIGlmIChpc05pbChpZCkpIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9TWlzc2luZyBhcmd1bWVudCAnaWQnYCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1bV1NdIExpc3RlbmluZyBjaGFuZ2VzIGZvciBqb2IgcHJvZ3Jlc3Npb24geyR7aWR9fS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5zdWJzY3JpYmU8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgcXVlcnk6IFFVRVJJRVMubGlzdGVuQ2hhbmdlcyxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRpb25zPy5mZXRjaFBvbGljeSxcbiAgICAgIHZhcmlhYmxlczogeyBpZCwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdGlvbnM/LmludGVydmFsLCAxMCl9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9KT0JfUFJPR1JFU1NJT05fRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuU1VCU0NSSUJFX0pPQl9QUk9HUkVTU0lPTl9FUlJPUid9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoe2RhdGF9KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzaW9uID0gZGF0YSAmJiBKb2JQcm9ncmVzc2lvbi5mcm9tT2JqZWN0KGRhdGEpO1xuICAgICAgICBpZiAocHJvZ3Jlc3Npb24gJiYgdGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUpvYiBwcm9ncmVzc2lvbiAke2lkfSB1cGRhdGVkIG9uIHNlcnZlcmAsIHByb2dyZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHByb2dyZXNzaW9uO1xuICAgICAgfSlcbiAgICApO1xuXG4gIH1cbn1cbiJdfQ==
|