@pilotdev/pilot-web-sdk 24.24.0 → 24.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/esm2020/lib/base/disposable.mjs +14 -0
  2. package/esm2020/lib/base/index.mjs +3 -0
  3. package/esm2020/lib/base/initializable.mjs +14 -0
  4. package/esm2020/lib/commands/command-builder.mjs +2 -0
  5. package/esm2020/lib/commands/index.mjs +2 -0
  6. package/esm2020/lib/contexts/index.mjs +2 -1
  7. package/esm2020/lib/contexts/page-context.mjs +3 -0
  8. package/esm2020/lib/data/file.mjs +1 -1
  9. package/esm2020/lib/data/index.mjs +2 -3
  10. package/esm2020/lib/data/theme.mjs +6 -0
  11. package/esm2020/lib/icrypto-provider.mjs +1 -1
  12. package/esm2020/lib/injectable/command-builder-provider.mjs +2 -0
  13. package/esm2020/lib/injectable/index.mjs +5 -1
  14. package/esm2020/lib/injectable/injection-source.mjs +33 -0
  15. package/esm2020/lib/injectable/modifier-provider.mjs +1 -1
  16. package/esm2020/lib/injectable/progress-service.mjs +8 -0
  17. package/esm2020/lib/injectable/theme-service.mjs +2 -0
  18. package/esm2020/lib/modifier/index.mjs +4 -0
  19. package/esm2020/lib/modifier/modifier.mjs +2 -0
  20. package/esm2020/lib/modifier/object-builder.mjs +2 -0
  21. package/esm2020/lib/modifier/signature-modifier.mjs +2 -0
  22. package/esm2020/lib/openspace/openspace-view.mjs +1 -7
  23. package/esm2020/lib/page-navigation/index.mjs +5 -0
  24. package/esm2020/lib/page-navigation/page-navigation-section-element.builder.mjs +42 -0
  25. package/esm2020/lib/page-navigation/page-navigation-section.builder.mjs +47 -0
  26. package/esm2020/lib/page-navigation/page-navigation.builder.mjs +40 -0
  27. package/esm2020/lib/page-navigation/page-navigation.mjs +14 -0
  28. package/esm2020/public-api.mjs +7 -3
  29. package/fesm2015/pilotdev-pilot-web-sdk.mjs +219 -4
  30. package/fesm2015/pilotdev-pilot-web-sdk.mjs.map +1 -1
  31. package/fesm2020/pilotdev-pilot-web-sdk.mjs +219 -4
  32. package/fesm2020/pilotdev-pilot-web-sdk.mjs.map +1 -1
  33. package/lib/base/disposable.d.ts +7 -0
  34. package/lib/base/index.d.ts +2 -0
  35. package/lib/base/initializable.d.ts +8 -0
  36. package/lib/commands/command-builder.d.ts +15 -0
  37. package/lib/commands/index.d.ts +1 -0
  38. package/lib/contexts/index.d.ts +1 -0
  39. package/lib/contexts/page-context.d.ts +2 -0
  40. package/lib/data/file.d.ts +4 -5
  41. package/lib/data/index.d.ts +1 -2
  42. package/lib/data/theme.d.ts +7 -0
  43. package/lib/icrypto-provider.d.ts +63 -4
  44. package/lib/injectable/command-builder-provider.d.ts +10 -0
  45. package/lib/injectable/index.d.ts +4 -0
  46. package/lib/injectable/injection-source.d.ts +19 -0
  47. package/lib/injectable/modifier-provider.d.ts +1 -1
  48. package/lib/injectable/progress-service.d.ts +18 -0
  49. package/lib/injectable/theme-service.d.ts +6 -0
  50. package/lib/modifier/index.d.ts +3 -0
  51. package/lib/{data → modifier}/modifier.d.ts +1 -1
  52. package/lib/{data → modifier}/object-builder.d.ts +29 -4
  53. package/lib/modifier/signature-modifier.d.ts +66 -0
  54. package/lib/openspace/openspace-view.d.ts +0 -4
  55. package/lib/page-navigation/index.d.ts +4 -0
  56. package/lib/page-navigation/page-navigation-section-element.builder.d.ts +29 -0
  57. package/lib/page-navigation/page-navigation-section.builder.d.ts +33 -0
  58. package/lib/page-navigation/page-navigation.builder.d.ts +28 -0
  59. package/lib/page-navigation/page-navigation.d.ts +8 -0
  60. package/package.json +1 -1
  61. package/public-api.d.ts +6 -2
  62. package/esm2020/lib/data/modifier.mjs +0 -2
  63. package/esm2020/lib/data/object-builder.mjs +0 -2
@@ -1,7 +1,66 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { IDataObject } from './data';
3
+ /**
4
+ * Represents a certificate with validity dates, issuer, and subject information.
5
+ */
6
+ export interface ICertificate {
7
+ /**
8
+ * Validity end date of the certificate.
9
+ */
10
+ validToDate: string;
11
+ /**
12
+ * Validity start date of the certificate.
13
+ */
14
+ validFromDate: string;
15
+ /**
16
+ * Issuer of the certificate.
17
+ */
18
+ issuer: string;
19
+ /**
20
+ * Subject of the certificate.
21
+ */
22
+ subject: string;
23
+ }
24
+ /**
25
+ * Represents a cryptographic provider interface for signing, verifying, and retrieving certificates.
26
+ */
2
27
  export interface ICryptoProvider {
3
- sign(file: ArrayBuffer): Observable<string>;
4
- verify(file: ArrayBuffer, sign: string): Observable<boolean>;
5
- getCertificates(): Observable<{} | string>;
6
- signAndVerify(): any;
28
+ /**
29
+ * Signs a file with a digital signature using the provided certificate.
30
+ *
31
+ * @param document The document for additional information, represented as an IDataObject.
32
+ * @param file The file to be signed, represented as an ArrayBuffer.
33
+ * @param certificate The digital certificate to use for signing, represented as an ArrayBuffer.
34
+ * @param signatureRequestIds An array of IDs for the signature requests.
35
+ * @returns An observable that resolves to the digital signature as a string.
36
+ */
37
+ sign(document: IDataObject, file: ArrayBuffer, certificate: ArrayBuffer, signatureRequestIds: string[]): Observable<string>;
38
+ /**
39
+ * Verifies the digital signature of a file.
40
+ *
41
+ * @param file The file to be verified, represented as an ArrayBuffer.
42
+ * @param sign The digital signature to be verified, represented as an ArrayBuffer.
43
+ * @returns An observable that resolves to a boolean indicating whether the signature is valid.
44
+ */
45
+ verify(file: ArrayBuffer, sign: ArrayBuffer): Observable<boolean>;
46
+ /**
47
+ * Retrieves a list of digital certificates.
48
+ *
49
+ * @returns An observable that resolves to an array of ICertificate objects.
50
+ */
51
+ getCertificates(): Observable<ICertificate[]>;
52
+ /**
53
+ * Determines whether the cryptoprovider has it or not.
54
+ *
55
+ * @param name The cryptoprovider name.
56
+ * @returns boolean, true if cryptoprovider has same name.
57
+ */
58
+ isKnowSignature(name: string): boolean;
59
+ /**
60
+ * Adds new cryptoprovider name.
61
+ *
62
+ * @param name New name which will be added for comparing.
63
+ * @returns string the new cryptoprovider name which was added.
64
+ */
65
+ addNewProviderName(name: string): string;
7
66
  }
@@ -0,0 +1,10 @@
1
+ import { ICommandBuilder } from "../commands/command-builder";
2
+ /**
3
+ *
4
+ */
5
+ export interface ICommandBuilderProvider {
6
+ /**
7
+ *
8
+ */
9
+ newCommandBuilder(): ICommandBuilder;
10
+ }
@@ -1,4 +1,8 @@
1
+ export * from './injection-source';
1
2
  export * from './objects-repository';
2
3
  export * from './render-context-provider';
3
4
  export * from './modifier-provider';
4
5
  export * from './repository-events';
6
+ export * from './progress-service';
7
+ export * from './theme-service';
8
+ export * from './command-builder-provider';
@@ -0,0 +1,19 @@
1
+ import { IModifierProvider, IObjectsRepository, IProgressService, IRenderContextProvider, IRepositoryEvents, IThemeService } from '../injectable';
2
+ import { ICommandBuilderProvider } from './command-builder-provider';
3
+ export declare class InjectionSource {
4
+ private _modifierProvider;
5
+ private _objectsRepository;
6
+ private _renderContextProvider;
7
+ private _repositoryEvents;
8
+ private _progressService;
9
+ private _themeService;
10
+ private _commandBuilderProvider;
11
+ constructor(_modifierProvider: IModifierProvider, _objectsRepository: IObjectsRepository, _renderContextProvider: IRenderContextProvider, _repositoryEvents: IRepositoryEvents, _progressService: IProgressService, _themeService: IThemeService, _commandBuilderProvider: ICommandBuilderProvider);
12
+ get modifierProvider(): IModifierProvider;
13
+ get objectsRepository(): IObjectsRepository;
14
+ get renderContextProvider(): IRenderContextProvider;
15
+ get repositoryEvents(): IRepositoryEvents;
16
+ get progressService(): IProgressService;
17
+ get themeService(): IThemeService;
18
+ get commandBuilderProvider(): ICommandBuilderProvider;
19
+ }
@@ -1,4 +1,4 @@
1
- import { IModifier } from "../data/modifier";
1
+ import { IModifier } from "../modifier/modifier";
2
2
  /**
3
3
  * Provides modifier
4
4
  */
@@ -0,0 +1,18 @@
1
+ import { Observable } from "rxjs";
2
+ /**
3
+ *
4
+ */
5
+ export interface IProgressService {
6
+ get percentage(): Observable<number>;
7
+ get isOpen(): boolean;
8
+ open(mode: ProgressBarMode): void;
9
+ update(percentage: number): void;
10
+ reset(): void;
11
+ close(): void;
12
+ }
13
+ export declare enum ProgressBarMode {
14
+ Determinate = 0,
15
+ Indeterminate = 1,
16
+ Buffer = 2,
17
+ Query = 3
18
+ }
@@ -0,0 +1,6 @@
1
+ import { Observable } from "rxjs";
2
+ import { Themes } from "../data/theme";
3
+ export interface IThemeService {
4
+ get themes(): Themes;
5
+ get change(): Observable<Themes>;
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './object-builder';
2
+ export * from './modifier';
3
+ export * from './signature-modifier';
@@ -1,5 +1,5 @@
1
1
  import { Observable } from "rxjs/internal/Observable";
2
- import { IDataObject } from ".";
2
+ import { IDataObject } from "../data";
3
3
  import { IObjectBuilder } from "./object-builder";
4
4
  /**
5
5
  * Creates, modifies and deletes objects
@@ -1,7 +1,8 @@
1
- import { AttributeType } from "./attribute";
2
- import { IAnnotationContainer } from "./annotations";
3
- import { IAccessRecord } from "./access";
4
- import { IRelation } from "./relation";
1
+ import { AttributeType } from "../data/attribute";
2
+ import { IAnnotationContainer } from "../data/annotations";
3
+ import { IAccessRecord } from "../data/access";
4
+ import { IRelation } from "../data/relation";
5
+ import { ISignatureModifier } from "./signature-modifier";
5
6
  /**
6
7
  * Fluent interface that enables you to modify the associated object
7
8
  */
@@ -71,6 +72,23 @@ export interface IObjectBuilder {
71
72
  * @returns Self
72
73
  */
73
74
  createSnapshotFrom(version: string, reason: string): IObjectBuilder;
75
+ /**
76
+ * Adds a new file to the associated object
77
+ *
78
+ * @param file File identificator
79
+ * @param file File interface
80
+ * @param creationTime File creation time
81
+ * @param lastAccessTime File last access time
82
+ * @param lastWriteTime File last write time
83
+ * @returns Fluent interface that enables you to modify the associated object
84
+ */
85
+ addFile(fileId: string, file: File, creationTime: Date, lastAccessTime: Date, lastWriteTime: Date): IObjectBuilder;
86
+ /**
87
+ * Removes file from actual file snapshot by identifier
88
+ * @param fileId file identificator
89
+ * @returns Fluent interface that enables you to modify the associated object
90
+ */
91
+ removeFile(fileId: string): IObjectBuilder;
74
92
  /**
75
93
  * Sets permanently deleted flag
76
94
  *
@@ -107,4 +125,11 @@ export interface IObjectBuilder {
107
125
  * @returns Self
108
126
  */
109
127
  addAnnotationContainer(container: IAnnotationContainer, attrbutes: any): IObjectBuilder;
128
+ /**
129
+ * Sets new signature requests to the selected file
130
+ *
131
+ * @param fileId file id
132
+ * @returns Fluent interface that enables you to modify the signatures of the filtered files
133
+ */
134
+ setSignatures(fileId: string): ISignatureModifier;
110
135
  }
@@ -0,0 +1,66 @@
1
+ import { ISignatureRequest } from "../data";
2
+ /**
3
+ * Interface for modifying digital signature requests.
4
+ */
5
+ export interface ISignatureModifier {
6
+ /**
7
+ * Creates a new signature request with the given ID.
8
+ *
9
+ * @param signatureRequestId - The ID of the signature request to create.
10
+ * @returns An instance of ISignatureBuilder for further configuration.
11
+ */
12
+ create(signatureRequestId: string): ISignatureBuilder;
13
+ /**
14
+ * Edits an existing signature request with the given ID.
15
+ *
16
+ * @param signatureRequest - The signature request to edit.
17
+ * @returns An instance of ISignatureBuilder for further configuration.
18
+ */
19
+ edit(signatureRequest: ISignatureRequest): ISignatureBuilder;
20
+ /**
21
+ * Removes an existing signature request with the given ID.
22
+ *
23
+ * @param signatureRequestId - The ID of the signature request to remove.
24
+ */
25
+ remove(signatureRequestId: string): void;
26
+ }
27
+ /**
28
+ * Interface for building digital signature requests.
29
+ */
30
+ export interface ISignatureBuilder {
31
+ /**
32
+ * Sets the position ID for the signature.
33
+ *
34
+ * @param positionId - The ID of the person position associated with the request.
35
+ * @returns This instance of ISignatureBuilder for method chaining.
36
+ */
37
+ withPositionId(positionId: number): ISignatureBuilder;
38
+ /**
39
+ * Sets the role for the signature.
40
+ *
41
+ * @param role - The role associated with the signature.
42
+ * @returns This instance of ISignatureBuilder for method chaining.
43
+ */
44
+ withRole(role: string): ISignatureBuilder;
45
+ /**
46
+ * Sets the flag sign for the signature.
47
+ *
48
+ * @param sign - The sign associated with the signature.
49
+ * @returns This instance of ISignatureBuilder for method chaining.
50
+ */
51
+ withSign(sign: string): ISignatureBuilder;
52
+ /**
53
+ * Sets the request signer for the signature.
54
+ *
55
+ * @param requestSigner - The request signer associated with the signature.
56
+ * @returns This instance of ISignatureBuilder for method chaining.
57
+ */
58
+ withRequestSigner(requestSigner: string): ISignatureBuilder;
59
+ /**
60
+ * Sets the object ID for the signature.
61
+ *
62
+ * @param objectId - The ID of the object associated with the signature.
63
+ * @returns This instance of ISignatureBuilder for method chaining.
64
+ */
65
+ withObjectId(objectId: string): ISignatureBuilder;
66
+ }
@@ -15,8 +15,4 @@ export declare abstract class IOpenspaceView<TOpenspaceViewContext> {
15
15
  * @param context - context
16
16
  */
17
17
  getView(context: TOpenspaceViewContext): HTMLElement | undefined;
18
- /**
19
- * The method is called just before the openspace container's view is disposed
20
- */
21
- onDispose(): void;
22
18
  }
@@ -0,0 +1,4 @@
1
+ export * from './page-navigation-section-element.builder';
2
+ export * from './page-navigation-section.builder';
3
+ export * from './page-navigation.builder';
4
+ export * from './page-navigation';
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Represents a builder for navigation window section's element
3
+ */
4
+ export declare abstract class IPageNavigationSectionElementBuilder {
5
+ constructor();
6
+ /**
7
+ * Element's title to be displayed
8
+ * @param title value
9
+ */
10
+ withTitle(title: string): IPageNavigationSectionElementBuilder;
11
+ /**
12
+ * Element's title to be displayed
13
+ * @param description value
14
+ */
15
+ withDescription(description: string): IPageNavigationSectionElementBuilder;
16
+ /**
17
+ * Element's icon
18
+ * @param name Icon name
19
+ * @param iconSvg Url of icon or base64 string
20
+ */
21
+ withIcon(name: string, iconSvg: string): IPageNavigationSectionElementBuilder;
22
+ /**
23
+ * Element's view id
24
+ *
25
+ * Is matched with corresponding IOpenspaceView's `getViewId(): string`
26
+ * @param value - View Id
27
+ */
28
+ withViewId(value: string): IPageNavigationSectionElementBuilder;
29
+ }
@@ -0,0 +1,33 @@
1
+ import { IPageNavigationSectionElementBuilder } from './page-navigation-section-element.builder';
2
+ /**
3
+ * Represents a builder for the navigation window's section
4
+ */
5
+ export declare abstract class IPageNavigationSectionBuilder {
6
+ constructor();
7
+ /**
8
+ * Section's title to be displayed
9
+ * @param title value
10
+ */
11
+ withTitle(title: string): IPageNavigationSectionBuilder;
12
+ /**
13
+ * Gets the list of existing element ids of the section
14
+ * @returns Existing element ids
15
+ */
16
+ get elementIds(): string[];
17
+ /**
18
+ * Gets count of section's elements
19
+ */
20
+ get count(): number;
21
+ /**
22
+ * Adds a new element to the section
23
+ * @param id Element's internal id
24
+ * @param index The index to put the new element at
25
+ */
26
+ addElement(id: string, index: number): IPageNavigationSectionElementBuilder;
27
+ /**
28
+ * Replaces the element of the section
29
+ * If element does not exist - creates it
30
+ * @param id Elements's internal id
31
+ */
32
+ replaceElement(id: string): IPageNavigationSectionElementBuilder;
33
+ }
@@ -0,0 +1,28 @@
1
+ import { IPageNavigationSectionBuilder } from './page-navigation-section.builder';
2
+ /**
3
+ * Represents a builder for navigation window
4
+ */
5
+ export declare abstract class IPageNavigationBuilder {
6
+ constructor();
7
+ /**
8
+ * Gets the list of existing section ids of the navigation window
9
+ * @returns Existing section ids
10
+ */
11
+ get sectionIds(): string[];
12
+ /**
13
+ * Gets count of navigation window's elements
14
+ */
15
+ get count(): number;
16
+ /**
17
+ * Adds a new section to the navigation window
18
+ * @param id Sections's internal id
19
+ * @param index The index to put the new section at
20
+ */
21
+ addSection(id: string, index: number): IPageNavigationSectionBuilder;
22
+ /**
23
+ * Replaces the section of the navigation window
24
+ * If element does not exist - creates it
25
+ * @param id Elements's internal id
26
+ */
27
+ replaceSection(id: string): IPageNavigationSectionBuilder;
28
+ }
@@ -0,0 +1,8 @@
1
+ import { IPageNavigationBuilder } from './page-navigation.builder';
2
+ /**
3
+ * Interface that allows to add new sections and elements to navigation window
4
+ */
5
+ export declare abstract class IPageNavigation {
6
+ constructor();
7
+ build(builder: IPageNavigationBuilder): void;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pilotdev/pilot-web-sdk",
3
- "version": "24.24.0",
3
+ "version": "24.25.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.1.4",
6
6
  "@angular/core": "^15.1.4",
package/public-api.d.ts CHANGED
@@ -1,10 +1,14 @@
1
+ export * from './lib/base/index';
1
2
  export * from './lib/idata.plugin';
3
+ export * from './lib/icrypto-provider';
2
4
  export * from './lib/injectable/index';
3
5
  export * from './lib/toolbar/index';
4
- export * from "./lib/openspace/index";
6
+ export * from './lib/openspace/index';
7
+ export * from './lib/page-navigation';
5
8
  export * from './lib/tabs/index';
6
9
  export * from './lib/menu/index';
10
+ export * from './lib/modifier/index';
7
11
  export * from './lib/contexts/index';
8
12
  export * from './lib/tools/index';
9
13
  export * from './lib/data/index';
10
- export * from './lib/icrypto-provider';
14
+ export * from './lib/commands/index';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWxvdC13ZWItc2RrL3NyYy9saWIvZGF0YS9tb2RpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzL2ludGVybmFsL09ic2VydmFibGVcIjtcbmltcG9ydCB7IElEYXRhT2JqZWN0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IElPYmplY3RCdWlsZGVyIH0gZnJvbSBcIi4vb2JqZWN0LWJ1aWxkZXJcIjtcblxuLyoqXG4gKiBDcmVhdGVzLCBtb2RpZmllcyBhbmQgZGVsZXRlcyBvYmplY3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGlmaWVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb2JqZWN0XG4gICAqIFxuICAgKiBAcGFyYW0gaWQgTmV3IG9iamVjdCBpZFxuICAgKiBAcGFyYW0gcGFyZW50SWQgUGFyZW50IGlkXG4gICAqIEBwYXJhbSB0eXBlSWQgQ3JlYXRpbmcgb2JqZWN0J3MgdHlwZSBpZFxuICAgKiBAcmV0dXJuIEZsdWVudCBpbnRlcmZhY2UgdGhhdCBlbmFibGVzIHlvdSB0byBtb2RpZnkgY3JlYXRlZCBvYmplY3RcbiAgICovXG4gIGNyZWF0ZShpZDogc3RyaW5nLCBwYXJlbnRJZDogc3RyaW5nLCB0eXBlSWQ6IG51bWJlcik6IElPYmplY3RCdWlsZGVyO1xuICAvKipcbiAgICogRWRpdHMgZXhpc3Rpbmcgb2JqZWN0XG4gICAqIFxuICAgKiBAcGFyYW0gaWQgSWQgb2Ygb2JqZWN0IHRvIG1vZGlmeVxuICAgKiBAcmV0dXJucyBGbHVlbnQgaW50ZXJmYWNlIHRoYXQgZW5hYmxlcyB5b3UgdG8gbW9kaWZ5IGNyZWF0ZWQgb2JqZWN0XG4gICAqL1xuICBlZGl0KGlkOiBzdHJpbmcpIDogSU9iamVjdEJ1aWxkZXI7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGFsbCB0aGUgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBpbiBtb2RpZmllclxuICAgKiBcbiAgICogQHJldHVybnMgQ3JlYXRlZCBhbmQgZWRpdGVkIG9iamVjdHMgd3JhcHBlZCBpbiBjb2xkIE9ic2VydmFibGVcbiAgICovXG4gIGFwcGx5KCk6IE9ic2VydmFibGU8SURhdGFPYmplY3RbXT47XG59Il19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWxvdC13ZWItc2RrL3NyYy9saWIvZGF0YS9vYmplY3QtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlVHlwZSB9IGZyb20gXCIuL2F0dHJpYnV0ZVwiO1xuaW1wb3J0IHsgSUFubm90YXRpb25Db250YWluZXIgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgSUFjY2Vzc1JlY29yZCB9IGZyb20gXCIuL2FjY2Vzc1wiO1xuaW1wb3J0IHsgSVJlbGF0aW9uIH0gZnJvbSBcIi4vcmVsYXRpb25cIjtcblxuLyoqXG4gKiBGbHVlbnQgaW50ZXJmYWNlIHRoYXQgZW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBhc3NvY2lhdGVkIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElPYmplY3RCdWlsZGVyIHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0cmluZyBhdHRyaWJ1dGUgdmFsdWVcbiAgICogXG4gICAqIEBwYXJhbSBuYW1lICBBdHRyaWJ1dGUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgIEF0dHJpYnV0ZSB2YWx1ZVxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqL1xuICBzZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCB0eXBlOiBBdHRyaWJ1dGVUeXBlKTogSU9iamVjdEJ1aWxkZXI7XG4gIC8qKlxuICAgKiBBZGRzIGFjY2VzcyByZWNvcmQgdG8gYW4gb2JqZWN0XG4gICAqIFxuICAgKiBAcGFyYW0gcmVjb3JkICBBY2Nlc3MgcmVjb3JkXG4gICAqIEByZXR1cm5zIFNlbGZcbiAgICovXG4gIHNldEFjY2VzcyhyZWNvcmQ6IElBY2Nlc3NSZWNvcmQpOiBJT2JqZWN0QnVpbGRlcjtcbiAgLyoqXG4gICAqIFJlbW92ZXMgYWNjZXNzIHJlY29yZFxuICAgKiBcbiAgICogQHBhcmFtIHJlY29yZCAgQWNjZXNzIHJlY29yZFxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqL1xuICByZW1vdmVBY2Nlc3MocmVjb3JkOiBJQWNjZXNzUmVjb3JkKTogSU9iamVjdEJ1aWxkZXI7XG4gIC8qKlxuICAgKiBBZGRzIGEgcmVsYXRpb25cbiAgICogXG4gICAqIEBwYXJhbSByZWxhdGlvbiAgUmVsYXRpb25cbiAgICogQHJldHVybnMgU2VsZlxuICAgKi9cbiAgYWRkUmVsYXRpb24ocmVsYXRpb246IElSZWxhdGlvbik6IElPYmplY3RCdWlsZGVyO1xuICAvKipcbiAgICogUmVtb3ZlcyByZWxhdGlvblxuICAgKiBcbiAgICogQHBhcmFtIHJlbGF0aW9uSWQgIFJlbGF0aW9uIGlkXG4gICAqIEByZXR1cm5zIFNlbGZcbiAgICovIFxuICByZW1vdmVSZWxhdGlvbihyZWxhdGlvbklkOiBzdHJpbmcpOiBJT2JqZWN0QnVpbGRlcjtcbiAgLyoqXG4gICAqIFNldHMgbmV3IHR5cGUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIG1ldGhvZCBvbmx5IGZvciByZWNvdmVyaW5nIHBlcm1hbmVudGx5IGRlbGV0ZWQgb2JqZWN0cy4gSW4gb3RoZXIgY2FzZXMsIHRoaXMgY2FuIGxlYWQgdG8gc3lzdGVtIG1hbGZ1bmN0aW9uLlxuICAgKiBcbiAgICogQHBhcmFtIHR5cGVJZCAgVHlwZSBpZFxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqLyBcbiAgc2V0VHlwZUlkKHR5cGVJZDogbnVtYmVyKTogSU9iamVjdEJ1aWxkZXI7XG4gIC8qKlxuICAgKiBTZXRzIG5ldyBwYXJlbnRcbiAgICogXG4gICAqIEBwYXJhbSBwYXJlbnRJZCAgUGFyZW50IGlkXG4gICAqIEByZXR1cm5zIFNlbGZcbiAgICovIFxuICBzZXRQYXJlbnRJZChwYXJlbnRJZDogc3RyaW5nKTogSU9iamVjdEJ1aWxkZXI7XG4gIC8qKlxuICAgKiBBZGRzIGZpbGUgc25hcHNob3RcbiAgICogXG4gICAqIEBwYXJhbSByZWFzb24gIFJlYXNvblxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqLyBcbiAgY3JlYXRlU25hcHNob3QocmVhc29uOiBzdHJpbmcpOiBJT2JqZWN0QnVpbGRlcjtcbiAgLyoqXG4gICAqIE1ha2VzIGZpbGUgc25hcHNob3QgYWN0dWFsXG4gICAqIFxuICAgKiBAcGFyYW0gdmVyc2lvbiAgVmVyc2lvbiBvZiBmaWxlIHNuYXBzaG90IHRvIG1ha2UgYWN0dWFsXG4gICAqIEBwYXJhbSByZWFzb24gIFJlYXNvblxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqLyBcbiAgY3JlYXRlU25hcHNob3RGcm9tKHZlcnNpb246IHN0cmluZywgcmVhc29uOiBzdHJpbmcpOiBJT2JqZWN0QnVpbGRlcjtcbiAgLyoqXG4gICogU2V0cyBwZXJtYW5lbnRseSBkZWxldGVkIGZsYWdcbiAgKiBcbiAgKiBAcGFyYW0gaXNEZWxldGVkICBWYWx1ZVxuICAqIEByZXR1cm5zIFNlbGZcbiAgKi8gXG4gIHNldElzRGVsZXRlZChpc0RlbGV0ZWQ6IGJvb2xlYW4pOiBJT2JqZWN0QnVpbGRlcjtcbiAgLyoqXG4gICAqIFNldCBmbGFnIGluIHJlY3ljbGUgYmluXG4gICAqIFxuICAgKiBAcGFyYW0gaXNJblJlY3ljbGVCaW4gIFZhbHVlXG4gICAqIEByZXR1cm5zIFNlbGZcbiAgICovIFxuICBzZXRJc0luUmVjeWNsZUJpbihpc0luUmVjeWNsZUJpbjogYm9vbGVhbik6IElPYmplY3RCdWlsZGVyO1xuICAvKipcbiAgICogU2V0cyBmcm96ZW4gZmxhZ1xuICAgKiBcbiAgICogQHBhcmFtIGlzRnJlZXplZCBWYWx1ZVxuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqLyBcbiAgc2V0SXNGcmVlemVkKGlzRnJlZXplZDogYm9vbGVhbik6IElPYmplY3RCdWlsZGVyO1xuICAvKipcbiAgICogU2V0cyBvYmplY3QncyBzZWNyZXQgaW5mb1xuICAgKiBcbiAgICogQHBhcmFtIGlzU2VjcmV0IFZhbHVlXG4gICAqIEByZXR1cm5zIFNlbGZcbiAgICovIFxuICBzZXRJc1NlY3JldChpc1NlY3JldDogYm9vbGVhbik6IElPYmplY3RCdWlsZGVyO1xuICAvKipcbiAgICogQWRkcyBvciBjaGFuZ2VzIGEgYW5ub3RhdGlvblxuICAgKiBcbiAgICogQHBhcmFtIGNvbnRhaW5lciBBbm5vdGF0aW9uIGNvbnRhaW5lclxuICAgKiBAcGFyYW0gYXR0cmJ1dGVzIEFubm90YXRpb24gYXR0cmlidXRlc1xuICAgKiBAcmV0dXJucyBTZWxmXG4gICAqLyBcbiAgYWRkQW5ub3RhdGlvbkNvbnRhaW5lcihjb250YWluZXI6IElBbm5vdGF0aW9uQ29udGFpbmVyLCBhdHRyYnV0ZXM6IGFueSk6IElPYmplY3RCdWlsZGVyO1xufSJdfQ==