ngx-aur-mat-table 17.2.2-6 → 17.2.2-7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { first } from "rxjs";
|
|
1
2
|
export class AurDragDropManager {
|
|
2
3
|
constructor(viewContainerRef, mappings) {
|
|
3
4
|
this.viewContainerRef = viewContainerRef;
|
|
@@ -43,7 +44,7 @@ export class AurDragDropManager {
|
|
|
43
44
|
}
|
|
44
45
|
calcAfterDataSource(grabCtx) {
|
|
45
46
|
let mapping = this.mappings.find(m => m.sourceName === grabCtx.sourceName && m.targetName === grabCtx.targetName);
|
|
46
|
-
let mappedData = mapping.grabFn(grabCtx);
|
|
47
|
+
let mappedData = mapping.grabFn(grabCtx).pipe(first());
|
|
47
48
|
this.dragStartCtx = undefined;
|
|
48
49
|
this.dragEndCtx = undefined;
|
|
49
50
|
return mappedData;
|
|
@@ -69,7 +70,7 @@ export class AurDragDropManager {
|
|
|
69
70
|
}
|
|
70
71
|
onDropInternal(dropCtx) {
|
|
71
72
|
let mapping = this.mappings.find(m => m.sourceName === dropCtx.sourceName && m.targetName === dropCtx.targetName);
|
|
72
|
-
let mappedData = mapping.dropFn(dropCtx);
|
|
73
|
+
let mappedData = mapping.dropFn(dropCtx).pipe(first());
|
|
73
74
|
this.dragEndCtx = {
|
|
74
75
|
name: dropCtx.targetName,
|
|
75
76
|
data: dropCtx.targetData
|
|
@@ -109,4 +110,4 @@ export class AurDragDropManager {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVyLWRyYWctZHJvcC5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9kcmFnLWRyb3AvYXVyLWRyYWctZHJvcC5tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFHQSxNQUFNLE9BQU8sa0JBQWtCO0lBUzdCLFlBQW9CLGdCQUFrQyxFQUNsQyxRQUF3QztRQUR4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWdDO1FBSjVELGdEQUFnRDtRQUN4QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBSXRELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFrQixFQUFFLElBQWUsRUFBRSxLQUFnQjtRQUM3RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMs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UUFBUSxHQUFHLFVBQVUsQ0FBQztZQUMxQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDOUIsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMscUNBQXFDO1lBQzNFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1lBRXJGLEtBQUssQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsU0FBUyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBtYXBwaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGRyYWctYW5kLWRyb3AgZnVuY3Rpb25hbGl0eVxyXG4gKiBiZXR3ZWVuIGNvbXBvbmVudHMuIEl0IGRlZmluZXMgdGhlIHNvdXJjZSBjb21wb25lbnQgKGZyb20gd2hlcmUgZGF0YSBpcyBncmFiYmVkKVxyXG4gKiBhbmQgdGhlIHRhcmdldCBjb21wb25lbnQgKHdoZXJlIGRhdGEgaXMgZHJvcHBlZCksIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxyXG4gKiB0aGUgZ3JhYmJpbmcgYW5kIGRyb3BwaW5nIG9mIGRhdGEuXHJcbiAqXHJcbiAqIEB0ZW1wbGF0ZSBTT1VSQ0UgLSBUaGUgdHlwZSBvZiBkYXRhIHVzZWQgYnkgdGhlIHNvdXJjZSBjb21wb25lbnQuXHJcbiAqIEB0ZW1wbGF0ZSBUQVJHRVQgLSBUaGUgdHlwZSBvZiBkYXRhIHVzZWQgYnkgdGhlIHRhcmdldCBjb21wb25lbnQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1ckRyYWdEcm9wTWFwcGluZzxTT1VSQ0UsIFRBUkdFVD4ge1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGNvbXBvbmVudCBmcm9tIHdoaWNoIGRhdGEgY2FuIGJlIGdyYWJiZWQuXHJcbiAgICogVGhpcyByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgdGhhdCBhbGxvd3MgYSB1c2VyIHRvIGluaXRpYXRlIGEgZ3JhYiBhY3Rpb24uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc291cmNlTmFtZTogc3RyaW5nLFxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGNvbXBvbmVudCB3aGVyZSB0aGUgZGF0YSBjYW4gYmUgZHJvcHBlZC5cclxuICAgKiBUaGlzIHJlcHJlc2VudHMgdGhlIGNvbXBvbmVudCB0aGF0IGFjY2VwdHMgdGhlIGRyb3AgYWN0aW9uLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHRhcmdldE5hbWU6IHN0cmluZyxcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHRvIGhhbmRsZSBncmFiYmluZyBkYXRhIGZyb20gdGhlIHNvdXJjZSBjb21wb25lbnQuXHJcbiAgICogSXQgaXMgaW52b2tlZCBhZnRlciBhIGRyb3AgaGFzIG9jY3VycmVkLCBhbmQgaXQgZGVzY3JpYmVzIHdoYXQgc2hvdWxkXHJcbiAgICogaGFwcGVuIHRvIHRoZSBkYXRhIGluIHRoZSBzb3VyY2UgdGFibGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY3R4IC0gVGhlIGdyYWIgY29udGV4dCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2UgYW5kIHRhcmdldC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBkYXRhIGVsZW1lbnRzIG9mIHR5cGUgU09VUkNFLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGdyYWJGbjogKGN0eDogZ3JhYkNvbnRleHQ8U09VUkNFLCBUQVJHRVQ+KSA9PiBTT1VSQ0VbXVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgdG8gaGFuZGxlIHRoZSBkcm9wIGFjdGlvbiBpbiB0aGUgdGFyZ2V0IGNvbXBvbmVudC5cclxuICAgKiBJdCBpcyBpbnZva2VkIHdoZW4gdGhlIGRyb3AgZXZlbnQgb2NjdXJzLCBhbmQgaXQgZGVzY3JpYmVzIGhvdyB0byBwcm9jZXNzXHJcbiAgICogdGhlIGRhdGEgaW50byB0aGUgdGFyZ2V0IGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjdHggLSBUaGUgZHJvcCBjb250ZXh0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0LlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGRhdGEgZWxlbWVudHMgb2YgdHlwZSBUQVJHRVQuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZHJvcEZuOiAoY3R4OiBEcm9wQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4pID0+IFRBUkdFVFtdLFxyXG5cclxuICByZWFkb25seSBwcmV2aWV3PzogbmV3ICgpID0+IEF1ckRyYWdQcmV2aWV3Q29tcG9uZW50PFNPVVJDRT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YnQuNC5INC40L3RgtC10YDRhNC10LnRgSDQtNC70Y8g0LrQvtC80L/QvtC90LXQvdGC0L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10LLRjNGOXHJcbiAqINC00LvRjyDQv9C10YDQtdGC0LDRgdC60LjQstCw0L3QuNGPINC00LDQvdC90YvRhS4g0K3RgtC+INC+0LHQtdGB0L/QtdGH0LjQstCw0LXRgiDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INGB0L/QvtGB0L7QsSDQv9C10YDQtdC00LDRh9C4XHJcbiAqINC00LDQvdC90YvRhSDQsiDRgtCw0LrQuNC1INC60L7QvNC/0L7QvdC10L3RgtGLLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgREFUQSAtINCi0LjQvyDQtNCw0L3QvdGL0YUsINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L/QtdGA0LXQtNCw0L3RiyDQsiDQutC+0LzQv9C+0L3QtdC90YIg0LTQu9GPINC/0YDQtdCy0YzRji5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRHJhZ1ByZXZpZXdDb21wb25lbnQ8REFUQT4ge1xyXG4gIC8qKlxyXG4gICAqINCU0LDQvdC90YvQtSwg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0LIg0LrQvtC80L/QvtC90LXQvdGC0LUg0L/RgNC10LLRjNGOLlxyXG4gICAqL1xyXG4gIGRhdGE6IERBVEFbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdXJEcmFnU3RhcnRDb250ZXh0IHtcclxuICByZWFkb25seSBuYW1lOiBzdHJpbmcsXHJcbiAgcmVhZG9ubHkgZGF0YTogdW5rbm93bltdXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRHJhZ0VuZENvbnRleHQge1xyXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBkYXRhOiB1bmtub3duXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRW5kRHJhZ0V2ZW50IHtcclxuICAvKipcclxuICAgKiDQtNGA0L7QvyDQsdGL0Lsg0L3QsCDRgNCw0LfRgNC10YjQtdC90L3QvtC8INGN0LvQtdC80LXQvdGC0LVcclxuICAgKi9cclxuICByZWFkb25seSBpc1ZhbGlkRHJvcDogYm9vbGVhbixcclxuICByZWFkb25seSBzdGFydERyYWdDb250ZXh0OiBBdXJEcmFnU3RhcnRDb250ZXh0LFxyXG4gIHJlYWRvbmx5IGVuZERyYWdDb250ZXh0PzogQXVyRHJhZ0VuZENvbnRleHQsXHJcbiAgcmVhZG9ubHkgYmVmb3JlRGF0YVNldDogdW5rbm93bltdLFxyXG4gIHJlYWRvbmx5IGFmdGVyRGF0YVNldD86IHVua25vd25bXSxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBncmFiQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4ge1xyXG4gIHJlYWRvbmx5IHNvdXJjZU5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBzb3VyY2VEYXRhOiBTT1VSQ0VbXSxcclxuICByZWFkb25seSBzb3VyY2VEYXRhc2V0OiBTT1VSQ0VbXSxcclxuXHJcbiAgcmVhZG9ubHkgdGFyZ2V0TmFtZTogc3RyaW5nLFxyXG4gIHJlYWRvbmx5IHRhcmdldERhdGE6IFRBUkdFVCxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcm9wQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4ge1xyXG4gIHJlYWRvbmx5IHNvdXJjZU5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBzb3VyY2VEYXRhOiBTT1VSQ0VbXSxcclxuXHJcbiAgcmVhZG9ubHkgdGFyZ2V0RGF0YXNldDogVEFSR0VUW10sXHJcbiAgcmVhZG9ubHkgdGFyZ2V0TmFtZTogc3RyaW5nLFxyXG4gIHJlYWRvbmx5IHRhcmdldERhdGE6IFRBUkdFVCxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1ckRyYWdEcm9wTWFuYWdlciB7XHJcblxyXG4gIHByaXZhdGUgZHJhZ1N0YXJ0Q3R4OiBBdXJEcmFnU3RhcnRDb250ZXh0IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZHJhZ0VuZEN0eDogQXVyRHJhZ0VuZENvbnRleHQgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UHJldmlld0NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEF1ckRyYWdQcmV2aWV3Q29tcG9uZW50PGFueT4+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvL2NhbiBkcm9wIFtrZXkgZnJvbSB0YWJsZSwgdmFsdWUgdG8gdGFibGUgbmFtZV1cclxuICBwcml2YXRlIGNhbkRyb3BTdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBtYXBwaW5nczogQXVyRHJhZ0Ryb3BNYXBwaW5nPGFueSwgYW55PltdKSB7XHJcbiAgICB0aGlzLm1hcHBpbmdzLmZvckVhY2gobSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jYW5Ecm9wU3RvcmFnZS5oYXMobS5zb3VyY2VOYW1lKSkge1xyXG4gICAgICAgIHRoaXMuY2FuRHJvcFN0b3JhZ2Uuc2V0KG0uc291cmNlTmFtZSwgbmV3IFNldCgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbkRyb3BTdG9yYWdlLmdldChtLnNvdXJjZU5hbWUpIS5hZGQobS50YXJnZXROYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RhcnREcmFnKHNvdXJjZU5hbWU6IHN0cmluZywgZGF0YTogdW5rbm93bltdLCBldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICB0aGlzLmRyYWdTdGFydEN0eCA9IHtuYW1lOiBzb3VyY2VOYW1lLCBkYXRhOiBkYXRhfVxyXG4gICAgdGhpcy5zaG93RHJhZ1ByZXZpZXcoc291cmNlTmFtZSwgZXZlbnQsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBlbmREcmFnKHNvdXJjZURhdGFzZXQ6IHVua25vd25bXSk6IEF1ckVuZERyYWdFdmVudCB7XHJcbiAgICB0aGlzLnJlbW92ZURyYWdQcmV2aWV3KClcclxuICAgIGlmICh0aGlzLmRyYWdFbmRDdHg/Lm5hbWUgJiYgdGhpcy5jaGVja0NhbkRyb3AodGhpcy5kcmFnRW5kQ3R4IS5uYW1lKSkge1xyXG4gICAgICBjb25zdCBhZnRlckRhdGFTZXQgPSB0aGlzLmNhbGNBZnRlckRhdGFTb3VyY2Uoe1xyXG4gICAgICAgIHRhcmdldERhdGE6IHRoaXMuZHJhZ0VuZEN0eCEuZGF0YSxcclxuICAgICAgICB0YXJnZXROYW1lOiB0aGlzLmRyYWdFbmRDdHghLm5hbWUsXHJcbiAgICAgICAgc291cmNlRGF0YTogdGhpcy5kcmFnU3RhcnRDdHghLmRhdGEsXHJcbiAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnU3RhcnRDdHghLm5hbWUsXHJcbiAgICAgICAgc291cmNlRGF0YXNldDogc291cmNlRGF0YXNldFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWREcm9wOiB0cnVlLFxyXG4gICAgICAgIHN0YXJ0RHJhZ0NvbnRleHQ6IHRoaXMuZHJhZ1N0YXJ0Q3R4ISxcclxuICAgICAgICBlbmREcmFnQ29udGV4dDogdGhpcy5kcmFnRW5kQ3R4ISxcclxuICAgICAgICBiZWZvcmVEYXRhU2V0OiBzb3VyY2VEYXRhc2V0LFxyXG4gICAgICAgIGFmdGVyRGF0YVNldDogYWZ0ZXJEYXRhU2V0LFxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWREcm9wOiBmYWxzZSxcclxuICAgICAgICBzdGFydERyYWdDb250ZXh0OiB0aGlzLmRyYWdTdGFydEN0eCEsXHJcbiAgICAgICAgYmVmb3JlRGF0YVNldDogc291cmNlRGF0YXNldCxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsY0FmdGVyRGF0YVNvdXJjZShncmFiQ3R4OiBncmFiQ29udGV4dDxhbnksIGFueT4pOiB1bmtub3duW10ge1xyXG4gICAgbGV0IG1hcHBpbmcgPSB0aGlzLm1hcHBpbmdzLmZpbmQobSA9PiBtLnNvdXJjZU5hbWUgPT09IGdyYWJDdHguc291cmNlTmFtZSAmJiBtLnRhcmdldE5hbWUgPT09IGdyYWJDdHgudGFyZ2V0TmFtZSk7XHJcbiAgICBsZXQgbWFwcGVkRGF0YSA9IG1hcHBpbmchLmdyYWJGbihncmFiQ3R4KTtcclxuICAgIHRoaXMuZHJhZ1N0YXJ0Q3R4ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5kcmFnRW5kQ3R4ID0gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIG1hcHBlZERhdGE7XHJcbiAgfVxyXG5cclxuICBjYW5Ecm9wKHRhcmdldE5hbWU6IHN0cmluZywgJGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNhbkRyb3AgPSB0aGlzLmNoZWNrQ2FuRHJvcCh0YXJnZXROYW1lKTtcclxuICAgIGlmIChjYW5Ecm9wKSB7XHJcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbkRyb3A7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQ2FuRHJvcCh0YXJnZXROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhbkRyb3BTdG9yYWdlLmdldCh0aGlzLmRyYWdTdGFydEN0eCEubmFtZSk/Lmhhcyh0YXJnZXROYW1lKSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRHJvcCh0YXJnZXREYXRhc2V0OiB1bmtub3duW10sIHRhcmdldE5hbWU6IHN0cmluZywgdGFyZ2V0RGF0YTogYW55KTogdW5rbm93bltdIHtcclxuICAgIHJldHVybiB0aGlzLm9uRHJvcEludGVybmFsKHtcclxuICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnU3RhcnRDdHghLm5hbWUsXHJcbiAgICAgIHNvdXJjZURhdGE6IHRoaXMuZHJhZ1N0YXJ0Q3R4IS5kYXRhLFxyXG4gICAgICB0YXJnZXROYW1lOiB0YXJnZXROYW1lLFxyXG4gICAgICB0YXJnZXREYXRhOiB0YXJnZXREYXRhLFxyXG4gICAgICB0YXJnZXREYXRhc2V0OiB0YXJnZXREYXRhc2V0XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25Ecm9wSW50ZXJuYWwoZHJvcEN0eDogRHJvcENvbnRleHQ8YW55LCBhbnk+KTogdW5rbm93bltdIHtcclxuICAgIGxldCBtYXBwaW5nID0gdGhpcy5tYXBwaW5ncy5maW5kKG0gPT4gbS5zb3VyY2VOYW1lID09PSBkcm9wQ3R4LnNvdXJjZU5hbWUgJiYgbS50YXJnZXROYW1lID09PSBkcm9wQ3R4LnRhcmdldE5hbWUpO1xyXG4gICAgbGV0IG1hcHBlZERhdGEgPSBtYXBwaW5nIS5kcm9wRm4oZHJvcEN0eCk7XHJcbiAgICB0aGlzLmRyYWdFbmRDdHggPSB7XHJcbiAgICAgIG5hbWU6IGRyb3BDdHgudGFyZ2V0TmFtZSxcclxuICAgICAgZGF0YTogZHJvcEN0eC50YXJnZXREYXRhXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwcGVkRGF0YTtcclxuICB9XHJcblxyXG4gIGdldCBkcmFnZ2FibGVUYWJsZU5hbWVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLm1hcHBpbmdzPy5tYXAobWFwcGluZyA9PiBtYXBwaW5nLnNvdXJjZU5hbWUpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlld0NvbXBvbmVudChuYW1lOiBzdHJpbmcpOiAobmV3ICgpID0+IEF1ckRyYWdQcmV2aWV3Q29tcG9uZW50PGFueT4pIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLm1hcHBpbmdzLmZpbmQodmFsdWUgPT4gdmFsdWUuc291cmNlTmFtZSA9PT0gbmFtZSk/LnByZXZpZXcgfHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBBdXJEcmFnRHJvcE1hbmFnZXIge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIG5ldyBBdXJEcmFnRHJvcE1hbmFnZXIodW5kZWZpbmVkLCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dEcmFnUHJldmlldyhuYW1lOiBzdHJpbmcsIGV2ZW50OiBEcmFnRXZlbnQsIGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHByZXZpZXdDb25zdHJ1Y3RvciA9IHRoaXMuZ2V0UHJldmlld0NvbXBvbmVudChuYW1lKTtcclxuICAgIGlmIChwcmV2aWV3Q29uc3RydWN0b3IpIHtcclxuICAgICAgLy8g0JTQuNC90LDQvNC40YfQtdGB0LrQuCDRgdC+0LfQtNCw0LXQvCDQutC+0LzQv9C+0L3QtdC90YIg0L/RgNC10LLRjNGOXHJcbiAgICAgIHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHByZXZpZXdDb25zdHJ1Y3Rvcik7XHJcbiAgICAgIHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XHJcblxyXG4gICAgICBjb25zdCBuYXRpdmVQcmV2aWV3ID0gdGhpcy5jdXJyZW50UHJldmlld0NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0L3QtdC+0LHRhdC+0LTQuNC80YvRhSDRgdGC0LjQu9C10Lkg0Log0Y3Qu9C10LzQtdC90YLRgyDQv9GA0LXQstGM0Y5cclxuICAgICAgbmF0aXZlUHJldmlldy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgIG5hdGl2ZVByZXZpZXcuc3R5bGUudG9wID0gJzAnO1xyXG4gICAgICBuYXRpdmVQcmV2aWV3LnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7IC8vINCh0LrRgNGL0YLRjCDRjdC70LXQvNC10L3RgiDQt9CwINC/0YDQtdC00LXQu9Cw0LzQuCDRjdC60YDQsNC90LBcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuYXRpdmVQcmV2aWV3KTsgLy8g0JLRgNC10LzQtdC90L3QviDQtNC+0LHQsNCy0LvRj9C10Lwg0LIgRE9NINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPXHJcblxyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXI/LnNldERyYWdJbWFnZShuYXRpdmVQcmV2aWV3LCAwLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRHJhZ1ByZXZpZXcoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UHJldmlld0NvbXBvbmVudFJlZikge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcmV2aWV3Q29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVyLWRyYWctZHJvcC5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9kcmFnLWRyb3AvYXVyLWRyYWctZHJvcC5tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxLQUFLLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBcUc3QyxNQUFNLE9BQU8sa0JBQWtCO0lBUzdCLFlBQW9CLGdCQUFrQyxFQUNsQyxRQUF3QztRQUR4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWdDO1FBSjVELGdEQUFnRDtRQUN4QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBSXRELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFrQixFQUFFLElBQWUsRUFBRSxLQUFnQjtRQUM3RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFF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WUFFckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFFN0Usa0RBQWtEO1lBQ2xELGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUMxQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDOUIsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMscUNBQXFDO1lBQzNFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1lBRXJGLEtBQUssQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsU0FBUyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtmaXJzdCwgT2JzZXJ2YWJsZSwgdGFrZX0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBtYXBwaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGRyYWctYW5kLWRyb3AgZnVuY3Rpb25hbGl0eVxyXG4gKiBiZXR3ZWVuIGNvbXBvbmVudHMuIEl0IGRlZmluZXMgdGhlIHNvdXJjZSBjb21wb25lbnQgKGZyb20gd2hlcmUgZGF0YSBpcyBncmFiYmVkKVxyXG4gKiBhbmQgdGhlIHRhcmdldCBjb21wb25lbnQgKHdoZXJlIGRhdGEgaXMgZHJvcHBlZCksIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxyXG4gKiB0aGUgZ3JhYmJpbmcgYW5kIGRyb3BwaW5nIG9mIGRhdGEuXHJcbiAqXHJcbiAqIEB0ZW1wbGF0ZSBTT1VSQ0UgLSBUaGUgdHlwZSBvZiBkYXRhIHVzZWQgYnkgdGhlIHNvdXJjZSBjb21wb25lbnQuXHJcbiAqIEB0ZW1wbGF0ZSBUQVJHRVQgLSBUaGUgdHlwZSBvZiBkYXRhIHVzZWQgYnkgdGhlIHRhcmdldCBjb21wb25lbnQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1ckRyYWdEcm9wTWFwcGluZzxTT1VSQ0UsIFRBUkdFVD4ge1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGNvbXBvbmVudCBmcm9tIHdoaWNoIGRhdGEgY2FuIGJlIGdyYWJiZWQuXHJcbiAgICogVGhpcyByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgdGhhdCBhbGxvd3MgYSB1c2VyIHRvIGluaXRpYXRlIGEgZ3JhYiBhY3Rpb24uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc291cmNlTmFtZTogc3RyaW5nLFxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGNvbXBvbmVudCB3aGVyZSB0aGUgZGF0YSBjYW4gYmUgZHJvcHBlZC5cclxuICAgKiBUaGlzIHJlcHJlc2VudHMgdGhlIGNvbXBvbmVudCB0aGF0IGFjY2VwdHMgdGhlIGRyb3AgYWN0aW9uLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHRhcmdldE5hbWU6IHN0cmluZyxcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHRvIGhhbmRsZSBncmFiYmluZyBkYXRhIGZyb20gdGhlIHNvdXJjZSBjb21wb25lbnQuXHJcbiAgICogSXQgaXMgaW52b2tlZCBhZnRlciBhIGRyb3AgaGFzIG9jY3VycmVkLCBhbmQgaXQgZGVzY3JpYmVzIHdoYXQgc2hvdWxkXHJcbiAgICogaGFwcGVuIHRvIHRoZSBkYXRhIGluIHRoZSBzb3VyY2UgdGFibGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY3R4IC0gVGhlIGdyYWIgY29udGV4dCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2UgYW5kIHRhcmdldC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBkYXRhIGVsZW1lbnRzIG9mIHR5cGUgU09VUkNFLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGdyYWJGbjogKGN0eDogZ3JhYkNvbnRleHQ8U09VUkNFLCBUQVJHRVQ+KSA9PiBPYnNlcnZhYmxlPFNPVVJDRVtdPlxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgdG8gaGFuZGxlIHRoZSBkcm9wIGFjdGlvbiBpbiB0aGUgdGFyZ2V0IGNvbXBvbmVudC5cclxuICAgKiBJdCBpcyBpbnZva2VkIHdoZW4gdGhlIGRyb3AgZXZlbnQgb2NjdXJzLCBhbmQgaXQgZGVzY3JpYmVzIGhvdyB0byBwcm9jZXNzXHJcbiAgICogdGhlIGRhdGEgaW50byB0aGUgdGFyZ2V0IGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjdHggLSBUaGUgZHJvcCBjb250ZXh0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0LlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGRhdGEgZWxlbWVudHMgb2YgdHlwZSBUQVJHRVQuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZHJvcEZuOiAoY3R4OiBEcm9wQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4pID0+IE9ic2VydmFibGU8VEFSR0VUW10+LFxyXG5cclxuICByZWFkb25seSBwcmV2aWV3PzogbmV3ICgpID0+IEF1ckRyYWdQcmV2aWV3Q29tcG9uZW50PFNPVVJDRT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YnQuNC5INC40L3RgtC10YDRhNC10LnRgSDQtNC70Y8g0LrQvtC80L/QvtC90LXQvdGC0L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10LLRjNGOXHJcbiAqINC00LvRjyDQv9C10YDQtdGC0LDRgdC60LjQstCw0L3QuNGPINC00LDQvdC90YvRhS4g0K3RgtC+INC+0LHQtdGB0L/QtdGH0LjQstCw0LXRgiDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INGB0L/QvtGB0L7QsSDQv9C10YDQtdC00LDRh9C4XHJcbiAqINC00LDQvdC90YvRhSDQsiDRgtCw0LrQuNC1INC60L7QvNC/0L7QvdC10L3RgtGLLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgREFUQSAtINCi0LjQvyDQtNCw0L3QvdGL0YUsINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L/QtdGA0LXQtNCw0L3RiyDQsiDQutC+0LzQv9C+0L3QtdC90YIg0LTQu9GPINC/0YDQtdCy0YzRji5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRHJhZ1ByZXZpZXdDb21wb25lbnQ8REFUQT4ge1xyXG4gIC8qKlxyXG4gICAqINCU0LDQvdC90YvQtSwg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0LIg0LrQvtC80L/QvtC90LXQvdGC0LUg0L/RgNC10LLRjNGOLlxyXG4gICAqL1xyXG4gIGRhdGE6IERBVEFbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdXJEcmFnU3RhcnRDb250ZXh0IHtcclxuICByZWFkb25seSBuYW1lOiBzdHJpbmcsXHJcbiAgcmVhZG9ubHkgZGF0YTogdW5rbm93bltdXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRHJhZ0VuZENvbnRleHQge1xyXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBkYXRhOiB1bmtub3duXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVyRW5kRHJhZ0V2ZW50IHtcclxuICAvKipcclxuICAgKiDQtNGA0L7QvyDQsdGL0Lsg0L3QsCDRgNCw0LfRgNC10YjQtdC90L3QvtC8INGN0LvQtdC80LXQvdGC0LVcclxuICAgKi9cclxuICByZWFkb25seSBpc1ZhbGlkRHJvcDogYm9vbGVhbixcclxuICByZWFkb25seSBzdGFydERyYWdDb250ZXh0OiBBdXJEcmFnU3RhcnRDb250ZXh0LFxyXG4gIHJlYWRvbmx5IGVuZERyYWdDb250ZXh0PzogQXVyRHJhZ0VuZENvbnRleHQsXHJcbiAgcmVhZG9ubHkgYmVmb3JlRGF0YVNldDogdW5rbm93bltdLFxyXG4gIHJlYWRvbmx5IGFmdGVyRGF0YVNldD86IE9ic2VydmFibGU8dW5rbm93bltdPixcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBncmFiQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4ge1xyXG4gIHJlYWRvbmx5IHNvdXJjZU5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBzb3VyY2VEYXRhOiBTT1VSQ0VbXSxcclxuICByZWFkb25seSBzb3VyY2VEYXRhc2V0OiBTT1VSQ0VbXSxcclxuXHJcbiAgcmVhZG9ubHkgdGFyZ2V0TmFtZTogc3RyaW5nLFxyXG4gIHJlYWRvbmx5IHRhcmdldERhdGE6IFRBUkdFVCxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcm9wQ29udGV4dDxTT1VSQ0UsIFRBUkdFVD4ge1xyXG4gIHJlYWRvbmx5IHNvdXJjZU5hbWU6IHN0cmluZyxcclxuICByZWFkb25seSBzb3VyY2VEYXRhOiBTT1VSQ0VbXSxcclxuXHJcbiAgcmVhZG9ubHkgdGFyZ2V0RGF0YXNldDogVEFSR0VUW10sXHJcbiAgcmVhZG9ubHkgdGFyZ2V0TmFtZTogc3RyaW5nLFxyXG4gIHJlYWRvbmx5IHRhcmdldERhdGE6IFRBUkdFVCxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1ckRyYWdEcm9wTWFuYWdlciB7XHJcblxyXG4gIHByaXZhdGUgZHJhZ1N0YXJ0Q3R4OiBBdXJEcmFnU3RhcnRDb250ZXh0IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZHJhZ0VuZEN0eDogQXVyRHJhZ0VuZENvbnRleHQgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UHJldmlld0NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEF1ckRyYWdQcmV2aWV3Q29tcG9uZW50PGFueT4+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvL2NhbiBkcm9wIFtrZXkgZnJvbSB0YWJsZSwgdmFsdWUgdG8gdGFibGUgbmFtZV1cclxuICBwcml2YXRlIGNhbkRyb3BTdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBtYXBwaW5nczogQXVyRHJhZ0Ryb3BNYXBwaW5nPGFueSwgYW55PltdKSB7XHJcbiAgICB0aGlzLm1hcHBpbmdzLmZvckVhY2gobSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jYW5Ecm9wU3RvcmFnZS5oYXMobS5zb3VyY2VOYW1lKSkge1xyXG4gICAgICAgIHRoaXMuY2FuRHJvcFN0b3JhZ2Uuc2V0KG0uc291cmNlTmFtZSwgbmV3IFNldCgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbkRyb3BTdG9yYWdlLmdldChtLnNvdXJjZU5hbWUpIS5hZGQobS50YXJnZXROYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RhcnREcmFnKHNvdXJjZU5hbWU6IHN0cmluZywgZGF0YTogdW5rbm93bltdLCBldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICB0aGlzLmRyYWdTdGFydEN0eCA9IHtuYW1lOiBzb3VyY2VOYW1lLCBkYXRhOiBkYXRhfVxyXG4gICAgdGhpcy5zaG93RHJhZ1ByZXZpZXcoc291cmNlTmFtZSwgZXZlbnQsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBlbmREcmFnKHNvdXJjZURhdGFzZXQ6IHVua25vd25bXSk6IEF1ckVuZERyYWdFdmVudCB7XHJcbiAgICB0aGlzLnJlbW92ZURyYWdQcmV2aWV3KClcclxuICAgIGlmICh0aGlzLmRyYWdFbmRDdHg/Lm5hbWUgJiYgdGhpcy5jaGVja0NhbkRyb3AodGhpcy5kcmFnRW5kQ3R4IS5uYW1lKSkge1xyXG4gICAgICBjb25zdCBhZnRlckRhdGFTZXQgPSB0aGlzLmNhbGNBZnRlckRhdGFTb3VyY2Uoe1xyXG4gICAgICAgIHRhcmdldERhdGE6IHRoaXMuZHJhZ0VuZEN0eCEuZGF0YSxcclxuICAgICAgICB0YXJnZXROYW1lOiB0aGlzLmRyYWdFbmRDdHghLm5hbWUsXHJcbiAgICAgICAgc291cmNlRGF0YTogdGhpcy5kcmFnU3RhcnRDdHghLmRhdGEsXHJcbiAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnU3RhcnRDdHghLm5hbWUsXHJcbiAgICAgICAgc291cmNlRGF0YXNldDogc291cmNlRGF0YXNldFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWREcm9wOiB0cnVlLFxyXG4gICAgICAgIHN0YXJ0RHJhZ0NvbnRleHQ6IHRoaXMuZHJhZ1N0YXJ0Q3R4ISxcclxuICAgICAgICBlbmREcmFnQ29udGV4dDogdGhpcy5kcmFnRW5kQ3R4ISxcclxuICAgICAgICBiZWZvcmVEYXRhU2V0OiBzb3VyY2VEYXRhc2V0LFxyXG4gICAgICAgIGFmdGVyRGF0YVNldDogYWZ0ZXJEYXRhU2V0LFxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWREcm9wOiBmYWxzZSxcclxuICAgICAgICBzdGFydERyYWdDb250ZXh0OiB0aGlzLmRyYWdTdGFydEN0eCEsXHJcbiAgICAgICAgYmVmb3JlRGF0YVNldDogc291cmNlRGF0YXNldCxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsY0FmdGVyRGF0YVNvdXJjZShncmFiQ3R4OiBncmFiQ29udGV4dDxhbnksIGFueT4pOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xyXG4gICAgbGV0IG1hcHBpbmcgPSB0aGlzLm1hcHBpbmdzLmZpbmQobSA9PiBtLnNvdXJjZU5hbWUgPT09IGdyYWJDdHguc291cmNlTmFtZSAmJiBtLnRhcmdldE5hbWUgPT09IGdyYWJDdHgudGFyZ2V0TmFtZSk7XHJcbiAgICBsZXQgbWFwcGVkRGF0YSA9IG1hcHBpbmchLmdyYWJGbihncmFiQ3R4KS5waXBlKGZpcnN0KCkpO1xyXG4gICAgdGhpcy5kcmFnU3RhcnRDdHggPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRyYWdFbmRDdHggPSB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gbWFwcGVkRGF0YTtcclxuICB9XHJcblxyXG4gIGNhbkRyb3AodGFyZ2V0TmFtZTogc3RyaW5nLCAkZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2FuRHJvcCA9IHRoaXMuY2hlY2tDYW5Ecm9wKHRhcmdldE5hbWUpO1xyXG4gICAgaWYgKGNhbkRyb3ApIHtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FuRHJvcDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDYW5Ecm9wKHRhcmdldE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuRHJvcFN0b3JhZ2UuZ2V0KHRoaXMuZHJhZ1N0YXJ0Q3R4IS5uYW1lKT8uaGFzKHRhcmdldE5hbWUpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wKHRhcmdldERhdGFzZXQ6IHVua25vd25bXSwgdGFyZ2V0TmFtZTogc3RyaW5nLCB0YXJnZXREYXRhOiBhbnkpOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMub25Ecm9wSW50ZXJuYWwoe1xyXG4gICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdTdGFydEN0eCEubmFtZSxcclxuICAgICAgc291cmNlRGF0YTogdGhpcy5kcmFnU3RhcnRDdHghLmRhdGEsXHJcbiAgICAgIHRhcmdldE5hbWU6IHRhcmdldE5hbWUsXHJcbiAgICAgIHRhcmdldERhdGE6IHRhcmdldERhdGEsXHJcbiAgICAgIHRhcmdldERhdGFzZXQ6IHRhcmdldERhdGFzZXRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkRyb3BJbnRlcm5hbChkcm9wQ3R4OiBEcm9wQ29udGV4dDxhbnksIGFueT4pOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xyXG4gICAgbGV0IG1hcHBpbmcgPSB0aGlzLm1hcHBpbmdzLmZpbmQobSA9PiBtLnNvdXJjZU5hbWUgPT09IGRyb3BDdHguc291cmNlTmFtZSAmJiBtLnRhcmdldE5hbWUgPT09IGRyb3BDdHgudGFyZ2V0TmFtZSk7XHJcbiAgICBsZXQgbWFwcGVkRGF0YSA9IG1hcHBpbmchLmRyb3BGbihkcm9wQ3R4KS5waXBlKGZpcnN0KCkpO1xyXG4gICAgdGhpcy5kcmFnRW5kQ3R4ID0ge1xyXG4gICAgICBuYW1lOiBkcm9wQ3R4LnRhcmdldE5hbWUsXHJcbiAgICAgIGRhdGE6IGRyb3BDdHgudGFyZ2V0RGF0YVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcHBlZERhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgZHJhZ2dhYmxlVGFibGVOYW1lcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5ncz8ubWFwKG1hcHBpbmcgPT4gbWFwcGluZy5zb3VyY2VOYW1lKSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldFByZXZpZXdDb21wb25lbnQobmFtZTogc3RyaW5nKTogKG5ldyAoKSA9PiBBdXJEcmFnUHJldmlld0NvbXBvbmVudDxhbnk+KSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5ncy5maW5kKHZhbHVlID0+IHZhbHVlLnNvdXJjZU5hbWUgPT09IG5hbWUpPy5wcmV2aWV3IHx8IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogQXVyRHJhZ0Ryb3BNYW5hZ2VyIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBuZXcgQXVyRHJhZ0Ryb3BNYW5hZ2VyKHVuZGVmaW5lZCwgW10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RHJhZ1ByZXZpZXcobmFtZTogc3RyaW5nLCBldmVudDogRHJhZ0V2ZW50LCBkYXRhOiBhbnkpIHtcclxuICAgIGxldCBwcmV2aWV3Q29uc3RydWN0b3IgPSB0aGlzLmdldFByZXZpZXdDb21wb25lbnQobmFtZSk7XHJcbiAgICBpZiAocHJldmlld0NvbnN0cnVjdG9yKSB7XHJcbiAgICAgIC8vINCU0LjQvdCw0LzQuNGH0LXRgdC60Lgg0YHQvtC30LTQsNC10Lwg0LrQvtC80L/QvtC90LXQvdGCINC/0YDQtdCy0YzRjlxyXG4gICAgICB0aGlzLmN1cnJlbnRQcmV2aWV3Q29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChwcmV2aWV3Q29uc3RydWN0b3IpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcmV2aWV3Q29tcG9uZW50UmVmLmluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG5cclxuICAgICAgY29uc3QgbmF0aXZlUHJldmlldyA9IHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INC90LXQvtCx0YXQvtC00LjQvNGL0YUg0YHRgtC40LvQtdC5INC6INGN0LvQtdC80LXQvdGC0YMg0L/RgNC10LLRjNGOXHJcbiAgICAgIG5hdGl2ZVByZXZpZXcuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICBuYXRpdmVQcmV2aWV3LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgbmF0aXZlUHJldmlldy5zdHlsZS5sZWZ0ID0gJy05OTk5cHgnOyAvLyDQodC60YDRi9GC0Ywg0Y3Qu9C10LzQtdC90YIg0LfQsCDQv9GA0LXQtNC10LvQsNC80Lgg0Y3QutGA0LDQvdCwXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmF0aXZlUHJldmlldyk7IC8vINCS0YDQtdC80LXQvdC90L4g0LTQvtCx0LDQstC70Y/QtdC8INCyIERPTSDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRj1xyXG5cclxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREcmFnSW1hZ2UobmF0aXZlUHJldmlldywgMCwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZURyYWdQcmV2aWV3KCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFByZXZpZXdDb21wb25lbnRSZWYpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmN1cnJlbnRQcmV2aWV3Q29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcmV2aWV3Q29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5jdXJyZW50UHJldmlld0NvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -308,14 +308,19 @@ export class NgxAurMatTableComponent {
|
|
|
308
308
|
this.dragDropProvider.manager.canDrop(this._tableName, $event);
|
|
309
309
|
}
|
|
310
310
|
onDrop($event, row) {
|
|
311
|
-
this.
|
|
312
|
-
|
|
311
|
+
this.dragDropProvider.manager.onDrop(this.tableDataSource.data, this._tableName, row)
|
|
312
|
+
.subscribe(rows => {
|
|
313
|
+
this.tableData = rows.map(row => row.rowSrc);
|
|
314
|
+
this.refreshTable();
|
|
315
|
+
});
|
|
313
316
|
}
|
|
314
317
|
onDragEnd($event, row) {
|
|
315
318
|
let aurEndDragEvent = this.dragDropProvider.manager.endDrag(this.tableDataSource.data);
|
|
316
319
|
if (aurEndDragEvent.isValidDrop) {
|
|
317
|
-
|
|
318
|
-
|
|
320
|
+
aurEndDragEvent.afterDataSet?.subscribe(rows => {
|
|
321
|
+
this.tableData = rows.map(row => row.rowSrc);
|
|
322
|
+
this.refreshTable();
|
|
323
|
+
});
|
|
319
324
|
}
|
|
320
325
|
}
|
|
321
326
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxAurMatTableComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -394,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
394
399
|
}], highlight: [{
|
|
395
400
|
type: Input
|
|
396
401
|
}] } });
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBSU4sU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsT0FBTyxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRXJHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHFCQUFxQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFFN0YsT0FBTyxFQUFDLG9CQUFvQixFQUFFLHlCQUF5QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDakcsT0FBTyxFQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUlqRixNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixPQUFlLEVBQVUsVUFBa0I7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVE7SUFDL0QsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSztRQUNqQixPQUFPLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFZRCxJQUFLLFdBR0o7QUFIRCxXQUFLLFdBQVc7SUFDZCxzQ0FBdUIsQ0FBQTtJQUN2QixvQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSEksV0FBVyxLQUFYLFdBQVcsUUFHZjtBQWVELE1BQU0sT0FBTyx1QkFBdUI7SUFnQmxDLElBQWEsY0FBYyxDQUFDLE9BQWlCO1FBQzNDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBMkZELFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBOUd0RCxzQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFFdkIsaUNBQTRCLEdBQUcsd0JBQXdCLENBQUM7UUFDeEQsb0NBQStCLEdBQUcsMkJBQTJCLENBQUM7UUFFaEUsb0JBQWUsR0FBRyxJQUFJLGtCQUFrQixDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBQy9CLCtCQUEwQixHQUFhLEVBQUUsQ0FBQztRQUMxQyxrQ0FBNkIsR0FBYSxFQUFFLENBQUM7UUFFN0MsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBRXJDLGVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQVNsQyxjQUFTLEdBQXNDLEVBQUUsQ0FBQztRQWtCekMsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUVwQix3QkFBbUIsR0FBNEIsSUFBSSxDQUFDO1FBS3BELG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBT3ZCLFNBQUksR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUVyRCw0QkFBNEI7UUFDbEIsZ0JBQVcsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDekYsMEJBQTBCO1FBRTFCLGlDQUFpQztRQUN2QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyQyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU1RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ2pFLDBCQUEwQjtRQUVoQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUU3Qzs7V0FFRztRQUNPLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDLGtGQUFrRjtRQUN4RSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ3JELHNCQUFpQixHQUFtQixFQUFFLENBQUM7UUFFL0MseUJBQW9CLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUUxRCxhQUFhO1FBQ0wsZ0NBQTJCLEdBQW1CLFVBQVUsQ0FBQyxlQUFlLENBQUM7UUFFakYscUJBQWdCLEdBQXdCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUVoRSxzQkFBaUIsR0FBeUIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRXZFLHVCQUFrQixHQUF5QixJQUFJLHNCQUFzQixFQUFLLENBQUM7UUFFM0Usa0JBQWEsR0FBa0IsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRXhELHVCQUFrQixHQUF1QixJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFFdkUscUJBQWdCLEdBQXdCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUk1RCx3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBbUQsQ0FBQztRQUVqRixrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBbU96RCxlQUFVLEdBQVEsSUFBSSxDQUFDO0lBNU4vQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDcEcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QjtRQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLENBQXdCO1FBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUMsY0FBYyxDQUFDO29CQUN4RCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsTUFBTSxFQUFFLFFBQVE7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN2RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdELE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLE9BQU8sR0FBbUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEYsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFpQixDQUFDO2lCQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVztnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO2FBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ04sSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxnQkFBcUIsRUFBRTtRQUM5QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixzSUFBc0k7WUFDdEksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4RCxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUNqRSxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUM7YUFDckcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUN2QyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7YUFDcEYsUUFBUSxFQUFFO2FBQ1YsV0FBVyxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBRTNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDckYsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7UUFDMUcsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0lBQ2xILENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2FBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDekQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFLLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksb0JBQW9CLENBQUM7UUFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBWTtRQUM1QixNQUFNLFdBQVcsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZLENBQUMsVUFBa0I7UUFDcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLFVBQWtCLEVBQUUsTUFBNkI7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUM7UUFDRix5RkFBeUY7UUFDekYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFFRCxTQUFTLENBQUMsY0FBb0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWMsRUFBRSxJQUFTO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsR0FBTSxFQUFFLE1BQWtCO1FBQ3RELE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUTtRQUNkLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFnQjtRQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBSUQsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBaUIsRUFBRSxHQUFnQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0gsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzVELElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRSxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFpQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBaUIsRUFBRSxHQUFnQjtRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQWUsR0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWlCLEVBQUUsR0FBZ0I7UUFDM0MsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RixJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxZQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQWUsR0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQzs4R0E5V1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsc3lCQXlCcEIsNkJBQTZCLDJIQVdoQixVQUFVLDREQWUxQixZQUFZLDBFQUVaLE9BQU8sOEdBbkJjLFVBQVUsa0RDN0g1QywwOGNBc1NBLG0vTERuTmM7WUFDVixPQUFPLENBQUMsY0FBYyxFQUFFO2dCQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO2dCQUNwRSxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztnQkFDakQsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsUUFBUSxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7YUFDcEgsQ0FBQztTQUNIOzsyRkFFVSx1QkFBdUI7a0JBYm5DLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ3BFLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDOzRCQUNqRCxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxRQUFRLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzt5QkFDcEgsQ0FBQztxQkFDSDtxRkFrQlksY0FBYztzQkFBMUIsS0FBSztnQkFTdUMsb0JBQW9CO3NCQUFoRSxZQUFZO3VCQUFDLDZCQUE2QjtnQkFHbEMsMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUdHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFHdUMsSUFBSTtzQkFBaEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUVILEtBQUs7c0JBQTVDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztnQkFHN0IsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR29DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRXhCLElBQUk7c0JBQWIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUdHLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTTtnQkF5QkUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbHVtblZpZXcsIFRhYmxlQ29uZmlnfSBmcm9tICcuL21vZGVsL0NvbHVtbkNvbmZpZyc7XHJcbmltcG9ydCB7TWF0U29ydCwgU29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7TWF0UGFnaW5hdG9yLCBQYWdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7U2VsZWN0aW9uUHJvdmlkZXIsIFNlbGVjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1NlbGVjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtBY3Rpb25FdmVudCwgUm93QWN0aW9uUHJvdmlkZXIsIFJvd0FjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1Jvd0FjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtUYWJsZVZpZXdGYWN0b3J5fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5kZXhQcm92aWRlciwgSW5kZXhQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSW5kZXhQcm92aWRlclwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25Qcm92aWRlciwgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9QYWdpbmF0aW9uUHJvdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeVwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb2x1bW5zRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL0Rpc3BsYXlDb2x1bW5zRmFjdG9yeVwiO1xyXG5pbXBvcnQge0VtcHR5VmFsdWV9IGZyb20gXCIuL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtUb3RhbFJvd1Byb3ZpZGVyLCBUb3RhbFJvd1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9Ub3RhbFJvd1Byb3ZpZGVyXCI7XHJcbmltcG9ydCB7Tmd4QXVyRmlsdGVyc30gZnJvbSBcIi4vZmlsdGVycy9OZ3hBdXJGaWx0ZXJzXCI7XHJcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVQdWJsaWN9IGZyb20gXCIuL25neC1hdXItbWF0LXRhYmxlLXB1YmxpY1wiO1xyXG5pbXBvcnQge09mZnNldFV0aWx9IGZyb20gXCIuL3V0aWxzL29mZnNldC51dGlsXCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQge05neFRhYmxlU3ViRm9vdGVyUm93RGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmUvbmd4LXRhYmxlLXN1Yi1mb290ZXItcm93LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XHJcbmltcG9ydCB7SGVhZGVyQnV0dG9uUHJvdmlkZXIsIEhlYWRlckJ1dHRvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9IZWFkZXJCdXR0b25Qcm92aWRlclwiO1xyXG5pbXBvcnQge0RyYWdEcm9wUHJvdmlkZXIsIERyYWdQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvRHJhZ0Ryb3BQcm92aWRlclwiO1xyXG5pbXBvcnQge0F1ckRyYWdEcm9wQ29tcG9uZW50fSBmcm9tIFwiLi9kcmFnLWRyb3AvYXVyLWRyYWctZHJvcC1jb21wb25lbnRcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yU3RhdGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZW5ndGg6IG51bWJlciwgcHJpdmF0ZSBfcGFnZUluZGV4OiBudW1iZXIpIHtcclxuICB9XHJcblxyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZUluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBQYWdpbmF0b3JTdGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IFBhZ2luYXRvclN0YXRlKDAsIDApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBrZXk6IHN0cmluZ1xyXG59XHJcblxyXG5lbnVtIEV4cGFuZFN0YXRlIHtcclxuICBDT0xMQVBTRUQgPSAnY29sbGFwc2VkJyxcclxuICBFWFBBTkRFRCA9ICdleHBhbmRlZCdcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdXItbWF0LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5DT0xMQVBTRUQsIHN0eWxlKHtoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJ30pKSxcclxuICAgICAgc3RhdGUoRXhwYW5kU3RhdGUuRVhQQU5ERUQsIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbihgJHtFeHBhbmRTdGF0ZS5FWFBBTkRFRH0gPD0+ICR7RXhwYW5kU3RhdGUuQ09MTEFQU0VEfWAsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hBdXJNYXRUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE5neEF1ck1hdFRhYmxlUHVibGljPFQ+LCBBdXJEcmFnRHJvcENvbXBvbmVudDxUYWJsZVJvdzxUPj4ge1xyXG5cclxuICBleHBhbmRlZFN0YXRlRW51bSA9IEV4cGFuZFN0YXRlO1xyXG5cclxuICByZWFkb25seSBFWFRSQV9IRUFERVJfQ0VMTF9UT1BfU1VGRklYID0gJ19leHRyYV9oZWFkZXJfY2VsbF90b3AnO1xyXG4gIHJlYWRvbmx5IEVYVFJBX0hFQURFUl9DRUxMX0JPVFRPTV9TVUZGSVggPSAnX2V4dHJhX2hlYWRlcl9jZWxsX2JvdHRvbSc7XHJcblxyXG4gIHB1YmxpYyB0YWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFRhYmxlUm93PFQ+PihbXSk7XHJcbiAgX2Rpc3BsYXlDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIF9kaXNwbGF5RXh0cmFIZWFkZXJUb3BDZWxsOiBzdHJpbmdbXSA9IFtdO1xyXG4gIF9kaXNwbGF5RXh0cmFIZWFkZXJCb3R0b21DZWxsOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBfY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gZmFsc2U7XHJcblxyXG4gIF90YWJsZU5hbWUgPSAndW5rbm93bi10YWJsZS1uYW1lJztcclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc3BsYXlDb2x1bW5zKGNvbHVtbnM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAoY29sdW1ucykge1xyXG4gICAgICB0aGlzLl9kaXNwbGF5Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcclxuICAgICAgdGhpcy5fY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0YWJsZVZpZXc6IE1hcDxzdHJpbmcsIENvbHVtblZpZXc8c3RyaW5nPj5bXSA9IFtdO1xyXG5cclxuICBAQ29udGVudENoaWxkKE5neFRhYmxlU3ViRm9vdGVyUm93RGlyZWN0aXZlKSBzdWJGb290ZXJSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBleHRyYUhlYWRlckNlbGxUb3BUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBleHRyYUhlYWRlckNlbGxCb3R0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkcmVuKCdyb3dMaW5rJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSByb3dzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSB0YWJsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZzxUPjtcclxuXHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBUW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgZXh0ZW5kZWRSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyDQtdGB0LvQuCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0YHQtdGA0LLQtdGA0L3Ri9C5INC/0LDQs9C40L3QsNGC0L7RgCwg0YHRjtC00LAg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0YLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC/0LDQs9C40L3QsNGC0L7RgNCwXHJcbiAgQElucHV0KCkgcGFnaW5hdG9yU3RhdGU6IFBhZ2luYXRvclN0YXRlIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSBpc1RhYmxlQm9keUhpZGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7c3RhdGljOiBmYWxzZX0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHtzdGF0aWM6IHRydWV9KSBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgc29ydDogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBhY3Rpb25zXHJcbiAgQE91dHB1dCgpIG9uUm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4oKTtcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBzZWxlY3QgZXZlbnRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZFJvd3NBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFRbXT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uTW9kZWw8VD4+KCk7XHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgQE91dHB1dCgpIG9uUm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBmaWx0ZXJlZCByb3dzXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcblxyXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgZXh0cmFIZWFkZXJDZWxsVG9wVGVtcGxhdGUgb3IgZXh0cmFIZWFkZXJDZWxsQm90dG9tVGVtcGxhdGUgKi9cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcbiAgcHJpdmF0ZSBwcmV2Q29sdW1uT2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBbXTtcclxuXHJcbiAgaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXJEdW1teSgpO1xyXG4gIEBPdXRwdXQoKSBvbkhlYWRlckJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgcmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IEVtcHR5VmFsdWUuUkVTSVpFX09CU0VSVkVSO1xyXG5cclxuICBkcmFnRHJvcFByb3ZpZGVyOiBEcmFnRHJvcFByb3ZpZGVyPFQ+ID0gbmV3IERyYWdQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHNlbGVjdGlvblByb3ZpZGVyOiBTZWxlY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBTZWxlY3Rpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHJvd0FjdGlvbnNQcm92aWRlcjogUm93QWN0aW9uUHJvdmlkZXI8VD4gPSBuZXcgUm93QWN0aW9uUHJvdmlkZXJEdW1teTxUPigpO1xyXG5cclxuICBpbmRleFByb3ZpZGVyOiBJbmRleFByb3ZpZGVyID0gbmV3IEluZGV4UHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICBwYWdpbmF0aW9uUHJvdmlkZXI6IFBhZ2luYXRpb25Qcm92aWRlciA9IG5ldyBQYWdpbmF0aW9uUHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICB0b3RhbFJvd1Byb3ZpZGVyOiBUb3RhbFJvd1Byb3ZpZGVyPFQ+ID0gbmV3IFRvdGFsUm93UHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICBoaWdobGlnaHRlZDogVCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBjdXN0b21Tb3J0RnVuY3Rpb25zID0gbmV3IE1hcDxzdHJpbmcsIChkYXRhOiBUYWJsZVJvdzxUPiwga2V5OiBzdHJpbmcpID0+IGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJTdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIE5neEF1ckZpbHRlcnMuQmFzZTxUPj4oKTtcclxuXHJcbiAgLy/Qt9C90LDRh9C10L3QuNC1INC/0LXRgNC10LTQsNC10YLRgdGPINCyINC60L7QvdGC0LXQudC90LXRgNC1INC40L3QsNGH0LUgT25DaGFuZ2Ug0L3QtSDQstC40LTQuNGCINC40LfQvNC10L3QtdC90LjQuSDQutC+0LPQtNCwINC/0LXRgNC10LTQsNGO0YLRgdGPINC+0LTQuNC90LDQutC+0LLRi9C1INC30L3QsNGH0LXQvdC40LUg0Lgg0L/QvtC00YHQstC10YLQutCwINGB0YLRgNC+0LrQuCDQvdC1INC+0YLQutC70Y7Rh9Cw0LXRgtGB0Y9cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0OiBIaWdobGlnaHRDb250YWluZXI8VD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKChjaGFuZ2VzWyd0YWJsZURhdGEnXSAmJiB0aGlzLnRhYmxlRGF0YSkgfHwgKGNoYW5nZXNbJ2Rpc3BsYXlDb2x1bW5zJ10gJiYgdGhpcy5fZGlzcGxheUNvbHVtbnMpKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGlnaGxpZ2h0J10gJiYgdGhpcy5oaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRDaGFuZ2UodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0UGFnaW5hdG9yUGFnZUluZGV4KCkge1xyXG4gICAgaWYgKHRoaXMubWF0UGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMubWF0UGFnaW5hdG9yLmZpcnN0UGFnZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2hUYWJsZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Qcm92aWRlcj8uc2VsZWN0aW9uPy5zZWxlY3RlZCA/PyBbXTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGEgfHwgW107XHJcbiAgICB0aGlzLnByZXBhcmVUYWJsZURhdGEoc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIaWdobGlnaHRDaGFuZ2UoaDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+KSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZCA9PT0gaC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSBoLnZhbHVlO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHJvdyA9PiByb3cucm93U3JjID09PSBoLnZhbHVlKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICB0aGlzLnJvd3M/LnRvQXJyYXkoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgICBibG9jazogXCJjZW50ZXJcIixcclxuICAgICAgICAgIGlubGluZTogXCJjZW50ZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0IGlucHV0cyBbdGFibGVDb25maWddIGlzIG1hbmRhdG9yeSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHdlIG5lZWQgdGhpcywgaW4gb3JkZXIgdG8gbWFrZSBwYWdpbmF0aW9uIHdvcmsgd2l0aCAqbmdJZlxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpXHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKSk7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5vYnNlcnZlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IChkYXRhLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21Tb3J0RnVuY3Rpb24gPSB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbVNvcnRGdW5jdGlvbiA/IGN1c3RvbVNvcnRGdW5jdGlvbihkYXRhLCBrZXkpIDogZGF0YVtrZXldO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5PZmZzZXRzKCkge1xyXG4gICAgaWYgKHRoaXMudGFibGU/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpIHtcclxuICAgICAgY29uc3Qgb2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBBcnJheS5mcm9tKHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKVxyXG4gICAgICAgIC5tYXAoKGMpID0+IChjIGFzIEhUTUxFbGVtZW50KSlcclxuICAgICAgICAubWFwKChjLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgIGxlZnQ6IGMub2Zmc2V0TGVmdCxcclxuICAgICAgICAgIHdpZHRoOiBjLm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAga2V5OiB0aGlzLl9kaXNwbGF5Q29sdW1uc1tpbmRleF1cclxuICAgICAgICB9KSk7XHJcbiAgICAgIGlmIChPZmZzZXRVdGlsLmFyZU5vdEVxdWFsKHRoaXMucHJldkNvbHVtbk9mZnNldHMsIG9mZnNldHMpKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2Q29sdW1uT2Zmc2V0cyA9IG9mZnNldHM7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5PZmZzZXRzLmVtaXQob2Zmc2V0cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZVRhYmxlRGF0YShpbml0U2VsZWN0aW9uOiBUW10gPSBbXSkge1xyXG4gICAgdGhpcy5pbml0VGFibGUoKTtcclxuICAgIHRoaXMuaW5pdEN1c3RvbVNvcnRGdW5jdGlvbnNNYXAoKTtcclxuICAgIGlmICghdGhpcy5wYWdpbmF0b3JTdGF0ZSkge1xyXG4gICAgICAvLyDQtdGB0LvQuCDQv9Cw0LPQuNC90LDRgtC+0YAg0L3QtSDRgdC10YDQstC10YDQvdGL0Lkg0YLQviDQtdCz0L4g0Y8g0LfQtNC10YHRjCDQuNC90LjRhtC40LDQu9C40LfQuNGA0YPRjiDQuNC90LDRh9C1INC/0YDQuCDQvtCx0L3QvtCy0LvQtdC90LjQuCDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YLQvtGAINC70L7QvNCw0LXRgtGB0Y8g0Lgg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINCy0YHQtSDRjdC70LXQvNC10L3RgtGLXHJcbiAgICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG5cclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbilcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0LCB0aGlzLnNlbGVjdGlvbk1vZGVsKTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXIodGhpcy50YWJsZUNvbmZpZy50YWJsZUhlYWRlckJ1dHRvbkNmZylcclxuXHJcbiAgICB0aGlzLmRyYWdEcm9wUHJvdmlkZXIgPSBEcmFnRHJvcFByb3ZpZGVyLmNyZWF0ZSh0aGlzLnZpZXdDb250YWluZXJSZWYsIHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRDb2x1bW4odGhpcy5fZGlzcGxheUNvbHVtbnMpO1xyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcblxyXG4gICAgdGhpcy5fZGlzcGxheUV4dHJhSGVhZGVyVG9wQ2VsbCA9IHRoaXMuX2Rpc3BsYXlDb2x1bW5zLm1hcChjb2wgPT4gY29sICsgdGhpcy5FWFRSQV9IRUFERVJfQ0VMTF9UT1BfU1VGRklYKVxyXG4gICAgdGhpcy5fZGlzcGxheUV4dHJhSGVhZGVyQm90dG9tQ2VsbCA9IHRoaXMuX2Rpc3BsYXlDb2x1bW5zLm1hcChjb2wgPT4gY29sICsgdGhpcy5FWFRSQV9IRUFERVJfQ0VMTF9CT1RUT01fU1VGRklYKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMuX3RhYmxlTmFtZSA9IHRoaXMudGFibGVDb25maWcubmFtZSA/PyAndW5rbm93bi10YWJsZS1uYW1lJztcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgaWYgKCF0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBEaXNwbGF5Q29sdW1uc0ZhY3RvcnkuY3JlYXRlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTZWFyY2hGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdG9yYWdlLmRlbGV0ZShmaWx0ZXJOYW1lKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZywgZmlsdGVyOiBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSB8fCAoIXRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkhLmVxdWFscyhmaWx0ZXIpKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2Uuc2V0KGZpbHRlck5hbWUsIGZpbHRlcik7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJBY3Rpb25zID0gWy4uLnRoaXMuZmlsdGVyU3RvcmFnZS52YWx1ZXMoKV07XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSAoZGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyQWN0aW9ucy5ldmVyeShmaWx0ZXJBY3Rpb24gPT4gZmlsdGVyQWN0aW9uLmZpbHRlckZuKCkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INGE0LjQu9GM0YLRgNCw0YbQuNC4LiDQvdGD0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YPQvdC40LrQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDRh9GC0L7QsdGLINGE0LjQu9GM0YLRgNCw0YbQuNGPINC30LDQv9GD0YHRgtC40LvQsNGB0YxcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9ICd0cmlnZ2VyLScgKyBNYXRoLnJhbmRvbSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZpbHRlcmVkVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZiA9PiBmLnJvd1NyYykpXHJcbiAgfVxyXG5cclxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydC5lbWl0KHNvcnRQYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvd3M6IFRbXSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93c0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3dzfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vblJvd0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3d9KTtcclxuICB9XHJcblxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNBbGxTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2FzdFNyYyhyb3c6IGFueSk6IFRhYmxlUm93PFQ+IHtcclxuICAgIHJldHVybiByb3c7XHJcbiAgfVxyXG5cclxuICByb3dDbGljayhyb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAocm93LnJvd1NyYyAhPT0gdGhpcy5oaWdobGlnaHRlZCB8fCAocm93LnJvd1NyYyA9PT0gdGhpcy5oaWdobGlnaHRlZCAmJiAhdGhpcy50YWJsZUNvbmZpZy5jbGlja0NmZz8uY2FuY2VsYWJsZSkpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93LnJvd1NyYyk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSByb3cucm93U3JjO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbDxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhvdmVyVGltZXI6IGFueSA9IG51bGw7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lcik7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdTdGFydCgkZXZlbnQ6IERyYWdFdmVudCwgcm93OiBUYWJsZVJvdzxUPikge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNFbmFibGVkICYmIHRoaXMuZHJhZ0Ryb3BQcm92aWRlci5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dzLmZpbmQociA9PiByLmlkID09PSByb3cuaWQpKSB7XHJcbiAgICAgICAgdGhpcy5kcmFnRHJvcFByb3ZpZGVyLm1hbmFnZXIuc3RhcnREcmFnKHRoaXMuX3RhYmxlTmFtZSwgc2VsZWN0ZWRSb3dzLCAkZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kcmFnRHJvcFByb3ZpZGVyLm1hbmFnZXIuc3RhcnREcmFnKHRoaXMuX3RhYmxlTmFtZSwgW3Jvd10sICRldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdPdmVyKCRldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICB0aGlzLmRyYWdEcm9wUHJvdmlkZXIubWFuYWdlci5jYW5Ecm9wKHRoaXMuX3RhYmxlTmFtZSwgJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcCgkZXZlbnQ6IERyYWdFdmVudCwgcm93OiBUYWJsZVJvdzxUPikge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmRyYWdEcm9wUHJvdmlkZXIubWFuYWdlci5vbkRyb3AodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSwgdGhpcy5fdGFibGVOYW1lLCByb3cpLm1hcChyb3cgPT4gKDxUYWJsZVJvdzxUPj5yb3cpLnJvd1NyYyk7XHJcbiAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kKCRldmVudDogRHJhZ0V2ZW50LCByb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBsZXQgYXVyRW5kRHJhZ0V2ZW50ID0gdGhpcy5kcmFnRHJvcFByb3ZpZGVyLm1hbmFnZXIuZW5kRHJhZyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhKTtcclxuICAgIGlmIChhdXJFbmREcmFnRXZlbnQuaXNWYWxpZERyb3ApIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBhdXJFbmREcmFnRXZlbnQuYWZ0ZXJEYXRhU2V0IS5tYXAocm93ID0+ICg8VGFibGVSb3c8VD4+cm93KS5yb3dTcmMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXVyLW1hdC10YWJsZVwiXHJcbiAgICAgW25nQ2xhc3NdPVwieydib3R0b20tcGFnaW5hdGlvbic6IHBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWQgJiYgcGFnaW5hdGlvblByb3ZpZGVyLnBvc2l0aW9uID09PSAnYm90dG9tJ31cIj5cclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb25maWcuZmlsdGVyQ2ZnPy5lbmFibGUgPz8gZmFsc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25neEF1clRhYmxlU2VhcmNoUHJlZml4XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnt7IHRhYmxlQ29uZmlnLmZpbHRlckNmZz8ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiYXBwbHlTZWFyY2hGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25neEF1clRhYmxlU2VhcmNoU3VmZml4XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm90dG9tLXBhZ2luYXRpb24nOiBwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkICYmIHBhZ2luYXRpb25Qcm92aWRlci5wb3NpdGlvbiA9PT0gJ2JvdHRvbSd9XCI+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImhlYWRlckJ1dHRvblByb3ZpZGVyLmlzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXNldHRpbmdzLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyQnV0dG9uUHJvdmlkZXIuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaGVhZGVyQnV0dG9uUHJvdmlkZXIuYmFja2dyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25IZWFkZXJCdXR0b24uZW1pdCgkZXZlbnQpXCI+XHJcbiAgICAgICAge3sgaGVhZGVyQnV0dG9uUHJvdmlkZXIuaWNvbiB9fVxyXG4gICAgICA8L21hdC1pY29uPlxyXG5cclxuICAgICAgPCEtLSBUYWJsZSAtLT5cclxuICAgICAgPHRhYmxlICN0YWJsZSBtYXQtdGFibGUgbWF0U29ydFxyXG4gICAgICAgICAgICAgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHRlbmRlZFJvd1RlbXBsYXRlICE9PSBudWxsXCJcclxuICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInRhYmxlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJzb3J0VGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8uaGVpZ2h0XCJcclxuICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8ubWF4SGVpZ2h0XCJcclxuICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8ubWluSGVpZ2h0XCJcclxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZS10YWJsZS1ib2R5JzogaXNUYWJsZUJvZHlIaWRlfVwiPlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgZHJhZy1jb2x1bW4tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHJhZ0Ryb3BQcm92aWRlci5pc0VuYWJsZWQgJiYgZHJhZ0Ryb3BQcm92aWRlci5kcmFnZ2FibGVcIiBbbWF0Q29sdW1uRGVmXT1cImRyYWdEcm9wUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuXHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIiBjbGFzcz1cImRyYWctY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxsaWItaWNvbi12aWV3ICBkcmFnZ2FibGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZy1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3XT1cImRyYWdEcm9wUHJvdmlkZXIuZHJhZ0ljb25WaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCBlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdFbmQoJGV2ZW50LCBlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICA8L2xpYi1pY29uLXZpZXc+XHJcblxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgaW5kZXgtY29sdW1uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4UHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJpbmRleFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImluZGV4UHJvdmlkZXIuaGVhZGVyVmlld1wiPlxyXG4gICAgICAgICAgICAgIHt7IGluZGV4UHJvdmlkZXIubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICAgIHt7IGVsZW1lbnQuaWQgKyBpbmRleFByb3ZpZGVyLm9mZnNldCB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRSkgfHwgJycgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIHNlbGVjdGlvbi1jb2x1bW4tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnPy5zaG93U2VsZWN0ZWRDb3VudCAmJiBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmc/LnNob3dUb3RhbENvdW50ICE9PSBmYWxzZVwiPi97eyBwYWdpbmF0b3JTdGF0ZT8ubGVuZ3RoID8gcGFnaW5hdG9yU3RhdGU/Lmxlbmd0aCA6IHRhYmxlRGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZz8uYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZyEuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0U2VsZWN0ZWRSb3dzQWN0aW9uKGFjdGlvbi5hY3Rpb24sIHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5zZWxlY3RlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLmRpc3BsYXkgIT09ICdub25lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5pY29uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGNhc3RTcmMocm93KS5yb3dTcmMpXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBhY3Rpb24gY29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dBY3Rpb25zUHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHN0eWxlPVwiY3Vyc29yOiBkZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByb3dBY3Rpb25zUHJvdmlkZXIuYWN0aW9uVmlldy5nZXQoZWxlbWVudC5pZClcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRSb3dBY3Rpb24oYWN0aW9uLmFjdGlvbiwgZWxlbWVudC5yb3dTcmMsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLmljb24udG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi5kaXNwbGF5ICE9PSAnbm9uZSdcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRX1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgIHZhbHVlLWljb24tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW5Db25maWcgb2YgdGFibGVDb25maWcuY29sdW1uc0NmZ1wiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uQ29uZmlnLmtleVwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Db25maWcuc29ydCAmJiBjb2x1bW5Db25maWcuc29ydC5lbmFibGU7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbkNvbmZpZy5rZXlcIlxyXG4gICAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gZWxzZSBub3Qgc29ydGFibGUgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJWYWx1ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8IS0tICAgICAgaGVhZGVyIHZhbHVlLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclZhbHVlPlxyXG4gICAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5Db25maWcubmFtZVwiPlxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSBjb2x1bW4gdmFsdWUg0L/QvtC70YPRh9Cw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC70L7QvdC+0Log0L3Rg9C20L3QviDRh9C10YDQtdC3IGdldFZpZXcocm93SW5kZXgsIGNvbHVtbkNvbmZpZy5rZXkpINGC0LDQvCDQvdCw0YXQvtC00Y/RgtGB0Y8g0YPQttC1XHJcbiAgICAgICAgICDQv9C+0LTQs9C+0YLQvtCy0LvQtdC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPLS0+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlld1xyXG4gICAgICAgICAgICAgIFtjb25maWddPVwidGFibGVWaWV3W2VsZW1lbnQuaWRdPy5nZXQoY29sdW1uQ29uZmlnLmtleSlcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uQ29uZmlnLmtleSkgfHwgJycgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgICBleHRyYSBoZWFkZXIgdG9wIGNlbGwtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHRyYVRvcENlbGwgb2YgX2Rpc3BsYXlFeHRyYUhlYWRlclRvcENlbGw7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiZXh0cmFUb3BDZWxsXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYUhlYWRlckNlbGxUb3BUZW1wbGF0ZTsgY29udGV4dDoge2tleTogZXh0cmFUb3BDZWxsLnJlcGxhY2UoRVhUUkFfSEVBREVSX0NFTExfVE9QX1NVRkZJWCwgJycpLCBpbmRleDogaW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgZXh0cmEgaGVhZGVyIGJvdHRvbSBjZWxsLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXh0cmFCb3R0b21DZWxsICBvZiBfZGlzcGxheUV4dHJhSGVhZGVyQm90dG9tQ2VsbDsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJleHRyYUJvdHRvbUNlbGxcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImV4dHJhSGVhZGVyQ2VsbEJvdHRvbVRlbXBsYXRlOyBjb250ZXh0OiB7a2V5OiBleHRyYUJvdHRvbUNlbGwucmVwbGFjZShFWFRSQV9IRUFERVJfQ0VMTF9CT1RUT01fU1VGRklYLCAnJyksIGluZGV4OiBpbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIGV4dHJhIGhlYWRlciB0b3Agcm93LS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dHJhSGVhZGVyQ2VsbFRvcFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIl9kaXNwbGF5RXh0cmFIZWFkZXJUb3BDZWxsOyAgc3RpY2t5OiB0aGlzLnRhYmxlQ29uZmlnLnN0aWNreUNmZz8uaGVhZGVyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImV4dHJhLWhlYWRlci10b3Atcm93XCI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgICBoZWFkZXIgIHJvdy0tPlxyXG4gICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiX2Rpc3BsYXlDb2x1bW5zOyAgc3RpY2t5OiB0aGlzLnRhYmxlQ29uZmlnLnN0aWNreUNmZz8uaGVhZGVyXCI+XHJcbiAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgZXh0cmEgaGVhZGVyIGJvdHRvbSByb3cgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dHJhSGVhZGVyQ2VsbEJvdHRvbVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiX2Rpc3BsYXlFeHRyYUhlYWRlckJvdHRvbUNlbGw7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDx0ciBtYXQtcm93ICNyb3dMaW5rXHJcbiAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50LCByb3cpXCJcclxuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncG9pbnRlcic6IHRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5wb2ludGVyIHx8IGZhbHNlLCAnbmV3LWNvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjICYmIHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uY29sb3J9XCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwhLS1leHBhbmRlZC1yb3ctLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkUm93XCI+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJleHBhbmRlZC1jZWxsXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgIFtAZGV0YWlsRXhwYW5kXT1cImVsZW1lbnQucm93U3JjID09PSBoaWdobGlnaHRlZCA/IGV4cGFuZGVkU3RhdGVFbnVtLkVYUEFOREVEIDogZXhwYW5kZWRTdGF0ZUVudW0uQ09MTEFQU0VEXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBsYXp5LWxvYWQgb2YgZGV0YWlscyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC5yb3dTcmMgPT09IGhpZ2hsaWdodGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXh0ZW5kZWRSb3dUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogZWxlbWVudH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0ZW5kZWRSb3dUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJleHBhbmRlZC1yb3dcIiAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZFJvdyddXCI+PC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tZXhwYW5kZWQtcm93LS0+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbFJvd1Byb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7IHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LnRvdGFsXCJcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwidG90YWxSb3dQcm92aWRlci5zdHlsZVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS1zdWItZm9vdGVyLXJvdy0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViRm9vdGVyUm93XCI+XHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuZ3hBdXJUYWJsZVN1YkZvb3RlclJvd11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YkZvb3RlclJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3ViRm9vdGVyUm93J107IHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LnN1YkZvb3RlclwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSAgICAgIHN1Yi1mb290ZXItcm93IEVORC0tPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICBAaWYgKHRoaXMucGFnaW5hdGlvblByb3ZpZGVyLmlzRW5hYmxlZCkge1xyXG4gICAgPG1hdC1wYWdpbmF0b3IgW25nQ2xhc3NdPVwieydoaWRlUGFnaW5hdG9yJzogaXNUYWJsZUJvZHlIaWRlfVwiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2luYXRpb25Qcm92aWRlci5zaXplc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInRhYmxlQ29uZmlnPy5wYWdlYWJsZUNmZz8uc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJwYWdpbmF0b3JTdGF0ZT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdG9yU3RhdGU/LnBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAocGFnZSk9XCJwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cclxuICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJDZWxsVGVtcGxhdGUgbGV0LWNvbHVtbk5hbWU+XHJcbiAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgIHt7IHRvdGFsUm93UHJvdmlkZXIudG90YWxzLmdldChjb2x1bW5OYW1lKSB8fCAnJyB9fVxyXG4gIDwvdGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBSU4sU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsT0FBTyxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRXJHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsVUFB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TUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFHRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csYUFBYTtzQkFBdEIsTUFBTTtnQkFJRyxjQUFjO3NCQUF2QixNQUFNO2dCQXlCRSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29sdW1uVmlldywgVGFibGVDb25maWd9IGZyb20gJy4vbW9kZWwvQ29sdW1uQ29uZmlnJztcclxuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtTZWxlY3Rpb25Qcm92aWRlciwgU2VsZWN0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSAnLi9wcm92aWRlcnMvU2VsZWN0aW9uUHJvdmlkZXInO1xyXG5pbXBvcnQge0FjdGlvbkV2ZW50LCBSb3dBY3Rpb25Qcm92aWRlciwgUm93QWN0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSAnLi9wcm92aWRlcnMvUm93QWN0aW9uUHJvdmlkZXInO1xyXG5pbXBvcnQge1RhYmxlUm93fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVJvd1wiO1xyXG5pbXBvcnQge1RhYmxlVmlld0ZhY3Rvcnl9IGZyb20gXCIuL21vZGVsL1RhYmxlVmlld0ZhY3RvcnlcIjtcclxuaW1wb3J0IHtJbmRleFByb3ZpZGVyLCBJbmRleFByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9JbmRleFByb3ZpZGVyXCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvblByb3ZpZGVyLCBQYWdpbmF0aW9uUHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL1BhZ2luYXRpb25Qcm92aWRlclwiO1xyXG5pbXBvcnQge01hdFRhYmxlRGF0YVNvdXJjZUZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9NYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5XCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbHVtbnNGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvRGlzcGxheUNvbHVtbnNGYWN0b3J5XCI7XHJcbmltcG9ydCB7RW1wdHlWYWx1ZX0gZnJvbSBcIi4vbW9kZWwvRW1wdHlWYWx1ZVwiO1xyXG5pbXBvcnQge1RvdGFsUm93UHJvdmlkZXIsIFRvdGFsUm93UHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL1RvdGFsUm93UHJvdmlkZXJcIjtcclxuaW1wb3J0IHtOZ3hBdXJGaWx0ZXJzfSBmcm9tIFwiLi9maWx0ZXJzL05neEF1ckZpbHRlcnNcIjtcclxuaW1wb3J0IHtOZ3hBdXJNYXRUYWJsZVB1YmxpY30gZnJvbSBcIi4vbmd4LWF1ci1tYXQtdGFibGUtcHVibGljXCI7XHJcbmltcG9ydCB7T2Zmc2V0VXRpbH0gZnJvbSBcIi4vdXRpbHMvb2Zmc2V0LnV0aWxcIjtcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7Tmd4VGFibGVTdWJGb290ZXJSb3dEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZS9uZ3gtdGFibGUtc3ViLWZvb3Rlci1yb3cuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcclxuaW1wb3J0IHtIZWFkZXJCdXR0b25Qcm92aWRlciwgSGVhZGVyQnV0dG9uUHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL0hlYWRlckJ1dHRvblByb3ZpZGVyXCI7XHJcbmltcG9ydCB7RHJhZ0Ryb3BQcm92aWRlciwgRHJhZ1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9EcmFnRHJvcFByb3ZpZGVyXCI7XHJcbmltcG9ydCB7QXVyRHJhZ0Ryb3BDb21wb25lbnR9IGZyb20gXCIuL2RyYWctZHJvcC9hdXItZHJhZy1kcm9wLWNvbXBvbmVudFwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JTdGF0ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xlbmd0aDogbnVtYmVyLCBwcml2YXRlIF9wYWdlSW5kZXg6IG51bWJlcikge1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBwYWdlSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wYWdlSW5kZXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFBhZ2luYXRvclN0YXRlIHtcclxuICAgIHJldHVybiBuZXcgUGFnaW5hdG9yU3RhdGUoMCwgMCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodENvbnRhaW5lcjxUPiB7XHJcbiAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PZmZzZXQge1xyXG4gIGxlZnQ6IG51bWJlcixcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGtleTogc3RyaW5nXHJcbn1cclxuXHJcbmVudW0gRXhwYW5kU3RhdGUge1xyXG4gIENPTExBUFNFRCA9ICdjb2xsYXBzZWQnLFxyXG4gIEVYUEFOREVEID0gJ2V4cGFuZGVkJ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKEV4cGFuZFN0YXRlLkNPTExBUFNFRCwgc3R5bGUoe2hlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnfSkpLFxyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5FWFBBTkRFRCwgc3R5bGUoe2hlaWdodDogJyonfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKGAke0V4cGFuZFN0YXRlLkVYUEFOREVEfSA8PT4gJHtFeHBhbmRTdGF0ZS5DT0xMQVBTRUR9YCwgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgTmd4QXVyTWF0VGFibGVQdWJsaWM8VD4sIEF1ckRyYWdEcm9wQ29tcG9uZW50PFRhYmxlUm93PFQ+PiB7XHJcblxyXG4gIGV4cGFuZGVkU3RhdGVFbnVtID0gRXhwYW5kU3RhdGU7XHJcblxyXG4gIHJlYWRvbmx5IEVYVFJBX0hFQURFUl9DRUxMX1RPUF9TVUZGSVggPSAnX2V4dHJhX2hlYWRlcl9jZWxsX3RvcCc7XHJcbiAgcmVhZG9ubHkgRVhUUkFfSEVBREVSX0NFTExfQk9UVE9NX1NVRkZJWCA9ICdfZXh0cmFfaGVhZGVyX2NlbGxfYm90dG9tJztcclxuXHJcbiAgcHVibGljIHRhYmxlRGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VGFibGVSb3c8VD4+KFtdKTtcclxuICBfZGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgX2Rpc3BsYXlFeHRyYUhlYWRlclRvcENlbGw6IHN0cmluZ1tdID0gW107XHJcbiAgX2Rpc3BsYXlFeHRyYUhlYWRlckJvdHRvbUNlbGw6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIF9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgX3RhYmxlTmFtZSA9ICd1bmtub3duLXRhYmxlLW5hbWUnO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzcGxheUNvbHVtbnMoY29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIGlmIChjb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXlDb2x1bW5zID0gWy4uLmNvbHVtbnNdO1xyXG4gICAgICB0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQgPSBjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRhYmxlVmlldzogTWFwPHN0cmluZywgQ29sdW1uVmlldzxzdHJpbmc+PltdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTmd4VGFibGVTdWJGb290ZXJSb3dEaXJlY3RpdmUpIHN1YkZvb3RlclJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGV4dHJhSGVhZGVyQ2VsbFRvcFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGV4dHJhSGVhZGVyQ2VsbEJvdHRvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd0xpbmsnLCB7cmVhZDogRWxlbWVudFJlZn0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7cmVhZDogRWxlbWVudFJlZn0pIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQElucHV0KCkgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+O1xyXG5cclxuICBASW5wdXQoKSB0YWJsZURhdGE6IFRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBleHRlbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vINC10YHQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC10YDQstC10YDQvdGL0Lkg0L/QsNCz0LjQvdCw0YLQvtGALCDRgdGO0LTQsCDQv9C10YDQtdC00LDQtdGC0YHRjyDRgtC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0L/QsNCz0LjQvdCw0YLQvtGA0LBcclxuICBASW5wdXQoKSBwYWdpbmF0b3JTdGF0ZTogUGFnaW5hdG9yU3RhdGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGlzVGFibGVCb2R5SGlkZSA9IGZhbHNlO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHtzdGF0aWM6IGZhbHNlfSkgbWF0UGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwge3N0YXRpYzogdHJ1ZX0pIG1hdFNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIEBPdXRwdXQoKSBzb3J0OiBFdmVudEVtaXR0ZXI8U29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcblxyXG4gIC8vIGV2ZW50cyBpZiBlbmFibGVkIGFjdGlvbnNcclxuICBAT3V0cHV0KCkgb25Sb3dBY3Rpb246IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PigpO1xyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIC8vIGV2ZW50cyBpZiBlbmFibGVkIHNlbGVjdCBldmVudFxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBPdXRwdXQoKSBvbkRlc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkUm93c0FjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VFtdPj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbk1vZGVsID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25Nb2RlbDxUPj4oKTtcclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGZpbHRlcmVkIHJvd3NcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25GaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBleHRyYUhlYWRlckNlbGxUb3BUZW1wbGF0ZSBvciBleHRyYUhlYWRlckNlbGxCb3R0b21UZW1wbGF0ZSAqL1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5PZmZzZXRzID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5PZmZzZXRbXT4oKTtcclxuICBwcml2YXRlIHByZXZDb2x1bW5PZmZzZXRzOiBDb2x1bW5PZmZzZXRbXSA9IFtdO1xyXG5cclxuICBoZWFkZXJCdXR0b25Qcm92aWRlciA9IG5ldyBIZWFkZXJCdXR0b25Qcm92aWRlckR1bW15KCk7XHJcbiAgQE91dHB1dCgpIG9uSGVhZGVyQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgcHJpdmF0ZSByZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyID0gRW1wdHlWYWx1ZS5SRVNJWkVfT0JTRVJWRVI7XHJcblxyXG4gIGRyYWdEcm9wUHJvdmlkZXI6IERyYWdEcm9wUHJvdmlkZXI8VD4gPSBuZXcgRHJhZ1Byb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgc2VsZWN0aW9uUHJvdmlkZXI6IFNlbGVjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBSb3dBY3Rpb25Qcm92aWRlckR1bW15PFQ+KCk7XHJcblxyXG4gIGluZGV4UHJvdmlkZXI6IEluZGV4UHJvdmlkZXIgPSBuZXcgSW5kZXhQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHBhZ2luYXRpb25Qcm92aWRlcjogUGFnaW5hdGlvblByb3ZpZGVyID0gbmV3IFBhZ2luYXRpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHRvdGFsUm93UHJvdmlkZXI6IFRvdGFsUm93UHJvdmlkZXI8VD4gPSBuZXcgVG90YWxSb3dQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIGhpZ2hsaWdodGVkOiBUIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGN1c3RvbVNvcnRGdW5jdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IFRhYmxlUm93PFQ+LCBrZXk6IHN0cmluZykgPT4gYW55PigpO1xyXG5cclxuICBwcml2YXRlIGZpbHRlclN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgTmd4QXVyRmlsdGVycy5CYXNlPFQ+PigpO1xyXG5cclxuICAvL9C30L3QsNGH0LXQvdC40LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YLQtdC50L3QtdGA0LUg0LjQvdCw0YfQtSBPbkNoYW5nZSDQvdC1INCy0LjQtNC40YIg0LjQt9C80LXQvdC10L3QuNC5INC60L7Qs9C00LAg0L/QtdGA0LXQtNCw0Y7RgtGB0Y8g0L7QtNC40L3QsNC60L7QstGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuCDQv9C+0LTRgdCy0LXRgtC60LAg0YHRgtGA0L7QutC4INC90LUg0L7RgtC60LvRjtGH0LDQtdGC0YHRj1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBoaWdobGlnaHQ6IEhpZ2hsaWdodENvbnRhaW5lcjxUPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoKGNoYW5nZXNbJ3RhYmxlRGF0YSddICYmIHRoaXMudGFibGVEYXRhKSB8fCAoY2hhbmdlc1snZGlzcGxheUNvbHVtbnMnXSAmJiB0aGlzLl9kaXNwbGF5Q29sdW1ucykpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydoaWdobGlnaHQnXSAmJiB0aGlzLmhpZ2hsaWdodCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUhpZ2hsaWdodENoYW5nZSh0aGlzLmhpZ2hsaWdodCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRQYWdpbmF0b3JQYWdlSW5kZXgoKSB7XHJcbiAgICBpZiAodGhpcy5tYXRQYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5tYXRQYWdpbmF0b3IuZmlyc3RQYWdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaFRhYmxlKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvblByb3ZpZGVyPy5zZWxlY3Rpb24/LnNlbGVjdGVkID8/IFtdO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YSB8fCBbXTtcclxuICAgIHRoaXMucHJlcGFyZVRhYmxlRGF0YShzZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUhpZ2hsaWdodENoYW5nZShoOiBIaWdobGlnaHRDb250YWluZXI8VD4pIHtcclxuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkID09PSBoLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IGgudmFsdWU7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgocm93ID0+IHJvdy5yb3dTcmMgPT09IGgudmFsdWUpO1xyXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgIHRoaXMucm93cz8udG9BcnJheSgpW2luZGV4XT8ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgICAgICAgIGJsb2NrOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgaW5saW5lOiBcImNlbnRlclwiXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlQ29uZmlnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImluaXQgaW5wdXRzIFt0YWJsZUNvbmZpZ10gaXMgbWFuZGF0b3J5IVwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gd2UgbmVlZCB0aGlzLCBpbiBvcmRlciB0byBtYWtlIHBhZ2luYXRpb24gd29yayB3aXRoICpuZ0lmXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0UGFnaW5hdG9yKClcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMudXBkYXRlQ29sdW1uT2Zmc2V0cygpKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLm9ic2VydmUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uT2Zmc2V0cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGFnaW5hdG9yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMubWF0UGFnaW5hdG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKGRhdGEsIGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbVNvcnRGdW5jdGlvbiA9IHRoaXMuY3VzdG9tU29ydEZ1bmN0aW9ucy5nZXQoa2V5KTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tU29ydEZ1bmN0aW9uID8gY3VzdG9tU29ydEZ1bmN0aW9uKGRhdGEsIGtleSkgOiBkYXRhW2tleV07XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbk9mZnNldHMoKSB7XHJcbiAgICBpZiAodGhpcy50YWJsZT8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvckFsbCgndGgnKSkge1xyXG4gICAgICBjb25zdCBvZmZzZXRzOiBDb2x1bW5PZmZzZXRbXSA9IEFycmF5LmZyb20odGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpXHJcbiAgICAgICAgLm1hcCgoYykgPT4gKGMgYXMgSFRNTEVsZW1lbnQpKVxyXG4gICAgICAgIC5tYXAoKGMsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgbGVmdDogYy5vZmZzZXRMZWZ0LFxyXG4gICAgICAgICAgd2lkdGg6IGMub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICBrZXk6IHRoaXMuX2Rpc3BsYXlDb2x1bW5zW2luZGV4XVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgaWYgKE9mZnNldFV0aWwuYXJlTm90RXF1YWwodGhpcy5wcmV2Q29sdW1uT2Zmc2V0cywgb2Zmc2V0cykpIHtcclxuICAgICAgICB0aGlzLnByZXZDb2x1bW5PZmZzZXRzID0gb2Zmc2V0cztcclxuICAgICAgICB0aGlzLmNvbHVtbk9mZnNldHMuZW1pdChvZmZzZXRzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlVGFibGVEYXRhKGluaXRTZWxlY3Rpb246IFRbXSA9IFtdKSB7XHJcbiAgICB0aGlzLmluaXRUYWJsZSgpO1xyXG4gICAgdGhpcy5pbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpO1xyXG4gICAgaWYgKCF0aGlzLnBhZ2luYXRvclN0YXRlKSB7XHJcbiAgICAgIC8vINC10YHQu9C4INC/0LDQs9C40L3QsNGC0L7RgCDQvdC1INGB0LXRgNCy0LXRgNC90YvQuSDRgtC+INC10LPQviDRjyDQt9C00LXRgdGMINC40L3QuNGG0LjQsNC70LjQt9C40YDRg9GOINC40L3QsNGH0LUg0L/RgNC4INC+0LHQvdC+0LLQu9C10L3QuNC4INC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRgtC+0YAg0LvQvtC80LDQtdGC0YHRjyDQuCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0LLRgdC1INGN0LvQtdC80LXQvdGC0YtcclxuICAgICAgdGhpcy5pbml0UGFnaW5hdG9yKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcblxyXG4gICAgdGhpcy5pbmRleFByb3ZpZGVyID0gSW5kZXhQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEluZGV4Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKTtcclxuXHJcbiAgICB0aGlzLnJvd0FjdGlvbnNQcm92aWRlciA9IFJvd0FjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgICAuYWRkQWN0aW9uQ29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuc2V0Vmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvblByb3ZpZGVyID0gU2VsZWN0aW9uUHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcsIHRoaXMudGFibGVEYXRhU291cmNlLCBpbml0U2VsZWN0aW9uKVxyXG4gICAgICAuYWRkQ2hlY2tib3hDb2x1bW4odGhpcy5fZGlzcGxheUNvbHVtbnMpXHJcbiAgICAgIC5iaW5kRXZlbnRFbWl0dGVycyh0aGlzLnNlbGVjdGVkLCB0aGlzLm9uU2VsZWN0LCB0aGlzLm9uRGVzZWxlY3QsIHRoaXMuc2VsZWN0aW9uTW9kZWwpO1xyXG5cclxuICAgIHRoaXMucGFnaW5hdGlvblByb3ZpZGVyID0gUGFnaW5hdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuXHJcbiAgICB0aGlzLnRvdGFsUm93UHJvdmlkZXIgPSBUb3RhbFJvd1Byb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSlcclxuICAgICAgLnNldFN0eWxlKClcclxuICAgICAgLnNldFRvdGFsUm93KCk7XHJcblxyXG4gICAgdGhpcy5oZWFkZXJCdXR0b25Qcm92aWRlciA9IG5ldyBIZWFkZXJCdXR0b25Qcm92aWRlcih0aGlzLnRhYmxlQ29uZmlnLnRhYmxlSGVhZGVyQnV0dG9uQ2ZnKVxyXG5cclxuICAgIHRoaXMuZHJhZ0Ryb3BQcm92aWRlciA9IERyYWdEcm9wUHJvdmlkZXIuY3JlYXRlKHRoaXMudmlld0NvbnRhaW5lclJlZiwgdGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuXHJcbiAgICB0aGlzLl9kaXNwbGF5RXh0cmFIZWFkZXJUb3BDZWxsID0gdGhpcy5fZGlzcGxheUNvbHVtbnMubWFwKGNvbCA9PiBjb2wgKyB0aGlzLkVYVFJBX0hFQURFUl9DRUxMX1RPUF9TVUZGSVgpXHJcbiAgICB0aGlzLl9kaXNwbGF5RXh0cmFIZWFkZXJCb3R0b21DZWxsID0gdGhpcy5fZGlzcGxheUNvbHVtbnMubWFwKGNvbCA9PiBjb2wgKyB0aGlzLkVYVFJBX0hFQURFUl9DRUxMX0JPVFRPTV9TVUZGSVgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCkge1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXHJcbiAgICAgIC5maWx0ZXIoYyA9PiBjLnNvcnQgJiYgYy5zb3J0LmVuYWJsZSAmJiBjLnNvcnQuY3VzdG9tU29ydClcclxuICAgICAgLmZvckVhY2goYyA9PiB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuc2V0KGMua2V5LCBjLnNvcnQhLmN1c3RvbVNvcnQhKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRhYmxlKCkge1xyXG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGhpcy50YWJsZUNvbmZpZy5uYW1lID8/ICd1bmtub3duLXRhYmxlLW5hbWUnO1xyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UgPSBNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5LmNvbnZlcnQodGhpcy50YWJsZURhdGEsIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZyk7XHJcbiAgICB0aGlzLnRhYmxlVmlldyA9IFRhYmxlVmlld0ZhY3RvcnkudG9WaWV3KHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEsIHRoaXMudGFibGVDb25maWcpXHJcbiAgICBpZiAoIXRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLl9kaXNwbGF5Q29sdW1ucyA9IERpc3BsYXlDb2x1bW5zRmFjdG9yeS5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNlYXJjaEZpbHRlcihldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2UuZGVsZXRlKGZpbHRlck5hbWUpO1xyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyc0ludGVybmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nLCBmaWx0ZXI6IE5neEF1ckZpbHRlcnMuQmFzZTxUPik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZpbHRlclN0b3JhZ2UuZ2V0KGZpbHRlck5hbWUpIHx8ICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSEuZXF1YWxzKGZpbHRlcikpKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5zZXQoZmlsdGVyTmFtZSwgZmlsdGVyKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnNJbnRlcm5hbCgpIHtcclxuICAgIGNvbnN0IGZpbHRlckFjdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJTdG9yYWdlLnZhbHVlcygpXTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJBY3Rpb25zLmV2ZXJ5KGZpbHRlckFjdGlvbiA9PiBmaWx0ZXJBY3Rpb24uZmlsdGVyRm4oKShkYXRhKSk7XHJcbiAgICB9O1xyXG4gICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0YTQuNC70YzRgtGA0LDRhtC40LguINC90YPQttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRg9C90LjQutCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INGH0YLQvtCx0Ysg0YTQuNC70YzRgtGA0LDRhtC40Y8g0LfQsNC/0YPRgdGC0LjQu9Cw0YHRjFxyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gJ3RyaWdnZXItJyArIE1hdGgucmFuZG9tKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyZWRWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQodGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLm1hcChmID0+IGYucm93U3JjKSlcclxuICB9XHJcblxyXG4gIHNvcnRUYWJsZShzb3J0UGFyYW1ldGVyczogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0LmVtaXQoc29ydFBhcmFtZXRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb246IHN0cmluZywgcm93czogVFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzQWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd3N9KTtcclxuICB9XHJcblxyXG4gIGVtaXRSb3dBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvdzogVCwgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5tYXN0ZXJUb2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0FsbFNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBjYXN0U3JjKHJvdzogYW55KTogVGFibGVSb3c8VD4ge1xyXG4gICAgcmV0dXJuIHJvdztcclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKHJvdzogVGFibGVSb3c8VD4pIHtcclxuICAgIGlmIChyb3cucm93U3JjICE9PSB0aGlzLmhpZ2hsaWdodGVkIHx8IChyb3cucm93U3JjID09PSB0aGlzLmhpZ2hsaWdodGVkICYmICF0aGlzLnRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5jYW5jZWxhYmxlKSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cucm93U3JjKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHJvdy5yb3dTcmM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGlvbk1vZGVsKCk6IFNlbGVjdGlvbk1vZGVsPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaG92ZXJUaW1lcjogYW55ID0gbnVsbDtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5ob3ZlclRpbWVyKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ1N0YXJ0KCRldmVudDogRHJhZ0V2ZW50LCByb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0VuYWJsZWQgJiYgdGhpcy5kcmFnRHJvcFByb3ZpZGVyLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd3MuZmluZChyID0+IHIuaWQgPT09IHJvdy5pZCkpIHtcclxuICAgICAgICB0aGlzLmRyYWdEcm9wUHJvdmlkZXIubWFuYWdlci5zdGFydERyYWcodGhpcy5fdGFibGVOYW1lLCBzZWxlY3RlZFJvd3MsICRldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRyYWdEcm9wUHJvdmlkZXIubWFuYWdlci5zdGFydERyYWcodGhpcy5fdGFibGVOYW1lLCBbcm93XSwgJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoJGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIHRoaXMuZHJhZ0Ryb3BQcm92aWRlci5tYW5hZ2VyLmNhbkRyb3AodGhpcy5fdGFibGVOYW1lLCAkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wKCRldmVudDogRHJhZ0V2ZW50LCByb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICB0aGlzLmRyYWdEcm9wUHJvdmlkZXIubWFuYWdlci5vbkRyb3AodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSwgdGhpcy5fdGFibGVOYW1lLCByb3cpXHJcbiAgICAgIC5zdWJzY3JpYmUocm93cyA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSByb3dzLm1hcChyb3cgPT4gKDxUYWJsZVJvdzxUPj5yb3cpLnJvd1NyYylcclxuICAgICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kKCRldmVudDogRHJhZ0V2ZW50LCByb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBsZXQgYXVyRW5kRHJhZ0V2ZW50ID0gdGhpcy5kcmFnRHJvcFByb3ZpZGVyLm1hbmFnZXIuZW5kRHJhZyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhKTtcclxuICAgIGlmIChhdXJFbmREcmFnRXZlbnQuaXNWYWxpZERyb3ApIHtcclxuICAgICAgYXVyRW5kRHJhZ0V2ZW50LmFmdGVyRGF0YVNldD8uc3Vic2NyaWJlKHJvd3MgPT4ge1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gcm93cy5tYXAocm93ID0+ICg8VGFibGVSb3c8VD4+cm93KS5yb3dTcmMpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnYm90dG9tLXBhZ2luYXRpb24nOiBwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkICYmIHBhZ2luYXRpb25Qcm92aWRlci5wb3NpdGlvbiA9PT0gJ2JvdHRvbSd9XCI+XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZz8uZW5hYmxlID8/IGZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuZ3hBdXJUYWJsZVNlYXJjaFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyB0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5U2VhcmNoRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3t0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuZ3hBdXJUYWJsZVNlYXJjaFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxyXG4gICAgICAgICBbbmdDbGFzc109XCJ7J2JvdHRvbS1wYWdpbmF0aW9uJzogcGFnaW5hdGlvblByb3ZpZGVyLmlzRW5hYmxlZCAmJiBwYWdpbmF0aW9uUHJvdmlkZXIucG9zaXRpb24gPT09ICdib3R0b20nfVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJoZWFkZXJCdXR0b25Qcm92aWRlci5pc0VuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1zZXR0aW5ncy1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlckJ1dHRvblByb3ZpZGVyLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImhlYWRlckJ1dHRvblByb3ZpZGVyLmJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSGVhZGVyQnV0dG9uLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICAgIHt7IGhlYWRlckJ1dHRvblByb3ZpZGVyLmljb24gfX1cclxuICAgICAgPC9tYXQtaWNvbj5cclxuXHJcbiAgICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICAgIDx0YWJsZSAjdGFibGUgbWF0LXRhYmxlIG1hdFNvcnRcclxuICAgICAgICAgICAgIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPVwiZXh0ZW5kZWRSb3dUZW1wbGF0ZSAhPT0gbnVsbFwiXHJcbiAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/LmhlaWdodFwiXHJcbiAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1heEhlaWdodFwiXHJcbiAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1pbkhlaWdodFwiXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hpZGUtdGFibGUtYm9keSc6IGlzVGFibGVCb2R5SGlkZX1cIj5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIGRyYWctY29sdW1uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRyYWdEcm9wUHJvdmlkZXIuaXNFbmFibGVkICYmIGRyYWdEcm9wUHJvdmlkZXIuZHJhZ2dhYmxlXCIgW21hdENvbHVtbkRlZl09XCJkcmFnRHJvcFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCIgY2xhc3M9XCJkcmFnLWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8bGliLWljb24tdmlldyAgZHJhZ2dhYmxlPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlld109XCJkcmFnRHJvcFByb3ZpZGVyLmRyYWdJY29uVmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdlbmQpPVwib25EcmFnRW5kKCRldmVudCwgZWxlbWVudClcIj5cclxuICAgICAgICAgICAgPC9saWItaWNvbi12aWV3PlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIGluZGV4LWNvbHVtbi0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmRleFByb3ZpZGVyLmlzRW5hYmxlZFwiIFttYXRDb2x1bW5EZWZdPVwiaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRVwiPlxyXG5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJpbmRleFByb3ZpZGVyLmhlYWRlclZpZXdcIj5cclxuICAgICAgICAgICAgICB7eyBpbmRleFByb3ZpZGVyLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9saWItY29sdW1uLXZpZXc+XHJcbiAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgICAgICAgICB7eyBlbGVtZW50LmlkICsgaW5kZXhQcm92aWRlci5vZmZzZXQgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUUpIHx8ICcnIH19XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgICBzZWxlY3Rpb24tY29sdW1uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cInNlbGVjdGlvblByb3ZpZGVyLkNPTFVNTl9OQU1FXCIgKm5nSWY9XCJzZWxlY3Rpb25Qcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZz8uc2hvd1NlbGVjdGVkQ291bnQgJiYgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnPy5zaG93VG90YWxDb3VudCAhPT0gZmFsc2VcIj4ve3sgcGFnaW5hdG9yU3RhdGU/Lmxlbmd0aCA/IHBhZ2luYXRvclN0YXRlPy5sZW5ndGggOiB0YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRhYmxlQ29uZmlnPy5zZWxlY3Rpb25DZmc/LmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmchLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb24uYWN0aW9uLCBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uc2VsZWN0ZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi5kaXNwbGF5ICE9PSAnbm9uZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24uaWNvbi5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi50b2dnbGUoY2FzdFNyYyhyb3cpLnJvd1NyYylcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi50b2dnbGUoY2FzdFNyYyhyb3cpLnJvd1NyYykgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaXNTZWxlY3RlZChjYXN0U3JjKHJvdykucm93U3JjKVwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gYWN0aW9uIGNvbHVtbiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93QWN0aW9uc1Byb3ZpZGVyLmlzRW5hYmxlZFwiIFttYXRDb2x1bW5EZWZdPVwicm93QWN0aW9uc1Byb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9uc1Byb3ZpZGVyLmFjdGlvblZpZXcuZ2V0KGVsZW1lbnQuaWQpXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0Um93QWN0aW9uKGFjdGlvbi5hY3Rpb24sIGVsZW1lbnQucm93U3JjLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24uZGlzcGxheSAhPT0gJ25vbmUnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5pY29uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uQ29uZmlnIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNDZmdcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkNvbmZpZy5rZXlcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIGlmIHNvcnRhYmxlIGNvbHVtbiBoZWFkZXIgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW5Db25maWcua2V5XCJcclxuICAgICAgICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbkNvbmZpZy5zb3J0LnBvc2l0aW9uID09PSAncmlnaHQnID8gJ2JlZm9yZScgOiAnYWZ0ZXInXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJWYWx1ZT5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImNvbHVtbkNvbmZpZy5oZWFkZXJWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgICAgPC9saWItY29sdW1uLXZpZXc+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgICAg0L/QvtC00LPQvtGC0L7QstC70LXQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy0tPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgICBbY29uZmlnXT1cInRhYmxlVmlld1tlbGVtZW50LmlkXT8uZ2V0KGNvbHVtbkNvbmZpZy5rZXkpXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uQ29uZmlnLmtleVwiPlxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgZXh0cmEgaGVhZGVyIHRvcCBjZWxsLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXh0cmFUb3BDZWxsIG9mIF9kaXNwbGF5RXh0cmFIZWFkZXJUb3BDZWxsOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImV4dHJhVG9wQ2VsbFwiPlxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXh0cmFIZWFkZXJDZWxsVG9wVGVtcGxhdGU7IGNvbnRleHQ6IHtrZXk6IGV4dHJhVG9wQ2VsbC5yZXBsYWNlKEVYVFJBX0hFQURFUl9DRUxMX1RPUF9TVUZGSVgsICcnKSwgaW5kZXg6IGluZGV4fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIGV4dHJhIGhlYWRlciBib3R0b20gY2VsbC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGV4dHJhQm90dG9tQ2VsbCAgb2YgX2Rpc3BsYXlFeHRyYUhlYWRlckJvdHRvbUNlbGw7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiZXh0cmFCb3R0b21DZWxsXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYUhlYWRlckNlbGxCb3R0b21UZW1wbGF0ZTsgY29udGV4dDoge2tleTogZXh0cmFCb3R0b21DZWxsLnJlcGxhY2UoRVhUUkFfSEVBREVSX0NFTExfQk9UVE9NX1NVRkZJWCwgJycpLCBpbmRleDogaW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgICBleHRyYSBoZWFkZXIgdG9wIHJvdy0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRyYUhlYWRlckNlbGxUb3BUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUV4dHJhSGVhZGVyVG9wQ2VsbDsgIHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJleHRyYS1oZWFkZXItdG9wLXJvd1wiPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgaGVhZGVyICByb3ctLT5cclxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIl9kaXNwbGF5Q29sdW1uczsgIHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LmhlYWRlclwiPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIGV4dHJhIGhlYWRlciBib3R0b20gcm93IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRyYUhlYWRlckNlbGxCb3R0b21UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cIl9kaXNwbGF5RXh0cmFIZWFkZXJCb3R0b21DZWxsOyAgc3RpY2t5OiB0aGlzLnRhYmxlQ29uZmlnLnN0aWNreUNmZz8uaGVhZGVyXCI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBfZGlzcGxheUNvbHVtbnM7XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3BvaW50ZXInOiB0YWJsZUNvbmZpZy5jbGlja0NmZz8ucG9pbnRlciB8fCBmYWxzZSwgJ25ldy1jb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYyAmJiB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yfVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdjb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogaGlnaGxpZ2h0ZWQgPT09IHJvdy5yb3dTcmM/IHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uYmFja2dyb3VuZCA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdib3JkZXInOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5ib3JkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8IS0tZXhwYW5kZWQtcm93LS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZFJvd1wiPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiZXhwYW5kZWQtY2VsbFwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDogMCFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgICBbQGRldGFpbEV4cGFuZF09XCJlbGVtZW50LnJvd1NyYyA9PT0gaGlnaGxpZ2h0ZWQgPyBleHBhbmRlZFN0YXRlRW51bS5FWFBBTkRFRCA6IGV4cGFuZGVkU3RhdGVFbnVtLkNPTExBUFNFRFwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gbGF6eS1sb2FkIG9mIGRldGFpbHMgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQucm93U3JjID09PSBoaWdobGlnaHRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dGVuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVuZGVkUm93VGVtcGxhdGVcIj5cclxuICAgICAgICAgIDx0ciBtYXQtcm93IGNsYXNzPVwiZXhwYW5kZWQtcm93XCIgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWRSb3cnXVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLWV4cGFuZGVkLXJvdy0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWxSb3dQcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiX2Rpc3BsYXlDb2x1bW5zOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy50b3RhbFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlXT1cInRvdGFsUm93UHJvdmlkZXIuc3R5bGVcIj48L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tc3ViLWZvb3Rlci1yb3ctLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YkZvb3RlclJvd1wiPlxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTdWJGb290ZXJSb3ddXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJGb290ZXJSb3dUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJbJ3N1YkZvb3RlclJvdyddOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5zdWJGb290ZXJcIj48L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gICAgICBzdWItZm9vdGVyLXJvdyBFTkQtLT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIFBhZ2luYXRpb24gLS0+XHJcbiAgQGlmICh0aGlzLnBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWQpIHtcclxuICAgIDxtYXQtcGFnaW5hdG9yIFtuZ0NsYXNzXT1cInsnaGlkZVBhZ2luYXRvcic6IGlzVGFibGVCb2R5SGlkZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25Qcm92aWRlci5zaXplXCJcclxuICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ0YWJsZUNvbmZpZz8ucGFnZWFibGVDZmc/LnN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yU3RhdGU/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRvclN0YXRlPy5wYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwicGFnZUNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyQ2VsbFRlbXBsYXRlIGxldC1jb2x1bW5OYW1lPlxyXG4gIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uTmFtZSkgfHwgJycgfX1cclxuICA8L3RkPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -8,6 +8,7 @@ import * as i4 from '@angular/material/paginator';
|
|
|
8
8
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
9
9
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
10
10
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
11
|
+
import { first } from 'rxjs';
|
|
11
12
|
import * as i1 from '@angular/common';
|
|
12
13
|
import { CommonModule } from '@angular/common';
|
|
13
14
|
import * as i2 from '@angular/material/icon';
|
|
@@ -584,7 +585,7 @@ class AurDragDropManager {
|
|
|
584
585
|
}
|
|
585
586
|
calcAfterDataSource(grabCtx) {
|
|
586
587
|
let mapping = this.mappings.find(m => m.sourceName === grabCtx.sourceName && m.targetName === grabCtx.targetName);
|
|
587
|
-
let mappedData = mapping.grabFn(grabCtx);
|
|
588
|
+
let mappedData = mapping.grabFn(grabCtx).pipe(first());
|
|
588
589
|
this.dragStartCtx = undefined;
|
|
589
590
|
this.dragEndCtx = undefined;
|
|
590
591
|
return mappedData;
|
|
@@ -610,7 +611,7 @@ class AurDragDropManager {
|
|
|
610
611
|
}
|
|
611
612
|
onDropInternal(dropCtx) {
|
|
612
613
|
let mapping = this.mappings.find(m => m.sourceName === dropCtx.sourceName && m.targetName === dropCtx.targetName);
|
|
613
|
-
let mappedData = mapping.dropFn(dropCtx);
|
|
614
|
+
let mappedData = mapping.dropFn(dropCtx).pipe(first());
|
|
614
615
|
this.dragEndCtx = {
|
|
615
616
|
name: dropCtx.targetName,
|
|
616
617
|
data: dropCtx.targetData
|
|
@@ -1022,14 +1023,19 @@ class NgxAurMatTableComponent {
|
|
|
1022
1023
|
this.dragDropProvider.manager.canDrop(this._tableName, $event);
|
|
1023
1024
|
}
|
|
1024
1025
|
onDrop($event, row) {
|
|
1025
|
-
this.
|
|
1026
|
-
|
|
1026
|
+
this.dragDropProvider.manager.onDrop(this.tableDataSource.data, this._tableName, row)
|
|
1027
|
+
.subscribe(rows => {
|
|
1028
|
+
this.tableData = rows.map(row => row.rowSrc);
|
|
1029
|
+
this.refreshTable();
|
|
1030
|
+
});
|
|
1027
1031
|
}
|
|
1028
1032
|
onDragEnd($event, row) {
|
|
1029
1033
|
let aurEndDragEvent = this.dragDropProvider.manager.endDrag(this.tableDataSource.data);
|
|
1030
1034
|
if (aurEndDragEvent.isValidDrop) {
|
|
1031
|
-
|
|
1032
|
-
|
|
1035
|
+
aurEndDragEvent.afterDataSet?.subscribe(rows => {
|
|
1036
|
+
this.tableData = rows.map(row => row.rowSrc);
|
|
1037
|
+
this.refreshTable();
|
|
1038
|
+
});
|
|
1033
1039
|
}
|
|
1034
1040
|
}
|
|
1035
1041
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxAurMatTableComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|