@magic-xpa/angular 4.801.0-dev481.289 → 4.801.0-dev481.297
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/services/accessor.magic.service.mjs +3 -3
- package/esm2020/src/services/mg-date-adapter.mjs +3 -4
- package/esm2020/src/services/subform.magic.service.mjs +6 -7
- package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +5 -6
- package/esm2020/src/ui/directives/magic/nocontrol.magic.directive.mjs +1 -2
- package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +5 -6
- package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +20 -22
- package/esm2020/src/ui/magic-confirmationBox.mjs +1 -2
- package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +12 -14
- package/esm2020/src/ui/router-container.magic.component.mjs +1 -2
- package/esm2020/src/ui/task-base.magic.component.mjs +2 -2
- package/esm2020/src/ui/utils.mjs +1 -9
- package/fesm2015/magic-xpa-angular.mjs +37 -56
- package/fesm2015/magic-xpa-angular.mjs.map +1 -1
- package/fesm2020/magic-xpa-angular.mjs +37 -56
- package/fesm2020/magic-xpa-angular.mjs.map +1 -1
- package/package.json +3 -3
- package/src/ui/directives/NonMagicControlDirective.d.ts +4 -5
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +2 -3
- package/src/ui/directives/mgformat.magic.directive.d.ts +6 -6
- package/src/ui/magic-modal/magic-overlay-container.d.ts +2 -3
- package/src/ui/utils.d.ts +0 -1
|
@@ -52,10 +52,10 @@ export class AccessorMagicService {
|
|
|
52
52
|
return vis ? 'visible' : 'hidden';
|
|
53
53
|
}
|
|
54
54
|
getNumericPicture(picture) {
|
|
55
|
+
var obj = {};
|
|
55
56
|
if (isNullOrUndefined(picture))
|
|
56
|
-
return
|
|
57
|
+
return obj;
|
|
57
58
|
let pic = new PIC(picture, StorageAttribute.NUMERIC, 0);
|
|
58
|
-
var obj = {};
|
|
59
59
|
obj['prefix'] = "";
|
|
60
60
|
if (pic.getPosPref_().length > 0 && pic.getNegPref_().length > 0) {
|
|
61
61
|
let pref = '-' + pic.getPosPref_();
|
|
@@ -305,4 +305,4 @@ AccessorMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: AccessorMagicServ
|
|
|
305
305
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccessorMagicService, [{
|
|
306
306
|
type: Injectable
|
|
307
307
|
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.MagicColorService }]; }, null); })();
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2FjY2Vzc29yLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGNBQWMsRUFBYSxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLMUQsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUFzQixJQUFzQixFQUFZLFVBQTZCO1FBQS9ELFNBQUksR0FBSixJQUFJLENBQWtCO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFMckYsV0FBTSxHQUFRLElBQUksQ0FBQztRQU1qQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQVFELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLFVBQTJCLENBQUM7UUFDaEMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMs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QUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFLRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUtELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBS00sUUFBUSxDQUFDLFdBQW1CLEVBQUUsU0FBUztRQUM1QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDOzt3RkFwbkJVLG9CQUFvQjs0REFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhc2tNYWdpY1NlcnZpY2UgfSBmcm9tICcuL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sTWV0YWRhdGEsIENvbnRyb2xzTWV0YWRhdGEgfSBmcm9tICcuLi9jb250cm9scy5tZXRhZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IEN1c3RvbVZhbGlkYXRvciwgR3VpRW52aXJvbm1lbnQsIEh0bWxQcm9wZXJ0aWVzLCBQSUMgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGdldEd1aUV2ZW50T2JqLCBJR3VpRXZlbnQsIENvb2tpZVNlcnZpY2V9IGZyb20gJ0BtYWdpYy14cGEvZW5naW5lJztcclxuaW1wb3J0IHsgTG9nZ2VyLCBTdG9yYWdlQXR0cmlidXRlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1hZ2ljQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi9tYWdpYy1jb2xvci5zZXJ2aWNlJztcclxuLyoqXHJcbiAqIFByb3ZpZGVzIHRoZSBVSSB3aXRoIHZhbHVlcyBjYWxjdWxhdGVkIGJ5IHRoZSBNYWdpYyBXZWJDbGllbnRcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc29yTWFnaWNTZXJ2aWNlIHtcclxuICBMb2dnZXI6IGFueSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSxwcm90ZWN0ZWQgIG1hZ2ljQ29sb3I6IE1hZ2ljQ29sb3JTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLkxvZ2dlciA9IExvZ2dlci5JbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgY29udHJvbCBpcyByZWFkLW9ubHlcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcmV0dXJucyBJcyB0aGUgY29udHJvbCBub3QgcmVhZC1vbmx5XHJcbiAgICovXHJcbiAgLy8gQ2hlY2tSZWFkT25seVxyXG4gIGNoZWNrSXNSZWFkT25seShjb250cm9sSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHByb3BlcnRpZXM6IENvbnRyb2xNZXRhZGF0YTtcclxuICAgIHByb3BlcnRpZXMgPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0WzBdLmdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQpO1xyXG4gICAgaWYgKHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpICE9PSBudWxsICYmIHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpID09PSB0cnVlKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBUaGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGV4dFxyXG4gIGdldFRleHQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5UZXh0LCByb3dJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHRleHQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIGxheWVyIElkIG9mIHRhYnBhZ2VcclxuICAgKiBAcmV0dXJucyBUZXh0IG9mIHRhYnBhZ2VcclxuICAgKi9cclxuICAvLyBtZ0dldFRhYnBhZ2VUZXh0XHJcbiAgZ2V0VGFicGFnZVRleHQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QpO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtcyAhPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcmV0dXJuIGl0ZW1zW2xheWVyXS5kaXNwbGF5VmFsdWU7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGltYWdlIGRlZmluZWQgZm9yIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIEltYWdlIHNldCBvbiBjb250cm9sXHJcbiAgICovXHJcbiAgLy8gbWdHZXRJbWFnZVxyXG4gIGdldEltYWdlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuSW1hZ2UsIHJvd0lkKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGFuIGltYWdlIGlzIHNldCBmb3IgdGhpcyBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIHJldHVybnMgdHJ1ZSBpZiBjb250cm9sIGhhcyBhbiBpbWFnZSBzZXQgb24gaXRcclxuICAgKi9cclxuICAvLyBtZ0lzSW1hZ2VFeGlzdHNcclxuICBpc0ltYWdlRXhpc3RzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLkltYWdlLCByb3dJZCk7XHJcbiAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHJlc3VsdCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzZXMgc2V0IG9uIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIFRoZSBjbGFzc2VzIGZvciB0aGlzIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldENsYXNzZXNcclxuICBnZXRDbGFzc2VzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOnN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldENsYXNzZXMoY29udHJvbElkLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBDU1Mgc3R5bGVzIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBzdHlsZU5hbWUgTkFtZSBvZiBzdHlsZSByZXF1ZXN0ZWRcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgVGhlIHN0eWxlIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0U3R5bGVcclxuICBnZXRTdHlsZShjb250cm9sSWQ6IHN0cmluZywgc3R5bGVOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHlsZSA9IHRoaXMudGFzay5nZXRTdHlsZShjb250cm9sSWQsIHN0eWxlTmFtZSwgcm93SWQpXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIGlzIHZpc2libGUgb3Igbm90XHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIElzIHRoZSBjb250cm9sIHZpc2libGUgb3IgaGlkZGVuXHJcbiAgICovXHJcbiAgLy8gbWdHZXRWaXNpYmxlXHJcbiAgZ2V0VmlzaWJsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgIGxldCB2aXM6IEJvb2xlYW4gPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuVmlzaWJsZSwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZpcyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBvYmplY3QgcmVwcmVzZW50aW5nIG51bWVyaWMgcGljdHVyZVxyXG4gICAqIEBwYXJhbSBwaWN0dXJlIHN0cmluZyB3aGljaCBpcyBkZWZpbmVkIGluIG1hZ2ljXHJcbiAgICogQHJldHVybnMgb2JqZWN0IHJlcHJlc2VudGluZyBudW1lcmljIHBpY3R1cmVcclxuICAgKi9cclxuICAvLyBtZ0dldE51bWVyaWNQaWN0dXJlXHJcbiAgZ2V0TnVtZXJpY1BpY3R1cmUocGljdHVyZTogc3RyaW5nKSA6IGFueSB7XHJcbiAgIGlmIChpc051bGxPclVuZGVmaW5lZChwaWN0dXJlKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICBsZXQgcGljOiBQSUMgPSBuZXcgUElDKHBpY3R1cmUsIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQywgMCk7XHJcblxyXG4gICB2YXIgb2JqID0ge307XHJcblxyXG4gICBvYmpbJ3ByZWZpeCddID0gXCJcIlxyXG4gICBpZiAocGljLmdldFBvc1ByZWZfKCkubGVuZ3RoID4gMCAmJiBwaWMuZ2V0TmVnUHJlZl8oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgbGV0IHByZWYgPSAnLScrcGljLmdldFBvc1ByZWZfKCk7XHJcbiAgICAgaWYgKHByZWYgPT0gcGljLmdldE5lZ1ByZWZfKCkpXHJcbiAgICAgIG9ialsncHJlZml4J10gPSBwaWMuZ2V0UG9zUHJlZl8oKTtcclxuICAgfVxyXG4gICBpZihwaWMuZ2V0UG9zU3VmZl8oKS5sZW5ndGggPiAwKVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBwaWMuZ2V0UG9zU3VmZl8oKTtcclxuICAgZWxzZVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBcIlwiO1xyXG5cclxuICAgaWYocGljLmlzTmVnYXRpdmUoKSlcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IHRydWU7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IGZhbHNlO1xyXG4gICBpZihwaWMuZ2V0RGVjKCk+PSAwKVxyXG4gICAgICBvYmpbJ3ByZWNpc2lvbiddID0gcGljLmdldERlYygpO1xyXG5cclxuICAgaWYocGljLmlzTGVmdCgpKVxyXG4gICAgICBvYmpbJ2FsaWduJ109XCJsZWZ0XCI7XHJcblxyXG4gICBvYmpbJ2RlY2ltYWwnXSA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERlY2ltYWwoKTtcclxuICAgaWYocGljLndpdGhDb21hKCkpXHJcbiAgICAgIG9ialsndGhvdXNhbmRzJ109R3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VGhvdXNhbmRzKCk7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ3Rob3VzYW5kcyddPVwiXCI7XHJcblxyXG4gICAgaWYocGljLmdldFdob2xlcygpKVxyXG4gICAgICBvYmpbJ3dob2xlcyddPXBpYy5nZXRXaG9sZXMoKTtcclxuXHJcbiAgICByZXR1cm4gICBvYmo7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIHNob3VsZCBoYXZlIHRoZSBcInJlcXVpcmVkXCIgYXR0cmlidXRlIHNldCBvbiBpdFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0TXVzdElucHV0XHJcbiAgZ2V0TXVzdElucHV0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBzdHJpbmcge1xyXG4gICAgbGV0IHZpczogQm9vbGVhbiA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5NdXN0SW5wdXQsIHJvd0lkKTtcclxuICAgIHJldHVybiB2aXMgPyAndHJ1ZScgOiAnZmFsc2UnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBpcyBkaXNhYmxlZFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nSXNEaXNhYmxlZFxyXG4gIGlzRGlzYWJsZWQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogYW55e1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5FbmFibGVkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlID8gbnVsbCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gZ2V0UHJvcGVydHkgKG5vdCBjaGFuZ2VkKVxyXG4gIGdldFByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wOiBIdG1sUHJvcGVydGllcywgcm93SWQ/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBwcm9wLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aXRsZSAodG9vbHRpcCkgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGl0bGVcclxuICBnZXRUaXRsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRvb2x0aXAsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRpdGxlICh0b29sdGlwKSB0ZXh0IG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUaXRsZSBmb3Igem9vbSBidXR0b25cclxuICBnZXRab29tQnV0dG9uVGl0bGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5ab29tQnV0dG9uVG9vbHRpcCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGNvbnRyb2wncyBzZWxlY3RlZCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIGdldFNlbGVjdGVkVmFsdWVcclxuICBnZXRTZWxlY3RlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcGxhY2UtaG9sZGVyIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFBsYWNlaG9sZGVyXHJcbiAgZ2V0UGxhY2Vob2xkZXIoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5QbGFjZUhvbGRlciwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIHR5cGUgZm9yIGlucHV0IGNvbnRyb2xzIC0gc2hvdWxkIHRoZSBjb250cm9sIGJlIGEgc2ltcGxlIHRleHQgb3IgYSBwYXNzd29yZCBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUeXBlXHJcbiAgZ2V0VHlwZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlBhc3N3b3JkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID8gXCJwYXNzd29yZFwiIDogXCJ0ZXh0XCJcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRhYi1pbmRleCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGFiSW5kZXhcclxuICBnZXRUYWJJbmRleChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRhYkluZGV4LCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgdmFsID0gdGhpcy50YXNrLmdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZCwgdmFsKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBQaWN0dXJlIG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8vIGdldFBpY3R1cmUgLS0+XHJcbiAgZ2V0UGljdHVyZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb250cm9sSWQpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwaWM6IFBJQyA9IHRoaXMudGFzay5HZXRDb250cm9sUGljdHVyZU1hc2soY29udHJvbElkKTtcclxuICAgIHJldHVybiAgKHBpYyAhPSBudWxsKSA/IHBpYy5nZXRGb3JtYXQoKS50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXN0b20gKHVzZXIpIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIE5hbWUgb2YgcmVxdWVzdGVkIHByb3BlcnR5XHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRDdXN0b21Qcm9wZXJ0eVxyXG4gIGdldEN1c3RvbVByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wZXJ0eU5hbWVPclJvd0lEPzogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBhbnlcclxuICB7XHJcbiAgICBpZihjb250cm9sSWQuaW5kZXhPZignficpPT0gLTEpXHJcbiAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNvbnRyb2xJZCwgcHJvcGVydHlOYW1lT3JSb3dJRCwgcm93SWQpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCAgY2lkOiBzdHJpbmcgPSBjb250cm9sSWQuc3BsaXQoJ34nKVswXTtcclxuICAgICAgbGV0ICBwcm9wTmFtZTogc3RyaW5nID0gY29udHJvbElkLnNwbGl0KCd+JylbMV07XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNpZCwgcHJvcE5hbWUsIHByb3BlcnR5TmFtZU9yUm93SUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tUHJvcGVydHlfMShjb250cm9sSWQ6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKVxyXG4gIHtcclxuICAgIGxldCB1c2VyUHJvcGVydGllcztcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3dJZCkpXHJcbiAgICAgIHJvd0lkID0gJzAnO1xyXG4gICAgbGV0IHJlYyA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJlYykpXHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xNZXRhZGF0YSA9IHJlYy5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbElkKTtcclxuXHJcbiAgICAgIGlmIChjb250cm9sTWV0YWRhdGEudXNlclByb3BlcnRpZXMuaGFzKHByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICB1c2VyUHJvcGVydGllcyA9IGNvbnRyb2xNZXRhZGF0YS51c2VyUHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldEl0ZW1MaXN0VmFsdWVzXHJcbiAgZ2V0SXRlbUxpc3RWYWx1ZXMoaWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogQXJyYXk8e2luZGV4OiBudW1iZXIsIGRpc3BsYXlWYWx1ZTogc3RyaW5nfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoaWQsIEh0bWxQcm9wZXJ0aWVzLkl0ZW1zTGlzdCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZmlsdGVyZWQgaXRlbXMgbGlzdCBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkTGlzdChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBBcnJheTx7aW5kZXg6IG51bWJlciwgZGlzcGxheVZhbHVlOiBzdHJpbmd9PiB7XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm93SWQpKVxyXG4gICAgICByb3dJZCA9ICcwJztcclxuXHJcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmdldEl0ZW1MaXN0VmFsdWVzKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgbGV0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGNvbnRyb2xJZCkudmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIgJiYgaXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIEdldHMgdGhlIGRpc3BsYXkgdmFsdWUgb2YgdGhlIGl0ZW0gZnJvbSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXREaXNwbGF5VmFsdWUoaWQsIHJvd0lkPykge1xyXG4gICAgbGV0IGRpc3BsYXlWYWx1ZTpzdHJpbmcgPVwiXCJcclxuXHJcbiAgICBsZXQgbyA9ICB0aGlzLmdldFByb3BlcnR5KGlkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QsIHJvd0lkKTtcclxuICAgIGxldCB2YWx1ZSA9IHRoaXMudGFzay5nZXRWYWx1ZShpZCwgcm93SWQpXHJcbiAgICBpZiAodmFsdWUgPj0wICYmIHZhbHVlIDxvLmxlbmd0aCAgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKG9bdmFsdWVdKSlcclxuICAgICAgZGlzcGxheVZhbHVlID0gb1t2YWx1ZV0uZGlzcGxheVZhbHVlO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90XHJcbiAgICogQHBhcmFtICBpbmRleCBvZiBjdXJyZW50IG9wdGlvbiBpbiBpdGVyYXJvdHJcclxuICAgKiBAcGFyYW0gY29udHJvbCBJZCBvZiBsaXN0IGNvbnRyb2xcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBpc09wdGlvblNlbGVjdGVkXHJcbiAgaXNPcHRpb25TZWxlY3RlZChpbmRleCwgY29udHJvbElkKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgXCIwXCIpO1xyXG4gICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbCkge1xyXG4gICAgICAgICAgIGlmIChpdGVtID09PSBpbmRleClcclxuICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90IC0gdXNlZCBmb3IgdGhlIHRhYiBidXR0b25zXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSAgbGF5ZXIgSWQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovIC8vIG1nSXNUYWJQYWdlU2VsZWN0ZWRcclxuICBpc1RhYlBhZ2VTZWxlY3RlZChjb250cm9sSWQ6IHN0cmluZywgbGF5ZXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkVmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbCA9PSAobGF5ZXIgLSAxKTsgLy8gY29tcGFyaW5nIHN0cmluZyB0byBudW1iZXIhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBsYXllciBpcyBzZWxlY3RlZCBvciBub3QgLSB1c2VkIGZvciB0aGUgZGl2IHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtICBsYXllciBJZCBvZiB0aGUgdGFiIHBhZ2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBtZ0lzVGFiTGF5ZXJTZWxlY3RlZFxyXG4gIGlzVGFiUGFnZUxheWVyU2VsZWN0ZWQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZExheWVyKTtcclxuICAgIHJldHVybiB2YWwgPT0gKGxheWVyIC0gMSk7IC8vIGNvbXBhcmluZyBzdHJpbmcgdG8gbnVtYmVyIVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXRUYWJTZWxlY3RlZEluZGV4KGNvbnRyb2xJZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsOyAvLyBjb21wYXJpbmcgc3RyaW5nIHRvIG51bWJlciFcclxuICB9XHJcblxyXG5cclxuICAvLyBwcml2YXRlIG1ldGhvZGVzXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIG1nSWZSb3dDcmVhdGVkXHJcbiAgaWZSb3dDcmVhdGVkKHJvdyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvdyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgcm93SWQgPSB0eXBlb2Ygcm93ID09IFwibnVtYmVyXCIgPyByb3cudG9TdHJpbmcoKSA6IHJvdy5yb3dJZDtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmdldEZvcm1Hcm91cEJ5Um93KHJvd0lkKTtcclxuICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvLyBtZ0dldEZvcm1Hcm91cEJ5Um93XHJcbiAgZ2V0Rm9ybUdyb3VwQnlSb3coaWQ6IHN0cmluZyk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmZvcm1Hcm91cHNbaWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIGlzUm93U2VsZWN0ZWQgKG5vdCBjaGFuZ2VkKVxyXG4gIGlzUm93U2VsZWN0ZWQoY29udHJvbElkLCByb3dJZD8pIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRSb3csIFwiMFwiKTtcclxuICAgIHJldHVybiBzZWxlY3RlZFJvdyA9PSByb3dJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlXHJcbiAgICogQHBhcmFtIHJvd1xyXG4gICAqL1xyXG4gIGlzUm93SW5Sb3dFZGl0aW5nKHJvdz86IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGd1aVJvd0lkIDogc3RyaW5nID0gJzAnO1xyXG4gICAgZ3VpUm93SWQ9IHR5cGVvZiByb3cgPT0gXCJudW1iZXJcIiA/IHJvdy50b1N0cmluZygpIDogcm93LnJvd0lkO1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5pc1Jvd0luUm93RWRpdGluZyhndWlSb3dJZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlLCB1c2UgdGhpcyBtZXRob2Qgd2hpbGUgY29udHJvbCBvdXRzaWRlIHRhYmxlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgaXNDdXJyZW50SW5Sb3dFZGl0aW5nKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCByb3cgID0gdGhpcy50YXNrLnRhYmxlU2VydmljZS5nZXRTZWxlY3RlZFJvdygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnRhc2suaXNSb3dJblJvd0VkaXRpbmcocm93KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIEdldEd1aVRvcEluZGV4XHJcbiAgZ3VpVG9wSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2sudGFibGVTZXJ2aWNlLmdldFRhYmxlVG9wSW5kZXgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBnZXRFcnJNc2coaWQ6IHN0cmluZyxyb3dJZDogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IGMgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGlkKTtcclxuICAgIGlmIChjLmhhc0Vycm9yKCdyZXF1aXJlZCcpKVxyXG4gICAgICByZXR1cm4gJ0NvbnRyb2wgbXVzdCBiZSB1cGRhdGVkLic7XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncGF0dGVybicpKVxyXG4gICAgICByZXR1cm4gJ1JlcXVpcmVkIHBhdHRlcm4gaXMgOiAnICsgYy5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm47XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncmFuZ2V2YWxpZGF0b3InKSlcclxuICAgICAgcmV0dXJuIGMuZXJyb3JzLnJhbmdldmFsaWRhdG9yLmVycm9yTXNnO1xyXG4gICAgaWYgKGMuaGFzRXJyb3IoJ21heGxlbmd0aCcpKVxyXG4gICAgICByZXR1cm4gJ01heCBsZW5ndGggYWxsb3dlZCBpcyA6ICcgKyBjLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGg7XHJcbiAgICBpZiAoYy5oYXNFcnJvcignbWF4JykpXHJcbiAgICAgIHJldHVybiAnTWF4IHZhbHVlIGFsbGxvd2VkIGlzIDogJyArIGMuZXJyb3JzLm1heC5tYXg7XHJcblxyXG4gICAgbGV0IGNvbnRyb2xNZXRhZGF0YSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdLmdldENvbnRyb2xNZXRhZGF0YShpZCk7XHJcbiAgICBmb3IgKGxldCBrZXkgb2YgY29udHJvbE1ldGFkYXRhLmN1c3RvbVZhbGlkYXRvcnMua2V5cygpKVxyXG4gICAge1xyXG4gICAgICBpZiAoYy5oYXNFcnJvcihrZXkpKSB7XHJcbiAgICAgICAgbGV0IGN1c3RvbVZhbGlkYXRvcjogQ3VzdG9tVmFsaWRhdG9yICA9IGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0b3IuZ2V0RXJyTWVzc2FnZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICd1bmtub3duIGVycm9yJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYSB1c2VyLXN1cHBsaWVkIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEBwYXJhbSByZWZyZXNoRGlzcGxheVxyXG4gICAqL1xyXG4gIHNldFZhbHVlVG9Db250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHJlZnJlc2hEaXNwbGF5PzogYm9vbGVhbil7XHJcbiAgICBpZih0eXBlb2YgcmVmcmVzaERpc3BsYXkgPT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJlZnJlc2hEaXNwbGF5ID0gdHJ1ZTtcclxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJzZXRleHRlcm5hbHZhbHVlXCIsIGNvbnRyb2xOYW1lLCAwKTtcclxuICAgIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGd1aUV2ZW50LnBhcmFtID0gcmVmcmVzaERpc3BsYXk7XHJcbiAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbiAgaXNEYXRhdmlld0VtcHR5KCkgOiBib29sZWFuIHtcclxuICAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMuaXNFbXB0eURhdGFWaWV3O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc2ltdWxhdGVzIGEgY2xpY2sgZXZlbnQgb24gdGhlIHNwZWNpZmllZCBjb250cm9sLCBmb3IgdGhlIE1hZ2ljIGVuZ2luZVxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSByb3dJZFxyXG4gICAqL1xyXG4gIHNpbXVsYXRlQ2xpY2soY29udHJvbE5hbWU6IHN0cmluZywgcm93SWQ/OiBudW1iZXIpe1xyXG4gICAgaWYgKHR5cGVvZiByb3dJZCA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcm93SWQgPSAwO1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGdldEd1aUV2ZW50T2JqKCdjbGljaycsIGNvbnRyb2xOYW1lLCByb3dJZCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIEJvb2xlYW4gVFJVRSBpZiB1c2VyIGxvZ2dlZCBpbiBFbHNlIGl0IHdpbGwgcmV0dXJuIEZBTFNFXHJcbiAgICovXHJcbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0SXNMb2dnZW5JbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBKUyBvYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkcyB3aXRoIGFsbCB0YWJsZSBmaWVsZHMuXHJcbiAgICovXHJcbiAgR2V0Rm9ybVJlY29yZHMoKTogYW55IHtcclxuICAgIGxldCByb3dJZDogbnVtYmVyID0gMDtcclxuICAgIGxldCByZWNBcnJheTogYW55O1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy50YXNrLlJlY29yZHMpICYmIHRoaXMudGFzay5SZWNvcmRzLmxpc3QubGVuZ3RoID4gMCApIHtcclxuICAgICAgbGV0IHJlY0xpc3Q6IENvbnRyb2xzTWV0YWRhdGFbXSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Q7XHJcbiAgICAgIGxldCB0YWJsZUNvbnRyb2xzOiBzdHJpbmdbXSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgLy9HZW5lcmF0ZSBsaXN0IG9mIHRhYmxlIGZpZWxkcyBuYW1lc1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnRhc2sudGVtcGxhdGUpIHtcclxuICAgICAgICBpZiAodGhpcy50YXNrLnRlbXBsYXRlW2tleV0gPT0gJzEnKVxyXG4gICAgICAgICAgdGFibGVDb250cm9scy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlY0FycmF5ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAvL1VwZGF0ZSB0aGUgcmVjb3JkcyBhcyBsaXN0IG9mIG9iamVjdHMgd2l0aCB2YWx1ZXMgZm9yIHRhYmxlIGZpZWxkcy5cclxuICAgICAgaWYgKHRhYmxlQ29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlY0xpc3QuZm9yRWFjaCgoY3RybE1ldGFEYXRhOiBDb250cm9sc01ldGFkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50YXNrLlJlY29yZHMuaXNSb3dDcmVhdGVkKHJvd0lkKSkge1xyXG4gICAgICAgICAgICB2YXIgZm9ybVJlY29yZCA9IHt9O1xyXG4gICAgICAgICAgICBmb3JtUmVjb3JkWydyb3dJZCddID0gcm93SWQ7XHJcbiAgICAgICAgICAgIHRhYmxlQ29udHJvbHMuZm9yRWFjaCgoY3RybElkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBmb3JtUmVjb3JkW2N0cmxJZF0gPSBjdHJsTWV0YURhdGEudmFsdWVzW2N0cmxJZF07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmVjQXJyYXkucHVzaChmb3JtUmVjb3JkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlY0FycmF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0Q29va2llIDogc2V0IHRoZSBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbmQgdmFsdWUgIGluIGJyb3dzZXJcclxuICAgKiBleHBpcmVzIC0gZXhwaXJhdGlvbiB0aW1lXHJcbiAgICogcGF0aCAtIHBhdGggd2hpY2ggbXVjaCBleGlzdHMgaW4gb3JkZXIgc28gdGhhdCBjb29raWUgaXMgc2VudCBhcyBoZWFkZXJcclxuICAgKiBkb21haW4gLSBzcGVjaWZpZXMgd2hpY2ggaG9zdHMgYXJlIGFsbG93ZWQgdG8gcmVjZWl2ZSB0aGUgY29va2llXHJcbiAgICogc2VjdXJlIC0gc3BlY2lmaWVzIGlmIGNvb2tpZSBpcyBzZWN1cmUgKCB3b3JrcyBvbmx5IHdpdGggSFRUUFMpXHJcbiAgICogc2FtZVNpdGUgLSBsZXRzIHNlcnZlcnMgc3BlY2lmeSB3aGV0aGVyL3doZW4gY29va2llcyBhcmUgc2VudCB3aXRoIGNyb3NzLXNpdGUgcmVxdWVzdHNcclxuICAgKi9cclxuICBTZXRDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHBpcmVzPzogRGF0ZSwgcGF0aD8gLCBkb21haW4/ICwgc2VjdXJlPywgc2FtZVNpdGUgPykge1xyXG4gICAgQ29va2llU2VydmljZS5zZXRDb29raWUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRDb29raWUgOiBnZXQgdGhlIGNvb2tpZSB3aXRoIHNwZWNpZmllZCBuYW1lIGFuZCB2YWx1ZSAgaW4gYnJvd3NlclxyXG4gICAqL1xyXG4gIEdldENvb2tpZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIENvb2tpZVNlcnZpY2UuZ2V0Q29va2llKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlQ29va2llIDogZGVsZXRlcyB0aGUgY29va2llXHJcbiAgICovXHJcbiAgRGVsZXRlQ29va2llKG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gQ29va2llU2VydmljZS5kZWxldGVDb29raWUobmFtZSk7XHJcbiAgfVxyXG5cclxuICAgLyoqXHJcbiAgICogZ2V0IFJHQkEgY29sb3IgZnJvbSBjb2xvciBmaWxlXHJcbiAgICovXHJcbiAgcHVibGljIGdldENvbG9yKGNvbG9yTnVtYmVyOiBudW1iZXIsIGNvbG9yVHlwZSkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNDb2xvci5nZXRDb2xvcihjb2xvck51bWJlciwgY29sb3JUeXBlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2FjY2Vzc29yLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGNBQWMsRUFBYSxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLMUQsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUFzQixJQUFzQixFQUFZLFVBQTZCO1FBQS9ELFNBQUksR0FBSixJQUFJLENBQWtCO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFMckYsV0FBTSxHQUFRLElBQUksQ0FBQztRQU1qQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQVFELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLFVBQTJCLENBQUM7UUFDaEMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMs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QUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFLRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUtELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBS00sUUFBUSxDQUFDLFdBQW1CLEVBQUUsU0FBUztRQUM1QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDOzt3RkFybkJVLG9CQUFvQjs0REFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhc2tNYWdpY1NlcnZpY2UgfSBmcm9tICcuL3Rhc2subWFnaWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sTWV0YWRhdGEsIENvbnRyb2xzTWV0YWRhdGEgfSBmcm9tICcuLi9jb250cm9scy5tZXRhZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IEN1c3RvbVZhbGlkYXRvciwgR3VpRW52aXJvbm1lbnQsIEh0bWxQcm9wZXJ0aWVzLCBQSUMgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGdldEd1aUV2ZW50T2JqLCBJR3VpRXZlbnQsIENvb2tpZVNlcnZpY2V9IGZyb20gJ0BtYWdpYy14cGEvZW5naW5lJztcclxuaW1wb3J0IHsgTG9nZ2VyLCBTdG9yYWdlQXR0cmlidXRlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1hZ2ljQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi9tYWdpYy1jb2xvci5zZXJ2aWNlJztcclxuLyoqXHJcbiAqIFByb3ZpZGVzIHRoZSBVSSB3aXRoIHZhbHVlcyBjYWxjdWxhdGVkIGJ5IHRoZSBNYWdpYyBXZWJDbGllbnRcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc29yTWFnaWNTZXJ2aWNlIHtcclxuICBMb2dnZXI6IGFueSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSxwcm90ZWN0ZWQgIG1hZ2ljQ29sb3I6IE1hZ2ljQ29sb3JTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLkxvZ2dlciA9IExvZ2dlci5JbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgY29udHJvbCBpcyByZWFkLW9ubHlcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcmV0dXJucyBJcyB0aGUgY29udHJvbCBub3QgcmVhZC1vbmx5XHJcbiAgICovXHJcbiAgLy8gQ2hlY2tSZWFkT25seVxyXG4gIGNoZWNrSXNSZWFkT25seShjb250cm9sSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHByb3BlcnRpZXM6IENvbnRyb2xNZXRhZGF0YTtcclxuICAgIHByb3BlcnRpZXMgPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0WzBdLmdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQpO1xyXG4gICAgaWYgKHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpICE9PSBudWxsICYmIHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpID09PSB0cnVlKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBUaGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGV4dFxyXG4gIGdldFRleHQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5UZXh0LCByb3dJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHRleHQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIGxheWVyIElkIG9mIHRhYnBhZ2VcclxuICAgKiBAcmV0dXJucyBUZXh0IG9mIHRhYnBhZ2VcclxuICAgKi9cclxuICAvLyBtZ0dldFRhYnBhZ2VUZXh0XHJcbiAgZ2V0VGFicGFnZVRleHQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QpO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtcyAhPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcmV0dXJuIGl0ZW1zW2xheWVyXS5kaXNwbGF5VmFsdWU7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGltYWdlIGRlZmluZWQgZm9yIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIEltYWdlIHNldCBvbiBjb250cm9sXHJcbiAgICovXHJcbiAgLy8gbWdHZXRJbWFnZVxyXG4gIGdldEltYWdlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuSW1hZ2UsIHJvd0lkKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGFuIGltYWdlIGlzIHNldCBmb3IgdGhpcyBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIHJldHVybnMgdHJ1ZSBpZiBjb250cm9sIGhhcyBhbiBpbWFnZSBzZXQgb24gaXRcclxuICAgKi9cclxuICAvLyBtZ0lzSW1hZ2VFeGlzdHNcclxuICBpc0ltYWdlRXhpc3RzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLkltYWdlLCByb3dJZCk7XHJcbiAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHJlc3VsdCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzZXMgc2V0IG9uIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIFRoZSBjbGFzc2VzIGZvciB0aGlzIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldENsYXNzZXNcclxuICBnZXRDbGFzc2VzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOnN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldENsYXNzZXMoY29udHJvbElkLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBDU1Mgc3R5bGVzIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBzdHlsZU5hbWUgTkFtZSBvZiBzdHlsZSByZXF1ZXN0ZWRcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgVGhlIHN0eWxlIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0U3R5bGVcclxuICBnZXRTdHlsZShjb250cm9sSWQ6IHN0cmluZywgc3R5bGVOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHlsZSA9IHRoaXMudGFzay5nZXRTdHlsZShjb250cm9sSWQsIHN0eWxlTmFtZSwgcm93SWQpXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIGlzIHZpc2libGUgb3Igbm90XHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIElzIHRoZSBjb250cm9sIHZpc2libGUgb3IgaGlkZGVuXHJcbiAgICovXHJcbiAgLy8gbWdHZXRWaXNpYmxlXHJcbiAgZ2V0VmlzaWJsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgIGxldCB2aXM6IEJvb2xlYW4gPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuVmlzaWJsZSwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZpcyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBvYmplY3QgcmVwcmVzZW50aW5nIG51bWVyaWMgcGljdHVyZVxyXG4gICAqIEBwYXJhbSBwaWN0dXJlIHN0cmluZyB3aGljaCBpcyBkZWZpbmVkIGluIG1hZ2ljXHJcbiAgICogQHJldHVybnMgb2JqZWN0IHJlcHJlc2VudGluZyBudW1lcmljIHBpY3R1cmVcclxuICAgKi9cclxuICAvLyBtZ0dldE51bWVyaWNQaWN0dXJlXHJcbiAgZ2V0TnVtZXJpY1BpY3R1cmUocGljdHVyZTogc3RyaW5nKSA6IGFueSB7XHJcbiAgIHZhciBvYmogPSB7fTtcclxuICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHBpY3R1cmUpKVxyXG4gICAgICByZXR1cm4gb2JqO1xyXG5cclxuICAgbGV0IHBpYzogUElDID0gbmV3IFBJQyhwaWN0dXJlLCBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMsIDApO1xyXG5cclxuXHJcblxyXG4gICBvYmpbJ3ByZWZpeCddID0gXCJcIlxyXG4gICBpZiAocGljLmdldFBvc1ByZWZfKCkubGVuZ3RoID4gMCAmJiBwaWMuZ2V0TmVnUHJlZl8oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgbGV0IHByZWYgPSAnLScrcGljLmdldFBvc1ByZWZfKCk7XHJcbiAgICAgaWYgKHByZWYgPT0gcGljLmdldE5lZ1ByZWZfKCkpXHJcbiAgICAgIG9ialsncHJlZml4J10gPSBwaWMuZ2V0UG9zUHJlZl8oKTtcclxuICAgfVxyXG4gICBpZihwaWMuZ2V0UG9zU3VmZl8oKS5sZW5ndGggPiAwKVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBwaWMuZ2V0UG9zU3VmZl8oKTtcclxuICAgZWxzZVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBcIlwiO1xyXG5cclxuICAgaWYocGljLmlzTmVnYXRpdmUoKSlcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IHRydWU7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IGZhbHNlO1xyXG4gICBpZihwaWMuZ2V0RGVjKCk+PSAwKVxyXG4gICAgICBvYmpbJ3ByZWNpc2lvbiddID0gcGljLmdldERlYygpO1xyXG5cclxuICAgaWYocGljLmlzTGVmdCgpKVxyXG4gICAgICBvYmpbJ2FsaWduJ109XCJsZWZ0XCI7XHJcblxyXG4gICBvYmpbJ2RlY2ltYWwnXSA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERlY2ltYWwoKTtcclxuICAgaWYocGljLndpdGhDb21hKCkpXHJcbiAgICAgIG9ialsndGhvdXNhbmRzJ109R3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VGhvdXNhbmRzKCk7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ3Rob3VzYW5kcyddPVwiXCI7XHJcblxyXG4gICAgaWYocGljLmdldFdob2xlcygpKVxyXG4gICAgICBvYmpbJ3dob2xlcyddPXBpYy5nZXRXaG9sZXMoKTtcclxuXHJcbiAgICByZXR1cm4gICBvYmo7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIHNob3VsZCBoYXZlIHRoZSBcInJlcXVpcmVkXCIgYXR0cmlidXRlIHNldCBvbiBpdFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0TXVzdElucHV0XHJcbiAgZ2V0TXVzdElucHV0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBzdHJpbmcge1xyXG4gICAgbGV0IHZpczogQm9vbGVhbiA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5NdXN0SW5wdXQsIHJvd0lkKTtcclxuICAgIHJldHVybiB2aXMgPyAndHJ1ZScgOiAnZmFsc2UnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBpcyBkaXNhYmxlZFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nSXNEaXNhYmxlZFxyXG4gIGlzRGlzYWJsZWQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogYW55e1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5FbmFibGVkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlID8gbnVsbCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gZ2V0UHJvcGVydHkgKG5vdCBjaGFuZ2VkKVxyXG4gIGdldFByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wOiBIdG1sUHJvcGVydGllcywgcm93SWQ/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBwcm9wLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aXRsZSAodG9vbHRpcCkgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGl0bGVcclxuICBnZXRUaXRsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRvb2x0aXAsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRpdGxlICh0b29sdGlwKSB0ZXh0IG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUaXRsZSBmb3Igem9vbSBidXR0b25cclxuICBnZXRab29tQnV0dG9uVGl0bGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5ab29tQnV0dG9uVG9vbHRpcCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGNvbnRyb2wncyBzZWxlY3RlZCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIGdldFNlbGVjdGVkVmFsdWVcclxuICBnZXRTZWxlY3RlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcGxhY2UtaG9sZGVyIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFBsYWNlaG9sZGVyXHJcbiAgZ2V0UGxhY2Vob2xkZXIoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5QbGFjZUhvbGRlciwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIHR5cGUgZm9yIGlucHV0IGNvbnRyb2xzIC0gc2hvdWxkIHRoZSBjb250cm9sIGJlIGEgc2ltcGxlIHRleHQgb3IgYSBwYXNzd29yZCBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUeXBlXHJcbiAgZ2V0VHlwZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlBhc3N3b3JkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID8gXCJwYXNzd29yZFwiIDogXCJ0ZXh0XCJcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRhYi1pbmRleCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGFiSW5kZXhcclxuICBnZXRUYWJJbmRleChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRhYkluZGV4LCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgdmFsID0gdGhpcy50YXNrLmdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZCwgdmFsKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBQaWN0dXJlIG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8vIGdldFBpY3R1cmUgLS0+XHJcbiAgZ2V0UGljdHVyZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb250cm9sSWQpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwaWM6IFBJQyA9IHRoaXMudGFzay5HZXRDb250cm9sUGljdHVyZU1hc2soY29udHJvbElkKTtcclxuICAgIHJldHVybiAgKHBpYyAhPSBudWxsKSA/IHBpYy5nZXRGb3JtYXQoKS50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXN0b20gKHVzZXIpIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIE5hbWUgb2YgcmVxdWVzdGVkIHByb3BlcnR5XHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRDdXN0b21Qcm9wZXJ0eVxyXG4gIGdldEN1c3RvbVByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wZXJ0eU5hbWVPclJvd0lEPzogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBhbnlcclxuICB7XHJcbiAgICBpZihjb250cm9sSWQuaW5kZXhPZignficpPT0gLTEpXHJcbiAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNvbnRyb2xJZCwgcHJvcGVydHlOYW1lT3JSb3dJRCwgcm93SWQpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCAgY2lkOiBzdHJpbmcgPSBjb250cm9sSWQuc3BsaXQoJ34nKVswXTtcclxuICAgICAgbGV0ICBwcm9wTmFtZTogc3RyaW5nID0gY29udHJvbElkLnNwbGl0KCd+JylbMV07XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNpZCwgcHJvcE5hbWUsIHByb3BlcnR5TmFtZU9yUm93SUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tUHJvcGVydHlfMShjb250cm9sSWQ6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKVxyXG4gIHtcclxuICAgIGxldCB1c2VyUHJvcGVydGllcztcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3dJZCkpXHJcbiAgICAgIHJvd0lkID0gJzAnO1xyXG4gICAgbGV0IHJlYyA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJlYykpXHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xNZXRhZGF0YSA9IHJlYy5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbElkKTtcclxuXHJcbiAgICAgIGlmIChjb250cm9sTWV0YWRhdGEudXNlclByb3BlcnRpZXMuaGFzKHByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICB1c2VyUHJvcGVydGllcyA9IGNvbnRyb2xNZXRhZGF0YS51c2VyUHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldEl0ZW1MaXN0VmFsdWVzXHJcbiAgZ2V0SXRlbUxpc3RWYWx1ZXMoaWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogQXJyYXk8e2luZGV4OiBudW1iZXIsIGRpc3BsYXlWYWx1ZTogc3RyaW5nfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoaWQsIEh0bWxQcm9wZXJ0aWVzLkl0ZW1zTGlzdCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZmlsdGVyZWQgaXRlbXMgbGlzdCBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkTGlzdChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBBcnJheTx7aW5kZXg6IG51bWJlciwgZGlzcGxheVZhbHVlOiBzdHJpbmd9PiB7XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm93SWQpKVxyXG4gICAgICByb3dJZCA9ICcwJztcclxuXHJcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmdldEl0ZW1MaXN0VmFsdWVzKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgbGV0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGNvbnRyb2xJZCkudmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIgJiYgaXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIEdldHMgdGhlIGRpc3BsYXkgdmFsdWUgb2YgdGhlIGl0ZW0gZnJvbSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXREaXNwbGF5VmFsdWUoaWQsIHJvd0lkPykge1xyXG4gICAgbGV0IGRpc3BsYXlWYWx1ZTpzdHJpbmcgPVwiXCJcclxuXHJcbiAgICBsZXQgbyA9ICB0aGlzLmdldFByb3BlcnR5KGlkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QsIHJvd0lkKTtcclxuICAgIGxldCB2YWx1ZSA9IHRoaXMudGFzay5nZXRWYWx1ZShpZCwgcm93SWQpXHJcbiAgICBpZiAodmFsdWUgPj0wICYmIHZhbHVlIDxvLmxlbmd0aCAgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKG9bdmFsdWVdKSlcclxuICAgICAgZGlzcGxheVZhbHVlID0gb1t2YWx1ZV0uZGlzcGxheVZhbHVlO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90XHJcbiAgICogQHBhcmFtICBpbmRleCBvZiBjdXJyZW50IG9wdGlvbiBpbiBpdGVyYXJvdHJcclxuICAgKiBAcGFyYW0gY29udHJvbCBJZCBvZiBsaXN0IGNvbnRyb2xcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBpc09wdGlvblNlbGVjdGVkXHJcbiAgaXNPcHRpb25TZWxlY3RlZChpbmRleCwgY29udHJvbElkKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgXCIwXCIpO1xyXG4gICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbCkge1xyXG4gICAgICAgICAgIGlmIChpdGVtID09PSBpbmRleClcclxuICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90IC0gdXNlZCBmb3IgdGhlIHRhYiBidXR0b25zXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSAgbGF5ZXIgSWQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovIC8vIG1nSXNUYWJQYWdlU2VsZWN0ZWRcclxuICBpc1RhYlBhZ2VTZWxlY3RlZChjb250cm9sSWQ6IHN0cmluZywgbGF5ZXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkVmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbCA9PSAobGF5ZXIgLSAxKTsgLy8gY29tcGFyaW5nIHN0cmluZyB0byBudW1iZXIhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBsYXllciBpcyBzZWxlY3RlZCBvciBub3QgLSB1c2VkIGZvciB0aGUgZGl2IHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtICBsYXllciBJZCBvZiB0aGUgdGFiIHBhZ2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBtZ0lzVGFiTGF5ZXJTZWxlY3RlZFxyXG4gIGlzVGFiUGFnZUxheWVyU2VsZWN0ZWQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZExheWVyKTtcclxuICAgIHJldHVybiB2YWwgPT0gKGxheWVyIC0gMSk7IC8vIGNvbXBhcmluZyBzdHJpbmcgdG8gbnVtYmVyIVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXRUYWJTZWxlY3RlZEluZGV4KGNvbnRyb2xJZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsOyAvLyBjb21wYXJpbmcgc3RyaW5nIHRvIG51bWJlciFcclxuICB9XHJcblxyXG5cclxuICAvLyBwcml2YXRlIG1ldGhvZGVzXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIG1nSWZSb3dDcmVhdGVkXHJcbiAgaWZSb3dDcmVhdGVkKHJvdyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvdyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgcm93SWQgPSB0eXBlb2Ygcm93ID09IFwibnVtYmVyXCIgPyByb3cudG9TdHJpbmcoKSA6IHJvdy5yb3dJZDtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmdldEZvcm1Hcm91cEJ5Um93KHJvd0lkKTtcclxuICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvLyBtZ0dldEZvcm1Hcm91cEJ5Um93XHJcbiAgZ2V0Rm9ybUdyb3VwQnlSb3coaWQ6IHN0cmluZyk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmZvcm1Hcm91cHNbaWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIGlzUm93U2VsZWN0ZWQgKG5vdCBjaGFuZ2VkKVxyXG4gIGlzUm93U2VsZWN0ZWQoY29udHJvbElkLCByb3dJZD8pIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRSb3csIFwiMFwiKTtcclxuICAgIHJldHVybiBzZWxlY3RlZFJvdyA9PSByb3dJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlXHJcbiAgICogQHBhcmFtIHJvd1xyXG4gICAqL1xyXG4gIGlzUm93SW5Sb3dFZGl0aW5nKHJvdz86IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGd1aVJvd0lkIDogc3RyaW5nID0gJzAnO1xyXG4gICAgZ3VpUm93SWQ9IHR5cGVvZiByb3cgPT0gXCJudW1iZXJcIiA/IHJvdy50b1N0cmluZygpIDogcm93LnJvd0lkO1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5pc1Jvd0luUm93RWRpdGluZyhndWlSb3dJZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlLCB1c2UgdGhpcyBtZXRob2Qgd2hpbGUgY29udHJvbCBvdXRzaWRlIHRhYmxlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgaXNDdXJyZW50SW5Sb3dFZGl0aW5nKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCByb3cgID0gdGhpcy50YXNrLnRhYmxlU2VydmljZS5nZXRTZWxlY3RlZFJvdygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnRhc2suaXNSb3dJblJvd0VkaXRpbmcocm93KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIEdldEd1aVRvcEluZGV4XHJcbiAgZ3VpVG9wSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2sudGFibGVTZXJ2aWNlLmdldFRhYmxlVG9wSW5kZXgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBnZXRFcnJNc2coaWQ6IHN0cmluZyxyb3dJZDogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IGMgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGlkKTtcclxuICAgIGlmIChjLmhhc0Vycm9yKCdyZXF1aXJlZCcpKVxyXG4gICAgICByZXR1cm4gJ0NvbnRyb2wgbXVzdCBiZSB1cGRhdGVkLic7XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncGF0dGVybicpKVxyXG4gICAgICByZXR1cm4gJ1JlcXVpcmVkIHBhdHRlcm4gaXMgOiAnICsgYy5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm47XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncmFuZ2V2YWxpZGF0b3InKSlcclxuICAgICAgcmV0dXJuIGMuZXJyb3JzLnJhbmdldmFsaWRhdG9yLmVycm9yTXNnO1xyXG4gICAgaWYgKGMuaGFzRXJyb3IoJ21heGxlbmd0aCcpKVxyXG4gICAgICByZXR1cm4gJ01heCBsZW5ndGggYWxsb3dlZCBpcyA6ICcgKyBjLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGg7XHJcbiAgICBpZiAoYy5oYXNFcnJvcignbWF4JykpXHJcbiAgICAgIHJldHVybiAnTWF4IHZhbHVlIGFsbGxvd2VkIGlzIDogJyArIGMuZXJyb3JzLm1heC5tYXg7XHJcblxyXG4gICAgbGV0IGNvbnRyb2xNZXRhZGF0YSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdLmdldENvbnRyb2xNZXRhZGF0YShpZCk7XHJcbiAgICBmb3IgKGxldCBrZXkgb2YgY29udHJvbE1ldGFkYXRhLmN1c3RvbVZhbGlkYXRvcnMua2V5cygpKVxyXG4gICAge1xyXG4gICAgICBpZiAoYy5oYXNFcnJvcihrZXkpKSB7XHJcbiAgICAgICAgbGV0IGN1c3RvbVZhbGlkYXRvcjogQ3VzdG9tVmFsaWRhdG9yICA9IGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0b3IuZ2V0RXJyTWVzc2FnZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICd1bmtub3duIGVycm9yJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYSB1c2VyLXN1cHBsaWVkIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEBwYXJhbSByZWZyZXNoRGlzcGxheVxyXG4gICAqL1xyXG4gIHNldFZhbHVlVG9Db250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHJlZnJlc2hEaXNwbGF5PzogYm9vbGVhbil7XHJcbiAgICBpZih0eXBlb2YgcmVmcmVzaERpc3BsYXkgPT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJlZnJlc2hEaXNwbGF5ID0gdHJ1ZTtcclxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJzZXRleHRlcm5hbHZhbHVlXCIsIGNvbnRyb2xOYW1lLCAwKTtcclxuICAgIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGd1aUV2ZW50LnBhcmFtID0gcmVmcmVzaERpc3BsYXk7XHJcbiAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbiAgaXNEYXRhdmlld0VtcHR5KCkgOiBib29sZWFuIHtcclxuICAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMuaXNFbXB0eURhdGFWaWV3O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc2ltdWxhdGVzIGEgY2xpY2sgZXZlbnQgb24gdGhlIHNwZWNpZmllZCBjb250cm9sLCBmb3IgdGhlIE1hZ2ljIGVuZ2luZVxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSByb3dJZFxyXG4gICAqL1xyXG4gIHNpbXVsYXRlQ2xpY2soY29udHJvbE5hbWU6IHN0cmluZywgcm93SWQ/OiBudW1iZXIpe1xyXG4gICAgaWYgKHR5cGVvZiByb3dJZCA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcm93SWQgPSAwO1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGdldEd1aUV2ZW50T2JqKCdjbGljaycsIGNvbnRyb2xOYW1lLCByb3dJZCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIEJvb2xlYW4gVFJVRSBpZiB1c2VyIGxvZ2dlZCBpbiBFbHNlIGl0IHdpbGwgcmV0dXJuIEZBTFNFXHJcbiAgICovXHJcbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0SXNMb2dnZW5JbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBKUyBvYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkcyB3aXRoIGFsbCB0YWJsZSBmaWVsZHMuXHJcbiAgICovXHJcbiAgR2V0Rm9ybVJlY29yZHMoKTogYW55IHtcclxuICAgIGxldCByb3dJZDogbnVtYmVyID0gMDtcclxuICAgIGxldCByZWNBcnJheTogYW55O1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy50YXNrLlJlY29yZHMpICYmIHRoaXMudGFzay5SZWNvcmRzLmxpc3QubGVuZ3RoID4gMCApIHtcclxuICAgICAgbGV0IHJlY0xpc3Q6IENvbnRyb2xzTWV0YWRhdGFbXSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Q7XHJcbiAgICAgIGxldCB0YWJsZUNvbnRyb2xzOiBzdHJpbmdbXSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgLy9HZW5lcmF0ZSBsaXN0IG9mIHRhYmxlIGZpZWxkcyBuYW1lc1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnRhc2sudGVtcGxhdGUpIHtcclxuICAgICAgICBpZiAodGhpcy50YXNrLnRlbXBsYXRlW2tleV0gPT0gJzEnKVxyXG4gICAgICAgICAgdGFibGVDb250cm9scy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlY0FycmF5ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAvL1VwZGF0ZSB0aGUgcmVjb3JkcyBhcyBsaXN0IG9mIG9iamVjdHMgd2l0aCB2YWx1ZXMgZm9yIHRhYmxlIGZpZWxkcy5cclxuICAgICAgaWYgKHRhYmxlQ29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlY0xpc3QuZm9yRWFjaCgoY3RybE1ldGFEYXRhOiBDb250cm9sc01ldGFkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50YXNrLlJlY29yZHMuaXNSb3dDcmVhdGVkKHJvd0lkKSkge1xyXG4gICAgICAgICAgICB2YXIgZm9ybVJlY29yZCA9IHt9O1xyXG4gICAgICAgICAgICBmb3JtUmVjb3JkWydyb3dJZCddID0gcm93SWQ7XHJcbiAgICAgICAgICAgIHRhYmxlQ29udHJvbHMuZm9yRWFjaCgoY3RybElkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBmb3JtUmVjb3JkW2N0cmxJZF0gPSBjdHJsTWV0YURhdGEudmFsdWVzW2N0cmxJZF07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmVjQXJyYXkucHVzaChmb3JtUmVjb3JkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlY0FycmF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0Q29va2llIDogc2V0IHRoZSBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbmQgdmFsdWUgIGluIGJyb3dzZXJcclxuICAgKiBleHBpcmVzIC0gZXhwaXJhdGlvbiB0aW1lXHJcbiAgICogcGF0aCAtIHBhdGggd2hpY2ggbXVjaCBleGlzdHMgaW4gb3JkZXIgc28gdGhhdCBjb29raWUgaXMgc2VudCBhcyBoZWFkZXJcclxuICAgKiBkb21haW4gLSBzcGVjaWZpZXMgd2hpY2ggaG9zdHMgYXJlIGFsbG93ZWQgdG8gcmVjZWl2ZSB0aGUgY29va2llXHJcbiAgICogc2VjdXJlIC0gc3BlY2lmaWVzIGlmIGNvb2tpZSBpcyBzZWN1cmUgKCB3b3JrcyBvbmx5IHdpdGggSFRUUFMpXHJcbiAgICogc2FtZVNpdGUgLSBsZXRzIHNlcnZlcnMgc3BlY2lmeSB3aGV0aGVyL3doZW4gY29va2llcyBhcmUgc2VudCB3aXRoIGNyb3NzLXNpdGUgcmVxdWVzdHNcclxuICAgKi9cclxuICBTZXRDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHBpcmVzPzogRGF0ZSwgcGF0aD8gLCBkb21haW4/ICwgc2VjdXJlPywgc2FtZVNpdGUgPykge1xyXG4gICAgQ29va2llU2VydmljZS5zZXRDb29raWUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRDb29raWUgOiBnZXQgdGhlIGNvb2tpZSB3aXRoIHNwZWNpZmllZCBuYW1lIGFuZCB2YWx1ZSAgaW4gYnJvd3NlclxyXG4gICAqL1xyXG4gIEdldENvb2tpZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIENvb2tpZVNlcnZpY2UuZ2V0Q29va2llKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlQ29va2llIDogZGVsZXRlcyB0aGUgY29va2llXHJcbiAgICovXHJcbiAgRGVsZXRlQ29va2llKG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gQ29va2llU2VydmljZS5kZWxldGVDb29raWUobmFtZSk7XHJcbiAgfVxyXG5cclxuICAgLyoqXHJcbiAgICogZ2V0IFJHQkEgY29sb3IgZnJvbSBjb2xvciBmaWxlXHJcbiAgICovXHJcbiAgcHVibGljIGdldENvbG9yKGNvbG9yTnVtYmVyOiBudW1iZXIsIGNvbG9yVHlwZSkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNDb2xvci5nZXRDb2xvcihjb2xvck51bWJlciwgY29sb3JUeXBlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -24,7 +24,7 @@ export class MgDateAdapter extends NativeDateAdapter {
|
|
|
24
24
|
}
|
|
25
25
|
parse(value) {
|
|
26
26
|
let valueStr = value;
|
|
27
|
-
let date = 0, month = 0, year = 0
|
|
27
|
+
let date = 0, month = 0, year = 0;
|
|
28
28
|
let mgDateMask = this.mgdtfmt;
|
|
29
29
|
let sep = valueStr.indexOf('/') > 0 ? '/' : '-';
|
|
30
30
|
if (value == null || value == "")
|
|
@@ -33,9 +33,8 @@ export class MgDateAdapter extends NativeDateAdapter {
|
|
|
33
33
|
this.mgdtfmt = this.task.mgInputDateFormat;
|
|
34
34
|
if ((this.mgdtfmt.indexOf('MMM') > 0) || (this.mgdtfmt.indexOf('MMMM') > 0))
|
|
35
35
|
return new Date(value);
|
|
36
|
-
let vallen = valueStr.length;
|
|
37
36
|
if (mgDateMask !== null) {
|
|
38
|
-
for (let i = 0
|
|
37
|
+
for (let i = 0; i < mgDateMask.length;) {
|
|
39
38
|
switch (mgDateMask[i]) {
|
|
40
39
|
case 'd':
|
|
41
40
|
{
|
|
@@ -102,4 +101,4 @@ MgDateAdapter.ɵprov = i0.ɵɵdefineInjectable({ token: MgDateAdapter, factory:
|
|
|
102
101
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgDateAdapter, [{
|
|
103
102
|
type: Injectable
|
|
104
103
|
}], function () { return [{ type: i1.Platform }, { type: i2.TaskMagicService }]; }, null); })();
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWctZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvbWctZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQUV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsRUFBQztJQUNyRSxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsT0FBTztRQUNsQixjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUM7UUFDakQsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUM7UUFDL0Qsa0JBQWtCLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUM7S0FDckQ7Q0FDRixDQUFDO0FBSUYsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFFbEQsWUFBcUIsUUFBa0IsRUFBWSxJQUFzQjtRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRE4sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZLFNBQUksR0FBSixJQUFJLENBQWtCO1FBRGxFLFlBQU8sR0FBVyxJQUFJLENBQUM7SUFHOUIsQ0FBQztJQUVELEtBQUssQ0FBRSxLQUFVO1FBRWYsSUFBSSxRQUFRLEdBQVcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNuRCxJQUFJLFVBQVUsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUVoRCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSTtZQUM3RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDekMsUUFBUSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JCLEtBQUssR0FBRzt3QkFBRTs0QkFDTixJQUFJLE1BQWMsQ0FBQzs0QkFDbkIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQ3hELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztnQ0FDVixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3BDLE9BQU0sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0NBQUMsQ0FBQzs0QkFDakMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ3ZCO3dCQUNELE1BQU07b0JBQ1YsS0FBSyxHQUFHO3dCQUFFOzRCQUNOLElBQUksTUFBYyxDQUFDOzRCQUNuQixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFFeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dDQUNWLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFFcEMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRTtnQ0FBQyxDQUFDOzRCQUNsQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3REO3dCQUNELE1BQU07b0JBQ1YsS0FBSyxHQUFHO3dCQUFFOzRCQUNOLElBQUksTUFBTSxDQUFDOzRCQUNYLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN4RCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTtnQ0FDWixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7NkJBQ3JDOzRCQUNELE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0NBQUMsQ0FBQzs0QkFDbEMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ3pCO3dCQUNELE1BQU07b0JBQ1I7d0JBQ0UsQ0FBQyxFQUFFLENBQUM7d0JBQ0osTUFBTTtpQkFDVDthQUNGO1lBRUQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUVMLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBVSxFQUFFLGFBQXFCO1FBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJO1lBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3QyxJQUFJLGFBQWEsS0FBSyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1lBQzVCLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzswRUEvRVUsYUFBYTtxREFBYixhQUFhLFdBQWIsYUFBYTt1RkFBYixhQUFhO2NBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05hdGl2ZURhdGVBZGFwdGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi90YXNrLm1hZ2ljcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBNR19GT1JNQVRTID0ge1xyXG4gIHBhcnNlOiB7ZGF0ZUlucHV0OiB7bW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgZGF5OiAnbnVtZXJpYyd9fSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdpbnB1dCcsXHJcbiAgICBtb250aFllYXJMYWJlbDoge3llYXI6ICdudW1lcmljJywgbW9udGg6ICdzaG9ydCd9LFxyXG4gICAgZGF0ZUExMXlMYWJlbDoge3llYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYyd9LFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiB7eWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnfVxyXG4gIH1cclxufTtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNZ0RhdGVBZGFwdGVyIGV4dGVuZHMgTmF0aXZlRGF0ZUFkYXB0ZXIge1xyXG4gIHB1YmxpYyBtZ2R0Zm10OiBzdHJpbmcgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yICggcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSAscHJvdGVjdGVkIHRhc2s6IFRhc2tNYWdpY1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCdlbi1VUycsIHBsYXRmb3JtKTtcclxuICB9XHJcblxyXG4gIHBhcnNlICh2YWx1ZTogYW55KSA6IERhdGUgfCBudWxsXHJcbiAge1xyXG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSB2YWx1ZTtcclxuICAgIGxldCBkYXRlID0gMCwgbW9udGggPSAwLCB5ZWFyID0gMCwgbW9udGhTdHIgPSBudWxsO1xyXG4gICAgbGV0IG1nRGF0ZU1hc2s6IHN0cmluZyA9IHRoaXMubWdkdGZtdDtcclxuICAgIGxldCBzZXAgPSB2YWx1ZVN0ci5pbmRleE9mKCcvJykgPiAwID8gJy8nIDogJy0nO1xyXG5cclxuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IFwiXCIpIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHRoaXMubWdkdGZtdCA9PSBudWxsICYmIHRoaXMudGFzay5tZ0lucHV0RGF0ZUZvcm1hdCAhPSBudWxsKVxyXG4gICAgICB0aGlzLm1nZHRmbXQgPSB0aGlzLnRhc2subWdJbnB1dERhdGVGb3JtYXQ7XHJcbiAgICBpZiAoKHRoaXMubWdkdGZtdC5pbmRleE9mKCdNTU0nKSA+IDApIHx8ICh0aGlzLm1nZHRmbXQuaW5kZXhPZignTU1NTScpID4gMCkpXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgbGV0IHZhbGxlbiA9IHZhbHVlU3RyLmxlbmd0aDtcclxuICAgIGlmIChtZ0RhdGVNYXNrICE9PSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGk9MCwgaj0wOyBpIDwgbWdEYXRlTWFzay5sZW5ndGg7KSB7XHJcbiAgICAgICAgc3dpdGNoIChtZ0RhdGVNYXNrW2ldKSB7XHJcbiAgICAgICAgICBjYXNlICdkJzoge1xyXG4gICAgICAgICAgICAgIGxldCB0bXBTdHI6IHN0cmluZztcclxuICAgICAgICAgICAgICBsZXQgbGVuID0gdmFsdWVTdHIuaW5kZXhPZihzZXAsIDApO1xyXG4gICAgICAgICAgICAgIHRtcFN0ciA9IGxlbiA9PSAtMSA/IHZhbHVlU3RyIDogdmFsdWVTdHIuc3Vic3RyKDAsIGxlbik7XHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdmFsdWVTdHIgPSB2YWx1ZVN0ci5zdWJzdHIobGVuKzEpO1xyXG4gICAgICAgICAgICAgIGZvciAoO21nRGF0ZU1hc2tbaV0gPT0gJ2QnOyBpKyspO1xyXG4gICAgICAgICAgICAgIGRhdGUgPSAoTnVtYmVyKSh0bXBTdHIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ00nOiB7XHJcbiAgICAgICAgICAgICAgbGV0IHRtcFN0cjogc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGxldCBsZW4gPSB2YWx1ZVN0ci5pbmRleE9mKHNlcCwgMCk7XHJcbiAgICAgICAgICAgICAgdG1wU3RyID0gbGVuID09IC0xID8gdmFsdWVTdHIgOiB2YWx1ZVN0ci5zdWJzdHIoMCwgbGVuKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdmFsdWVTdHIgPSB2YWx1ZVN0ci5zdWJzdHIobGVuKzEpO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKDsgbWdEYXRlTWFza1tpXSA9PSAnTScgO2krKyk7XHJcbiAgICAgICAgICAgICAgbW9udGggPSAoTnVtYmVyKSh0bXBTdHIpID4gMCA/IChOdW1iZXIpKHRtcFN0ciktIDEgOiAwO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3knOiB7XHJcbiAgICAgICAgICAgICAgbGV0IHRtcFN0cjtcclxuICAgICAgICAgICAgICBsZXQgbGVuID0gdmFsdWVTdHIuaW5kZXhPZihzZXAsIDApO1xyXG4gICAgICAgICAgICAgIHRtcFN0ciA9IGxlbiA9PSAtMSA/IHZhbHVlU3RyIDogdmFsdWVTdHIuc3Vic3RyKDAsIGxlbik7XHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVN0ciA9IHZhbHVlU3RyLnN1YnN0cihsZW4gKyAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yICg7IG1nRGF0ZU1hc2tbaV0gPT0gJ3knIDtpKyspO1xyXG4gICAgICAgICAgICAgIHllYXIgPSAoTnVtYmVyKSh0bXBTdHIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtb250aCA9PSAwICYmIHllYXIgPT0gMCAmJiBkYXRlID09IDApXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF0ZSkpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IE9iamVjdCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5tZ2R0Zm10ID09IG51bGwgJiYgdGhpcy50YXNrLm1nSW5wdXREYXRlRm9ybWF0ICE9IG51bGwpXHJcbiAgICAgIHRoaXMubWdkdGZtdCA9IHRoaXMudGFzay5tZ0lucHV0RGF0ZUZvcm1hdDtcclxuICAgIGlmIChkaXNwbGF5Rm9ybWF0ID09PSAnaW5wdXQnKSB7XHJcbiAgICAgIGlmICh0aGlzLm1nZHRmbXQgPT0gbnVsbClcclxuICAgICAgICB0aGlzLm1nZHRmbXQgPSAnTS9kL3l5eXknOyAvL2RlZmF1bHQgZm9ybWF0XHJcbiAgICAgIHJldHVybiBmb3JtYXREYXRlKGRhdGUsdGhpcy5tZ2R0Zm10LHRoaXMubG9jYWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBkYXRlLnRvRGF0ZVN0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWctZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvbWctZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQUV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsRUFBQztJQUNyRSxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsT0FBTztRQUNsQixjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUM7UUFDakQsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUM7UUFDL0Qsa0JBQWtCLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUM7S0FDckQ7Q0FDRixDQUFDO0FBSUYsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFFbEQsWUFBcUIsUUFBa0IsRUFBWSxJQUFzQjtRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRE4sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZ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QyxpQkFBaUIsQ0FBQztRQUM3QyxJQUFJLGFBQWEsS0FBSyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1lBQzVCLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzswRUE3RVUsYUFBYTtxREFBYixhQUFhLFdBQWIsYUFBYTt1RkFBYixhQUFhO2NBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05hdGl2ZURhdGVBZGFwdGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi90YXNrLm1hZ2ljcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBNR19GT1JNQVRTID0ge1xyXG4gIHBhcnNlOiB7ZGF0ZUlucHV0OiB7bW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgZGF5OiAnbnVtZXJpYyd9fSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdpbnB1dCcsXHJcbiAgICBtb250aFllYXJMYWJlbDoge3llYXI6ICdudW1lcmljJywgbW9udGg6ICdzaG9ydCd9LFxyXG4gICAgZGF0ZUExMXlMYWJlbDoge3llYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYyd9LFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiB7eWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnfVxyXG4gIH1cclxufTtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNZ0RhdGVBZGFwdGVyIGV4dGVuZHMgTmF0aXZlRGF0ZUFkYXB0ZXIge1xyXG4gIHB1YmxpYyBtZ2R0Zm10OiBzdHJpbmcgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yICggcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSAscHJvdGVjdGVkIHRhc2s6IFRhc2tNYWdpY1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCdlbi1VUycsIHBsYXRmb3JtKTtcclxuICB9XHJcblxyXG4gIHBhcnNlICh2YWx1ZTogYW55KSA6IERhdGUgfCBudWxsXHJcbiAge1xyXG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSB2YWx1ZTtcclxuICAgIGxldCBkYXRlID0gMCwgbW9udGggPSAwLCB5ZWFyID0gMDtcclxuICAgIGxldCBtZ0RhdGVNYXNrOiBzdHJpbmcgPSB0aGlzLm1nZHRmbXQ7XHJcbiAgICBsZXQgc2VwID0gdmFsdWVTdHIuaW5kZXhPZignLycpID4gMCA/ICcvJyA6ICctJztcclxuXHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSBcIlwiKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0aGlzLm1nZHRmbXQgPT0gbnVsbCAmJiB0aGlzLnRhc2subWdJbnB1dERhdGVGb3JtYXQgIT0gbnVsbClcclxuICAgICAgdGhpcy5tZ2R0Zm10ID0gdGhpcy50YXNrLm1nSW5wdXREYXRlRm9ybWF0O1xyXG4gICAgaWYgKCh0aGlzLm1nZHRmbXQuaW5kZXhPZignTU1NJykgPiAwKSB8fCAodGhpcy5tZ2R0Zm10LmluZGV4T2YoJ01NTU0nKSA+IDApKVxyXG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgaWYgKG1nRGF0ZU1hc2sgIT09IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbWdEYXRlTWFzay5sZW5ndGg7KSB7XHJcbiAgICAgICAgc3dpdGNoIChtZ0RhdGVNYXNrW2ldKSB7XHJcbiAgICAgICAgICBjYXNlICdkJzoge1xyXG4gICAgICAgICAgICAgIGxldCB0bXBTdHI6IHN0cmluZztcclxuICAgICAgICAgICAgICBsZXQgbGVuID0gdmFsdWVTdHIuaW5kZXhPZihzZXAsIDApO1xyXG4gICAgICAgICAgICAgIHRtcFN0ciA9IGxlbiA9PSAtMSA/IHZhbHVlU3RyIDogdmFsdWVTdHIuc3Vic3RyKDAsIGxlbik7XHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdmFsdWVTdHIgPSB2YWx1ZVN0ci5zdWJzdHIobGVuKzEpO1xyXG4gICAgICAgICAgICAgIGZvciAoO21nRGF0ZU1hc2tbaV0gPT0gJ2QnOyBpKyspO1xyXG4gICAgICAgICAgICAgIGRhdGUgPSAoTnVtYmVyKSh0bXBTdHIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ00nOiB7XHJcbiAgICAgICAgICAgICAgbGV0IHRtcFN0cjogc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGxldCBsZW4gPSB2YWx1ZVN0ci5pbmRleE9mKHNlcCwgMCk7XHJcbiAgICAgICAgICAgICAgdG1wU3RyID0gbGVuID09IC0xID8gdmFsdWVTdHIgOiB2YWx1ZVN0ci5zdWJzdHIoMCwgbGVuKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdmFsdWVTdHIgPSB2YWx1ZVN0ci5zdWJzdHIobGVuKzEpO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKDsgbWdEYXRlTWFza1tpXSA9PSAnTScgO2krKyk7XHJcbiAgICAgICAgICAgICAgbW9udGggPSAoTnVtYmVyKSh0bXBTdHIpID4gMCA/IChOdW1iZXIpKHRtcFN0ciktIDEgOiAwO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3knOiB7XHJcbiAgICAgICAgICAgICAgbGV0IHRtcFN0cjtcclxuICAgICAgICAgICAgICBsZXQgbGVuID0gdmFsdWVTdHIuaW5kZXhPZihzZXAsIDApO1xyXG4gICAgICAgICAgICAgIHRtcFN0ciA9IGxlbiA9PSAtMSA/IHZhbHVlU3RyIDogdmFsdWVTdHIuc3Vic3RyKDAsIGxlbik7XHJcbiAgICAgICAgICAgICAgaWYgKGxlbiA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVN0ciA9IHZhbHVlU3RyLnN1YnN0cihsZW4gKyAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yICg7IG1nRGF0ZU1hc2tbaV0gPT0gJ3knIDtpKyspO1xyXG4gICAgICAgICAgICAgIHllYXIgPSAoTnVtYmVyKSh0bXBTdHIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtb250aCA9PSAwICYmIHllYXIgPT0gMCAmJiBkYXRlID09IDApXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF0ZSkpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IE9iamVjdCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5tZ2R0Zm10ID09IG51bGwgJiYgdGhpcy50YXNrLm1nSW5wdXREYXRlRm9ybWF0ICE9IG51bGwpXHJcbiAgICAgIHRoaXMubWdkdGZtdCA9IHRoaXMudGFzay5tZ0lucHV0RGF0ZUZvcm1hdDtcclxuICAgIGlmIChkaXNwbGF5Rm9ybWF0ID09PSAnaW5wdXQnKSB7XHJcbiAgICAgIGlmICh0aGlzLm1nZHRmbXQgPT0gbnVsbClcclxuICAgICAgICB0aGlzLm1nZHRmbXQgPSAnTS9kL3l5eXknOyAvL2RlZmF1bHQgZm9ybWF0XHJcbiAgICAgIHJldHVybiBmb3JtYXREYXRlKGRhdGUsdGhpcy5tZ2R0Zm10LHRoaXMubG9jYWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBkYXRlLnRvRGF0ZVN0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -42,7 +42,7 @@ export class SubformMagicService {
|
|
|
42
42
|
return this.subformsDict[subformName].parameters;
|
|
43
43
|
}
|
|
44
44
|
else
|
|
45
|
-
return
|
|
45
|
+
return '';
|
|
46
46
|
}
|
|
47
47
|
deleteSubformComp(subformControlName, formName) {
|
|
48
48
|
if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0) {
|
|
@@ -66,8 +66,8 @@ export class SubformMagicService {
|
|
|
66
66
|
if (moduleRef == null) {
|
|
67
67
|
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(formName);
|
|
68
68
|
if (lazyLoadModule != null) {
|
|
69
|
-
let moduleName = lazyLoadModule.moduleName.replace(
|
|
70
|
-
moduleName = moduleName.replace(
|
|
69
|
+
let moduleName = lazyLoadModule.moduleName.replace('Magic', '');
|
|
70
|
+
moduleName = moduleName.replace('Module', '');
|
|
71
71
|
this.loader.Load(moduleName).then(m => {
|
|
72
72
|
const compiled = this.compiler.compileModuleAndAllComponentsSync(m[lazyLoadModule.moduleName]);
|
|
73
73
|
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
@@ -89,7 +89,7 @@ export class SubformMagicService {
|
|
|
89
89
|
}
|
|
90
90
|
else {
|
|
91
91
|
if (inDefaultOutlet)
|
|
92
|
-
subformControlName =
|
|
92
|
+
subformControlName = 'primary';
|
|
93
93
|
let routeParams = new List();
|
|
94
94
|
routeParams.push(routerPath);
|
|
95
95
|
if (params !== null) {
|
|
@@ -111,7 +111,6 @@ export class SubformMagicService {
|
|
|
111
111
|
this.task.refreshView();
|
|
112
112
|
}
|
|
113
113
|
ExecuteRouteCommand(routeCommand) {
|
|
114
|
-
let reusingComponent = false;
|
|
115
114
|
let currentSubformMagicService = routeCommand.callerMgSubformServiceRef;
|
|
116
115
|
let relativeRoute = SubformMagicService.getRelativeRoute(currentSubformMagicService.activatedRoute);
|
|
117
116
|
if (currentSubformMagicService.routesDict[routeCommand.routerOutletName] === routeCommand.routeParams[0]) {
|
|
@@ -170,7 +169,7 @@ export class SubformMagicService {
|
|
|
170
169
|
if (currentActiveRoute.snapshot.routeConfig !== null && currentActiveRoute.snapshot.routeConfig.path === '') {
|
|
171
170
|
currentActiveRoute = currentActiveRoute.parent;
|
|
172
171
|
if (!currentActiveRoute.snapshot.routeConfig.loadChildren)
|
|
173
|
-
console.log(
|
|
172
|
+
console.log('getRelativeRoute(): both path and currentActiveRoute.snapshot.routeConfig.loadChildren are empty.');
|
|
174
173
|
}
|
|
175
174
|
return currentActiveRoute;
|
|
176
175
|
}
|
|
@@ -182,4 +181,4 @@ SubformMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: SubformMagicServic
|
|
|
182
181
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicService, [{
|
|
183
182
|
type: Injectable
|
|
184
183
|
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.ActivatedRoute }, { type: i3.ComponentListMagicService }, { type: i4.CommandsCollectorMagicService }, { type: i2.Router }, { type: i5.RouterCommandsMagicService }, { type: i3.ComponentListMagicService }, { type: i6.MagicLazyLoaderService }, { type: i0.Injector }, { type: i0.Compiler }]; }, null); })();
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWEsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFhLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRixPQUFPLEVBQWdCLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0QsRUFDeEQseUJBQW9ELEVBQ3BELE1BQThCLEVBQzlCLFFBQWtCLEVBQ2xCLFFBQWtCO1FBVGxCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUErQjtRQUN2RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN4RCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELFdBQU0sR0FBTixNQUFNLENBQXdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWpCdEMsaUJBQVksR0FBMkMsRUFBRSxDQUFDO1FBQzFELGVBQVUsR0FBNEIsRUFBRSxDQUFDO1FBQ3pDLDJCQUFzQixHQUFvQixJQUFJLENBQUM7SUFnQi9DLENBQUM7SUFPRCxTQUFTLENBQUMsV0FBbUI7UUFDM0IsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQyxJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUMvRCxJQUFJLFFBQVE7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQU9ELGVBQWUsQ0FBQyxXQUFtQjtRQUNqQyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUM7U0FDbEQ7O1lBRUMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBS0QsaUJBQWlCLENBQUUsa0JBQTBCLEVBQUUsUUFBZ0I7UUFFM0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQ25FO1lBQ0UsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFFakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN2QjtTQUNGO0lBQ0wsQ0FBQztJQUtELGNBQWMsQ0FBRSxrQkFBMEIsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxlQUFvQixFQUFFLFVBQWtCLEVBQUUsTUFBaUIsRUFBRSxlQUF3QjtRQUNqSyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFaEQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQ25FO2dCQUNFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7b0JBRS9ELElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3pCO2FBQ0Y7WUFHRCxJQUFJLFNBQVMsR0FBcUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV4RixJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLElBQUksY0FBYyxHQUFlLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEcsSUFBSSxjQUFjLElBQUksSUFBSSxFQUFFO29CQUUxQixJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hFLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDcEcsU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHOzRCQUN0QyxRQUFROzRCQUNSLFVBQVUsRUFBRSxFQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBQzt5QkFDcEUsQ0FBQzt3QkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQztpQkFDTjthQUNGO2lCQUNJO2dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRztvQkFDdEMsUUFBUTtvQkFDUixVQUFVLEVBQUUsRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUM7aUJBQ3BFLENBQUM7Z0JBRUYsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtTQUNGO2FBQ0k7WUFDSCxJQUFJLGVBQWU7Z0JBQ2pCLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztZQUVqQyxJQUFJLFdBQVcsR0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0IsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNuQixXQUFXLEdBQWMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyRDtZQUVELElBQUksWUFBWSxHQUFpQjtnQkFDL0IseUJBQXlCLEVBQUUsSUFBSTtnQkFDL0IsZ0JBQWdCLEVBQUUsa0JBQWtCO2dCQUNwQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsVUFBVSxFQUFFLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFDO2dCQUNuRSxXQUFXLEVBQUUsV0FBVzthQUN6QixDQUFDO1lBTUosSUFBSSxtQkFBbUIsQ0FBQyxnQ0FBZ0MsS0FBSyxJQUFJO2dCQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7O2dCQUV2QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSyxhQUFhO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUtELG1CQUFtQixDQUFDLFlBQTBCO1FBRTVDLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTdCLElBQUksMEJBQTBCLEdBQTZDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQztRQUNsSCxJQUFJLGFBQWEsR0FBSSxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRyxJQUFJLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUN4RztZQUdFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBQyxDQUFDO2lCQUMxSCxJQUFJLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtnQkFDdkIsbUJBQW1CLENBQUMsZ0NBQWdDLEdBQUcsMEJBQTBCLENBQUM7Z0JBQ2xGLDBCQUEwQixDQUFDLHNCQUFzQixHQUFHO29CQUNsRCxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7b0JBQy9CLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtpQkFDcEMsQ0FBQztnQkFFRiwwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlHLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILG1CQUFtQixDQUFDLGdDQUFnQyxHQUFHLDBCQUEwQixDQUFDO1lBQ2xGLDBCQUEwQixDQUFDLHNCQUFzQixHQUFHO2dCQUNsRCxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7Z0JBQy9CLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTthQUNwQyxDQUFDO1lBRUYsSUFBSSxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQ3RDO2lCQUNJO2dCQUNILDBCQUEwQixDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0c7U0FDRjtJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxnQkFBd0IsRUFBRSxXQUFzQjtRQUU1RSxJQUFJLGFBQWEsR0FBSSxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7YUFDcEcsSUFBSSxDQUFDLENBQUMsTUFBYyxFQUFDLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUM5QixJQUFJLG1CQUFtQixHQUF3QixtQkFBbUIsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDcEcsbUJBQW1CLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUVsRCxtQkFBbUIsQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7Z0JBQzVELG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM5RCxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBS0QsSUFBSTtRQUlGLE1BQU0sZUFBZSxHQUFpQixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEcsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5QixlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFLRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBS0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQztRQUN4RCxJQUFJLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzVDLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQzNHLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZO2dCQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLG1HQUFtRyxDQUFDLENBQUM7U0FDcEg7UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7O0FBdk9NLG9EQUFnQyxHQUFRLElBQUssQ0FBQTtBQUU3QyxvQ0FBZ0IsR0FBeUMsSUFBSSxLQUFLLEVBQUcsQ0FBQTtzRkFSakUsbUJBQW1COzJEQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CO3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVyLCBDb21wb25lbnQsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ01vZHVsZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4vdGFzay5tYWdpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBMaXN0LCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcbmltcG9ydCB7IEd1aUNvbW1hbmQgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XG5pbXBvcnQge0NvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsIE1vZHVsZURhdGF9IGZyb20gJy4vY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9jb21tYW5kcy1jb2xsZWN0b3IubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZURlZmluaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3N1Yi1mb3JtLWRlZmluaXRpb24uaXRlcmZhY2UnO1xuaW1wb3J0IHsgUm91dGVDb21tYW5kLCBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1jb21tYW5kcy5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IElTdWJmb3JtTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9JU3ViZm9ybU1hZ2ljU2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudCB9IGZyb20gJy4uL3VpL3JvdXRlci1jb250YWluZXIubWFnaWMuY29tcG9uZW50JztcbmltcG9ydCB7IE1hZ2ljTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL21hZ2ljLmxhenkubG9hZGVyLnNlcnZpY2UnO1xuXG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgc3ViZm9ybXMgYW5kIHJvdXRpbmdcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN1YmZvcm1NYWdpY1NlcnZpY2UgaW1wbGVtZW50cyBJU3ViZm9ybU1hZ2ljU2VydmljZXtcblxuICBzdWJmb3Jtc0RpY3QgLyo6eyBbeDogc3RyaW5nXTogU3ViZm9ybURlZmluaXRpb24gfSovID0ge307XG4gIHJvdXRlc0RpY3Q6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9ID0ge307IC8vIGRpY3Rpb25hcnkgb2Ygcm91dGVyIG91dGxldCB0byByb3V0ZXIgcGF0aFxuICBjdXJyZW50Um91dGVEZWZpbml0aW9uOiBSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gIHN0YXRpYyBjdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogYW55ID0gbnVsbDtcblxuICBzdGF0aWMgcm91dGVyQ29udGFpbmVyczogQXJyYXk8Um91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQ+ID0gbmV3IEFycmF5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50TGlzdDogQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvcjogQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlOiBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlOiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGxvYWRlcjogTWFnaWNMYXp5TG9hZGVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyKSB7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gdGhlIHN1YmZvcm0gbmFtZVxuICAgKiBAcGFyYW0gc3ViZm9ybU5hbWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIG1nR2V0Q29tcChzdWJmb3JtTmFtZTogc3RyaW5nKTogQ29tcG9uZW50IHtcbiAgICBpZiAoc3ViZm9ybU5hbWUgaW4gdGhpcy5zdWJmb3Jtc0RpY3QpIHtcbiAgICAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLmZvcm1OYW1lO1xuICAgICAgaWYgKGZvcm1OYW1lKVxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChmb3JtTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHN1YmZvcm1cbiAgICogQHBhcmFtIHN1YmZvcm1OYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtZ0dldFBhcmFtZXRlcnMoc3ViZm9ybU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHN1YmZvcm1OYW1lIGluIHRoaXMuc3ViZm9ybXNEaWN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLnBhcmFtZXRlcnM7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGRlbGV0ZVN1YmZvcm1Db21wIChzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZykgIHtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3ViZm9ybXNEaWN0KS5pbmRleE9mKHN1YmZvcm1Db250cm9sTmFtZSkgPj0gMClcbiAgICAgIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0uZm9ybU5hbWUgPT09IGZvcm1OYW1lKSB7XG5cbiAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHt9O1xuICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFkZFN1YmZvcm1Db21wIChzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHRhc2tEZXNjcmlwdGlvbjogYW55LCByb3V0ZXJQYXRoOiBzdHJpbmcsIHBhcmFtczogTGlzdDxhbnk+LCBpbkRlZmF1bHRPdXRsZXQ6IGJvb2xlYW4pICB7XG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RhcnRDb2xsZWN0aW5nKCk7XG5cbiAgICBsZXQgcmVmcmVzaE5lZWRlZCA9IGZhbHNlO1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3V0ZXJQYXRoKSkgeyAvLyBjYWxsIGluIGRlc3RpbmF0aW9uIHN1YmZvcm1cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1zRGljdCkuaW5kZXhPZihzdWJmb3JtQ29udHJvbE5hbWUpID49IDApXG4gICAgICB7XG4gICAgICAgIGlmICh0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdLmZvcm1OYW1lID09PSBmb3JtTmFtZSkge1xuXG4gICAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHt9O1xuICAgICAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIExvYWQgdGhlIGxhenkgbG9hZCBtb2R1bGUsIGlmIG5lZWRlZFxuICAgICAgbGV0IG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PiA9IHRoaXMuY29tcG9uZW50TGlzdE1hZ2ljU2VydmljZS5nZXRNb2R1bGVSZWYoZm9ybU5hbWUpO1xuXG4gICAgICBpZiAobW9kdWxlUmVmID09IG51bGwpIHtcbiAgICAgICAgbGV0IGxhenlMb2FkTW9kdWxlOiBNb2R1bGVEYXRhID0gdGhpcy5jb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLmdldExhenlMb2FkTW9kdWxlRGF0YShmb3JtTmFtZSk7XG5cbiAgICAgICAgaWYgKGxhenlMb2FkTW9kdWxlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBleHRyYWN0IG5hbWUgb2YgbW9kdWxlKFhYKSBmcm9tICdNYWdpY1hYTW9kdWxlJ1xuICAgICAgICAgIGxldCBtb2R1bGVOYW1lID0gbGF6eUxvYWRNb2R1bGUubW9kdWxlTmFtZS5yZXBsYWNlKFwiTWFnaWNcIiwgXCJcIik7XG4gICAgICAgICAgbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWUucmVwbGFjZShcIk1vZHVsZVwiLCBcIlwiKTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5Mb2FkKG1vZHVsZU5hbWUpLnRoZW4oIG0gPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcGlsZWQgPSB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyg8YW55Pm1bbGF6eUxvYWRNb2R1bGUubW9kdWxlTmFtZV0pO1xuICAgICAgICAgICAgbW9kdWxlUmVmID0gY29tcGlsZWQubmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7dGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdID0ge1xuICAgICAgICAgIGZvcm1OYW1lLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHt0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbn1cbiAgICAgICAgfTtcbiAgICAgICAgLy90aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJlZnJlc2hOZWVkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHsgLy8gY2FsbCByb3V0ZVxuICAgICAgaWYgKGluRGVmYXVsdE91dGxldClcbiAgICAgICAgc3ViZm9ybUNvbnRyb2xOYW1lID0gXCJwcmltYXJ5XCI7XG5cbiAgICAgIGxldCByb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbmV3IExpc3QoKTtcbiAgICAgIHJvdXRlUGFyYW1zLnB1c2gocm91dGVyUGF0aCk7XG4gICAgICBpZiAocGFyYW1zICE9PSBudWxsKSB7XG4gICAgICAgIHJvdXRlUGFyYW1zID0gPExpc3Q8YW55Pj5yb3V0ZVBhcmFtcy5jb25jYXQocGFyYW1zKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kID0ge1xuICAgICAgICBjYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmOiB0aGlzLFxuICAgICAgICByb3V0ZXJPdXRsZXROYW1lOiBzdWJmb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIGZvcm1OYW1lOiBmb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufSxcbiAgICAgICAgcm91dGVQYXJhbXM6IHJvdXRlUGFyYW1zXG4gICAgICB9O1xuXG4gICAgICAvLyBJZiBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmICE9PSBudWxsIG1lYW5zIHRoYXQgcm91dGVyLm5hdmlnYXRlKCkgaXMgYWxyZWFkeVxuICAgICAgLy8gY2FsbGVkIG9uY2UsIGJ1dCBhbmd1bGFyIGhhcyBub3QgeWV0IGV4ZWN1dGVkIGl0IChuZ09uSW5pdCBvZiB0aGUgbmV3IGNvbXBvbmVudCBpcyBub3QgY2FsbGVkKS5cbiAgICAgIC8vIEluIHN1Y2ggYSBjYXNlLCBkbyBub3QgZXhlY3V0ZWQgcm91dGVyLm5hdmlnYXRlKCkgYWdhaW4uIEJlY2F1c2UsIGFuZ3VsYXIgaWdub3JlcyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgLy8gU28sIHB1dCBhIGNvbW1hbmQgaW4gdGhlIHF1ZXVlIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZpcnN0IG9uZSBpcyBleGVjdXRlZC5cbiAgICBpZiAoU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9PT0gbnVsbClcbiAgICAgICAgdGhpcy5FeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuQWRkUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgfVxuICAgIGlmICggcmVmcmVzaE5lZWRlZClcbiAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1YmZvcm0gdXNpbmcgYSByb3V0ZSBjb21tYW5kXG4gICAqL1xuICBFeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kKVxuICB7XG4gICAgbGV0IHJldXNpbmdDb21wb25lbnQgPSBmYWxzZTtcblxuICAgIGxldCBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IDxTdWJmb3JtTWFnaWNTZXJ2aWNlPnJvdXRlQ29tbWFuZC5jYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmO1xuICAgIGxldCByZWxhdGl2ZVJvdXRlID0gIFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZShjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5hY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICBpZiAoY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVzRGljdFtyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZV0gPT09IHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtc1swXSlcbiAgICB7XG4gICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHJvdXRlciBvdXRsZXQgYWxyZWFkeSBob3N0cyB0aGUgc2FtZSByb3V0ZXIgcGF0aCwgcm91dGVyLm5hdmlnYXRlKCkgZG9lc24ndCBhY3R1YWxseSBuYXZpZ2F0ZS5cbiAgICAgIC8vIFNvLCBmaXJzdCBjbGVhciB0aGUgb3V0bGV0IChwYXNzaW5nIG51bGwgcm91dGUgcGFyYW1zLCBjbGVhcnMgdGhlIG91dGxldCkgYW5kIHRoZW4gbmF2aWdhdGUgYWdhaW4uXG4gICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7W3JvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lXTogbnVsbH19XSwge3JlbGF0aXZlVG86IHJlbGF0aXZlUm91dGV9KVxuICAgICAgICAudGhlbigocmVzdWx0OmJvb2xlYW4pID0+IHtcbiAgICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U7XG4gICAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAgIGZvcm1OYW1lOiByb3V0ZUNvbW1hbmQuZm9ybU5hbWUsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiByb3V0ZUNvbW1hbmQucGFyYW1ldGVyc1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5QZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWUsIHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtcyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U7XG4gICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uID0ge1xuICAgICAgICBmb3JtTmFtZTogcm91dGVDb21tYW5kLmZvcm1OYW1lLFxuICAgICAgICBwYXJhbWV0ZXJzOiByb3V0ZUNvbW1hbmQucGFyYW1ldGVyc1xuICAgICAgfTtcblxuICAgICAgaWYgKFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCByb3V0ZUNvbnRhaW5lciA9IFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVyc1swXTtcbiAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb250YWluZXJzLnNoaWZ0KCk7XG4gICAgICAgIHJvdXRlQ29udGFpbmVyLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5QZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWUsIHJvdXRlQ29tbWFuZC5yb3V0ZVBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBQZXJmb3JtUm91dGVyTmF2aWdhdGUocm91dGVyT3V0bGV0TmFtZTogc3RyaW5nLCByb3V0ZVBhcmFtczogTGlzdDxhbnk+KVxuICB7XG4gICAgbGV0IHJlbGF0aXZlUm91dGUgPSAgU3ViZm9ybU1hZ2ljU2VydmljZS5nZXRSZWxhdGl2ZVJvdXRlKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyBbcm91dGVyT3V0bGV0TmFtZV06IHJvdXRlUGFyYW1zIH0gfV0sIHsgcmVsYXRpdmVUbzogcmVsYXRpdmVSb3V0ZSB9KVxuICAgICAgLnRoZW4oKHJlc3VsdDpib29sZWFuKT0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmICFyZXN1bHQpIHtcbiAgICAgICAgICAgIGxldCBzdWJmb3JtTWFnaWNTZXJ2aWNlOiBTdWJmb3JtTWFnaWNTZXJ2aWNlID0gU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPSBudWxsO1xuICAgICAgICAgICAgc3ViZm9ybU1hZ2ljU2VydmljZS5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RvcENvbGxlY3RpbmcoKTtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuRXhlY3V0ZU5leHRDb21tYW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGluaXQoKVxuICB7XG4gICAgLy8gSWYgY29tbWFuZHMgd2VyZSBpc3N1ZWQgZm9yIHRoaXMgdGFzayBiZWZvcmUgbmdPbkluaXQoKSwgdGhleSB3ZXJlIG5vdCBleGVjdXRlZCBiZWNhdXNlIHRhc2sgaGFkIG5vdCByZWdpc3RlcmVkIGZvciB0aGVtLlxuICAgIC8vIFNvLCBleGVjdXRlIHRoZW0gbm93LlxuICAgIGNvbnN0IHBlbmRpbmdDb21tYW5kczogR3VpQ29tbWFuZFtdID0gdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3IuR2V0Q29tbWFuZHModGhpcy50YXNrLnRhc2tJZCk7XG4gICAgaWYgKHBlbmRpbmdDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICBwZW5kaW5nQ29tbWFuZHMuZm9yRWFjaChjb21tYW5kID0+IHt0aGlzLnRhc2suZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7fSk7XG4gICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdDb21tYW5kc0NvbGxlY3Rvci5zdG9wQ29sbGVjdGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJlZnJlc2hWaWV3KCkge1xuICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgLy8vXG4gIC8vIHJldHVybiB0aGUgcmVsYXRpdmUgcm91dGVcbiAgLy9cbiAgc3RhdGljIGdldFJlbGF0aXZlUm91dGUoc2VuZEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSl7XG4gICAgbGV0IGN1cnJlbnRBY3RpdmVSb3V0ZSA9IHNlbmRBY3RpdmF0ZWRSb3V0ZTtcbiAgICBpZiAoY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnICE9PSBudWxsICYmIGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoID09PSAnJykge1xuICAgICAgY3VycmVudEFjdGl2ZVJvdXRlID0gY3VycmVudEFjdGl2ZVJvdXRlLnBhcmVudDtcbiAgICAgIGlmICghY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbilcbiAgICAgICAgY29uc29sZS5sb2coXCJnZXRSZWxhdGl2ZVJvdXRlKCk6IGJvdGggcGF0aCBhbmQgY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbiBhcmUgZW1wdHkuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEFjdGl2ZVJvdXRlO1xuICB9XG59XG4iXX0=
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWEsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFhLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRixPQUFPLEVBQWdCLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0QsRUFDeEQseUJBQW9ELEVBQ3BELE1BQThCLEVBQzlCLFFBQWtCLEVBQ2xCLFFBQWtCO1FBVGxCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUErQjtRQUN2RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN4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UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7O0FBck9NLG9EQUFnQyxHQUFRLElBQUssQ0FBQTtBQUU3QyxvQ0FBZ0IsR0FBeUMsSUFBSSxLQUFLLEVBQUcsQ0FBQTtzRkFSakUsbUJBQW1COzJEQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CO3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVyLCBDb21wb25lbnQsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ01vZHVsZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4vdGFzay5tYWdpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBMaXN0LCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcbmltcG9ydCB7IEd1aUNvbW1hbmQgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XG5pbXBvcnQge0NvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsIE1vZHVsZURhdGF9IGZyb20gJy4vY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9jb21tYW5kcy1jb2xsZWN0b3IubWFnaWMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZURlZmluaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3N1Yi1mb3JtLWRlZmluaXRpb24uaXRlcmZhY2UnO1xuaW1wb3J0IHsgUm91dGVDb21tYW5kLCBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1jb21tYW5kcy5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IElTdWJmb3JtTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9JU3ViZm9ybU1hZ2ljU2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudCB9IGZyb20gJy4uL3VpL3JvdXRlci1jb250YWluZXIubWFnaWMuY29tcG9uZW50JztcbmltcG9ydCB7IE1hZ2ljTGF6eUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL21hZ2ljLmxhenkubG9hZGVyLnNlcnZpY2UnO1xuXG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgc3ViZm9ybXMgYW5kIHJvdXRpbmdcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN1YmZvcm1NYWdpY1NlcnZpY2UgaW1wbGVtZW50cyBJU3ViZm9ybU1hZ2ljU2VydmljZXtcblxuICBzdWJmb3Jtc0RpY3QgLyo6eyBbeDogc3RyaW5nXTogU3ViZm9ybURlZmluaXRpb24gfSovID0ge307XG4gIHJvdXRlc0RpY3Q6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9ID0ge307IC8vIGRpY3Rpb25hcnkgb2Ygcm91dGVyIG91dGxldCB0byByb3V0ZXIgcGF0aFxuICBjdXJyZW50Um91dGVEZWZpbml0aW9uOiBSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gIHN0YXRpYyBjdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogYW55ID0gbnVsbDtcblxuICBzdGF0aWMgcm91dGVyQ29udGFpbmVyczogQXJyYXk8Um91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQ+ID0gbmV3IEFycmF5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50TGlzdDogQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvcjogQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlOiBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlOiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGxvYWRlcjogTWFnaWNMYXp5TG9hZGVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyKSB7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gdGhlIHN1YmZvcm0gbmFtZVxuICAgKiBAcGFyYW0gc3ViZm9ybU5hbWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIG1nR2V0Q29tcChzdWJmb3JtTmFtZTogc3RyaW5nKTogQ29tcG9uZW50IHtcbiAgICBpZiAoc3ViZm9ybU5hbWUgaW4gdGhpcy5zdWJmb3Jtc0RpY3QpIHtcbiAgICAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLmZvcm1OYW1lO1xuICAgICAgaWYgKGZvcm1OYW1lKVxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChmb3JtTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHN1YmZvcm1cbiAgICogQHBhcmFtIHN1YmZvcm1OYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtZ0dldFBhcmFtZXRlcnMoc3ViZm9ybU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHN1YmZvcm1OYW1lIGluIHRoaXMuc3ViZm9ybXNEaWN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLnBhcmFtZXRlcnM7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkZWxldGVTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcpICB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1zRGljdCkuaW5kZXhPZihzdWJmb3JtQ29udHJvbE5hbWUpID49IDApXG4gICAgICB7XG4gICAgICAgIGlmICh0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdLmZvcm1OYW1lID09PSBmb3JtTmFtZSkge1xuXG4gICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhZGRTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB0YXNrRGVzY3JpcHRpb246IGFueSwgcm91dGVyUGF0aDogc3RyaW5nLCBwYXJhbXM6IExpc3Q8YW55PiwgaW5EZWZhdWx0T3V0bGV0OiBib29sZWFuKSAge1xuICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0YXJ0Q29sbGVjdGluZygpO1xuXG4gICAgbGV0IHJlZnJlc2hOZWVkZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm91dGVyUGF0aCkpIHsgLy8gY2FsbCBpbiBkZXN0aW5hdGlvbiBzdWJmb3JtXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdWJmb3Jtc0RpY3QpLmluZGV4T2Yoc3ViZm9ybUNvbnRyb2xOYW1lKSA+PSAwKVxuICAgICAge1xuICAgICAgICBpZiAodGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXS5mb3JtTmFtZSA9PT0gZm9ybU5hbWUpIHtcblxuICAgICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIHRoZSBsYXp5IGxvYWQgbW9kdWxlLCBpZiBuZWVkZWRcbiAgICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4gPSB0aGlzLmNvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UuZ2V0TW9kdWxlUmVmKGZvcm1OYW1lKTtcblxuICAgICAgaWYgKG1vZHVsZVJlZiA9PSBudWxsKSB7XG4gICAgICAgIGxldCBsYXp5TG9hZE1vZHVsZTogTW9kdWxlRGF0YSA9IHRoaXMuY29tcG9uZW50TGlzdE1hZ2ljU2VydmljZS5nZXRMYXp5TG9hZE1vZHVsZURhdGEoZm9ybU5hbWUpO1xuXG4gICAgICAgIGlmIChsYXp5TG9hZE1vZHVsZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gZXh0cmFjdCBuYW1lIG9mIG1vZHVsZShYWCkgZnJvbSAnTWFnaWNYWE1vZHVsZSdcbiAgICAgICAgICBsZXQgbW9kdWxlTmFtZSA9IGxhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWUucmVwbGFjZSgnTWFnaWMnLCAnJyk7XG4gICAgICAgICAgbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWUucmVwbGFjZSgnTW9kdWxlJywgJycpO1xuICAgICAgICAgIHRoaXMubG9hZGVyLkxvYWQobW9kdWxlTmFtZSkudGhlbiggbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21waWxlZCA9IHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKDxhbnk+bVtsYXp5TG9hZE1vZHVsZS5tb2R1bGVOYW1lXSk7XG4gICAgICAgICAgICBtb2R1bGVSZWYgPSBjb21waWxlZC5uZ01vZHVsZUZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICAgICAgICB0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdID0ge1xuICAgICAgICAgICAgICAgIGZvcm1OYW1lLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7XG4gICAgICAgICAgZm9ybU5hbWUsXG4gICAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufVxuICAgICAgICB9O1xuICAgICAgICAvL3RoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmVmcmVzaE5lZWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgeyAvLyBjYWxsIHJvdXRlXG4gICAgICBpZiAoaW5EZWZhdWx0T3V0bGV0KVxuICAgICAgICBzdWJmb3JtQ29udHJvbE5hbWUgPSAncHJpbWFyeSc7XG5cbiAgICAgIGxldCByb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbmV3IExpc3QoKTtcbiAgICAgIHJvdXRlUGFyYW1zLnB1c2gocm91dGVyUGF0aCk7XG4gICAgICBpZiAocGFyYW1zICE9PSBudWxsKSB7XG4gICAgICAgIHJvdXRlUGFyYW1zID0gPExpc3Q8YW55Pj5yb3V0ZVBhcmFtcy5jb25jYXQocGFyYW1zKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kID0ge1xuICAgICAgICBjYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmOiB0aGlzLFxuICAgICAgICByb3V0ZXJPdXRsZXROYW1lOiBzdWJmb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIGZvcm1OYW1lOiBmb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufSxcbiAgICAgICAgcm91dGVQYXJhbXM6IHJvdXRlUGFyYW1zXG4gICAgICB9O1xuXG4gICAgICAvLyBJZiBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmICE9PSBudWxsIG1lYW5zIHRoYXQgcm91dGVyLm5hdmlnYXRlKCkgaXMgYWxyZWFkeVxuICAgICAgLy8gY2FsbGVkIG9uY2UsIGJ1dCBhbmd1bGFyIGhhcyBub3QgeWV0IGV4ZWN1dGVkIGl0IChuZ09uSW5pdCBvZiB0aGUgbmV3IGNvbXBvbmVudCBpcyBub3QgY2FsbGVkKS5cbiAgICAgIC8vIEluIHN1Y2ggYSBjYXNlLCBkbyBub3QgZXhlY3V0ZWQgcm91dGVyLm5hdmlnYXRlKCkgYWdhaW4uIEJlY2F1c2UsIGFuZ3VsYXIgaWdub3JlcyB0aGUgcHJldmlvdXMgb25lLlxuICAgICAgLy8gU28sIHB1dCBhIGNvbW1hbmQgaW4gdGhlIHF1ZXVlIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZpcnN0IG9uZSBpcyBleGVjdXRlZC5cbiAgICBpZiAoU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9PT0gbnVsbClcbiAgICAgICAgdGhpcy5FeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2UuQWRkUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZCk7XG4gICAgfVxuICAgIGlmICggcmVmcmVzaE5lZWRlZClcbiAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1YmZvcm0gdXNpbmcgYSByb3V0ZSBjb21tYW5kXG4gICAqL1xuICBFeGVjdXRlUm91dGVDb21tYW5kKHJvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kKVxuICB7XG4gICAgbGV0IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlOiBTdWJmb3JtTWFnaWNTZXJ2aWNlID0gPFN1YmZvcm1NYWdpY1NlcnZpY2U+cm91dGVDb21tYW5kLmNhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY7XG4gICAgbGV0IHJlbGF0aXZlUm91dGUgPSAgU3ViZm9ybU1hZ2ljU2VydmljZS5nZXRSZWxhdGl2ZVJvdXRlKGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLmFjdGl2YXRlZFJvdXRlKTtcblxuICAgIGlmIChjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXNEaWN0W3JvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lXSA9PT0gcm91dGVDb21tYW5kLnJvdXRlUGFyYW1zWzBdKVxuICAgIHtcbiAgICAgIC8vIElmIHRoZSBzcGVjaWZpZWQgcm91dGVyIG91dGxldCBhbHJlYWR5IGhvc3RzIHRoZSBzYW1lIHJvdXRlciBwYXRoLCByb3V0ZXIubmF2aWdhdGUoKSBkb2Vzbid0IGFjdHVhbGx5IG5hdmlnYXRlLlxuICAgICAgLy8gU28sIGZpcnN0IGNsZWFyIHRoZSBvdXRsZXQgKHBhc3NpbmcgbnVsbCByb3V0ZSBwYXJhbXMsIGNsZWFycyB0aGUgb3V0bGV0KSBhbmQgdGhlbiBuYXZpZ2F0ZSBhZ2Fpbi5cbiAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHtbcm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWVdOiBudWxsfX1dLCB7cmVsYXRpdmVUbzogcmVsYXRpdmVSb3V0ZX0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6Ym9vbGVhbikgPT4ge1xuICAgICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPSBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZTtcbiAgICAgICAgICBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uID0ge1xuICAgICAgICAgICAgZm9ybU5hbWU6IHJvdXRlQ29tbWFuZC5mb3JtTmFtZSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHJvdXRlQ29tbWFuZC5wYXJhbWV0ZXJzXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLlBlcmZvcm1Sb3V0ZXJOYXZpZ2F0ZShyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZSwgcm91dGVDb21tYW5kLnJvdXRlUGFyYW1zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPSBjdXJyZW50U3ViZm9ybU1hZ2ljU2VydmljZTtcbiAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSB7XG4gICAgICAgIGZvcm1OYW1lOiByb3V0ZUNvbW1hbmQuZm9ybU5hbWUsXG4gICAgICAgIHBhcmFtZXRlcnM6IHJvdXRlQ29tbWFuZC5wYXJhbWV0ZXJzXG4gICAgICB9O1xuXG4gICAgICBpZiAoU3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb250YWluZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IHJvdXRlQ29udGFpbmVyID0gU3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb250YWluZXJzWzBdO1xuICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnMuc2hpZnQoKTtcbiAgICAgICAgcm91dGVDb250YWluZXIuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLlBlcmZvcm1Sb3V0ZXJOYXZpZ2F0ZShyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZSwgcm91dGVDb21tYW5kLnJvdXRlUGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIFBlcmZvcm1Sb3V0ZXJOYXZpZ2F0ZShyb3V0ZXJPdXRsZXROYW1lOiBzdHJpbmcsIHJvdXRlUGFyYW1zOiBMaXN0PGFueT4pXG4gIHtcbiAgICBsZXQgcmVsYXRpdmVSb3V0ZSA9ICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IFtyb3V0ZXJPdXRsZXROYW1lXTogcm91dGVQYXJhbXMgfSB9XSwgeyByZWxhdGl2ZVRvOiByZWxhdGl2ZVJvdXRlIH0pXG4gICAgICAudGhlbigocmVzdWx0OmJvb2xlYW4pPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgIXJlc3VsdCkge1xuICAgICAgICAgICAgbGV0IHN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmO1xuICAgICAgICAgICAgc3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Um91dGVEZWZpbml0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IG51bGw7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLnBlbmRpbmdDb21tYW5kc0NvbGxlY3Rvci5zdG9wQ29sbGVjdGluZygpO1xuICAgICAgICAgICAgc3ViZm9ybU1hZ2ljU2VydmljZS5yb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZS5FeGVjdXRlTmV4dENvbW1hbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaW5pdCgpXG4gIHtcbiAgICAvLyBJZiBjb21tYW5kcyB3ZXJlIGlzc3VlZCBmb3IgdGhpcyB0YXNrIGJlZm9yZSBuZ09uSW5pdCgpLCB0aGV5IHdlcmUgbm90IGV4ZWN1dGVkIGJlY2F1c2UgdGFzayBoYWQgbm90IHJlZ2lzdGVyZWQgZm9yIHRoZW0uXG4gICAgLy8gU28sIGV4ZWN1dGUgdGhlbSBub3cuXG4gICAgY29uc3QgcGVuZGluZ0NvbW1hbmRzOiBHdWlDb21tYW5kW10gPSB0aGlzLnBlbmRpbmdDb21tYW5kc0NvbGxlY3Rvci5HZXRDb21tYW5kcyh0aGlzLnRhc2sudGFza0lkKTtcbiAgICBpZiAocGVuZGluZ0NvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHBlbmRpbmdDb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4ge3RoaXMudGFzay5leGVjdXRlQ29tbWFuZChjb21tYW5kKTt9KTtcbiAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0b3BDb2xsZWN0aW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmVmcmVzaFZpZXcoKSB7XG4gICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICAvLy9cbiAgLy8gcmV0dXJuIHRoZSByZWxhdGl2ZSByb3V0ZVxuICAvL1xuICBzdGF0aWMgZ2V0UmVsYXRpdmVSb3V0ZShzZW5kQWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKXtcbiAgICBsZXQgY3VycmVudEFjdGl2ZVJvdXRlID0gc2VuZEFjdGl2YXRlZFJvdXRlO1xuICAgIGlmIChjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3Qucm91dGVDb25maWcgIT09IG51bGwgJiYgY3VycmVudEFjdGl2ZVJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGggPT09ICcnKSB7XG4gICAgICBjdXJyZW50QWN0aXZlUm91dGUgPSBjdXJyZW50QWN0aXZlUm91dGUucGFyZW50O1xuICAgICAgaWYgKCFjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3Qucm91dGVDb25maWcubG9hZENoaWxkcmVuKVxuICAgICAgICBjb25zb2xlLmxvZygnZ2V0UmVsYXRpdmVSb3V0ZSgpOiBib3RoIHBhdGggYW5kIGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4gYXJlIGVtcHR5LicpO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEFjdGl2ZVJvdXRlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, Renderer2, ViewContainerRef } from
|
|
2
|
-
import { getGuiEventObj } from
|
|
3
|
-
import { TaskMagicService } from
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { getGuiEventObj } from '@magic-xpa/engine';
|
|
3
|
+
import { TaskMagicService } from '../../services/task.magics.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "../../services/task.magics.service";
|
|
6
6
|
export class NonMagicControlDirective {
|
|
@@ -24,11 +24,10 @@ export class NonMagicControlDirective {
|
|
|
24
24
|
regEvents() {
|
|
25
25
|
this.eventHandlers['focusin'] = this.OnFocus.bind(this);
|
|
26
26
|
Object.keys(this.eventHandlers).forEach((key) => {
|
|
27
|
-
this.focusUnlistener = this.renderer.listen(this.htmlElement, key, this.eventHandlers[key]);
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
29
|
OnFocus() {
|
|
31
|
-
this.task.insertEvent(getGuiEventObj('focusOnNonMagicControl',
|
|
30
|
+
this.task.insertEvent(getGuiEventObj('focusOnNonMagicControl', '', -1));
|
|
32
31
|
event.cancelBubble = true;
|
|
33
32
|
}
|
|
34
33
|
ngOnInit() {
|
|
@@ -46,4 +45,4 @@ NonMagicControlDirective.ɵdir = i0.ɵɵdefineDirective({ type: NonMagicControlD
|
|
|
46
45
|
type: Input,
|
|
47
46
|
args: ['NonMagicControl']
|
|
48
47
|
}] }); })();
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9uTWFnaWNDb250cm9sRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9Ob25NYWdpY0NvbnRyb2xEaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7OztBQVVwRSxNQUFNLE9BQU8sd0JBQXdCO0lBMENuQyxZQUFzQixLQUF1QixFQUN2QixPQUFtQixFQUNuQixRQUFtQixFQUNuQixLQUF1QjtRQUh2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUEzQnJDLGtCQUFhLEdBQW1DLEVBQUUsQ0FBQztRQWVwRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQWMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ2hELENBQUM7SUEvQ0QsSUFDSSxLQUFLLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztJQUNwQyxDQUFDO0lBQUEsQ0FBQztJQWlERixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUtTLFNBQVM7UUFHakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFLTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUtELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Z0dBbkZVLHdCQUF3Qjs2REFBeEIsd0JBQXdCO3VGQUF4Qix3QkFBd0I7Y0FKcEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7YUFDOUI7bUpBSUssS0FBSztrQkFEUixLQUFLO21CQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2dldEd1aUV2ZW50T2JqfSBmcm9tICdAbWFnaWMteHBhL2VuZ2luZSc7XHJcbmltcG9ydCB7VGFza0Jhc2VNYWdpY0NvbXBvbmVudH0gZnJvbSAnLi4vdGFzay1iYXNlLm1hZ2ljLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VGFza01hZ2ljU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzay5tYWdpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBSZXNwb25zaWJsZSBmb3IgY29ubmVjdGluZyBIVE1MIGVsZW1lbnRzIHRvIHRoZSBNYWdpYyBXZWJDbGllbnQgZW5naW5lIHNob3dpbmcgaXQgaXMgbm90IE1hZ2ljIENvbnRyb2wgYnV0IGEgRHVtbXkgY29udHJvbCB3aGljaCBpcyB1c2VkIHRvIG5vdGlmeSBvbmx5IHJlY2VlaXZlIGZvY3VzIGV2ZW50IGZvciBub3dcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW05vbk1hZ2ljQ29udHJvbF0nXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTm9uTWFnaWNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoJ05vbk1hZ2ljQ29udHJvbCcpXHJcbiAgc2V0IG1hZ2ljKHZhbCkge1xyXG4gICAgdGhpcy5pZCA9IHZhbDtcclxuICAgIHRoaXMuc2VsZWN0b3IgPSAnTm9uTWFnaWNDb250cm9sJztcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgSFRNTCBlbGVtZW50IGNvbm5lY3RlZCB0byB0aGlzIGRpcmVjdGl2ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgLyoqXHJcbiAgICogTWFnaWMncyBjb21wb25lbnQgaGFuZGxpbmcgdGhpcyBjb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIGNvbXBvbmVudDogVGFza0Jhc2VNYWdpY0NvbXBvbmVudDtcclxuICAvKipcclxuICAgKiBDb2xsZWN0aW9uIG9mIGV2ZW50IGhhbmRsZXJzIGZvciB0aGlzIGVsZW1lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGV2ZW50SGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogKCkgPT4gdm9pZDsgfSA9IHt9O1xyXG4gIC8qKlxyXG4gICAqIElkIG9mIHRoaXMgZWxlbWVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0b3I6IHN0cmluZztcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgc3Vic2NyaWJlUmVmcmVzaERvbTogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHJcbiAgcHVibGljIGV2ZW50c09ubHlWYWwgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gX3Rhc2sgVGhlIHRhc2sgc2VydmljZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgZGlyZWN0aXZlIGlzIGFwcGxpZWRcclxuICAgKiBAcGFyYW0gcmVuZGVyZXIgUmVuZGVyZXIgZm9yIHRoZSBlbGVtZW50XHJcbiAgICogQHBhcmFtIHZjUmVmXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB2Y1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG5cclxuICAgIHRoaXMuaHRtbEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdGFzayBzZXJ2aWNlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXQgdGFzaygpOiBUYXNrTWFnaWNTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLl90YXNrO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgdG8gdGhlIGV2ZW50cyB0aGlzIGVsZW1lbnQgbWF5IG5lZWQgdG8gaGFuZGxlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlZ0V2ZW50cygpIHtcclxuXHJcbiAgICAvLyBIYW5kbGUgZXZlbnRzIGZvciB3aGljaCBldmVudCBoYW5kbGVyIG1heSBiZSByZW1vdmVkIGFuZCByZXN0b3JlZFxyXG4gICAgdGhpcy5ldmVudEhhbmRsZXJzWydmb2N1c2luJ10gPSB0aGlzLk9uRm9jdXMuYmluZCh0aGlzKTtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXZlbnRIYW5kbGVycykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZm9jdXMgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIE9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ2V0R3VpRXZlbnRPYmooJ2ZvY3VzT25Ob25NYWdpY0NvbnRyb2wnLCAnJywgLTEpKTtcclxuICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoaXMgb2JqZWN0XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZ0V2ZW50cygpO1xyXG4gIH1cclxufVxyXG4iXX0=
|