@eo-sdk/client 9.5.0-rc.1 → 9.6.0-rc.1
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/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts +3 -2
- package/app/eo-framework/app-shell/app-bar/app-process/app-process.component.d.ts +1 -0
- package/app/eo-framework/object-details/object-details.component.d.ts +1 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +17 -11
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +75 -0
- package/app/eo-framework/split/split/split.component.d.ts +1 -1
- package/app/eo-framework/split/split-area/split-area.component.d.ts +1 -0
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -0
- package/assets/_default/i18n/de.json +45 -21
- package/assets/_default/i18n/en.json +35 -11
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +15 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +427 -70
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.d.ts +10 -9
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/favorite-state/favorite-state.component.js +3 -3
- package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +7 -5
- package/esm2015/app/eo-client/notifications-state/notifications-state.component.js +3 -3
- package/esm2015/app/eo-client/object-state/object-state-service/object-state.service.js +2 -2
- package/esm2015/app/eo-client/prepare-state/prepare-state/prepare-state.component.js +3 -3
- package/esm2015/app/eo-client/recyclebin-state/recyclebin-state.component.js +13 -6
- package/esm2015/app/eo-framework/actions/actions/delete-action/delete/delete.component.js +5 -2
- package/esm2015/app/eo-framework/actions/actions/signature-action/signature/signature.component.js +8 -6
- package/esm2015/app/eo-framework/actions/actions/signature-action/signature-action.component.js +8 -2
- package/esm2015/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.js +6 -4
- package/esm2015/app/eo-framework/app-shell/app-bar/app-process/app-process.component.js +8 -2
- package/esm2015/app/eo-framework/frame/frame.component.js +9 -1
- package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +3 -3
- package/esm2015/app/eo-framework/object-details/object-details.component.js +12 -5
- package/esm2015/app/eo-framework/object-details/object-details.module.js +4 -2
- package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +2 -2
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +41 -23
- package/esm2015/app/eo-framework/recyclebin-details/recyclebin-details.component.js +260 -0
- package/esm2015/app/eo-framework/split/split/split.component.js +6 -6
- package/esm2015/app/eo-framework/split/split-area/split-area.component.js +5 -1
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +4 -2
- package/esm2015/app/eo-framework/ui/signature-tab/signature-tab.component.js +3 -3
- package/esm2015/eo-sdk-client.js +11 -10
- package/esm2015/projects/eo-sdk/core/lib/model/dms-object-history.model.js +2 -1
- package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +3 -3
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +12 -1
- package/esm2015/projects/eo-sdk/core/lib/service/events/events.js +2 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +15 -2
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +378 -62
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +4 -0
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +1 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +8 -0
- package/projects/eo-sdk/core/lib/service/events/events.d.ts +1 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -236,6 +236,17 @@ export class DmsService {
|
|
|
236
236
|
const uri = `/dms/restoreversion/${id}/${version}`;
|
|
237
237
|
return this.backend.post(Utils.buildUri(uri, { type: type }), null);
|
|
238
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Restores File
|
|
241
|
+
* @param id DMS object id
|
|
242
|
+
* @param type The dms object type
|
|
243
|
+
* @param userId user id
|
|
244
|
+
* @return
|
|
245
|
+
*/
|
|
246
|
+
restore(id, userId, type) {
|
|
247
|
+
const uri = `/dms/restore/${id}?userid=${userId}`;
|
|
248
|
+
return this.backend.put(uri);
|
|
249
|
+
}
|
|
239
250
|
/**
|
|
240
251
|
* if dmsObject is specified, load latest version and trigger Enaio event DMS_OBJECT_UPDATED
|
|
241
252
|
*
|
|
@@ -494,4 +505,4 @@ DmsService.ctorParameters = () => [
|
|
|
494
505
|
{ type: SystemService },
|
|
495
506
|
{ type: EventService }
|
|
496
507
|
];
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxVQUFvQixFQUFFLGVBQXlCO1FBQ3hILE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFFekIsTUFBTSxDQUFDLEdBQUc7WUFDUixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLElBQUk7WUFDSixVQUFVO1lBQ1YsT0FBTztZQUNQLFdBQVcsRUFBRSxlQUFlO1lBQzVCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2QyxJQUFJLENBQ0gsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxNQUFpQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQjtRQUNyQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RSxJQUFJLFNBQVMsQ0FBQyxhQUFhLEVBQUU7WUFDM0IsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuRztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxVQUFvQixFQUFFLEtBQUssR0FBRyxLQUFLO1FBQzVFLE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFDRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUM7U0FDbkM7UUFDRCxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUM7YUFDMUMsSUFBSSxDQUNILEdBQUcsQ0FDRCxXQUFXLENBQUMsRUFBRTtZQUNaLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxTQUFvQjtRQUM5QixNQUFNLEdBQUcsR0FBRyxRQUFRLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEYsR0FBRyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxFQUFVLEVBQUUsSUFBYTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsV0FBVyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxTQUFvQjs7UUFDakMsTUFBTSxJQUFJLFNBQUcsU0FBUyxDQUFDLE9BQU8sMENBQUUsSUFBSSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQUEsU0FBUyxDQUFDLE9BQU8sMENBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNuRSxNQUFNLFNBQVMsU0FBRyxTQUFTLENBQUMsT0FBTywwQ0FBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLFNBQVMsY0FBYyxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDN0UsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pFLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVzthQUNwRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUksQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0JBQW9CLENBQUMsRUFBVSxFQUFFLEtBQWEsRUFBRSxJQUFZLEVBQUUsT0FBZ0I7UUFDNUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEtBQUssRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxRQUFRLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLElBQWE7UUFDakUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUN2RDtZQUNFLElBQUk7WUFDSixPQUFPO1lBQ1AsTUFBTSxFQUFFLElBQUk7U0FDYixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxTQUFrQixFQUFFLFVBQW9CO1FBQzlGLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFDekQ7WUFDRSxTQUFTO1lBQ1QsSUFBSTtZQUNKLE9BQU87WUFDUCxVQUFVO1NBQ1gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFlBQVksQ0FBQyxFQUFVLEVBQUUsU0FBYyxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLGVBQXlCO1FBQ2pHLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQU0sRUFBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBYSxFQUFFLFVBQW9CO1FBQ3hELE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxjQUFjLENBQUMsRUFBVSxFQUFFLE9BQWUsRUFBRSxJQUFhO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsU0FBb0IsRUFBRSxPQUF3QjtRQUMxRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFNBQW9CO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLFFBQVEsU0FBUyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLFVBQWtCLEVBQUUsSUFBVyxFQUFFLFNBQWUsRUFBRSxNQUFvQztRQUVwRyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzVELElBQUksRUFBRSxrQkFBa0I7YUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDTDthQUFNO1lBQ0wsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksRUFBRTtZQUNSLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxHQUFHLEdBQUcsZUFBZSxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE1BQU0sRUFBRTtZQUNWLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxRQUFRLEVBQUUsU0FBa0IsRUFBRSxTQUFrQixFQUFFLElBQXVCO1FBQ2pJLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6RSxPQUFPO1lBQ1AsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQ3hCLFFBQVE7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULElBQUk7U0FDTCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztJQUVKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsa0JBQWtCLENBQUMsU0FBb0IsRUFBRSxPQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCO1FBQzdHLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6RSxPQUFPO1lBQ1AsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQ3hCLFFBQVE7WUFDUixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFNBQXFCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFNBQXFCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsT0FBZSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBa0IsRUFBRSxTQUFrQjtRQUM3RyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0NBQW9DLENBQUMsVUFBdUIsRUFBRSxFQUFVLEVBQUUsU0FBbUIsRUFBRSxvQkFBOEI7UUFDM0gsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9FLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWM7UUFDekMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRO1lBQ1IsVUFBVSxFQUFFLGNBQWM7U0FDM0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCO1FBQzVELE1BQU0sR0FBRyxHQUFHLGFBQWEsRUFBRSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVE7WUFDUixVQUFVLEVBQUUsY0FBYztZQUMxQixpQkFBaUIsRUFBRSxpQkFBaUI7U0FDckMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLElBQWU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLElBQWU7UUFDeEIsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELDBCQUEwQixDQUFDLFNBQW9CO1FBQzdDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ2hCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDbEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1lBQzFCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBRXhCLGFBQWEsRUFBRSxTQUFTLENBQUMsZUFBZTtZQUN4QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDaEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQzlCLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUTtZQUMxQixlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7WUFFMUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxFQUFFLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUN0QyxLQUFLLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLO2dCQUNwQyxXQUFXLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXO2FBQ2pELENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFUixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBRTVCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1lBQy9HLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUVqSSxNQUFNLEVBQUUsQ0FBQztvQkFDUCxVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDL0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSTt3QkFDM0IsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDL0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUTt3QkFDbkMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTztxQkFDbEM7aUJBQ0YsQ0FBQztZQUNGLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUQsV0FBVyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzlELFlBQVksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRSxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFL0QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsb0JBQW9CO1NBQ3JELENBQUM7UUFFRixJQUFJLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxlQUFlLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFdEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs7O1lBbmhCRixVQUFVOzs7WUFqQkgsY0FBYztZQUNkLGFBQWE7WUFJYixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0YXAsIG1lcmdlTWFwLCBjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG1zT2JqZWN0LCBEbXNPYmplY3RBdHRhY2htZW50fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnl9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QtaGlzdG9yeS5tb2RlbCc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uL2V2ZW50cy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7RG1zUGFyYW1zfSBmcm9tICcuL2Rtc1BhcmFtcy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgZW51bSBTdWJzY3JpcHRpb25Nb2RlIHtcbiAgT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQgPSAnTUVUQScsXG4gIE9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEID0gJ0NPTlRFTlQnLFxuICBETVNfT0JKRUNUX0NIQU5HRUQgPSAnQk9USCdcbn1cblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIERNUyBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG1zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBkbXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gaW50ZW50IFVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlIGJhY2tlbmQgd2lsbCByZWNvZ25pemUgdGhlIHJlcXVlc3QgYW5kIGFkZCBpdCB0byBpdHMgbG9nc1xuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcbiAgICogQHBhcmFtIHdpdGhTdG9yYWdlSW5mbyBJZiB0cnVlLCBzdG9yYWdlaW5mbyBpcyBpbmNsdWRlZCBvbiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBpbnRlbnQ/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuLCB3aXRoU3RvcmFnZUluZm8/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfWA7XG5cbiAgICBjb25zdCBxID0ge1xuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IHRydWUsXG4gICAgICBzdWJzY3JpcHRpb246ICdDVVJSRU5UJyxcbiAgICAgIHJlc3VibWlzc2lvbjogJ0NVUlJFTlQnLFxuICAgICAgcmlnaHRzOiAnQ1VSUkVOVCcsXG4gICAgICBkYXRhbWV0YTogJ3RydWUnLFxuICAgICAgY29udGV4dGZvbGRlcjogJ3RydWUnLFxuICAgICAgdHlwZSxcbiAgICAgIHJlY3ljbGViaW4sXG4gICAgICB2ZXJzaW9uLFxuICAgICAgc3RvcmFnZWluZm86IHdpdGhTdG9yYWdlSW5mbyxcbiAgICAgICdfaW50ZW50JzogaW50ZW50XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCBxKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXG4gICAgICAgIG1hcChyZXMgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyZXMpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciB0aGUgRE1TIE9iamVjdHMgYnkgcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSBEbXNQYXJhbXMgcGFyYW1zXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxuICAgKi9cbiAgZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmdldERtc09iamVjdChwYXJhbXMuaWQsIHBhcmFtcy50eXBlLCBwYXJhbXMudmVyc2lvbiwgcGFyYW1zLmludGVudCwgcGFyYW1zLnJlY3ljbGViaW4sIHBhcmFtcy53aXRoU3RvcmFnZUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlb2x2ZXIgb2YgT2JqZWN0IFR5cGVzIGJ5IERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgRG1zT2JqZWN0XG4gICAqL1xuICByZXNvbHZlT2JqZWN0VHlwZXMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGRtc09iamVjdC50eXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoZG1zT2JqZWN0LnR5cGVOYW1lKTtcblxuICAgIGlmIChkbXNPYmplY3QuY29udGV4dEZvbGRlcikge1xuICAgICAgZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZG1zT2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBETVMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2Ygb2JqZWN0XG4gICAqIEBwYXJhbSBoYXJkRGVsZXRlIElmIG9iamVjdCBzaG91bGQgcmVhbGx5IGJlIGRlbGV0ZWQgb3Igb25seSBwdXQgaW50byB0aGUgcmVjeWNsZSBiaW5cbiAgICogQHBhcmFtIGZvcmNlIElmIG9iamVjdCBzaG91bGQgYmUgZm9yY2VkIHRvIGJlIGRlbGV0ZWQsIGV2ZW4gaWYgaXQgaXMgdXNlZCBpbnNpZGUgb2YgYSBwcm9jZXNzLiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGVsZXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGhhcmREZWxldGU/OiBib29sZWFuLCBmb3JjZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgL2Rtcy8ke2lkfWA7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXNbJ3R5cGUnXSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChoYXJkRGVsZXRlKSB7XG4gICAgICBwYXJhbXNbJ2hhcmRkZWxldGUnXSA9IGhhcmREZWxldGU7XG4gICAgfVxuICAgIGlmIChmb3JjZSkge1xuICAgICAgcGFyYW1zWydmb3JjZWRlbGV0ZSddID0gZm9yY2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBwYXRoIG9mIHRoZSBnaXZlbiBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZG1zIG9iamVjdFxuICAgKi9cbiAgZ2V0Q29udGV4dFBhdGgoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KGAvZG1zLyR7aWR9L2NvbnRleHRgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PiB7XG4gICAgICAgICAgICBjb250ZXh0UGF0aC5mb3JFYWNoKHBhdGhJdGVtID0+IHtcbiAgICAgICAgICAgICAgcGF0aEl0ZW0uZG1zb2JqZWN0ID0gbmV3IERtc09iamVjdChwYXRoSXRlbS5kbXNvYmplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjaGlsZHJlbiBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdFtdPlxuICAgKi9cbiAgZ2V0Q2hpbGRyZW4oZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NoaWxkcmVuYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiBkbXNPYmplY3QudHlwZS5uYW1lfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcy5tYXAociA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHIpKSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgdmVyc2lvbnMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldFZlcnNpb25zKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L3ZlcnNpb25zYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRG1zT2JqZWN0KHJlcyk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYXR0YWNobWVudHMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+XG4gICAqL1xuICBnZXRBdHRhY2htZW50cyhkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGRtc09iamVjdC5jb250ZW50Py50eXBlO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkbXNPYmplY3QuY29udGVudD8ubGlua2VkID8gLTEgOiBkbXNPYmplY3QudmVyc2lvbjtcbiAgICBjb25zdCBjb250ZW50SUQgPSBkbXNPYmplY3QuY29udGVudD8uaWQ7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtjb250ZW50SUR9L2F0dGFjaG1lbnRzYCwge3R5cGUsIHZlcnNpb259KTtcbiAgICByZXR1cm4gIWNvbnRlbnRJRCA/IG9mKFtdKSA6IHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLmF0dGFjaG1lbnRpbmZvICYmIHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50cyA/IHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50c1xuICAgICAgICAubWFwKChhLCBpKSA9PiBuZXcgRG1zT2JqZWN0QXR0YWNobWVudChPYmplY3QuYXNzaWduKGEsIHtpZDogaSwgcHJldmlld1VyaTogdGhpcy5nZXRBdHRhY2htZW50QnlJbmRleChjb250ZW50SUQsIGksIHR5cGUsIHZlcnNpb24pfSkpKSA6IFtdXG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBzcGVjaWZpYyBhdHRhY2htZW50IG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSB2ZXJzaW9uXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0QXR0YWNobWVudEJ5SW5kZXgoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfS9hdHRhY2htZW50cy8ke2luZGV4fWAsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBzbGlkZSAoUHJldmlldyBpbWFnZSkuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSBwcmV2aWV3IGltYWdlIGluIHB4XG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0U2xpZGUoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgc2l6ZT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL3NsaWRlJyxcbiAgICAgIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgaGVpZ2h0OiBzaXplXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgcHJldmlldyAoUERGIHJlbmRpdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRQcmV2aWV3KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZywgcmVjeWNsZWJpbj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9jb250ZW50JyxcbiAgICAgIHtcbiAgICAgICAgcmVuZGl0aW9uLFxuICAgICAgICB0eXBlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICByZWN5Y2xlYmluXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRtcyBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGluZGV4ZGF0YSBPYmplY3QgaG9sZGluZyB0aGUgb2JqZWN0cyBpbmRleGRhdGEgKHByb3BlcnR5OiB2YWx1ZSlcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gY2hlY2tyZWZlcmVuY2VzIElmIHRoZSByZWZlcmVuY2UgZmllbGRzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PiBUaGUgdXBkYXRlZCBkbXMgb2JqZWN0XG4gICAqL1xuICB1cGRhdGVPYmplY3QoaWQ6IHN0cmluZywgaW5kZXhkYXRhOiBhbnksIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGNoZWNrcmVmZXJlbmNlcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9YCwge3R5cGUsIHZlcnNpb24sIGNoZWNrcmVmZXJlbmNlc30pO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoPGFueT57aWQsIHR5cGUsIHR5cGVOYW1lOiB0eXBlfSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGluZGV4ZGF0YSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBoaXN0b3J5IChhdWRpdCkgb2Ygb25lIGRtcyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IFRoZSBoaXN0b3J5IG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqL1xuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L2F1ZGl0YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZSwgcmVjeWNsZWJpbjogcmVjeWNsZWJpbn0pKS5waXBlKG1hcCgocmVzKSA9PiByZXMuYXVkaXQubWFwKChhdWRpdEVudHJ5KSA9PiBuZXcgRG1zT2JqZWN0SGlzdG9yeUVudHJ5KGF1ZGl0RW50cnkpKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgc2VsZWN0ZWQgRG1zT2JqZWN0IGJ5IGFkZGluZyB0aGUgZWFybGllciB2ZXJzaW9uXG4gICAqIGFzIHRoZSBuZXcgcmVjZW50IHZlcnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHRvIGJlIHJlc3RvcmVkXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkbXMgb2JqZWN0IHR5cGVcbiAgICogQHJldHVyblxuICAgKi9cbiAgcmVzdG9yZVZlcnNpb24oaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZXZlcnNpb24vJHtpZH0vJHt2ZXJzaW9ufWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogaWYgZG1zT2JqZWN0IGlzIHNwZWNpZmllZCwgbG9hZCBsYXRlc3QgdmVyc2lvbiBhbmQgdHJpZ2dlciBFbmFpbyBldmVudCBETVNfT0JKRUNUX1VQREFURURcbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcGFyYW0gcmVxdWVzdFxuICAgKiBAcmV0dXJuXG4gICAqL1xuICB0cmlnZ2VyVXBkYXRlKGRtc09iamVjdDogRG1zT2JqZWN0LCByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICByZXR1cm4gIWRtc09iamVjdCA/IHJlcXVlc3QgOiByZXF1ZXN0LnBpcGUoXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldERtc09iamVjdChkbXNPYmplY3QuaWQsIGRtc09iamVjdC50eXBlTmFtZSkpLFxuICAgICAgdGFwKF9kbXNPYmplY3QgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCwgX2Rtc09iamVjdCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgQ29udGVudFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZUNvbnRlbnQoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY29udGVudGA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwodXJpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBEbXNPYmplY3QuXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlIFRhcmdldCBvYmplY3QgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgdG8gYmUgYWRkZWQgYXMgRG1zT2JqZWN0cyBjb250ZW50XG4gICAqIEBwYXJhbSBpbmRleERhdGEgSW5kZXhkYXRhIGFzIHBsYWluIG9iamVjdCB3aGVyZSBrZXlzIGFyZSB0aGUgb2JqZWN0cyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgdGhlIHZhbHVlcyB0byBiZSBhcHBsaWVkIHRvIGl0XG4gICAqIEBwYXJhbSBwYXJlbnQgUGFyZW50IGNvbnRleHQgZm9sZGVyIG9mIHRoZSBuZXcgRG1zT2JqZWN0XG4gICAqL1xuICBjcmVhdGVEbXNPYmplY3QodGFyZ2V0VHlwZTogc3RyaW5nLCBmaWxlPzogRmlsZSwgaW5kZXhEYXRhPzogYW55LCBwYXJlbnQ/OiB7aWQ6IHN0cmluZywgdHlwZT86IHN0cmluZ30pOiBPYnNlcnZhYmxlPHtpZDogc3RyaW5nLCB1cmk6IHN0cmluZ30+IHtcblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgaWYgKGluZGV4RGF0YSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkYXRhJywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGluZGV4RGF0YSldLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ25vaW5kZXhkYXRhJywgJycpO1xuICAgIH1cblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKTtcbiAgICB9XG5cbiAgICBsZXQgdXJpID0gYC9kbXMvY3JlYXRlLyR7dGFyZ2V0VHlwZX1gO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHVyaSA9IFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgICBwYXJlbnRJZDogcGFyZW50LmlkLFxuICAgICAgICBwYXJlbnRUeXBlOiBwYXJlbnQudHlwZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdE11bHRpUGFydCh1cmksIGZvcm1EYXRhLCBudWxsLCB7aGVhZGVyczoge319KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTdWJzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kZW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seWVtYWlsXG4gICAqIEBwYXJhbSBtb2RlIFN1YnNjcmlwdGlvbk1vZGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjcmVhdGVTdWJzY3JpcHRpb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgcmVjZWl2ZXIsIHNlbmRlbWFpbDogYm9vbGVhbiwgb25seWVtYWlsOiBib29sZWFuLCBtb2RlPzogU3Vic2NyaXB0aW9uTW9kZSkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3N1YnNjcmlwdGlvbi8ke2Rtc09iamVjdC5pZH1gO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHN1YmplY3QsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG4gICAgICByZWNlaXZlcixcbiAgICAgIHNlbmRlbWFpbCxcbiAgICAgIG9ubHllbWFpbCxcbiAgICAgIG1vZGVcbiAgICB9KSwge30pXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFJlc3VibWlzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIGR1ZVxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3VibWlzc2lvbi8ke2Rtc09iamVjdC5pZH1gO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHN1YmplY3QsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG4gICAgICByZWNlaXZlcixcbiAgICAgIGR1ZTogZHVlID8gZHVlLnRvSVNPU3RyaW5nKCkgOiAnJyxcbiAgICAgIHNlbmRlbWFpbDogc2VuZEVtYWlsLFxuICAgICAgb25seWVtYWlsOiBvbmx5RW1haWxcbiAgICB9KSwge30pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFtb3ZlIGEgU3Vic2NyaXB0aW9uIGJ5IGEgZ2l2ZW4gSWRcbiAgICpcbiAgICogQHBhcmFtIHN1YnNjcmlwdGlvbklkXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlU3Vic2NyaXB0aW9uQnlJZChzdWJzY3JpcHRpb25JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvc3Vic2NyaXB0aW9uLyR7c3Vic2NyaXB0aW9uSWR9YCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIFJlc3VibWlzc2lvbiBieSBhIGdpdmVuIElkXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtSWRcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChpdGVtSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvZG1zL3Jlc3VibWlzc2lvbi8ke2l0ZW1JZH1gKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGEgUmVzdWJtaXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gZHVlXG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgdXBkYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoZG1zT2JqZWN0LmlkKS5waXBlKG1lcmdlTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3QsIHN1YmplY3QsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbCwgb25seUVtYWlsKTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0dGVyIGZvciBPcmdhbml6YXRpb24gT2JqZWN0cyBXaXRoIFJlYWQgUmlnaHRzXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3RbXSBkbXNPYmplY3RzXG4gICAqIEBwYXJhbSBzdHJpbmdbXSBvcmdhTmFtZXNcbiAgICogQHBhcmFtIHN0cmluZ1tdIG9yZ2FOYW1lV2l0aENoaWxkcmVuXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHNldE9yZ2FuaXphdGlvbk9iamVjdHNXaXRoUmVhZFJpZ2h0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgaWQ6IHN0cmluZywgb3JnYU5hbWVzOiBzdHJpbmdbXSwgb3JnYU5hbWVXaXRoQ2hpbGRyZW46IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH0vc2hhcmVgO1xuICAgIGNvbnN0IHNoYXJlcyA9IFtcbiAgICAgIC4uLm9yZ2FOYW1lV2l0aENoaWxkcmVuLm1hcChmaWVsZCA9PiAoeyBvcmdhbml6YXRpb25vYmplY3Q6IGZpZWxkLCBzaGFyZWNoaWxkcmVuOiB0cnVlIH0pKSxcbiAgICAgIC4uLm9yZ2FOYW1lcy5tYXAobmFtZSA9PiAoeyBvcmdhbml6YXRpb25vYmplY3Q6IG5hbWUsIHNoYXJlY2hpbGRyZW46IGZhbHNlIH0pKVxuICAgIF07XG4gICAgXG4gICAgY29uc3QgZGF0YSA9IHsgc2hhcmVzIH07XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3RzWzBdLCB0aGlzLmJhY2tlbmQucHV0KHVybCwgZGF0YSkpO1xuICB9XG4gIC8qKlxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVOYW1lXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgdHlwZTogdHlwZU5hbWUsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXG4gICAgfSksIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGNvbnN0IGJhc2UgPSB7XG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcblxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXG5cbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxuICAgICAgfSA6IG51bGwsXG5cbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcblxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxuXG4gICAgICByaWdodHM6IFt7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxuICAgICAgICB9XG4gICAgICB9XSxcbiAgICAgIHNoYXJlczogZG1zT2JqZWN0LnNoYXJlcyxcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXG4gICAgICBjb250ZW50dHlwZTogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC50eXBlIDogbnVsbCxcbiAgICAgIGNvbnRlbnRjb3VudDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb3VudCA6IG51bGwsXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXG5cbiAgICAgIHN1YnNjcmlwdGlvbnM6IGRtc09iamVjdC5zdWJzY3JpcHRpb25zLFxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogZG1zT2JqZWN0LmFkZGl0aW9uYWx2aXNpYmlsaXR5XG4gICAgfTtcblxuICAgIGxldCBjb3BpZWREbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KGJhc2UpO1xuICAgIGNvcGllZERtc09iamVjdC50eXBlID0gZG1zT2JqZWN0LnR5cGU7XG5cbiAgICByZXR1cm4gY29waWVkRG1zT2JqZWN0O1xuICB9XG5cbn1cbiJdfQ==
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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SUFBSSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7OztZQS9oQkYsVUFBVTs7O1lBakJILGNBQWM7WUFDZCxhQUFhO1lBSWIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rtc09iamVjdCwgRG1zT2JqZWN0QXR0YWNobWVudH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7RG1zT2JqZWN0SGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwnO1xuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0Rtc1BhcmFtc30gZnJvbSAnLi9kbXNQYXJhbXMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGVudW0gU3Vic2NyaXB0aW9uTW9kZSB7XG4gIE9OTFlfSU5ERVhfREFUQV9DSEFOR0VEID0gJ01FVEEnLFxuICBPTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCA9ICdDT05URU5UJyxcbiAgRE1TX09CSkVDVF9DSEFOR0VEID0gJ0JPVEgnXG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBETVMgU2VydmljZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xuXG4gICAgY29uc3QgcSA9IHtcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcbiAgICAgIHR5cGUsXG4gICAgICByZWN5Y2xlYmluLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXG4gICAgICAnX2ludGVudCc6IGludGVudFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIERtc09iamVjdFxuICAgKi9cbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XG5cbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRtc09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgRE1TIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZG1zIG9iamVjdCB0byBiZSBkZWxldGVkLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIG9iamVjdFxuICAgKiBAcGFyYW0gaGFyZERlbGV0ZSBJZiBvYmplY3Qgc2hvdWxkIHJlYWxseSBiZSBkZWxldGVkIG9yIG9ubHkgcHV0IGludG8gdGhlIHJlY3ljbGUgYmluXG4gICAqIEBwYXJhbSBmb3JjZSBJZiBvYmplY3Qgc2hvdWxkIGJlIGZvcmNlZCB0byBiZSBkZWxldGVkLCBldmVuIGlmIGl0IGlzIHVzZWQgaW5zaWRlIG9mIGEgcHJvY2Vzcy4gRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCBoYXJkRGVsZXRlPzogYm9vbGVhbiwgZm9yY2UgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH1gO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zWyd0eXBlJ10gPSB0eXBlO1xuICAgIH1cbiAgICBpZiAoaGFyZERlbGV0ZSkge1xuICAgICAgcGFyYW1zWydoYXJkZGVsZXRlJ10gPSBoYXJkRGVsZXRlO1xuICAgIH1cbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgIHBhcmFtc1snZm9yY2VkZWxldGUnXSA9IGZvcmNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChVdGlscy5idWlsZFVyaSh1cmwsIHBhcmFtcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZ2l2ZW4gZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldENvbnRleHRQYXRoKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldChgL2Rtcy8ke2lkfS9jb250ZXh0YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgY29udGV4dFBhdGggPT4ge1xuICAgICAgICAgICAgY29udGV4dFBhdGguZm9yRWFjaChwYXRoSXRlbSA9PiB7XG4gICAgICAgICAgICAgIHBhdGhJdGVtLmRtc29iamVjdCA9IG5ldyBEbXNPYmplY3QocGF0aEl0ZW0uZG1zb2JqZWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRQYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgY2hpbGRyZW4gb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT5cbiAgICovXG4gIGdldENoaWxkcmVuKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jaGlsZHJlbmA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogZG1zT2JqZWN0LnR5cGUubmFtZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXMubWFwKHIgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyKSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHZlcnNpb25zIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXRWZXJzaW9ucyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS92ZXJzaW9uc2A7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IERtc09iamVjdChyZXMpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGF0dGFjaG1lbnRzIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPlxuICAgKi9cbiAgZ2V0QXR0YWNobWVudHMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT4ge1xuICAgIGNvbnN0IHR5cGUgPSBkbXNPYmplY3QuY29udGVudD8udHlwZTtcbiAgICBjb25zdCB2ZXJzaW9uID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmxpbmtlZCA/IC0xIDogZG1zT2JqZWN0LnZlcnNpb247XG4gICAgY29uc3QgY29udGVudElEID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmlkO1xuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7Y29udGVudElEfS9hdHRhY2htZW50c2AsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuICFjb250ZW50SUQgPyBvZihbXSkgOiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSxcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5hdHRhY2htZW50aW5mbyAmJiByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHMgPyByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHNcbiAgICAgICAgLm1hcCgoYSwgaSkgPT4gbmV3IERtc09iamVjdEF0dGFjaG1lbnQoT2JqZWN0LmFzc2lnbihhLCB7aWQ6IGksIHByZXZpZXdVcmk6IHRoaXMuZ2V0QXR0YWNobWVudEJ5SW5kZXgoY29udGVudElELCBpLCB0eXBlLCB2ZXJzaW9uKX0pKSkgOiBbXVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgc3BlY2lmaWMgYXR0YWNobWVudCBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gdmVyc2lvblxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldEF0dGFjaG1lbnRCeUluZGV4KGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtpZH0vYXR0YWNobWVudHMvJHtpbmRleH1gLCB7dHlwZSwgdmVyc2lvbn0pO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgc2xpZGUgKFByZXZpZXcgaW1hZ2UpLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBpbiBweFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldFNsaWRlKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9zbGlkZScsXG4gICAgICB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGhlaWdodDogc2l6ZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHByZXZpZXcgKFBERiByZW5kaXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0UHJldmlldyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvY29udGVudCcsXG4gICAgICB7XG4gICAgICAgIHJlbmRpdGlvbixcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgcmVjeWNsZWJpblxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBkbXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgT2JqZWN0IGhvbGRpbmcgdGhlIG9iamVjdHMgaW5kZXhkYXRhIChwcm9wZXJ0eTogdmFsdWUpXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGNoZWNrcmVmZXJlbmNlcyBJZiB0aGUgcmVmZXJlbmNlIGZpZWxkcyBzaG91bGQgYmUgdmFsaWRhdGVkIG9yIG5vdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD4gVGhlIHVwZGF0ZWQgZG1zIG9iamVjdFxuICAgKi9cbiAgdXBkYXRlT2JqZWN0KGlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBjaGVja3JlZmVyZW5jZXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfWAsIHt0eXBlLCB2ZXJzaW9uLCBjaGVja3JlZmVyZW5jZXN9KTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKDxhbnk+e2lkLCB0eXBlLCB0eXBlTmFtZTogdHlwZX0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBpbmRleGRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgaGlzdG9yeSAoYXVkaXQpIG9mIG9uZSBkbXMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZG1zIG9iamVjdCB0byBmZXRjaCBoaXN0b3J5IGZvclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSByZWN5Y2xlYmluIElmIHRydWUsIG9iamVjdHMgZnJvbSByZWN5Y2xlYmluIGFyZSBpbmNsdWRlZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiBUaGUgaGlzdG9yeSBvZiB0aGUgZG1zIG9iamVjdFxuICAgKi9cbiAgZ2V0SGlzdG9yeShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS9hdWRpdGA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGUsIHJlY3ljbGViaW46IHJlY3ljbGViaW59KSkucGlwZShtYXAoKHJlcykgPT4gcmVzLmF1ZGl0Lm1hcCgoYXVkaXRFbnRyeSkgPT4gbmV3IERtc09iamVjdEhpc3RvcnlFbnRyeShhdWRpdEVudHJ5KSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHNlbGVjdGVkIERtc09iamVjdCBieSBhZGRpbmcgdGhlIGVhcmxpZXIgdmVyc2lvblxuICAgKiBhcyB0aGUgbmV3IHJlY2VudCB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiB0byBiZSByZXN0b3JlZFxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uKGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgdHlwZT86IHN0cmluZykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmV2ZXJzaW9uLyR7aWR9LyR7dmVyc2lvbn1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSksIG51bGwpO1xuICB9XG5cbiAgICAvKipcbiAgICogUmVzdG9yZXMgRmlsZVxuICAgKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSB1c2VySWQgdXNlciBpZFxuICAgKiBAcmV0dXJuXG4gICAqL1xuICAgIHJlc3RvcmUoaWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmUvJHtpZH0/dXNlcmlkPSR7dXNlcklkfWA7XG4gICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmkpO1xuICAgIH1cblxuICAvKipcbiAgICogaWYgZG1zT2JqZWN0IGlzIHNwZWNpZmllZCwgbG9hZCBsYXRlc3QgdmVyc2lvbiBhbmQgdHJpZ2dlciBFbmFpbyBldmVudCBETVNfT0JKRUNUX1VQREFURURcbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcGFyYW0gcmVxdWVzdFxuICAgKiBAcmV0dXJuXG4gICAqL1xuICB0cmlnZ2VyVXBkYXRlKGRtc09iamVjdDogRG1zT2JqZWN0LCByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICByZXR1cm4gIWRtc09iamVjdCA/IHJlcXVlc3QgOiByZXF1ZXN0LnBpcGUoXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldERtc09iamVjdChkbXNPYmplY3QuaWQsIGRtc09iamVjdC50eXBlTmFtZSkpLFxuICAgICAgdGFwKF9kbXNPYmplY3QgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCwgX2Rtc09iamVjdCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgQ29udGVudFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZUNvbnRlbnQoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY29udGVudGA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwodXJpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBEbXNPYmplY3QuXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlIFRhcmdldCBvYmplY3QgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgdG8gYmUgYWRkZWQgYXMgRG1zT2JqZWN0cyBjb250ZW50XG4gICAqIEBwYXJhbSBpbmRleERhdGEgSW5kZXhkYXRhIGFzIHBsYWluIG9iamVjdCB3aGVyZSBrZXlzIGFyZSB0aGUgb2JqZWN0cyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgdGhlIHZhbHVlcyB0byBiZSBhcHBsaWVkIHRvIGl0XG4gICAqIEBwYXJhbSBwYXJlbnQgUGFyZW50IGNvbnRleHQgZm9sZGVyIG9mIHRoZSBuZXcgRG1zT2JqZWN0XG4gICAqL1xuICBjcmVhdGVEbXNPYmplY3QodGFyZ2V0VHlwZTogc3RyaW5nLCBmaWxlPzogRmlsZSwgaW5kZXhEYXRhPzogYW55LCBwYXJlbnQ/OiB7aWQ6IHN0cmluZywgdHlwZT86IHN0cmluZ30pOiBPYnNlcnZhYmxlPHtpZDogc3RyaW5nLCB1cmk6IHN0cmluZ30+IHtcblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgaWYgKGluZGV4RGF0YSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkYXRhJywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGluZGV4RGF0YSldLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ25vaW5kZXhkYXRhJywgJycpO1xuICAgIH1cblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKTtcbiAgICB9XG5cbiAgICBsZXQgdXJpID0gYC9kbXMvY3JlYXRlLyR7dGFyZ2V0VHlwZX1gO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHVyaSA9IFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgICBwYXJlbnRJZDogcGFyZW50LmlkLFxuICAgICAgICBwYXJlbnRUeXBlOiBwYXJlbnQudHlwZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdE11bHRpUGFydCh1cmksIGZvcm1EYXRhLCBudWxsLCB7aGVhZGVyczoge319KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTdWJzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kZW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seWVtYWlsXG4gICAqIEBwYXJhbSBtb2RlIFN1YnNjcmlwdGlvbk1vZGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjcmVhdGVTdWJzY3JpcHRpb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgcmVjZWl2ZXIsIHNlbmRlbWFpbDogYm9vbGVhbiwgb25seWVtYWlsOiBib29sZWFuLCBtb2RlPzogU3Vic2NyaXB0aW9uTW9kZSkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3N1YnNjcmlwdGlvbi8ke2Rtc09iamVjdC5pZH1gO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHN1YmplY3QsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG4gICAgICByZWNlaXZlcixcbiAgICAgIHNlbmRlbWFpbCxcbiAgICAgIG9ubHllbWFpbCxcbiAgICAgIG1vZGVcbiAgICB9KSwge30pXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFJlc3VibWlzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIGR1ZVxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3VibWlzc2lvbi8ke2Rtc09iamVjdC5pZH1gO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHN1YmplY3QsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG4gICAgICByZWNlaXZlcixcbiAgICAgIGR1ZTogZHVlID8gZHVlLnRvSVNPU3RyaW5nKCkgOiAnJyxcbiAgICAgIHNlbmRlbWFpbDogc2VuZEVtYWlsLFxuICAgICAgb25seWVtYWlsOiBvbmx5RW1haWxcbiAgICB9KSwge30pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFtb3ZlIGEgU3Vic2NyaXB0aW9uIGJ5IGEgZ2l2ZW4gSWRcbiAgICpcbiAgICogQHBhcmFtIHN1YnNjcmlwdGlvbklkXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlU3Vic2NyaXB0aW9uQnlJZChzdWJzY3JpcHRpb25JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvc3Vic2NyaXB0aW9uLyR7c3Vic2NyaXB0aW9uSWR9YCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIFJlc3VibWlzc2lvbiBieSBhIGdpdmVuIElkXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtSWRcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChpdGVtSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvZG1zL3Jlc3VibWlzc2lvbi8ke2l0ZW1JZH1gKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGEgUmVzdWJtaXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gZHVlXG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgdXBkYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoZG1zT2JqZWN0LmlkKS5waXBlKG1lcmdlTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3QsIHN1YmplY3QsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbCwgb25seUVtYWlsKTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0dGVyIGZvciBPcmdhbml6YXRpb24gT2JqZWN0cyBXaXRoIFJlYWQgUmlnaHRzXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3RbXSBkbXNPYmplY3RzXG4gICAqIEBwYXJhbSBzdHJpbmdbXSBvcmdhTmFtZXNcbiAgICogQHBhcmFtIHN0cmluZ1tdIG9yZ2FOYW1lV2l0aENoaWxkcmVuXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHNldE9yZ2FuaXphdGlvbk9iamVjdHNXaXRoUmVhZFJpZ2h0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgaWQ6IHN0cmluZywgb3JnYU5hbWVzOiBzdHJpbmdbXSwgb3JnYU5hbWVXaXRoQ2hpbGRyZW46IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH0vc2hhcmVgO1xuICAgIGNvbnN0IHNoYXJlcyA9IFtcbiAgICAgIC4uLm9yZ2FOYW1lV2l0aENoaWxkcmVuLm1hcChmaWVsZCA9PiAoeyBvcmdhbml6YXRpb25vYmplY3Q6IGZpZWxkLCBzaGFyZWNoaWxkcmVuOiB0cnVlIH0pKSxcbiAgICAgIC4uLm9yZ2FOYW1lcy5tYXAobmFtZSA9PiAoeyBvcmdhbml6YXRpb25vYmplY3Q6IG5hbWUsIHNoYXJlY2hpbGRyZW46IGZhbHNlIH0pKVxuICAgIF07XG4gICAgXG4gICAgY29uc3QgZGF0YSA9IHsgc2hhcmVzIH07XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3RzWzBdLCB0aGlzLmJhY2tlbmQucHV0KHVybCwgZGF0YSkpO1xuICB9XG4gIC8qKlxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVOYW1lXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgdHlwZTogdHlwZU5hbWUsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXG4gICAgfSksIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGNvbnN0IGJhc2UgPSB7XG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcblxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXG5cbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxuICAgICAgfSA6IG51bGwsXG5cbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcblxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxuXG4gICAgICByaWdodHM6IFt7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxuICAgICAgICB9XG4gICAgICB9XSxcbiAgICAgIHNoYXJlczogZG1zT2JqZWN0LnNoYXJlcyxcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXG4gICAgICBjb250ZW50dHlwZTogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC50eXBlIDogbnVsbCxcbiAgICAgIGNvbnRlbnRjb3VudDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb3VudCA6IG51bGwsXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXG5cbiAgICAgIHN1YnNjcmlwdGlvbnM6IGRtc09iamVjdC5zdWJzY3JpcHRpb25zLFxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogZG1zT2JqZWN0LmFkZGl0aW9uYWx2aXNpYmlsaXR5XG4gICAgfTtcblxuICAgIGxldCBjb3BpZWREbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KGJhc2UpO1xuICAgIGNvcGllZERtc09iamVjdC50eXBlID0gZG1zT2JqZWN0LnR5cGU7XG5cbiAgICByZXR1cm4gY29waWVkRG1zT2JqZWN0O1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -8,6 +8,7 @@ export const EnaioEvent = {
|
|
|
8
8
|
DMS_OBJECT_LOADED: 'eo.dms.object.loaded',
|
|
9
9
|
DMS_OBJECT_DELETED: 'eo.dms.object.deleted',
|
|
10
10
|
DMS_OBJECT_VERSION_RESTORED: 'eo.dms.object.version.restored',
|
|
11
|
+
DMS_OBJECT_RESTORED_OR_DELETED: 'eo.dms.object.restored.deleted',
|
|
11
12
|
DMS_OBJECT_FAVORITE_ON: 'eo.dms.object.favorite.on',
|
|
12
13
|
DMS_OBJECT_FAVORITE_OFF: 'eo.dms.object.favorite.off',
|
|
13
14
|
DMS_OBJECT_UPDATED: 'eo.dms.object.updated',
|
|
@@ -23,4 +24,4 @@ export const EnaioEvent = {
|
|
|
23
24
|
EO_LICENSE_GRID: 'eo_license_grid',
|
|
24
25
|
SYSTEM_STATUS_IMAGE_CHANGE: 'eo.status.image'
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2V2ZW50cy9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLGdCQUFnQjtJQUN4QixxQkFBcUIsRUFBRSwrQkFBK0I7SUFDdEQscUJBQXFCLEVBQUUsK0JBQStCO0lBQ3RELGlCQUFpQixFQUFFLHNCQUFzQjtJQUN6QyxrQkFBa0IsRUFBRSx1QkFBdUI7SUFDM0MsMkJBQTJCLEVBQUUsZ0NBQWdDO0lBQzdELDhCQUE4QixFQUFFLGdDQUFnQztJQUNoRSxzQkFBc0IsRUFBRSwyQkFBMkI7SUFDbkQsdUJBQXVCLEVBQUUsNEJBQTRCO0lBQ3JELGtCQUFrQixFQUFFLHVCQUF1QjtJQUMzQyxpQkFBaUIsRUFBRSxzQkFBc0I7SUFDekMsb0JBQW9CLEVBQUUseUJBQXlCO0lBQy9DLG9CQUFvQixFQUFFLHlCQUF5QjtJQUMvQyx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsNEJBQTRCLEVBQUUsa0JBQWtCO0lBQ2hELHlCQUF5QixFQUFFLGVBQWU7SUFDMUMseUJBQXlCLEVBQUUsZUFBZTtJQUMxQyx5QkFBeUIsRUFBRSxlQUFlO0lBQzFDLDJCQUEyQixFQUFFLGlCQUFpQjtJQUM5QyxlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLDBCQUEwQixFQUFFLGlCQUFpQjtDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudHMgZW1pdHRlZCBieSBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb25cbiAqL1xuXG5leHBvcnQgY29uc3QgRW5haW9FdmVudCA9IHtcbiAgTE9HT1VUOiAnZW8udXNlci5sb2dvdXQnLFxuICBDTElFTlRfTE9DQUxFX0NIQU5HRUQ6ICdlby51c2VyLmxvY2FsZS5jbGllbnQuY2hhbmdlZCcsXG4gIFNDSEVNQV9MT0NBTEVfQ0hBTkdFRDogJ2VvLnVzZXIubG9jYWxlLnNjaGVtYS5jaGFuZ2VkJyxcbiAgRE1TX09CSkVDVF9MT0FERUQ6ICdlby5kbXMub2JqZWN0LmxvYWRlZCcsXG4gIERNU19PQkpFQ1RfREVMRVRFRDogJ2VvLmRtcy5vYmplY3QuZGVsZXRlZCcsXG4gIERNU19PQkpFQ1RfVkVSU0lPTl9SRVNUT1JFRDogJ2VvLmRtcy5vYmplY3QudmVyc2lvbi5yZXN0b3JlZCcsXG4gIERNU19PQkpFQ1RfUkVTVE9SRURfT1JfREVMRVRFRDogJ2VvLmRtcy5vYmplY3QucmVzdG9yZWQuZGVsZXRlZCcsXG4gIERNU19PQkpFQ1RfRkFWT1JJVEVfT046ICdlby5kbXMub2JqZWN0LmZhdm9yaXRlLm9uJyxcbiAgRE1TX09CSkVDVF9GQVZPUklURV9PRkY6ICdlby5kbXMub2JqZWN0LmZhdm9yaXRlLm9mZicsXG4gIERNU19PQkpFQ1RfVVBEQVRFRDogJ2VvLmRtcy5vYmplY3QudXBkYXRlZCcsXG4gIERNU19PQkpFQ1RfUEFTVEVEOiAnZW8uZG1zLm9iamVjdC5wYXN0ZWQnLFxuICBJTkJPWF9JVEVNX0NPTkZJUk1FRDogJ2VvLmluYm94Lml0ZW0uY29uZmlybWVkJyxcbiAgUFJPQ0VTU19GSUxFX0NIQU5HRUQ6ICdlby5wcm9jZXNzLmZpbGUuY2hhbmdlZCcsXG4gIEVPX0RJQUxPR19TVEFDS19DSEFOR0VEOiAnZW8uZGlhbG9nLnN0YWNrLmNoYW5nZWQnLFxuICBTWVNURU1fU1RBVFVTX1NDSEVNQV9DSEFOR0VEOiAnZW8uc3RhdHVzLnNjaGVtYScsXG4gIFNZU1RFTV9TVEFUVVNfT1JHX0NIQU5HRUQ6ICdlby5zdGF0dXMub3JnJyxcbiAgU1lTVEVNX1NUQVRVU19TRUNfQ0hBTkdFRDogJ2VvLnN0YXR1cy5zZWMnLFxuICBTWVNURU1fU1RBVFVTX0FDTF9DSEFOR0VEOiAnZW8uc3RhdHVzLmFjbCcsXG4gIFNZU1RFTV9TVEFUVVNfSU5CT1hfQ0hBTkdFRDogJ2VvLnN0YXR1cy5pbmJveCcsXG4gIEVPX0xJQ0VOU0VfR1JJRDogJ2VvX2xpY2Vuc2VfZ3JpZCcsXG4gIFNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFOiAnZW8uc3RhdHVzLmltYWdlJ1xufTtcbiJdfQ==
|
|
@@ -1110,6 +1110,7 @@ const EnaioEvent = {
|
|
|
1110
1110
|
DMS_OBJECT_LOADED: 'eo.dms.object.loaded',
|
|
1111
1111
|
DMS_OBJECT_DELETED: 'eo.dms.object.deleted',
|
|
1112
1112
|
DMS_OBJECT_VERSION_RESTORED: 'eo.dms.object.version.restored',
|
|
1113
|
+
DMS_OBJECT_RESTORED_OR_DELETED: 'eo.dms.object.restored.deleted',
|
|
1113
1114
|
DMS_OBJECT_FAVORITE_ON: 'eo.dms.object.favorite.on',
|
|
1114
1115
|
DMS_OBJECT_FAVORITE_OFF: 'eo.dms.object.favorite.off',
|
|
1115
1116
|
DMS_OBJECT_UPDATED: 'eo.dms.object.updated',
|
|
@@ -1744,11 +1745,11 @@ class BackendService {
|
|
|
1744
1745
|
* @param "PDF" | "TIFF" | "TEXT" | "JPEG" rendition The type of rendition to be downloaded. If not specified, the original content will be downloaded.
|
|
1745
1746
|
* Possible renditions are `PDF`, `TIFF`, `TEXT`, `JPEG`.
|
|
1746
1747
|
*/
|
|
1747
|
-
downloadContent(dmsObjects, rendition, fileNameWithVersionNumber) {
|
|
1748
|
+
downloadContent(dmsObjects, rendition, fileNameWithVersionNumber, recyclebin) {
|
|
1748
1749
|
const item = dmsObjects[0];
|
|
1749
1750
|
if (dmsObjects.length === 1) {
|
|
1750
1751
|
if (item.content) {
|
|
1751
|
-
let uri = `${this.getServiceBase()}/dms/${item.content.id}/content?type=${item.content.type}&asdownload=true`;
|
|
1752
|
+
let uri = `${this.getServiceBase()}/dms/${item.content.id}/content?type=${item.content.type}&asdownload=true&recyclebin=${!!recyclebin}`;
|
|
1752
1753
|
if (rendition) {
|
|
1753
1754
|
uri += `&rendition=${rendition}&_intent=DOWNLOAD_${rendition}`;
|
|
1754
1755
|
}
|
|
@@ -4363,6 +4364,7 @@ class DmsObjectHistoryEntry {
|
|
|
4363
4364
|
this.time = json.time;
|
|
4364
4365
|
this.title = json.title;
|
|
4365
4366
|
this.description = json.description;
|
|
4367
|
+
this.intent = json.intent;
|
|
4366
4368
|
this.comment = json.comment;
|
|
4367
4369
|
this.group = json.group;
|
|
4368
4370
|
this.type = json.type;
|
|
@@ -4601,6 +4603,17 @@ class DmsService {
|
|
|
4601
4603
|
const uri = `/dms/restoreversion/${id}/${version}`;
|
|
4602
4604
|
return this.backend.post(Utils.buildUri(uri, { type: type }), null);
|
|
4603
4605
|
}
|
|
4606
|
+
/**
|
|
4607
|
+
* Restores File
|
|
4608
|
+
* @param id DMS object id
|
|
4609
|
+
* @param type The dms object type
|
|
4610
|
+
* @param userId user id
|
|
4611
|
+
* @return
|
|
4612
|
+
*/
|
|
4613
|
+
restore(id, userId, type) {
|
|
4614
|
+
const uri = `/dms/restore/${id}?userid=${userId}`;
|
|
4615
|
+
return this.backend.put(uri);
|
|
4616
|
+
}
|
|
4604
4617
|
/**
|
|
4605
4618
|
* if dmsObject is specified, load latest version and trigger Enaio event DMS_OBJECT_UPDATED
|
|
4606
4619
|
*
|