@beeq/angular 1.8.5-beta.2 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/directives/components.d.ts +6 -0
- package/esm2022/directives/components.mjs +3 -3
- package/esm2022/standalone/directives/components.mjs +3 -3
- package/fesm2022/beeq-angular-standalone.mjs +2 -2
- package/fesm2022/beeq-angular-standalone.mjs.map +1 -1
- package/fesm2022/beeq-angular.mjs +2 -2
- package/fesm2022/beeq-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/standalone/directives/components.d.ts +6 -0
|
@@ -1814,7 +1814,7 @@ If `true`, the Select is disabled and cannot be interacted with.
|
|
|
1814
1814
|
this.z = z;
|
|
1815
1815
|
c.detach();
|
|
1816
1816
|
this.el = r.nativeElement;
|
|
1817
|
-
proxyOutputs(this, this.el, ['bqBlur', 'bqClear', 'bqFocus', 'bqSelect']);
|
|
1817
|
+
proxyOutputs(this, this.el, ['bqBlur', 'bqClear', 'bqFocus', 'bqSelect', 'bqInput']);
|
|
1818
1818
|
}
|
|
1819
1819
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1820
1820
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSelect, selector: "bq-select", inputs: { autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", debounceTime: "debounceTime", disableClear: "disableClear", disabled: "disabled", distance: "distance", form: "form", keepOpenOnSelect: "keepOpenOnSelect", maxTagsVisible: "maxTagsVisible", multiple: "multiple", name: "name", open: "open", panelHeight: "panelHeight", placeholder: "placeholder", placement: "placement", readonly: "readonly", required: "required", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -1822,7 +1822,7 @@ If `true`, the Select is disabled and cannot be interacted with.
|
|
|
1822
1822
|
BqSelect = __decorate([
|
|
1823
1823
|
ProxyCmp({
|
|
1824
1824
|
inputs: ['autofocus', 'clearButtonLabel', 'debounceTime', 'disableClear', 'disabled', 'distance', 'form', 'keepOpenOnSelect', 'maxTagsVisible', 'multiple', 'name', 'open', 'panelHeight', 'placeholder', 'placement', 'readonly', 'required', 'sameWidth', 'skidding', 'strategy', 'validationStatus', 'value'],
|
|
1825
|
-
methods: ['clear']
|
|
1825
|
+
methods: ['clear', 'reset']
|
|
1826
1826
|
}),
|
|
1827
1827
|
__metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
|
|
1828
1828
|
], BqSelect);
|
|
@@ -2702,4 +2702,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2702
2702
|
inputs: ['alwaysVisible', 'displayOn', 'distance', 'hideArrow', 'placement', 'sameWidth', 'visible'],
|
|
2703
2703
|
}]
|
|
2704
2704
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
|
|
2705
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlZXEtYW5ndWxhci9zcmMvZGlyZWN0aXZlcy9jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxvQkFBb0I7QUFDcEIsOENBQThDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFlaEUsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUVwQjs7S0FFQztJQUNILElBQUksVUFBVSxDQUFDLENBQXVDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDekQ7O0tBRUM7SUFDSCxJQUFJLFFBQVEsQ0FBQyxDQUFxQyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQ3JEOztLQUVDO0lBQ0gsSUFBSSxRQUFRLENBQUMsQ0FBcUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNyRDs7O0tBR0M7SUFDSCxJQUFJLFdBQVcsQ0FBQyxDQUF3QyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQzNEOztLQUVDO0lBQ0gsSUFBSSxNQUFNLENBQUMsQ0FBbUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNqRDs7S0FFQztJQUNILElBQUksSUFBSSxDQUFDLENBQWlDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDL0MsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNB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SSxTQUFTLENBQUMsQ0FBb0MsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNyRDs7S0FFQztJQUNILElBQUksU0FBUyxDQUFDLENBQW9DLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDckQ7OztLQUdDO0lBQ0gsSUFBSSxPQUFPLENBQUMsQ0FBa0MsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNuRCxZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO2tJQWpDVSxTQUFTO3NIQUFULFNBQVMsd09BSlYsMkJBQTJCOztBQUkxQixTQUFTO0lBWHJCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUNwRyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0tBQzFCLENBQUM7cUNBc0NlLGlCQUFpQixFQUFLLFVBQVUsRUFBZSxNQUFNO0dBOUJ6RCxTQUFTLENBa0NyQjs7NEZBbENZLFNBQVM7a0JBUHJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztpQkFDckciLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogYXV0by1nZW5lcmF0ZWQgYW5ndWxhciBkaXJlY3RpdmUgcHJveGllcyAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAYmVlcS9jb3JlJztcblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdub0FuaW1hdGlvbicsICdyb3RhdGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ25vQW5pbWF0aW9uJywgJ3JvdGF0ZScsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFBY2NvcmRpb25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYXBwZWFyYW5jZSBzdHlsZSBvZiB0aGUgQWNjb3JkaW9uXG4gICAqL1xuICBzZXQgYXBwZWFyYW5jZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydhcHBlYXJhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgQWNjb3JkaW9uIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvblsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBBY2NvcmRpb24gaXMgZXhwYW5kZWRcbiAgICovXG4gIHNldCBleHBhbmRlZChfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydleHBhbmRlZCddKSB7fTtcbiAgICAvKipcbiAgICogQW5pbWF0aW9uIGlzIHNldCB0aHJvdWdoIEpTIHdoZW4gdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBDU1MgY2FsYy1zaXplKClcbklmIHRydWUsIHRoZSBBY2NvcmRpb24gYW5pbWF0aW9uLCB3aWxsIGJlIGRpc2FibGVkLiBObyBhbmltYXRpb24gd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgc2V0IG5vQW5pbWF0aW9uKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ25vQW5pbWF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgQWNjb3JkaW9uIGV4cGFuZCBpY29uIGlzIHJvdGF0ZSAxODBkZWcgd2hlbiBleHBhbmRlZFxuICAgKi9cbiAgc2V0IHJvdGF0ZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydyb3RhdGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBBY2NvcmRpb25cbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUNsb3NlJywgJ2JxQWZ0ZXJDbG9zZScsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUFjY29yZGlvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFjY29yZGlvbiBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGlzIG9wZW5lZFxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFjY29yZGlvbiBpcyBvcGVuZWRcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGlzIGNsb3NlZFxuICAgKi9cbiAgYnFDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBhY2NvcmRpb24gaXMgY2xvc2VkXG4gICAqL1xuICBicUFmdGVyQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdleHBhbmRBbGwnLCAnbXVsdGlwbGUnLCAnbm9BbmltYXRpb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYWNjb3JkaW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2V4cGFuZEFsbCcsICdtdWx0aXBsZScsICdub0FuaW1hdGlvbicsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQWNjb3JkaW9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUFjY29yZGlvbkdyb3VwRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGFwcGVhcmFuY2Ugc3R5bGUgb2YgYWNjb3JkaW9uIHRvIGJlIGFwcGxpZWQgdG8gYWxsIGFjY29yZGlvbnNcbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25Hcm91cFsnYXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBhbGwgYWNjb3JkaW9ucyBhcmUgZXhwYW5kZWRcbiAgICovXG4gIHNldCBleHBhbmRBbGwoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwWydleHBhbmRBbGwnXSkge307XG4gICAgLyoqXG4gICAqIEFuaW1hdGlvbiBpcyBzZXQgdGhyb3VnaCBKUyB3aGVuIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgQ1NTIGNhbGMtc2l6ZSgpXG5JZiB0cnVlLCB0aGUgYWNjb3JkaW9uIGFuaW1hdGlvbiwgd2lsbCBiZSBkaXNhYmxlZC4gTm8gYW5pbWF0aW9uIHdpbGwgYmUgYXBwbGllZC5cbiAgICovXG4gIHNldCBub0FuaW1hdGlvbihfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ25vQW5pbWF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIG11bHRpcGxlIGFjY29yZGlvbnMgY2FuIGJlIGV4cGFuZGVkIGF0IHRoZSBzYW1lIHRpbWVcbiAgICovXG4gIHNldCBtdWx0aXBsZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ211bHRpcGxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiBhY2NvcmRpb24gdG8gYmUgYXBwbGllZCB0byBhbGwgYWNjb3JkaW9uc1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUFjY29yZGlvbkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9EaXNtaXNzJywgJ2JvcmRlcicsICdkaXNhYmxlQ2xvc2UnLCAnaGlkZUljb24nLCAnb3BlbicsICdzdGlja3knLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3N0aWNreScsICd0aW1lJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBbGVydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQWxlcnRFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYWxlcnQgd2lsbCBhdXRvbWF0aWNhbGx5IGhpZGUgYWZ0ZXIgdGhlIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZVxuICAgKi9cbiAgc2V0IGF1dG9EaXNtaXNzKF86IENvbXBvbmVudHMuQnFBbGVydFsnYXV0b0Rpc21pc3MnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBhbGVydCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUFsZXJ0Wydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbG9zZSBidXR0b24gYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgYWxlcnQgd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBkaXNhYmxlQ2xvc2UoXzogQ29tcG9uZW50cy5CcUFsZXJ0WydkaXNhYmxlQ2xvc2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBhbGVydCBpY29uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcUFsZXJ0WydoaWRlSWNvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFsZXJ0IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFBbGVydFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSBhbGVydCB3aWxsIGNsb3NlIGl0c2VsZi4gT25seSB2YWxpZCBpZiBgYXV0b0Rpc21pc3M9XCJ0cnVlXCJgXG4gICAqL1xuICBzZXQgdGltZShfOiBDb21wb25lbnRzLkJxQWxlcnRbJ3RpbWUnXSkge307XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgQWxlcnRcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFBbGVydFsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFsZXJ0IGNvbXBvbmVudCB3aWxsIHJlbWFpbiBmaXhlZCBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBvY2N1cHlpbmcgdGhlIGZ1bGwgdmlld3BvcnRcbiAgICovXG4gIHNldCBzdGlja3koXzogQ29tcG9uZW50cy5CcUFsZXJ0WydzdGlja3knXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnLCAnYnFBZnRlclNob3cnLCAnYnFBZnRlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFBbGVydCBleHRlbmRzIENvbXBvbmVudHMuQnFBbGVydCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhbGVydCBpcyBoaWRkZW5cbiAgICovXG4gIGJxSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWxlcnQgaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIHNob3duXG4gICAqL1xuICBicUFmdGVyU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIGhpZGRlblxuICAgKi9cbiAgYnFBZnRlckhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0VGV4dCcsICdpbWFnZScsICdpbml0aWFscycsICdsYWJlbCcsICdzaGFwZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hdmF0YXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsdFRleHQnLCAnaW1hZ2UnLCAnaW5pdGlhbHMnLCAnbGFiZWwnLCAnc2hhcGUnLCAnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQXZhdGFyRWxlbWVudDtcbiAgICAvKipcbiAgICogQWx0ZXJuYXRlIHRleHQgZm9yIHRoZSBhdmF0YXIgaW1hZ2UgaWYgdGhlIGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBhbHRUZXh0KF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2FsdFRleHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbWFnZSBzb3VyY2UgdG8gbG9hZCBvbiB0aGUgYXZhdGFyICh0aGlzIGNhbiBiZSBhbHNvIGEgYmFzZTY0IGVuY29kZWQgaW1hZ2UpXG4gICAqL1xuICBzZXQgaW1hZ2UoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnaW1hZ2UnXSkge307XG4gICAgLyoqXG4gICAqIEEgdGV4dCB0byB1c2UgZm9yIGRlc2NyaWJpbmcgdGhlIGF2YXRhciBvbiBhc3Npc3RpdmUgZGV2aWNlc1xuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2xhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IG9uIGF2YXRhclxuICAgKi9cbiAgc2V0IGluaXRpYWxzKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2luaXRpYWxzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2hhcGUgb2YgdGhlIGF2YXRhclxuICAgKi9cbiAgc2V0IHNoYXBlKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ3NoYXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgYXZhdGFyXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxQXZhdGFyWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUF2YXRhciBleHRlbmRzIENvbXBvbmVudHMuQnFBdmF0YXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ3NpemUnLCAndGV4dENvbG9yJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ3NpemUnLCAndGV4dENvbG9yJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQmFkZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJhZGdlRWxlbWVudDtcbiAgICAvKipcbiAgICogQmFkZ2UgYmFja2dyb3VuZCBjb2xvci4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZENvbG9yKF86IENvbXBvbmVudHMuQnFCYWRnZVsnYmFja2dyb3VuZENvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBCYWRnZSBudW1iZXIgY29sb3IuIFRoZSB2YWx1ZSBzaG91bGQgYmUgYSB2YWxpZCB2YWx1ZSBvZiB0aGUgcGFsZXR0ZSBjb2xvclxuICAgKi9cbiAgc2V0IHRleHRDb2xvcihfOiBDb21wb25lbnRzLkJxQmFkZ2VbJ3RleHRDb2xvciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGJhZGdlLiBSZWxldmFudCBpZiBiYWRnZSBoYXMgbm8gY29udGVudC5cbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFCYWRnZVsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuQnFCYWRnZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnbGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCcmVhZGNydW1iIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFCcmVhZGNydW1iRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gZGVzY3JpYmUgdGhlIHR5cGUgb2YgbmF2aWdhdGlvblxuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iWydsYWJlbCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCcmVhZGNydW1iIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJyZWFkY3J1bWIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaHJlZicsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2hyZWYnLCAncmVsJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUJyZWFkY3J1bWJJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHNldCwgdGhlIGJyZWFkY3J1bWIgaXRlbSB3aWxsIGJlIHJlbmRlcmVkIGFzIGFuIGA8YT5gIHdpdGggdGhpcyBgaHJlZmAsIG90aGVyd2lzZSwgYSBgPGJ1dHRvbj5gIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqL1xuICBzZXQgaHJlZihfOiBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW1bJ2hyZWYnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmsgaW4gdGhlIGJyb3dzZXIgY29udGV4dC4gUmVsZXZhbnQgb25seSBpZiBgaHJlZmAgaXMgc2V0LlxuICAgKi9cbiAgc2V0IHRhcmdldChfOiBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW1bJ3RhcmdldCddKSB7fTtcbiAgICAvKipcbiAgICogV2hlcmUgdG8gZGlzcGxheSB0aGUgbGluayBpbiB0aGUgYnJvd3NlciBjb250ZXh0LiBSZWxldmFudCBvbmx5IGlmIGBocmVmYCBpcyBzZXQuXG4gICAqL1xuICBzZXQgcmVsKF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iSXRlbVsncmVsJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnJlYWRjcnVtYkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Jsb2NrJywgJ2JvcmRlcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ2p1c3RpZnlDb250ZW50JywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0YXJnZXQnLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnYmxvY2snLCAnYm9yZGVyJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnanVzdGlmeUNvbnRlbnQnLCAnbG9hZGluZycsICdzaXplJywgJ3RhcmdldCcsICd0eXBlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJ1dHRvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIHN0eWxlIHRvIGFwcGx5IHRvIHRoZSBidXR0b25cbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFCdXR0b25bJ2FwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgd2lsbCBtYWtlIHRoZSBidXR0b24gZml0IHRvIGl0cyBwYXJlbnQgd2lkdGguXG4gICAqL1xuICBzZXQgYmxvY2soXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnYmxvY2snXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBidXR0b25cbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnYm9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQgKG5vIGludGVyYWN0aW9uIGFsbG93ZWQpXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRlbGxzIHRoZSBicm93c2VyIHRvIHRyZWF0IHRoZSBsaW5rZWQgVVJMIGFzIGEgZG93bmxvYWQuIE9ubHkgdXNlZCB3aGVuIGBocmVmYCBpcyBzZXQuXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWRvd25sb2FkXG4gICAqL1xuICBzZXQgZG93bmxvYWQoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnZG93bmxvYWQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZW4gc2V0LCB0aGUgdW5kZXJseWluZyBidXR0b24gd2lsbCBiZSByZW5kZXJlZCBhcyBhbiBgPGE+YCB3aXRoIHRoaXMgYGhyZWZgIGluc3RlYWQgb2YgYSBgPGJ1dHRvbj5gXG4gICAqL1xuICBzZXQgaHJlZihfOiBDb21wb25lbnRzLkJxQnV0dG9uWydocmVmJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZXRlcm1pbmF0ZSBob3cgdGhlIGNvbnRlbnQgc2hvdWxkIGJlIGFsaWduZWRcbiAgICovXG4gIHNldCBqdXN0aWZ5Q29udGVudChfOiBDb21wb25lbnRzLkJxQnV0dG9uWydqdXN0aWZ5Q29udGVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgIGl0IHdpbGwgZGlzcGxheSB0aGUgYnV0dG9uIGluIGEgbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgc2V0IGxvYWRpbmcoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnbG9hZGluZyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGJ1dHRvblxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogV2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTCwgYXMgdGhlIG5hbWUgZm9yIGEgYnJvd3NpbmcgY29udGV4dCAoYSBgdGFiYCwgYHdpbmRvd2AsIG9yIGA8aWZyYW1lPmApXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLXRhcmdldFxuICAgKi9cbiAgc2V0IHRhcmdldChfOiBDb21wb25lbnRzLkJxQnV0dG9uWyd0YXJnZXQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBidXR0b25cbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFCdXR0b25bJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIGJ1dHRvbiB0byBhcHBseSBvbiB0b3Agb2YgdGhlIGFwcGVhcmFuY2UgKGFwcGxpY2FibGUgb25seSB0byBgYXBwZWFyYW5jZT1cInByaW1hcnlcImApXG4gICAqL1xuICBzZXQgdmFyaWFudChfOiBDb21wb25lbnRzLkJxQnV0dG9uWyd2YXJpYW50J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnV0dG9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBidXR0b24gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQ2FyZEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgY2FyZCBjb21wb25lbnRcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFDYXJkWyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29ybmVyIHJhZGl1cyBvZiB0aGUgY2FyZCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUNhcmRbJ2JvcmRlciddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5CcUNhcmQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtSWQnLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2luZGV0ZXJtaW5hdGUnLCAnbmFtZScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3ZDbGljaycsICd2Rm9jdXMnLCAndkJsdXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWNoZWNrYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnaW5kZXRlcm1pbmF0ZScsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUNoZWNrYm94RWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBjaGVja2JveCBkaXNwbGF5cyBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZE9uSG92ZXIoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydiYWNrZ3JvdW5kT25Ib3ZlciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGZvcm0gSUQgdGhhdCB0aGUgY2hlY2tib3ggaXMgYXNzb2NpYXRlZCB3aXRoXG4gICAqL1xuICBzZXQgZm9ybUlkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZm9ybUlkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZm9ybVZhbGlkYXRpb25NZXNzYWdlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIGNoZWNrYm94IGlzIGNoZWNrZWRcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnY2hlY2tlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBjaGVja2JveCBpcyBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RhdGUgdGhhdCBpcyBuZWl0aGVyIGNoZWNrZWQgbm9yIHVuY2hlY2tlZFxuICAgKi9cbiAgc2V0IGluZGV0ZXJtaW5hdGUoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydpbmRldGVybWluYXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBIVE1MIGlucHV0IGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpci5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBpdCB3aWxsIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgbXVzdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIHRoZSBjaGVja2JveCBiZWZvcmUgdGhlIG93bmluZyBmb3JtIGNhbiBiZSBzdWJtaXR0ZWRcbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxQ2hlY2tib3hbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveC4gUHJpbWFyaWx5IHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBhIGxpc3Qgb2YgcmVsYXRlZCBjaGVja2JveGVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBuYW1lLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxRm9jdXMnLCAnYnFCbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQ2hlY2tib3ggZXh0ZW5kcyBDb21wb25lbnRzLkJxQ2hlY2tib3gge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUNoZWNrYm94RWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUNoZWNrYm94RWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkaXNhYmxlQ2xlYXInLCAnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAnZmlyc3REYXlPZldlZWsnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnZm9ybWF0T3B0aW9ucycsICdpc0RhdGVEaXNhbGxvd2VkJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ21vbnRocycsICdtb250aHNQZXJWaWV3JywgJ25hbWUnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAnc2hvd091dHNpZGVEYXlzJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5JywgJ3RlbnRhdGl2ZScsICd0eXBlJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydjbGVhciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZGF0ZS1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGVhckJ1dHRvbkxhYmVsJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmaXJzdERheU9mV2VlaycsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdmb3JtYXRPcHRpb25zJywgJ2lzRGF0ZURpc2FsbG93ZWQnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbW9udGhzJywgJ21vbnRoc1BlclZpZXcnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdzaG93T3V0c2lkZURheXMnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndGVudGF0aXZlJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURhdGVQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcURhdGVQaWNrZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBEYXRlIHBpY2tlciBpbnB1dCB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnYXV0b2ZvY3VzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY2xlYXIgYnV0dG9uIGFyaWEgbGFiZWxcbiAgICovXG4gIHNldCBjbGVhckJ1dHRvbkxhYmVsKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydjbGVhckJ1dHRvbkxhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjbGVhciBidXR0b24gd29uJ3QgYmUgZGlzcGxheWVkXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsZWFyKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydkaXNhYmxlQ2xlYXInXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBEYXRlIHBpY2tlciBpbnB1dCBpcyBkaXNhYmxlZCBvciBub3QuXG5JZiBgdHJ1ZWAsIHRoZSBEYXRlIHBpY2tlciBpcyBkaXNhYmxlZCBhbmQgY2Fubm90IGJlIGludGVyYWN0ZWQgd2l0aC5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGRpc3RhbmNlIChndXR0ZXIgb3IgbWFyZ2luKSBiZXR3ZWVuIHRoZSBEYXRlIHBpY2tlciBwYW5lbCBhbmQgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2Rpc3RhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCB3aGVyZSBTdW5kYXkgaXMgMCwgTW9uZGF5IGlzIDEsIGV0Y1xuICAgKi9cbiAgc2V0IGZpcnN0RGF5T2ZXZWVrKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydmaXJzdERheU9mV2VlayddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG9wdGlvbnMgdG8gdXNlIHdoZW4gZm9ybWF0dGluZyB0aGUgZGlzcGxheWVkIHZhbHVlLlxuRGV0YWlsczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9EYXRlVGltZUZvcm1hdCN1c2luZ19vcHRpb25zXG4gICAqL1xuICBzZXQgZm9ybWF0T3B0aW9ucyhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZm9ybWF0T3B0aW9ucyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBmb3JtIHRoYXQgdGhlIERhdGUgcGlja2VyIGlucHV0IGJlbG9uZ3MgdG8uXG4gICAqL1xuICBzZXQgZm9ybShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZm9ybSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSAobWFuZGF0b3J5IGlmIGByZXF1aXJlZGAgaXMgc2V0KVxuICAgKi9cbiAgc2V0IGZvcm1WYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZm9ybVZhbGlkYXRpb25NZXNzYWdlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBkYXRlIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIGRhdGUgc2hvdWxkIG5vdCBiZSBzZWxlY3RhYmxlXG4gICAqL1xuICBzZXQgaXNEYXRlRGlzYWxsb3dlZChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnaXNEYXRlRGlzYWxsb3dlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxvY2FsZSBmb3IgZm9ybWF0dGluZyBkYXRlcy4gSWYgbm90IHNldCwgd2lsbCB1c2UgdGhlIGJyb3dzZXIncyBsb2NhbGUuXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsI2xvY2FsZXNfYXJndW1lbnRcbiAgICovXG4gIHNldCBsb2NhbGUoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2xvY2FsZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxhdGVzdCBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkXG4gICAqL1xuICBzZXQgbWF4KF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydtYXgnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBlYXJsaWVzdCBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkXG4gICAqL1xuICBzZXQgbWluKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydtaW4nXSkge307XG4gICAgLyoqXG4gICAqIE51bWJlciBvZiBtb250aHMgdG8gc2hvdyB3aGVuIHJhbmdlIGlzIGB0cnVlYFxuICAgKi9cbiAgc2V0IG1vbnRocyhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnbW9udGhzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRoZSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMgc2hvdWxkIG5hdmlnYXRlIHRoZSBjYWxlbmRhci5cbi0gc2luZ2xlOiBUaGUgYnV0dG9ucyB3aWxsIG5hdmlnYXRlIGJ5IGEgc2luZ2xlIG1vbnRoIGF0IGEgdGltZS5cbi0gbW9udGhzOiBUaGUgYnV0dG9ucyB3aWxsIG5hdmlnYXRlIGJ5IHRoZSBudW1iZXIgb2YgbW9udGhzIGRpc3BsYXllZCBwZXIgdmlldy5cbiAgICovXG4gIHNldCBtb250aHNQZXJWaWV3KF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydtb250aHNQZXJWaWV3J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgRGF0ZSBwaWNrZXIgaW5wdXQgbmFtZS5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBEYXRlIHBpY2tlciBwYW5lbCB3aWxsIGJlIHZpc2libGUuXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogV2hlbiBzZXQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGhlaWdodCBvZiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWwuXG4gICAqL1xuICBzZXQgcGFuZWxIZWlnaHQoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3BhbmVsSGVpZ2h0J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgRGF0ZSBwaWNrZXIgaW5wdXQgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZVxuICAgKi9cbiAgc2V0IHBsYWNlaG9sZGVyKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydwbGFjZWhvbGRlciddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIERhdGUgcGlja2VyIHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgRGF0ZSBwaWNrZXIgaW5wdXQgaXMgcmVxdWlyZWQgdG8gYmUgZmlsbGVkIG91dCBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS5cbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHNraWRkaW5nIGJldHdlZW4gdGhlIERhdGUgcGlja2VyIHBhbmVsIGFuZCB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICovXG4gIHNldCBza2lkZGluZyhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnc2tpZGRpbmcnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBkYXlzIG91dHNpZGUgdGhlIG1vbnRoXG4gICAqL1xuICBzZXQgc2hvd091dHNpZGVEYXlzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydzaG93T3V0c2lkZURheXMnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHN0cmF0ZWd5IHRvIHBvc2l0aW9uIHRoZSBEYXRlIHBpY2tlciBwYW5lbFxuICAgKi9cbiAgc2V0IHN0cmF0ZWd5KF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydzdHJhdGVneSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRhdGUgdGhhdCBpcyB0ZW50YXRpdmVseSBzZWxlY3RlZCBlLmcuIHRoZSBzdGFydCBvZiBhIHJhbmdlIHNlbGVjdGlvblxuICAgKi9cbiAgc2V0IHRlbnRhdGl2ZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndGVudGF0aXZlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIGhvdyB0aGUgY2FsZW5kYXIgd2lsbCBiZWhhdmUsIGFsbG93aW5nIHNpbmdsZSBkYXRlIHNlbGVjdGlvbiwgcmFuZ2Ugc2VsZWN0aW9uLCBvciBtdWx0aXBsZSBkYXRlIHNlbGVjdGlvblxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiB0aGUgU2VsZWN0IGlucHV0LiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBzZWxlY3QgaW5wdXQuIEl0IGNhbiBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLSBgJ25vbmUnYDogTm8gdmFsaWRhdGlvbiBzdGF0dXMgaXMgc2V0LlxuLSBgJ2Vycm9yJ2A6IFRoZSBpbnB1dCBoYXMgYSB2YWxpZGF0aW9uIGVycm9yLlxuLSBgJ3dhcm5pbmcnYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gd2FybmluZy5cbi0gYCdzdWNjZXNzJ2A6IFRoZSBpbnB1dCBoYXMgcGFzc2VkIHZhbGlkYXRpb24uXG4gICAqL1xuICBzZXQgdmFsaWRhdGlvblN0YXR1cyhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndmFsaWRhdGlvblN0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNlbGVjdCBpbnB1dCB2YWx1ZSByZXByZXNlbnRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSBvciByYW5nZSBhbmQgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIGZpZWxkIHRvIGEgcHJldmlvdXMgdmFsdWUuXG5BbGwgZGF0ZXMgYXJlIGV4cGVjdGVkIGluIElTTy04NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCkuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuQnFEYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBoYXMgY2hhbmdlZCBhbmQgdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdXNlciBmaW5pc2hlcyB0eXBpbmcgb3IgcGFzdGluZyB0ZXh0IGludG8gdGhlIGlucHV0IGZpZWxkIGFuZCB0aGVuIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIGJxQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBlbDogSFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBiZWVuIGNsZWFyZWRcbiAgICovXG4gIGJxQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFEYXRlUGlja2VyRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcURhdGVQaWNrZXJFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdkaXNhYmxlQmFja2Ryb3AnLCAnZGlzYWJsZUNsb3NlQ2xpY2tPdXRzaWRlJywgJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nLCAnZm9vdGVyQXBwZWFyYW5jZScsICdoaWRlQ2xvc2VCdXR0b24nLCAnb3BlbicsICdzaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ2NhbmNlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZGlhbG9nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnZGlzYWJsZUJhY2tkcm9wJywgJ2Rpc2FibGVDbG9zZUNsaWNrT3V0c2lkZScsICdkaXNhYmxlQ2xvc2VFc2NLZXlkb3duJywgJ2Zvb3RlckFwcGVhcmFuY2UnLCAnaGlkZUNsb3NlQnV0dG9uJywgJ29wZW4nLCAnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRGlhbG9nRWxlbWVudDtcbiAgICAvKipcbiAgICogQm9yZGVyIHJhZGl1cyBvZiB0aGUgZGlhbG9nIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBiYWNrZHJvcCBvdmVybGF5IHdvbid0IGJlIHNob3duIHdoZW4gdGhlIGRpYWxvZyBvcGVuc1xuICAgKi9cbiAgc2V0IGRpc2FibGVCYWNrZHJvcChfOiBDb21wb25lbnRzLkJxRGlhbG9nWydkaXNhYmxlQmFja2Ryb3AnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBub3QgY2xvc2Ugd2hlbiB0aGUgW0VzY10ga2V5IGlzIHByZXNzXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsb3NlRXNjS2V5ZG93bihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydkaXNhYmxlQ2xvc2VFc2NLZXlkb3duJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZGlhbG9nIHdpbGwgbm90IGNsb3NlIHdoZW4gY2xpY2tpbmcgb24gdGhlIGJhY2tkcm9wIG92ZXJsYXlcbiAgICovXG4gIHNldCBkaXNhYmxlQ2xvc2VDbGlja091dHNpZGUoXzogQ29tcG9uZW50cy5CcURpYWxvZ1snZGlzYWJsZUNsb3NlQ2xpY2tPdXRzaWRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgYXBwZWFyYW5jZSBvZiBmb290ZXJcbiAgICovXG4gIHNldCBmb290ZXJBcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2Zvb3RlckFwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIGl0IGhpZGVzIHRoZSBjbG9zZSBidXR0b25cbiAgICovXG4gIHNldCBoaWRlQ2xvc2VCdXR0b24oXzogQ29tcG9uZW50cy5CcURpYWxvZ1snaGlkZUNsb3NlQnV0dG9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZGlhbG9nIHdpbGwgYmUgc2hvd24gYXMgb3BlblxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcURpYWxvZ1snb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGRpYWxvZ1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcURpYWxvZ1snc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDYW5jZWwnLCAnYnFDbG9zZScsICdicU9wZW4nLCAnYnFBZnRlck9wZW4nLCAnYnFBZnRlckNsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5CcURpYWxvZyB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIGhhcyBiZWVuIGNhbmNlbGVkIG9yIGRpc21pc3NlZFxuICAgKi9cbiAgYnFDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIHdpbGwgY2xvc2VcbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIHdpbGwgb3BlblxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyBmaW5pc2ggb3BlbmluZ1xuICAgKi9cbiAgYnFBZnRlck9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIGZpbmlzaCBjbG9zaW5nXG4gICAqL1xuICBicUFmdGVyQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rhc2hlZCcsICdvcmllbnRhdGlvbicsICdzdHJva2VCYXNpcycsICdzdHJva2VDb2xvcicsICdzdHJva2VEYXNoR2FwJywgJ3N0cm9rZURhc2hXaWR0aCcsICdzdHJva2VMaW5lY2FwJywgJ3N0cm9rZVRoaWNrbmVzcycsICd0aXRsZUFsaWdubWVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZGl2aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGFzaGVkJywgJ29yaWVudGF0aW9uJywgJ3N0cm9rZUJhc2lzJywgJ3N0cm9rZUNvbG9yJywgJ3N0cm9rZURhc2hHYXAnLCAnc3Ryb2tlRGFzaFdpZHRoJywgJ3N0cm9rZUxpbmVjYXAnLCAnc3Ryb2tlVGhpY2tuZXNzJywgJ3RpdGxlQWxpZ25tZW50J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRGl2aWRlckVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaXZpZGVyIGhhcyBhIGRhc2hlZCBwYXR0ZXJuXG4gICAqL1xuICBzZXQgZGFzaGVkKF86IENvbXBvbmVudHMuQnFEaXZpZGVyWydkYXNoZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG9yaWVudGF0aW9uIG9mIHRoZSBkaXZpZGVyXG4gICAqL1xuICBzZXQgb3JpZW50YXRpb24oXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ29yaWVudGF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIHN0cm9rZSBjb2xvciBvZiB0aGUgZGl2aWRlci4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgc3Ryb2tlQ29sb3IoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZUNvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIGFsaWdubWVudCBvZiB0aGUgdGl0bGUgb24gdGhlIG1haW4gYXhpcyBvZiB0aGUgZGl2aWRlciAoaG9yaXpvbnRhbCAvIHZlcnRpY2FsKVxuICAgKi9cbiAgc2V0IHRpdGxlQWxpZ25tZW50KF86IENvbXBvbmVudHMuQnFEaXZpZGVyWyd0aXRsZUFsaWdubWVudCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSB3aWR0aCBvZiBlYWNoIGRhc2ggb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFRoaXMgaXMgYXBwbGljYWJsZSB3aGVuIHRoZSBzdHJva2UgaXMgZGFzaGVkXG4gICAqL1xuICBzZXQgc3Ryb2tlRGFzaFdpZHRoKF86IENvbXBvbmVudHMuQnFEaXZpZGVyWydzdHJva2VEYXNoV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgZ2FwIG9mIHRoZSBkaXZpZGVyJ3Mgc3Ryb2tlLiBUaGlzIGlzIGFwcGxpY2FibGUgd2hlbiB0aGUgc3Ryb2tlIGlzIGRhc2hlZFxuICAgKi9cbiAgc2V0IHN0cm9rZURhc2hHYXAoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZURhc2hHYXAnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgdGhpY2tuZXNzIG9mIHRoZSBkaXZpZGVyJ3Mgc3Ryb2tlLiBWYWx1ZSBleHByZXNzZWQgaW4gcHhcbiAgICovXG4gIHNldCBzdHJva2VUaGlja25lc3MoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZVRoaWNrbmVzcyddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBtaW4gd2lkdGggb2YgdGhlIGRpdmlkZXIncyBzdHJva2Ugd2hlbiB0ZXh0IGlzIG5vdCBjZW50ZXJlZC4gVmFsdWUgZXhwcmVzc2VkIGluIHB4XG4gICAqL1xuICBzZXQgc3Ryb2tlQmFzaXMoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZUJhc2lzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIGxpbmUgb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFRoaXMgaXMgYXBwbGljYWJsZSB3aGVuIHRoZSBzdHJva2UgaXMgZGFzaGVkXG4gICAqL1xuICBzZXQgc3Ryb2tlTGluZWNhcChfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlTGluZWNhcCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5CcURpdmlkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2xvc2VPbkNsaWNrT3V0c2lkZScsICdjbG9zZU9uRXNjJywgJ2VuYWJsZUJhY2tkcm9wJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kcmF3ZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Nsb3NlT25DbGlja091dHNpZGUnLCAnY2xvc2VPbkVzYycsICdlbmFibGVCYWNrZHJvcCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvbiddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURyYXdlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRHJhd2VyRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJhY2tkcm9wIG92ZXJsYXkgd2lsbCBiZSBzaG93biB3aGVuIHRoZSBkcmF3ZXIgb3BlbnNcbiAgICovXG4gIHNldCBlbmFibGVCYWNrZHJvcChfOiBDb21wb25lbnRzLkJxRHJhd2VyWydlbmFibGVCYWNrZHJvcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRyYXdlciB3aWxsIG5vdCBjbG9zZSB3aGVuIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgY2xvc2VPbkNsaWNrT3V0c2lkZShfOiBDb21wb25lbnRzLkJxRHJhd2VyWydjbG9zZU9uQ2xpY2tPdXRzaWRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZGlhbG9nIHdpbGwgbm90IGNsb3NlIHdoZW4gdGhlIFtFc2NdIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBzZXQgY2xvc2VPbkVzYyhfOiBDb21wb25lbnRzLkJxRHJhd2VyWydjbG9zZU9uRXNjJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZHJhd2VyIGNvbXBvbmVudCB3aWxsIGJlIHNob3duXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxRHJhd2VyWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWQgRGVmaW5lcyB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYXdlclxuICAgKi9cbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxRHJhd2VyWydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmF3ZXJcbiAgICovXG4gIHNldCBwb3NpdGlvbihfOiBDb21wb25lbnRzLkJxRHJhd2VyWydwb3NpdGlvbiddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbG9zZScsICdicU9wZW4nLCAnYnFBZnRlck9wZW4nLCAnYnFBZnRlckNsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRHJhd2VyIGV4dGVuZHMgQ29tcG9uZW50cy5CcURyYXdlciB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcmF3ZXIgaXMgY2xvc2VkXG4gICAqL1xuICBicUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcmF3ZXIgaXMgb3BlbmVkXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBkcmF3ZXIgaGFzIGJlZW4gb3BlbmVkXG4gICAqL1xuICBicUFmdGVyT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRyYXdlciBoYXMgYmVlbiBjbG9zZWRcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkaXN0YW5jZScsICdrZWVwT3Blbk9uU2VsZWN0JywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICdza2lkZGluZycsICdzdHJhdGVneSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZHJvcGRvd24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcURyb3Bkb3duRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRyb3Bkb3duIHBhbmVsIHdpbGwgYmUgdmlzaWJsZSBhbmQgd29uJ3QgYmUgc2hvd24uXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgZGlzdGFuY2UgKGd1dHRlciBvciBtYXJnaW4pIGJldHdlZW4gdGhlIHBhbmVsIGFuZCB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnZGlzdGFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBwYW5lbCB3aWxsIHJlbWFpbiBvcGVuIGFmdGVyIGEgc2VsZWN0aW9uIGlzIG1hZGUuXG4gICAqL1xuICBzZXQga2VlcE9wZW5PblNlbGVjdChfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ2tlZXBPcGVuT25TZWxlY3QnXSkge307XG4gICAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBwYW5lbFxuICAgKi9cbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHBhbmVsIHdpbGwgYmUgdmlzaWJsZS5cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogV2hlbiBzZXQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGhlaWdodCBvZiB0aGUgZHJvcGRvd24gcGFuZWxcbiAgICovXG4gIHNldCBwYW5lbEhlaWdodChfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ3BhbmVsSGVpZ2h0J10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwYW5lbCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAqL1xuICBzZXQgc2FtZVdpZHRoKF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBza2lkZGluZyBiZXR3ZWVuIHRoZSBwYW5lbCBhbmQgdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICovXG4gIHNldCBza2lkZGluZyhfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ3NraWRkaW5nJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzdHJhdGVneSB0byBwb3NpdGlvbiB0aGUgcGFuZWxcbiAgICovXG4gIHNldCBzdHJhdGVneShfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ3N0cmF0ZWd5J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicU9wZW4nXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEcm9wZG93biBleHRlbmRzIENvbXBvbmVudHMuQnFEcm9wZG93biB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcm9wZG93biBwYW5lbCBpcyBvcGVuZWQgb3IgY2xvc2VkLlxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBvcGVuOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZW1wdHktc3RhdGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFFbXB0eVN0YXRlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFFbXB0eVN0YXRlRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGVtcHR5IHN0YXRlIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUVtcHR5U3RhdGVbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRW1wdHlTdGF0ZSBleHRlbmRzIENvbXBvbmVudHMuQnFFbXB0eVN0YXRlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhYmVsJywgJ25hbWUnLCAnc2l6ZScsICdzcmMnLCAnd2VpZ2h0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1pY29uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdsYWJlbCcsICduYW1lJywgJ3NpemUnLCAnc3JjJywgJ3dlaWdodCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUljb25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhlIGljb24sIHVzZWQgZm9yIGFjY2Vzc2liaWxpdHlcbiAgICovXG4gIHNldCBsYWJlbChfOiBDb21wb25lbnRzLkJxSWNvblsnbGFiZWwnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc3Ryb2tlIGNvbG9yIG9mIHRoZSBTVkcuIFRoZSB2YWx1ZSBzaG91bGQgYmUgYSB2YWxpZCB2YWx1ZSBvZiB0aGUgcGFsZXR0ZSBjb2xvclxuICAgKi9cbiAgc2V0IGNvbG9yKF86IENvbXBvbmVudHMuQnFJY29uWydjb2xvciddKSB7fTtcbiAgICAvKipcbiAgICogSWNvbiBuYW1lIHRvIGxvYWQuIFBsZWFzZSBjaGVjayBhbGwgYXZhaWxhYmxlIGljb25zIFtoZXJlXShodHRwczovL3Bob3NwaG9yaWNvbnMuY29tLylcbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFJY29uWyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIHNpemUgb2YgdGhlIFNWR1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUljb25bJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc291cmNlIG9mIHRoZSBTVkcuIElmIHRoZSBzb3VyY2UgaXMgc2V0LCB0aGUgbmFtZSBwcm9wZXJ0eSB3aWxsIGJlIGlnbm9yZWRcbiAgICovXG4gIHNldCBzcmMoXzogQ29tcG9uZW50cy5CcUljb25bJ3NyYyddKSB7fTtcbiAgICAvKipcbiAgICogIEBkZXByZWNhdGVkIEl0IHNldCB0aGUgaWNvbiB3ZWlnaHQvc3R5bGVcbiAgICovXG4gIHNldCB3ZWlnaHQoXzogQ29tcG9uZW50cy5CcUljb25bJ3dlaWdodCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnc3ZnTG9hZGVkJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxSWNvbiBleHRlbmRzIENvbXBvbmVudHMuQnFJY29uIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIFNWRyBoYXMgbG9hZGVkXG4gICAqL1xuICBzdmdMb2FkZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b2NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9jb3JyZWN0JywgJ2F1dG9mb2N1cycsICdjbGVhckJ1dHRvbkxhYmVsJywgJ2RlYm91bmNlVGltZScsICdkaXNhYmxlQ2xlYXInLCAnZGlzYWJsZWQnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnaW5wdXRtb2RlJywgJ21heCcsICdtYXhsZW5ndGgnLCAnbWluJywgJ21pbmxlbmd0aCcsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3RlcCcsICd0eXBlJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvY2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnYXV0b2NvcnJlY3QnLCAnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdpbnB1dG1vZGUnLCAnbWF4JywgJ21heGxlbmd0aCcsICdtaW4nLCAnbWlubGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGVwJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUlucHV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFJbnB1dEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBmaWVsZCBzaG91bGQgYmUgY2FwaXRhbGl6ZWQgYW5kIGhvdy5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29mZicsICdub25lJywgJ29uJywgJ3NlbnRlbmNlcycsICd3b3JkcycsIGFuZCAnY2hhcmFjdGVycycuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemVcbiAgICovXG4gIHNldCBhdXRvY2FwaXRhbGl6ZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2F1dG9jYXBpdGFsaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb21wbGV0ZSBlbmFibGVkLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlI3ZhbHVlc1xuICAgKi9cbiAgc2V0IGF1dG9jb21wbGV0ZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2F1dG9jb21wbGV0ZSddKSB7fTtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb3JyZWN0IGVuYWJsZWQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlICdvbicgYW5kICdvZmYnLlxuICAgKi9cbiAgc2V0IGF1dG9jb3JyZWN0KF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2NvcnJlY3QnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBpbnB1dCB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2F1dG9mb2N1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGNsZWFyIGJ1dHRvbiBhcmlhIGxhYmVsXG4gICAqL1xuICBzZXQgY2xlYXJCdXR0b25MYWJlbChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2NsZWFyQnV0dG9uTGFiZWwnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IGJlZm9yZSBlbWl0dGluZyB0aGUgYGJxSW5wdXRgIGV2ZW50IGFmdGVyIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuQSB2YWx1ZSBvZiAwIG1lYW5zIG5vIGRlYm91bmNpbmcgd2lsbCBvY2N1ci5cbiAgICovXG4gIHNldCBkZWJvdW5jZVRpbWUoXzogQ29tcG9uZW50cy5CcUlucHV0WydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCBvciBub3QuXG5JZiBgdHJ1ZWAsIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCBhbmQgY2Fubm90IGJlIGludGVyYWN0ZWQgd2l0aC5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY2xlYXIgYnV0dG9uIHdvbid0IGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IGRpc2FibGVDbGVhcihfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2Rpc2FibGVDbGVhciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBmb3JtIHRoYXQgdGhlIGlucHV0IGZpZWxkIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBzZXQgZm9ybShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2Zvcm0nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBuYXRpdmUgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgKG1hbmRhdG9yeSBpZiBgcmVxdWlyZWRgIGlzIHNldClcbiAgICovXG4gIHNldCBmb3JtVmFsaWRhdGlvbk1lc3NhZ2UoXzogQ29tcG9uZW50cy5CcUlucHV0Wydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbnB1dG1vZGUgYXR0cmlidXRlIHNwZWNpZmllcyB3aGF0IGtpbmQgb2YgaW5wdXQgbWVjaGFuaXNtIHdvdWxkIGJlIG1vc3QgaGVscGZ1bCBmb3IgdXNlcnMgZW50ZXJpbmcgY29udGVudCBpbnRvIHRoZSBpbnB1dCBmaWVsZC5cblRoaXMgYWxsb3dzIGEgYnJvd3NlciB0byBkaXNwbGF5IGFuIGFwcHJvcHJpYXRlIHZpcnR1YWwga2V5Ym9hcmQgd2hpbGUgZWRpdGluZy5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ25vbmUnLCAndGV4dCcsICdkZWNpbWFsJywgJ251bWVyaWMnLCAndGVsJywgJ3NlYXJjaCcsICdlbWFpbCcsICd1cmwnLCBhbmQgJ2RhdGUnLlxuICAgKi9cbiAgc2V0IGlucHV0bW9kZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2lucHV0bW9kZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG1heGltdW0gdmFsdWUgdGhhdCB0aGUgaW5wdXQgZmllbGQgY2FuIGFjY2VwdC5cbk9ubHkgYXBwbGllcyB0byBkYXRlIGFuZCBudW1iZXIgaW5wdXQgdHlwZXMuXG4gICAqL1xuICBzZXQgbWF4KF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWF4J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuICAgKi9cbiAgc2V0IG1heGxlbmd0aChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ21heGxlbmd0aCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG1pbmltdW0gdmFsdWUgdGhhdCB0aGUgaW5wdXQgZmllbGQgY2FuIGFjY2VwdC5cbk9ubHkgYXBwbGllcyB0byBkYXRlIGFuZCBudW1iZXIgaW5wdXQgdHlwZXMuXG4gICAqL1xuICBzZXQgbWluKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWluJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuICAgKi9cbiAgc2V0IG1pbmxlbmd0aChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ21pbmxlbmd0aCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGlucHV0IGZpZWxkIG5hbWUuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGUgZm9ybSBjb250cm9sJ3MgdmFsdWUgc2hvdWxkIG1hdGNoLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvcGF0dGVyblxuICAgKi9cbiAgc2V0IHBhdHRlcm4oXzogQ29tcG9uZW50cy5CcUlucHV0WydwYXR0ZXJuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaW5wdXQgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZVxuICAgKi9cbiAgc2V0IHBsYWNlaG9sZGVyKF86IENvbXBvbmVudHMuQnFJbnB1dFsncGxhY2Vob2xkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBpbnB1dCBmaWVsZCBjYW5ub3QgYmUgbW9kaWZpZWQuXG4gICAqL1xuICBzZXQgcmVhZG9ubHkoXzogQ29tcG9uZW50cy5CcUlucHV0WydyZWFkb25seSddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFJbnB1dFsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHRoYXQgc3BlY2lmaWVzIHRoZSBncmFudWxhcml0eSB0aGF0IHRoZSB2YWx1ZSBtdXN0IGFkaGVyZSB0by5cblZhbGlkIGZvciBkYXRlLCBtb250aCwgd2VlaywgdGltZSwgZGF0ZXRpbWUtbG9jYWwsIG51bWJlciwgYW5kIHJhbmdlLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjc3RlcFxuICAgKi9cbiAgc2V0IHN0ZXAoXzogQ29tcG9uZW50cy5CcUlucHV0WydzdGVwJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdHlwZSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGlucHV0IGZpZWxkIHRvIGRpc3BsYXkuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlICd0ZXh0JywgJ3Bhc3N3b3JkJywgJ2VtYWlsJywgJ251bWJlcicsICd0ZWwnLCAnc2VhcmNoJywgJ3VybCcsIGFuZCBtb3JlLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjaW5wdXRfdHlwZXNcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFJbnB1dFsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBpbnB1dC4gQHJlbWFya3MgVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiB0aGUgaW5wdXQuIEl0IGNhbiBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLSBgJ25vbmUnYDogTm8gdmFsaWRhdGlvbiBzdGF0dXMgaXMgc2V0LlxuLSBgJ2Vycm9yJ2A6IFRoZSBpbnB1dCBoYXMgYSB2YWxpZGF0aW9uIGVycm9yLlxuLSBgJ3dhcm5pbmcnYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gd2FybmluZy5cbi0gYCdzdWNjZXNzJ2A6IFRoZSBpbnB1dCBoYXMgcGFzc2VkIHZhbGlkYXRpb24uXG4gICAqL1xuICBzZXQgdmFsaWRhdGlvblN0YXR1cyhfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3ZhbGlkYXRpb25TdGF0dXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbnB1dCB2YWx1ZSwgaXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIGlucHV0IHRvIGEgcHJldmlvdXMgdmFsdWVcbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJywgJ2JxSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuQnFJbnB1dCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXTsgZWw6IEhUTUxCcUlucHV0RWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIHR5cGVzIG9yIHBhc3RlcyB0ZXh0IGludG8gdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdOyBlbDogSFRNTEJxSW5wdXRFbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3RpbWUnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ2hpZGUnLCAnc2hvdycsICd0b2FzdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtbm90aWZpY2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvRGlzbWlzcycsICdib3JkZXInLCAnZGlzYWJsZUNsb3NlJywgJ2hpZGVJY29uJywgJ29wZW4nLCAndGltZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxTm90aWZpY2F0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFOb3RpZmljYXRpb25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYXV0b21hdGljYWxseSBoaWRlIGFmdGVyIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWVcbiAgICovXG4gIHNldCBhdXRvRGlzbWlzcyhfOiBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uWydhdXRvRGlzbWlzcyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGNvcmRlciByYWRpdXMgb2YgdGhlIG5vdGlmaWNhdGlvbiBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsnYm9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY2xvc2UgYnV0dG9uIGF0IHRoZSB0b3AgcmlnaHQgb2YgdGhlIG5vdGlmaWNhdGlvbiB3b24ndCBiZSBzaG93blxuICAgKi9cbiAgc2V0IGRpc2FibGVDbG9zZShfOiBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uWydkaXNhYmxlQ2xvc2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBub3RpZmljYXRpb24gaWNvbiB3b24ndCBiZSBzaG93blxuICAgKi9cbiAgc2V0IGhpZGVJY29uKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ2hpZGVJY29uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ29wZW4nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBsZW5ndGggb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBhZnRlciB3aGljaCB0aGUgbm90aWZpY2F0aW9uIHdpbGwgY2xvc2UgaXRzZWxmLiBPbmx5IHZhbGlkIGlmIGBhdXRvRGlzbWlzcz1cInRydWVcImBcbiAgICovXG4gIHNldCB0aW1lKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ3RpbWUnXSkge307XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgTm90aWZpY2F0aW9uXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uWyd0eXBlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUhpZGUnLCAnYnFTaG93JywgJ2JxQWZ0ZXJPcGVuJywgJ2JxQWZ0ZXJDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcU5vdGlmaWNhdGlvbiBleHRlbmRzIENvbXBvbmVudHMuQnFOb3RpZmljYXRpb24ge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIGhpZGRlblxuICAgKi9cbiAgYnFIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBvcGVuZWRcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgKi9cbiAgYnFBZnRlckNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdzZWxlY3RlZCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtb3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaWRkZW4nLCAnc2VsZWN0ZWQnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFPcHRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcU9wdGlvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBvcHRpb24gaXMgaGlkZGVuLlxuICAgKi9cbiAgc2V0IGhpZGRlbihfOiBDb21wb25lbnRzLkJxT3B0aW9uWydoaWRkZW4nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQuXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcU9wdGlvblsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbi4gQ2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGl0ZW1cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxT3B0aW9uWyd2YWx1ZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCBhbmQgYWN0aXZlLlxuICAgKi9cbiAgc2V0IHNlbGVjdGVkKF86IENvbXBvbmVudHMuQnFPcHRpb25bJ3NlbGVjdGVkJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJywgJ2JxRW50ZXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFPcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLkJxT3B0aW9uIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGlzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFPcHRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcU9wdGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIG9uIGVudGVyIGtleSBwcmVzc1xuICAgKi9cbiAgYnFFbnRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcU9wdGlvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLW9wdGlvbi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBCcU9wdGlvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFPcHRpb25Hcm91cEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxT3B0aW9uR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXJpYUxhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1vcHRpb24tbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYUxhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxT3B0aW9uTGlzdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxT3B0aW9uTGlzdEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEFyaWEgbGFiZWwgZm9yIHRoZSBsaXN0LlxuICAgKi9cbiAgc2V0IGFyaWFMYWJlbChfOiBDb21wb25lbnRzLkJxT3B0aW9uTGlzdFsnYXJpYUxhYmVsJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicVNlbGVjdCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcU9wdGlvbkxpc3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxT3B0aW9uTGlzdCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGBicS1vcHRpb25gIGlzIHNlbGVjdGVkIChvbiBjbGljay9lbnRlciBwcmVzcykuXG4gICAqL1xuICBicVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgaXRlbTogSFRNTEJxT3B0aW9uRWxlbWVudCB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1wYWdlLXRpdGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEJxUGFnZVRpdGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFQYWdlVGl0bGVFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVBhZ2VUaXRsZSBleHRlbmRzIENvbXBvbmVudHMuQnFQYWdlVGl0bGUge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzdGFuY2UnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzdGFuY2UnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVBhbmVsRWxlbWVudDtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgZGlzdGFuY2UgKGd1dHRlciBvciBtYXJnaW4pIGJldHdlZW4gdGhlIHBhbmVsIGFuZCB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFQYW5lbFsnZGlzdGFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBwYW5lbFxuICAgKi9cbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHBhbmVsIHdpbGwgYmUgdmlzaWJsZS5cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFQYW5lbFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogV2hldGhlciB0aGUgcGFuZWwgc2hvdWxkIGhhdmUgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHRyaWdnZXIgZWxlbWVudFxuICAgKi9cbiAgc2V0IHNhbWVXaWR0aChfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3NhbWVXaWR0aCddKSB7fTtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgc2tpZGRpbmcgYmV0d2VlbiB0aGUgcGFuZWwgYW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgc2tpZGRpbmcoXzogQ29tcG9uZW50cy5CcVBhbmVsWydza2lkZGluZyddKSB7fTtcbiAgICAvKipcbiAgICogRGVmaW5lcyB0aGUgc3RyYXRlZ3kgdG8gcG9zaXRpb24gdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgc3RyYXRlZ3koXzogQ29tcG9uZW50cy5CcVBhbmVsWydzdHJhdGVneSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuQnFQYW5lbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXJTaGFwZScsICdlbmFibGVUb29sdGlwJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAndGhpY2tuZXNzJywgJ3R5cGUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXByb2dyZXNzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJTaGFwZScsICdlbmFibGVUb29sdGlwJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAndGhpY2tuZXNzJywgJ3R5cGUnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQcm9ncmVzcyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxUHJvZ3Jlc3NFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJdCB3aWxsIHNldCB0aGUgYm9yZGVyIHN0eWxlIG9mIHRoZSBwcm9ncmVzcyBiYXJcbiAgICovXG4gIHNldCBib3JkZXJTaGFwZShfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2JvcmRlclNoYXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGEgdG9vbHRpcCB3aWxsIGJlIHNob3duIGRpc3BsYXlpbmcgdGhlIHByb2dyZXNzIHZhbHVlXG4gICAqL1xuICBzZXQgZW5hYmxlVG9vbHRpcChfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2VuYWJsZVRvb2x0aXAnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBvZiBwcm9ncmVzcyBiYXIgaXMgZW5hYmxlZFxuICAgKi9cbiAgc2V0IGluZGV0ZXJtaW5hdGUoXzogQ29tcG9uZW50cy5CcVByb2dyZXNzWydpbmRldGVybWluYXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZSwgYSBsYWJlbCB0ZXh0IHNob3dpbmcgdGhlIHZhbHVlIChpbiBwZXJjZW50YWdlKSB3aWxsIGJlIHNob3duXG4gICAqL1xuICBzZXQgbGFiZWwoXzogQ29tcG9uZW50cy5CcVByb2dyZXNzWydsYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogUHJvZ3Jlc3MgYmFyIHRoaWNrbmVzc1xuICAgKi9cbiAgc2V0IHRoaWNrbmVzcyhfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ3RoaWNrbmVzcyddKSB7fTtcbiAgICAvKipcbiAgICogUHJvZ3Jlc3MgdHlwZVxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVByb2dyZXNzWyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGJhclxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1sndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxUHJvZ3Jlc3MgZXh0ZW5kcyBDb21wb25lbnRzLkJxUHJvZ3Jlc3Mge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtSWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3ZDbGljaycsICd2Rm9jdXMnLCAndkJsdXInLCAnZ2V0TmF0aXZlSW5wdXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXJhZGlvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxUmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVJhZGlvRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSByYWRpbyBpbnB1dCBpcyBjaGVja2VkXG4gICAqL1xuICBzZXQgY2hlY2tlZChfOiBDb21wb25lbnRzLkJxUmFkaW9bJ2NoZWNrZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgcmFkaW8gaW5wdXQgaXMgZGlzYWJsZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxUmFkaW9bJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHJhZGlvIGRpc3BsYXlzIGJhY2tncm91bmQgb24gaG92ZXJcbiAgICovXG4gIHNldCBiYWNrZ3JvdW5kT25Ib3ZlcihfOiBDb21wb25lbnRzLkJxUmFkaW9bJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZm9ybSBJRCB0aGF0IHRoZSByYWRpbyBpbnB1dCBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHNldCBmb3JtSWQoXzogQ29tcG9uZW50cy5CcVJhZGlvWydmb3JtSWQnXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEhUTUwgaW5wdXQgZm9ybSBjb250cm9sLiBTdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBhcyBwYXJ0IG9mIGEgbmFtZS92YWx1ZSBwYWlyLlxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVJhZGlvWyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBtdXN0IHNwZWNpZnkgYSB2YWx1ZSBmb3IgdGhlIHJhZGlvIGJlZm9yZSB0aGUgb3duaW5nIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZFxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFSYWRpb1sncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFSYWRpb1sndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xpY2snLCAnYnFGb2N1cycsICdicUJsdXInLCAnYnFLZXlEb3duJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxUmFkaW8gZXh0ZW5kcyBDb21wb25lbnRzLkJxUmFkaW8ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8ga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIGJxS2V5RG93bjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2ZpZWxkc2V0JywgJ25hbWUnLCAnb3JpZW50YXRpb24nLCAncmVxdWlyZWQnLCAncmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcmFkaW8tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdmaWVsZHNldCcsICduYW1lJywgJ29yaWVudGF0aW9uJywgJ3JlcXVpcmVkJywgJ3JlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFSYWRpb0dyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFSYWRpb0dyb3VwRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgYWxsIHJhZGlvIGlucHV0cyBpbiB0aGUgZ3JvdXAgd2lsbCBkaXNwbGF5IGEgYmFja2dyb3VuZCBvbiBob3ZlclxuICAgKi9cbiAgc2V0IGJhY2tncm91bmRPbkhvdmVyKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydiYWNrZ3JvdW5kT25Ib3ZlciddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBkZWxheSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIHRoYXQgYGJxQ2hhbmdlYCBldmVudCBoYW5kbGVyIGdldHMgdHJpZ2dlcmVkIG9uY2UgdGhlIHZhbHVlIGNoYW5nZVxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnZGVib3VuY2VUaW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHJhZGlvIGlucHV0cyBhcmUgZGlzYWJsZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgZGlzcGxheXMgZmllbGRzZXRcbiAgICovXG4gIHNldCBmaWVsZHNldChfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnZmllbGRzZXQnXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEhUTUwgaW5wdXQgZm9ybSBjb250cm9sLiBTdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBhcyBwYXJ0IG9mIGEgbmFtZS92YWx1ZSBwYWlyLlxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG9yaWVudGF0aW9uIG9mIHRoZSByYWRpbyBpbnB1dHNcbiAgICovXG4gIHNldCBvcmllbnRhdGlvbihfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnb3JpZW50YXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSByYWRpbyBncm91cCBpcyByZXF1aXJlZFxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSByYWRpbyBncm91cCBpcyByZXF1aXJlZFxuICAgKi9cbiAgc2V0IHJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ3JlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFSYWRpb0dyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcVJhZGlvR3JvdXAge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHRhcmdldDogSFRNTEJxUmFkaW9FbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmb3JtJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnbWF4VGFnc1Zpc2libGUnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGVhckJ1dHRvbkxhYmVsJywgJ2RlYm91bmNlVGltZScsICdkaXNhYmxlQ2xlYXInLCAnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAnZm9ybScsICdrZWVwT3Blbk9uU2VsZWN0JywgJ21heFRhZ3NWaXNpYmxlJywgJ211bHRpcGxlJywgJ25hbWUnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5JywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTZWxlY3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNlbGVjdEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBTZWxlY3QgaW5wdXQgd2lsbCBiZSBmb2N1c2VkIG9uIGNvbXBvbmVudCByZW5kZXJcbiAgICovXG4gIHNldCBhdXRvZm9jdXMoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnYXV0b2ZvY3VzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY2xlYXIgYnV0dG9uIGFyaWEgbGFiZWxcbiAgICovXG4gIHNldCBjbGVhckJ1dHRvbkxhYmVsKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2NsZWFyQnV0dG9uTGFiZWwnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IGJlZm9yZSBlbWl0dGluZyB0aGUgYGJxSW5wdXRgIGV2ZW50IGFmdGVyIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuQSB2YWx1ZSBvZiAwIG1lYW5zIG5vIGRlYm91bmNpbmcgd2lsbCBvY2N1ci5cbiAgICovXG4gIHNldCBkZWJvdW5jZVRpbWUoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnZGVib3VuY2VUaW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgU2VsZWN0IGlucHV0IGlzIGRpc2FibGVkIG9yIG5vdC5cbklmIGB0cnVlYCwgdGhlIFNlbGVjdCBpcyBkaXNhYmxlZCBhbmQgY2Fubm90IGJlIGludGVyYWN0ZWQgd2l0aC5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNsZWFyIGJ1dHRvbiB3b24ndCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBkaXNhYmxlQ2xlYXIoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnZGlzYWJsZUNsZWFyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgU2VsZWN0IHBhbmVsIGFuZCB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICovXG4gIHNldCBkaXN0YW5jZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBmb3JtIHRoYXQgdGhlIFNlbGVjdCBpbnB1dCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgc2V0IGZvcm0oXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnZm9ybSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBwYW5lbCB3aWxsIHJlbWFpbiBvcGVuIGFmdGVyIGEgc2VsZWN0aW9uIGlzIG1hZGUuXG4gICAqL1xuICBzZXQga2VlcE9wZW5PblNlbGVjdChfOiBDb21wb25lbnRzLkJxU2VsZWN0WydrZWVwT3Blbk9uU2VsZWN0J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgU2VsZWN0IGlucHV0IG5hbWUuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGFncyB0byBkaXNwbGF5IHdoZW4gbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGVuYWJsZWRcbiAgICovXG4gIHNldCBtYXhUYWdzVmlzaWJsZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydtYXhUYWdzVmlzaWJsZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBpbnB1dCB3aWxsIGFsbG93IG11bHRpcGxlIHNlbGVjdGlvbnMuXG4gICAqL1xuICBzZXQgbXVsdGlwbGUoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnbXVsdGlwbGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBTZWxlY3QgcGFuZWwgd2lsbCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogV2hlbiBzZXQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGhlaWdodCBvZiB0aGUgU2VsZWN0IHBhbmVsLlxuICAgKi9cbiAgc2V0IHBhbmVsSGVpZ2h0KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3BhbmVsSGVpZ2h0J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgU2VsZWN0IGlucHV0IHBsYWNlaG9sZGVyIHRleHQgdmFsdWVcbiAgICovXG4gIHNldCBwbGFjZWhvbGRlcihfOiBDb21wb25lbnRzLkJxU2VsZWN0WydwbGFjZWhvbGRlciddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIFNlbGVjdCBwYW5lbFxuICAgKi9cbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxU2VsZWN0WydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBsaXN0IG9mIG9wdGlvbnMgY2Fubm90IGJlIGZpbHRlcmVkIChzZWFyY2hpbmcgd29uJ3QgYmUgYXZhaWxhYmxlKVxuICAgKi9cbiAgc2V0IHJlYWRvbmx5KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3JlYWRvbmx5J10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIFNlbGVjdCBpbnB1dCBpcyByZXF1aXJlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwYW5lbCBzaG91bGQgaGF2ZSB0aGUgU2VsZWN0IHNhbWUgd2lkdGggYXMgdGhlIGlucHV0IGVsZW1lbnRcbiAgICovXG4gIHNldCBzYW1lV2lkdGgoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBza2lkZGluZyBiZXR3ZWVuIHRoZSBTZWxlY3QgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IHNraWRkaW5nKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3NraWRkaW5nJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzdHJhdGVneSB0byBwb3NpdGlvbiB0aGUgU2VsZWN0IHBhbmVsXG4gICAqL1xuICBzZXQgc3RyYXRlZ3koXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnc3RyYXRlZ3knXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiB0aGUgU2VsZWN0IGlucHV0LiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBzZWxlY3QgaW5wdXQuIEl0IGNhbiBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLSBgJ25vbmUnYDogTm8gdmFsaWRhdGlvbiBzdGF0dXMgaXMgc2V0LlxuLSBgJ2Vycm9yJ2A6IFRoZSBpbnB1dCBoYXMgYSB2YWxpZGF0aW9uIGVycm9yLlxuLSBgJ3dhcm5pbmcnYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gd2FybmluZy5cbi0gYCdzdWNjZXNzJ2A6IFRoZSBpbnB1dCBoYXMgcGFzc2VkIHZhbGlkYXRpb24uXG4gICAqL1xuICBzZXQgdmFsaWRhdGlvblN0YXR1cyhfOiBDb21wb25lbnRzLkJxU2VsZWN0Wyd2YWxpZGF0aW9uU3RhdHVzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2VsZWN0IGlucHV0IHZhbHVlLCBpdCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgZmllbGQgdG8gYSBwcmV2aW91cyB2YWx1ZVxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDbGVhcicsICdicUZvY3VzJywgJ2JxU2VsZWN0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5CcVNlbGVjdCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgU2VsZWN0IGlucHV0IGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTZWxlY3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNlbGVjdEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBTZWxlY3QgaW5wdXQgaGFzIHJlY2VpdmVkIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2VsZWN0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAqL1xuICBicVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdOyBpdGVtOiBIVE1MQnFPcHRpb25FbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdjb2xsYXBzZScsICdzaXplJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlQ29sbGFwc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNpZGUtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdjb2xsYXBzZScsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2lkZU1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNpZGVNZW51RWxlbWVudDtcbiAgICAvKipcbiAgICogSXQgc2V0cyBhIHByZWRlZmluZWQgYXBwZWFyYW5jZSBvZiB0aGUgc2lkZSBtZW51XG4gICAqL1xuICBzZXQgYXBwZWFyYW5jZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVbJ2FwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjb250YWluZXIgd2lsbCByZWR1Y2UgaXRzIHdpZHRoXG4gICAqL1xuICBzZXQgY29sbGFwc2UoXzogQ29tcG9uZW50cy5CcVNpZGVNZW51Wydjb2xsYXBzZSddKSB7fTtcbiAgICAvKipcbiAgICogSXQgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgbmF2aWdhdGlvbiBtZW51IGl0ZW1zXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ29sbGFwc2UnLCAnYnFTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTaWRlTWVudSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBTaWRlIG1lbnUgY2hhbmdlcyBpdHMgd2lkdGggZnJvbSBleHBhbmRlZCB0byBjb2xsYXBzZSBhbmQgdmljZSB2ZXJzYVxuICAgKi9cbiAgYnFDb2xsYXBzZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY29sbGFwc2U6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWN0aXZlL3NlbGVjdGVkIG1lbnUgaXRlbSBjaGFuZ2VzXG4gICAqL1xuICBicVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zaWRlLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2lkZU1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbWVudSBpdGVtIHdpbGwgYmUgc2hvd24gYXMgYWN0aXZlL3NlbGVjdGVkLlxuICAgKi9cbiAgc2V0IGFjdGl2ZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVJdGVtWydhY3RpdmUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBpdGVtIGxhYmVsIGFuZCBzdWZmaXggd2lsbCBiZSBoaWRkZW4gYW5kIHRoZSB3aXRoIHdpbGwgYmUgcmVkdWNlIGFjY29yZGluZyB0byBpdHMgcGFyZW50XG4gICAqL1xuICBzZXQgY29sbGFwc2UoXzogQ29tcG9uZW50cy5CcVNpZGVNZW51SXRlbVsnY29sbGFwc2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBtZW51IGl0ZW0gd2lsbCBiZSBkaXNhYmxlZCAobm8gaW50ZXJhY3Rpb24gYWxsb3dlZClcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVJdGVtWydkaXNhYmxlZCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCbHVyJywgJ2JxRm9jdXMnLCAnYnFDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNpZGVNZW51SXRlbSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudUl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYnV0dG9uIGdldHMgZm9jdXNcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdlbmFibGVUb29sdGlwJywgJ2VuYWJsZVZhbHVlSW5kaWNhdG9yJywgJ2dhcCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnc3RlcCcsICd0b29sdGlwQWx3YXlzVmlzaWJsZScsICd0eXBlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zbGlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdlbmFibGVUb29sdGlwJywgJ2VuYWJsZVZhbHVlSW5kaWNhdG9yJywgJ2dhcCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnc3RlcCcsICd0b29sdGlwQWx3YXlzVmlzaWJsZScsICd0eXBlJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2xpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFTbGlkZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCB0byB0cmlnZ2VyIHRoZSBgYnFDaGFuZ2VgIGV2ZW50IGFmdGVyIGVhY2ggdmFsdWUgY2hhbmdlLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgc2xpZGVyIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAgaXQgd2lsbCBzaG93IHRoZSB2YWx1ZSBsYWJlbCBvbiBhIHNpZGUgb2YgdGhlIHNsaWRlciB0cmFjayBhcmVhXG4gICAqL1xuICBzZXQgZW5hYmxlVmFsdWVJbmRpY2F0b3IoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZW5hYmxlVmFsdWVJbmRpY2F0b3InXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgYW1vdW50IHRvIHJlbWFpbiBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAob25seSBmb3IgcmFuZ2UgdHlwZSkuXG4gICAqL1xuICBzZXQgZ2FwKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ2dhcCddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBtYXggdmFsdWUgb2YgdGhlIHNsaWRlci5cbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnbWF4J10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIG1pbiB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKi9cbiAgc2V0IG1pbihfOiBDb21wb25lbnRzLkJxU2xpZGVyWydtaW4nXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpclxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzdGVwIG9mIHRoZSBzbGlkZXIuXG7imqDvuI8gUGxlYXNlIG5vdGljZSB0aGF0IHRoZSB2YWx1ZSAob3IgbGlzdCBvZiB2YWx1ZXMgaWYgdGhlIHNsaWRlciB0eXBlIGlzIGByYW5nZWApIHdpbGwgYmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBgc3RlcGAuXG4gICAqL1xuICBzZXQgc3RlcChfOiBDb21wb25lbnRzLkJxU2xpZGVyWydzdGVwJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIHRoZSB0eXBlIG9mIHNsaWRlciB0byBkaXNwbGF5XG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHNsaWRlci5cbi0gSWYgdGhlIHNsaWRlciB0eXBlIGlzIGBzaW5nbGVgLCB0aGUgdmFsdWUgaXMgYSBudW1iZXIuXG4tIElmIHRoZSBzbGlkZXIgdHlwZSBpcyBgcmFuZ2VgLCB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgKHRoZSBmaXJzdCBudW1iZXIgcmVwcmVzZW50cyB0aGUgYG1pbmAgdmFsdWUgYW5kIHRoZSBzZWNvbmQgbnVtYmVyIHJlcHJlc2VudHMgdGhlIGBtYXhgIHZhbHVlKS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyd2YWx1ZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBhIHRvb2x0aXAgd2lsbCBiZSBzaG93biBkaXNwbGF5aW5nIHRoZSBwcm9ncmVzcyB2YWx1ZVxuICAgKi9cbiAgc2V0IGVuYWJsZVRvb2x0aXAoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZW5hYmxlVG9vbHRpcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBhIHRvb2x0aXAgd2lsbCBhbHdheXMgZGlzcGxheSB0aGUgcHJvZ3Jlc3MgdmFsdWUuXG5JdCByZWxpZXMgb24gZW5hYmxlVG9vbHRpcCBhbmQgaWYgZW5hYmxlVG9vbHRpcCBpcyBmYWxzZSwgdG9vbHRpcEFsd2F5c1Zpc2libGUgY2Fubm90IGJlIHRydWUuXG4gICAqL1xuICBzZXQgdG9vbHRpcEFsd2F5c1Zpc2libGUoXzogQ29tcG9uZW50cy5CcVNsaWRlclsndG9vbHRpcEFsd2F5c1Zpc2libGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxQmx1cicsICdicUZvY3VzJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBUU2xpZGVyVmFsdWUgYXMgSUJxU2xpZGVyVFNsaWRlclZhbHVlIH0gZnJvbSAnQGJlZXEvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNsaWRlciBleHRlbmRzIENvbXBvbmVudHMuQnFTbGlkZXIge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBjaGFuZ2UgdGhlIHZhbHVlIG9uIHJhbmdlIGlucHV0c1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBFeGNsdWRlPElCcVNsaWRlclRTbGlkZXJWYWx1ZSwgc3RyaW5nPjsgZWw6IEhUTUxCcVNsaWRlckVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2xpZGVyIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTbGlkZXJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzbGlkZXIgZ2V0cyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2xpZGVyRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnc2l6ZScsICd0ZXh0UG9zaXRpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNwaW5uZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdzaXplJywgJ3RleHRQb3NpdGlvbiddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVNwaW5uZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNwaW5uZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiBgZmFsc2VgLCB0aGUgYW5pbWF0aW9uIG9uIHRoZSBpY29uIGVsZW1lbnQgd2lsbCBiZSBzdG9wcGVkXG4gICAqL1xuICBzZXQgYW5pbWF0aW9uKF86IENvbXBvbmVudHMuQnFTcGlubmVyWydhbmltYXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYWJlbCB0ZXh0XG4gICAqL1xuICBzZXQgdGV4dFBvc2l0aW9uKF86IENvbXBvbmVudHMuQnFTcGlubmVyWyd0ZXh0UG9zaXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIGljb24gZWxlbWVudCBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFTcGlubmVyWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNwaW5uZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxU3Bpbm5lciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWyd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zdGF0dXMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTdGF0dXMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN0YXR1c0VsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHR5cGUgb2Ygc3RhdHVzIHRvIGRpc3BsYXlcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFTdGF0dXNbJ3R5cGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3RhdHVzIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN0YXR1cyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJywgJ3N0YXR1cycsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zdGVwLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnLCAnc3RhdHVzJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTdGVwSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3RlcEl0ZW1FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIHByZWZpeCBzaXplXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxU3RlcEl0ZW1bJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgc3RlcCBpdGVtIGFwcGVhcmFuY2UgYmFzZWQgb24gaXRzIHN0YXR1c1xuICAgKi9cbiAgc2V0IHN0YXR1cyhfOiBDb21wb25lbnRzLkJxU3RlcEl0ZW1bJ3N0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyB0aGUgc3RlcCBpdGVtIHR5cGUgdXNlZFxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVN0ZXBJdGVtWyd0eXBlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3RlcEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLkJxU3RlcEl0ZW0ge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHN0ZXAgaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0YXJnZXQ6IEhUTUxCcVN0ZXBJdGVtRWxlbWVudDsgdmFsdWU6IHN0cmluZyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RpdmlkZXJDb2xvcicsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN0ZXBzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXZpZGVyQ29sb3InLCAnc2l6ZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU3RlcHMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN0ZXBzRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBsaW5lIHRoYXQgY29ubmVjdHMgdGhlIHN0ZXBzLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBkZWNsYXJhdGl2ZSBjb2xvciB0b2tlbi5cbiAgICovXG4gIHNldCBkaXZpZGVyQ29sb3IoXzogQ29tcG9uZW50cy5CcVN0ZXBzWydkaXZpZGVyQ29sb3InXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBzdGVwc1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcVN0ZXBzWydzaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwcmVmaXggZWxlbWVudCB0byB1c2Ugb24gdGhlIHN0ZXAgaXRlbXNcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFTdGVwc1sndHlwZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGVwcyBleHRlbmRzIENvbXBvbmVudHMuQnFTdGVwcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdmdWxsV2lkdGgnLCAnaW5uZXJMYWJlbCcsICdqdXN0aWZ5Q29udGVudCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3JldmVyc2VPcmRlcicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3ZDbGljaycsICd2Rm9jdXMnLCAndkJsdXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN3aXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnZnVsbFdpZHRoJywgJ2lubmVyTGFiZWwnLCAnanVzdGlmeUNvbnRlbnQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdyZXZlcnNlT3JkZXInLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN3aXRjaEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIGEgYmFja2dyb3VuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiBob3ZlclxuICAgKi9cbiAgc2V0IGJhY2tncm91bmRPbkhvdmVyKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciBpZiB0aGUgc3dpdGNoIGlzIGBPTmAgYnkgZGVmYXVsdCAod2hlbiB0aGUgcGFnZSBsb2FkcylcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2NoZWNrZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBzd2l0Y2ggY29udHJvbCB3aWxsIGJlIGRpc2FibGVkIGFuZCBubyBpbnRlcmFjdGlvbiB3aWxsIGJlIGFsbG93ZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgc2V0IGZvcm1WYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxU3dpdGNoWydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjb21wb25lbnQgd2lsbCB0YWtlIHRoZSBmdWxsIHdpZHRoIHNwYWNlIGF2YWlsYWJsZSBvbiB0aGUgcGFyZW50IGNvbnRhaW5lclxuICAgKi9cbiAgc2V0IGZ1bGxXaWR0aChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydmdWxsV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGluZGljYXRlcyBob3cgdG8gdG8gZGlzcGxheSB0aGUgb24vb2ZmIG1hcmtzIGluc2lkZSB0aGUgY29udHJvbCwgd2l0aCBpY29ucyBvciBub25lIChkZWZhdWx0KVxuICAgKi9cbiAgc2V0IGlubmVyTGFiZWwoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnaW5uZXJMYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyBob3cgdG8gZGlzdHJpYnV0ZSB0aGUgc3BhY2UgYmV0d2VlbiBhbmQgYXJvdW5kIHRoZSBjb250cm9sIGFuZCB0aGUgbGFiZWwgdGV4dFxuKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LWNvbnRlbnQpXG4gICAqL1xuICBzZXQganVzdGlmeUNvbnRlbnQoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnanVzdGlmeUNvbnRlbnQnXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpclxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBpdCB3aWxsIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgbXVzdCBzd2l0Y2ggYE9OYCB0aGUgZWxlbWVudCBiZWZvcmUgdGhlIG93bmluZyBmb3JtIGNhbiBiZSBzdWJtaXR0ZWRcbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9yZGVyIG9mIHRoZSBjb250cm9sIGFuZCB0aGUgbGFiZWwgdGV4dCB3aWxsIGJlIGNoYW5nZWRcbiAgICovXG4gIHNldCByZXZlcnNlT3JkZXIoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsncmV2ZXJzZU9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaW5wdXQgY29udHJvbCdzIHZhbHVlLCBzdWJtaXR0ZWQgYXMgYSBuYW1lL3ZhbHVlIHBhaXIgd2l0aCBmb3JtIGRhdGEuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxRm9jdXMnLCAnYnFCbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3dpdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN3aXRjaCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc3dpdGNoIGdldHMgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTd2l0Y2hFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVN3aXRjaEVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbnRyb2xzJywgJ2Rpc2FibGVkJywgJ29yaWVudGF0aW9uJywgJ3BsYWNlbWVudCcsICdzaXplJywgJ3RhYklkJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29udHJvbHMnLCAnZGlzYWJsZWQnLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndGFiSWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVRhYkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUgdGFiIGlzIGFjdGl2ZVxuICAgKi9cbiAgc2V0IGFjdGl2ZShfOiBDb21wb25lbnRzLkJxVGFiWydhY3RpdmUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0YWIgcGFuZWwgaWQgdGhhdCB0aGUgdGFiIGNvbnRyb2xzXG4gICAqL1xuICBzZXQgY29udHJvbHMoXzogQ29tcG9uZW50cy5CcVRhYlsnY29udHJvbHMnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgdGFiIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcVRhYlsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdGhhdCB0YWIgc2hvdWxkIGJlIHJlbmRlclxuICAgKi9cbiAgc2V0IG9yaWVudGF0aW9uKF86IENvbXBvbmVudHMuQnFUYWJbJ29yaWVudGF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHRoYXQgdGFiIHNob3VsZCBiZSByZW5kZXJcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRhYlsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdGFiXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxVGFiWydzaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHRhYlxuICAgKi9cbiAgc2V0IHRhYklkKF86IENvbXBvbmVudHMuQnFUYWJbJ3RhYklkJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsaWNrJywgJ2JxRm9jdXMnLCAnYnFCbHVyJywgJ2JxS2V5RG93biddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRhYiBleHRlbmRzIENvbXBvbmVudHMuQnFUYWIge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIHN0YXRlIGNoYW5nZXNcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIgZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhYkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFiRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBicUtleURvd246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlRGl2aWRlcicsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFiLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZURpdmlkZXInLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUYWJHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxVGFiR3JvdXBFbGVtZW50O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlbGF5IHZhbHVlIGFwcGxpZWQgdG8gYnFDaGFuZ2UgZXZlbnQgaGFuZGxlclxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ2RlYm91bmNlVGltZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHVuZGVybGluZSBkaXZpZGVyIGJlbG93IHRoZSB0YWJzIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgZGlzYWJsZURpdmlkZXIoXzogQ29tcG9uZW50cy5CcVRhYkdyb3VwWydkaXNhYmxlRGl2aWRlciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0aGF0IHRhYiBzaG91bGQgYmUgcmVuZGVyXG4gICAqL1xuICBzZXQgb3JpZW50YXRpb24oXzogQ29tcG9uZW50cy5CcVRhYkdyb3VwWydvcmllbnRhdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHBsYWNlbWVudCB0aGF0IHRhYiBzaG91bGQgYmUgcmVuZGVyXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFUYWJHcm91cFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdGFiXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaWQgb2YgdGhlIHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRhYkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRhYkdyb3VwIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdGFyZ2V0OiBIVE1MQnFUYWJFbGVtZW50OyB2YWx1ZTogc3RyaW5nIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2NsaWNrYWJsZScsICdjb2xvcicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAncmVtb3ZhYmxlJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ2hpZGUnLCAnc2hvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnY2xpY2thYmxlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdyZW1vdmFibGUnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVGFnIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUYWdFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgY29ybmVyIHJhZGl1cyBvZiB0aGUgVGFnICh3aWxsIG92ZXJyaWRlIHNpemUncyBwcmVkZWZpbmVkIGJvcmRlcilcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcVRhZ1snYm9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGNhbiBiZSBjbGlja2FibGVcbiAgICovXG4gIHNldCBjbGlja2FibGUoXzogQ29tcG9uZW50cy5CcVRhZ1snY2xpY2thYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29sb3Igc3R5bGUgb2YgdGhlIFRhZ1xuICAgKi9cbiAgc2V0IGNvbG9yKF86IENvbXBvbmVudHMuQnFUYWdbJ2NvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIHdpbGwgYmUgZGlzYWJsZWQgKG9ubHkgaWYgY2xpY2thYmxlID0gYHRydWVgLCBubyBpbnRlcmFjdGlvbiBhbGxvd2VkKVxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFUYWdbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGNvbXBvbmVudCB3aWxsIGhpZGRlbiAob25seSBpZiByZW1vdmFibGUgPSBgdHJ1ZWApXG4gICAqL1xuICBzZXQgaGlkZGVuKF86IENvbXBvbmVudHMuQnFUYWdbJ2hpZGRlbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFRhZyBjb21wb25lbnQgY2FuIGJlIHJlbW92ZWRcbiAgICovXG4gIHNldCByZW1vdmFibGUoXzogQ29tcG9uZW50cy5CcVRhZ1sncmVtb3ZhYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGlzIHNlbGVjdGVkIChvbmx5IGlmIGNsaWNrYWJsZSA9IGB0cnVlYClcbiAgICovXG4gIHNldCBzZWxlY3RlZChfOiBDb21wb25lbnRzLkJxVGFnWydzZWxlY3RlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIFRhZyBjb21wb25lbnRcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFUYWdbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIFRhZyB0byBhcHBseSBvbiB0b3Agb2YgdGhlIHZhcmlhbnRcbiAgICovXG4gIHNldCB2YXJpYW50KF86IENvbXBvbmVudHMuQnFUYWdbJ3ZhcmlhbnQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xvc2UnLCAnYnFPcGVuJywgJ2JxQmx1cicsICdicUNsaWNrJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUYWcgZXh0ZW5kcyBDb21wb25lbnRzLkJxVGFnIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBjbG9zZS9oaWRkZW5cbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBub3Qgb3Blbi9zaG93blxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRhZyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFnRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0YWcgaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhZ0VsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGFnIGlzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWdFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Hcm93JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVSZXNpemUnLCAnZGlzYWJsZWQnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnbWF4bGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzcGVsbGNoZWNrJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnLCAnd3JhcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGV4dGFyZWEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Hcm93JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVSZXNpemUnLCAnZGlzYWJsZWQnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnbWF4bGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzcGVsbGNoZWNrJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnLCAnd3JhcCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0YXJlYSBmaWVsZCBzaG91bGQgYmUgY2FwaXRhbGl6ZWQgYW5kIGhvdy5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29mZicsICdub25lJywgJ29uJywgJ3NlbnRlbmNlcycsICd3b3JkcycsIGFuZCAnY2hhcmFjdGVycycuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemVcbiAgICovXG4gIHNldCBhdXRvY2FwaXRhbGl6ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9jYXBpdGFsaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdGhlIHRleHRhcmVhIGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb21wbGV0ZSBlbmFibGVkLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlI3ZhbHVlc1xuICAgKi9cbiAgc2V0IGF1dG9jb21wbGV0ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9jb21wbGV0ZSddKSB7fTtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIHRleHRhcmVhIGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb3JyZWN0IGVuYWJsZWQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlICdvbicgYW5kICdvZmYnLlxuICAgKi9cbiAgc2V0IGF1dG9jb3JyZWN0KF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b2NvcnJlY3QnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0ZXh0YXJlYSB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9mb2N1cyddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dGFyZWEgd2lsbCBhdXRvbWF0aWNhbGx5IGdyb3cgYW5kIHNocmluayB0byBmaXQgaXRzIGNvbnRlbnRzLlxuSWYgYGZhbHNlYCwgdGhlIHRleHRhcmVhIHdpbGwgaGF2ZSBhIGZpeGVkIGhlaWdodCBzcGVjaWZpZWQgYnkgdGhlIGByb3dzYCBwcm9wZXJ0eS5cbiAgICovXG4gIHNldCBhdXRvR3JvdyhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9Hcm93J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCBiZWZvcmUgZW1pdHRpbmcgdGhlIGBicUlucHV0YCBldmVudCBhZnRlciB0aGUgdGV4dGFyZWEgdmFsdWUgY2hhbmdlcy5cbkEgdmFsdWUgb2YgMCBtZWFucyBubyBkZWJvdW5jaW5nIHdpbGwgb2NjdXIuXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZGVib3VuY2VUaW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSB0ZXh0YXJlYS5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHdpbGwgYmxvY2sgdGhlIHVzZXIncyBhYmlsaXR5IHRvIHJlc2l6ZSB0aGUgdGV4dGFyZWEuXG4gICAqL1xuICBzZXQgZGlzYWJsZVJlc2l6ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2Rpc2FibGVSZXNpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZm9ybSB0aGF0IHRoZSB0ZXh0YXJlYSBmaWVsZCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgc2V0IGZvcm0oXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydmb3JtJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZm9ybVZhbGlkYXRpb25NZXNzYWdlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSBlbnRlcmVkIGludG8gdGhlIHRleHRhcmVhIChgMGA6IG5vIGxpbWl0KS5cbldoZW4gZW5hYmxlZCwgYSBjaGFyYWN0ZXIgY291bnRlciB3aWxsIGJlIHNob3duIHVuZGVybmVhdGggdGhlIHRleHRhcmVhLlxuICAgKi9cbiAgc2V0IG1heGxlbmd0aChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ21heGxlbmd0aCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRvIHNob3cgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICovXG4gIHNldCBwbGFjZWhvbGRlcihfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdGV4dGFyZWEgZmllbGQgY2Fubm90IGJlIG1vZGlmaWVkLlxuICAgKi9cbiAgc2V0IHJlYWRvbmx5KF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsncmVhZG9ubHknXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dGFyZWEgZmllbGQgaXMgcmVxdWlyZWQgdG8gYmUgZmlsbGVkIG91dCBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS5cbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIEl0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgc2V0IHJvd3MoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydyb3dzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdGV4dGFyZWEgY29udGVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLlxuICAgKi9cbiAgc2V0IHNwZWxsY2hlY2soXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydzcGVsbGNoZWNrJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHRleHRhcmVhLiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSB0ZXh0YXJlYS4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIHRleHRhcmVhIGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgdGV4dGFyZWEgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIHRleHRhcmVhIGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsndmFsaWRhdGlvblN0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSB0ZXh0YXJlYS4gSXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIHRleHRhcmVhIHRvIGEgcHJldmlvdXMgdmFsdWUuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWyd2YWx1ZSddKSB7fTtcbiAgICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0aGUgdGV4dCBpbiBhIHRleHQgYXJlYSBpcyB0byBiZSB3cmFwcGVkIHdoZW4gc3VibWl0dGVkIGluIGEgZm9ybVxuICAgKi9cbiAgc2V0IHdyYXAoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWyd3cmFwJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJywgJ2JxSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUZXh0YXJlYSBleHRlbmRzIENvbXBvbmVudHMuQnFUZXh0YXJlYSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgdGV4dGFyZWEgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgdGV4dGFyZWEgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIHRleHRhcmVhIGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWRcbiAgICovXG4gIGJxQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUZXh0YXJlYUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSBoYXMgcmVjZWl2ZWQgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUZXh0YXJlYUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSB2YWx1ZSBjaGFuZ2VzLlxuVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdXNlciB0eXBlcyBvciBwYXN0ZXMgdGV4dCBpbnRvIHRoZSB0ZXh0YXJlYSBmaWVsZC5cbiAgICovXG4gIGJxSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXInLCAnaGlkZUljb24nLCAnb3BlbicsICdwbGFjZW1lbnQnLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ3RvYXN0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10b2FzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2hpZGVJY29uJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3RpbWUnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRvYXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUb2FzdEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBjb3JkZXIgcmFkaXVzIG9mIHRoZSB0b2FzdCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcVRvYXN0Wydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgdG9hc3RcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFUb2FzdFsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogUGxhY2VtZW50IG9mIHRvYXN0XG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFUb2FzdFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHdpbGwgaGlkZSB0b2FzdCBpY29uXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcVRvYXN0WydoaWRlSWNvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHRvYXN0IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFUb2FzdFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSB0b2FzdCB3aWxsIGNsb3NlIGl0c2VsZlxuICAgKi9cbiAgc2V0IHRpbWUoXzogQ29tcG9uZW50cy5CcVRvYXN0Wyd0aW1lJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUhpZGUnLCAnYnFTaG93J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxVG9hc3Qge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIGhpZGRlblxuICAgKi9cbiAgYnFIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVG9hc3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRvYXN0RWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVG9vbHRpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxVG9vbHRpcEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0b29sdGlwIHdpbGwgYWx3YXlzIGJlIHZpc2libGVcbiAgICovXG4gIHNldCBhbHdheXNWaXNpYmxlKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydhbHdheXNWaXNpYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEaXN0YW5jZSBiZXR3ZWVuIHRyaWdnZXIgZWxlbWVudCBhbmQgdG9vbHRpcFxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFycm93IG9uIHRoZSB0b29sdGlwIGNvbnRlbnQgd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBoaWRlQXJyb3coXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ2hpZGVBcnJvdyddKSB7fTtcbiAgXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogV2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4oYXBwbGljYWJsZSBvbmx5IGZvciBjb250ZW50IHNob3J0ZXIgdGhhbiB0aGUgdHJpZ2dlciBlbGVtZW50KVxuICAgKi9cbiAgc2V0IHNhbWVXaWR0aChfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIGFjdGlvbiB3aGVuIHRoZSB0b29sdGlwIHNob3VsZCBiZSBkaXNwbGF5ZWQsIG9uIGhvdmVyIChkZWZhdWx0KSBvciBjbGlja1xuICAgKi9cbiAgc2V0IGRpc3BsYXlPbihfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsnZGlzcGxheU9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIHRvb2x0aXAgaXMgdmlzaWJsZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQsXG5hbmQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSB0cmlnZ2VyXG4gICAqL1xuICBzZXQgdmlzaWJsZShfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsndmlzaWJsZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRvb2x0aXAge31cblxuXG4iXX0=
|
|
2705
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlZXEtYW5ndWxhci9zcmMvZGlyZWN0aXZlcy9jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxvQkFBb0I7QUFDcEIsOENBQThDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFlaEUsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUVwQjs7S0FFQztJQUNILElBQUksVUFBVSxDQUFDLENBQXVDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDekQ7O0tBRUM7SUFDSCxJQUFJLFFBQVEsQ0FBQyxDQUFxQyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQ3JEOztLQUVDO0lBQ0gsSUFBSSxRQUFRLENBQUMsQ0FBcUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNyRDs7O0tBR0M7SUFDSCxJQUFJLFdBQVcsQ0FBQyxDQUF3QyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQzNEOztLQUVDO0lBQ0gsSUFBSSxNQUFNLENBQUMsQ0FBbUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNqRDs7S0FFQztJQUNILElBQUksSUFBSSxDQUFDLENBQWlDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDL0MsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNB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QUNyRDs7O0tBR0M7SUFDSCxJQUFJLFNBQVMsQ0FBQyxDQUFvQyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQ3JEOztLQUVDO0lBQ0gsSUFBSSxTQUFTLENBQUMsQ0FBb0MsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNyRDs7O0tBR0M7SUFDSCxJQUFJLE9BQU8sQ0FBQyxDQUFrQyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQ25ELFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7a0lBakNVLFNBQVM7c0hBQVQsU0FBUyx3T0FKViwyQkFBMkI7O0FBSTFCLFNBQVM7SUFYckIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDO1FBQ3BHLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7S0FDMUIsQ0FBQztxQ0FzQ2UsaUJBQWlCLEVBQUssVUFBVSxFQUFlLE1BQU07R0E5QnpELFNBQVMsQ0FrQ3JCOzs0RkFsQ1ksU0FBUztrQkFQckIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDO2lCQUNyRyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ0BiZWVxL2NvcmUnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ25vQW5pbWF0aW9uJywgJ3JvdGF0ZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnZGlzYWJsZWQnLCAnZXhwYW5kZWQnLCAnbm9BbmltYXRpb24nLCAncm90YXRlJywgJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIHN0eWxlIG9mIHRoZSBBY2NvcmRpb25cbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ2FwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBBY2NvcmRpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIEFjY29yZGlvbiBpcyBleHBhbmRlZFxuICAgKi9cbiAgc2V0IGV4cGFuZGVkKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ2V4cGFuZGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBbmltYXRpb24gaXMgc2V0IHRocm91Z2ggSlMgd2hlbiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IENTUyBjYWxjLXNpemUoKVxuSWYgdHJ1ZSwgdGhlIEFjY29yZGlvbiBhbmltYXRpb24sIHdpbGwgYmUgZGlzYWJsZWQuIE5vIGFuaW1hdGlvbiB3aWxsIGJlIGFwcGxpZWQuXG4gICAqL1xuICBzZXQgbm9BbmltYXRpb24oXzogQ29tcG9uZW50cy5CcUFjY29yZGlvblsnbm9BbmltYXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBBY2NvcmRpb24gZXhwYW5kIGljb24gaXMgcm90YXRlIDE4MGRlZyB3aGVuIGV4cGFuZGVkXG4gICAqL1xuICBzZXQgcm90YXRlKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ3JvdGF0ZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIEFjY29yZGlvblxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvblsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCbHVyJywgJ2JxRm9jdXMnLCAnYnFPcGVuJywgJ2JxQWZ0ZXJPcGVuJywgJ2JxQ2xvc2UnLCAnYnFBZnRlckNsb3NlJywgJ2JxQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLkJxQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFjY29yZGlvbiBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGdldHMgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgb3BlbmVkXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgYWNjb3JkaW9uIGlzIG9wZW5lZFxuICAgKi9cbiAgYnFBZnRlck9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgY2xvc2VkXG4gICAqL1xuICBicUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFjY29yZGlvbiBpcyBjbG9zZWRcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFjY29yZGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2V4cGFuZEFsbCcsICdtdWx0aXBsZScsICdub0FuaW1hdGlvbicsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hY2NvcmRpb24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnZXhwYW5kQWxsJywgJ211bHRpcGxlJywgJ25vQW5pbWF0aW9uJywgJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBY2NvcmRpb25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQWNjb3JkaW9uR3JvdXBFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYXBwZWFyYW5jZSBzdHlsZSBvZiBhY2NvcmRpb24gdG8gYmUgYXBwbGllZCB0byBhbGwgYWNjb3JkaW9uc1xuICAgKi9cbiAgc2V0IGFwcGVhcmFuY2UoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwWydhcHBlYXJhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIGFsbCBhY2NvcmRpb25zIGFyZSBleHBhbmRlZFxuICAgKi9cbiAgc2V0IGV4cGFuZEFsbChfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ2V4cGFuZEFsbCddKSB7fTtcbiAgICAvKipcbiAgICogQW5pbWF0aW9uIGlzIHNldCB0aHJvdWdoIEpTIHdoZW4gdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBDU1MgY2FsYy1zaXplKClcbklmIHRydWUsIHRoZSBhY2NvcmRpb24gYW5pbWF0aW9uLCB3aWxsIGJlIGRpc2FibGVkLiBObyBhbmltYXRpb24gd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgc2V0IG5vQW5pbWF0aW9uKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25Hcm91cFsnbm9BbmltYXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgbXVsdGlwbGUgYWNjb3JkaW9ucyBjYW4gYmUgZXhwYW5kZWQgYXQgdGhlIHNhbWUgdGltZVxuICAgKi9cbiAgc2V0IG11bHRpcGxlKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25Hcm91cFsnbXVsdGlwbGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIGFjY29yZGlvbiB0byBiZSBhcHBsaWVkIHRvIGFsbCBhY2NvcmRpb25zXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQWNjb3JkaW9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3N0aWNreScsICd0aW1lJywgJ3R5cGUnXSxcbiAgbWV0aG9kczogWydoaWRlJywgJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWFsZXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvRGlzbWlzcycsICdib3JkZXInLCAnZGlzYWJsZUNsb3NlJywgJ2hpZGVJY29uJywgJ29wZW4nLCAnc3RpY2t5JywgJ3RpbWUnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUFsZXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFBbGVydEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBhbGVydCB3aWxsIGF1dG9tYXRpY2FsbHkgaGlkZSBhZnRlciB0aGUgc3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lXG4gICAqL1xuICBzZXQgYXV0b0Rpc21pc3MoXzogQ29tcG9uZW50cy5CcUFsZXJ0WydhdXRvRGlzbWlzcyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGNvcm5lciByYWRpdXMgb2YgdGhlIGFsZXJ0IGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxQWxlcnRbJ2JvcmRlciddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNsb3NlIGJ1dHRvbiBhdCB0aGUgdG9wIHJpZ2h0IG9mIHRoZSBhbGVydCB3b24ndCBiZSBzaG93blxuICAgKi9cbiAgc2V0IGRpc2FibGVDbG9zZShfOiBDb21wb25lbnRzLkJxQWxlcnRbJ2Rpc2FibGVDbG9zZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFsZXJ0IGljb24gd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBoaWRlSWNvbihfOiBDb21wb25lbnRzLkJxQWxlcnRbJ2hpZGVJY29uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYWxlcnQgd2lsbCBiZSBzaG93blxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcUFsZXJ0WydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgYWZ0ZXIgd2hpY2ggdGhlIGFsZXJ0IHdpbGwgY2xvc2UgaXRzZWxmLiBPbmx5IHZhbGlkIGlmIGBhdXRvRGlzbWlzcz1cInRydWVcImBcbiAgICovXG4gIHNldCB0aW1lKF86IENvbXBvbmVudHMuQnFBbGVydFsndGltZSddKSB7fTtcbiAgICAvKipcbiAgICogVHlwZSBvZiBBbGVydFxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcUFsZXJ0Wyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYWxlcnQgY29tcG9uZW50IHdpbGwgcmVtYWluIGZpeGVkIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIG9jY3VweWluZyB0aGUgZnVsbCB2aWV3cG9ydFxuICAgKi9cbiAgc2V0IHN0aWNreShfOiBDb21wb25lbnRzLkJxQWxlcnRbJ3N0aWNreSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFIaWRlJywgJ2JxU2hvdycsICdicUFmdGVyU2hvdycsICdicUFmdGVySGlkZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUFsZXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5CcUFsZXJ0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFsZXJ0IGlzIGhpZGRlblxuICAgKi9cbiAgYnFIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhbGVydCBpcyBzaG93blxuICAgKi9cbiAgYnFTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgYWxlcnQgaGFzIGJlZW4gc2hvd25cbiAgICovXG4gIGJxQWZ0ZXJTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgYWxlcnQgaGFzIGJlZW4gaGlkZGVuXG4gICAqL1xuICBicUFmdGVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHRUZXh0JywgJ2ltYWdlJywgJ2luaXRpYWxzJywgJ2xhYmVsJywgJ3NoYXBlJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWF2YXRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWx0VGV4dCcsICdpbWFnZScsICdpbml0aWFscycsICdsYWJlbCcsICdzaGFwZScsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQXZhdGFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFBdmF0YXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBBbHRlcm5hdGUgdGV4dCBmb3IgdGhlIGF2YXRhciBpbWFnZSBpZiB0aGUgaW1hZ2UgY2Fubm90IGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IGFsdFRleHQoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnYWx0VGV4dCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGltYWdlIHNvdXJjZSB0byBsb2FkIG9uIHRoZSBhdmF0YXIgKHRoaXMgY2FuIGJlIGFsc28gYSBiYXNlNjQgZW5jb2RlZCBpbWFnZSlcbiAgICovXG4gIHNldCBpbWFnZShfOiBDb21wb25lbnRzLkJxQXZhdGFyWydpbWFnZSddKSB7fTtcbiAgICAvKipcbiAgICogQSB0ZXh0IHRvIHVzZSBmb3IgZGVzY3JpYmluZyB0aGUgYXZhdGFyIG9uIGFzc2lzdGl2ZSBkZXZpY2VzXG4gICAqL1xuICBzZXQgbGFiZWwoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnbGFiZWwnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgb24gYXZhdGFyXG4gICAqL1xuICBzZXQgaW5pdGlhbHMoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnaW5pdGlhbHMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaGFwZSBvZiB0aGUgYXZhdGFyXG4gICAqL1xuICBzZXQgc2hhcGUoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnc2hhcGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBhdmF0YXJcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5CcUF2YXRhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnc2l6ZScsICd0ZXh0Q29sb3InXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnc2l6ZScsICd0ZXh0Q29sb3InXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQmFkZ2VFbGVtZW50O1xuICAgIC8qKlxuICAgKiBCYWRnZSBiYWNrZ3JvdW5kIGNvbG9yLiBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgdmFsaWQgdmFsdWUgb2YgdGhlIHBhbGV0dGUgY29sb3JcbiAgICovXG4gIHNldCBiYWNrZ3JvdW5kQ29sb3IoXzogQ29tcG9uZW50cy5CcUJhZGdlWydiYWNrZ3JvdW5kQ29sb3InXSkge307XG4gICAgLyoqXG4gICAqIEJhZGdlIG51bWJlciBjb2xvci4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgdGV4dENvbG9yKF86IENvbXBvbmVudHMuQnFCYWRnZVsndGV4dENvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgYmFkZ2UuIFJlbGV2YW50IGlmIGJhZGdlIGhhcyBubyBjb250ZW50LlxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUJhZGdlWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUJhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1icmVhZGNydW1iJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydsYWJlbCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUJyZWFkY3J1bWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJyZWFkY3J1bWJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBkZXNjcmliZSB0aGUgdHlwZSBvZiBuYXZpZ2F0aW9uXG4gICAqL1xuICBzZXQgbGFiZWwoXzogQ29tcG9uZW50cy5CcUJyZWFkY3J1bWJbJ2xhYmVsJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUJyZWFkY3J1bWIgZXh0ZW5kcyBDb21wb25lbnRzLkJxQnJlYWRjcnVtYiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydocmVmJywgJ3JlbCcsICd0YXJnZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWJyZWFkY3J1bWItaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaHJlZicsICdyZWwnLCAndGFyZ2V0J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQnJlYWRjcnVtYkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgc2V0LCB0aGUgYnJlYWRjcnVtYiBpdGVtIHdpbGwgYmUgcmVuZGVyZWQgYXMgYW4gYDxhPmAgd2l0aCB0aGlzIGBocmVmYCwgb3RoZXJ3aXNlLCBhIGA8YnV0dG9uPmAgd2lsbCBiZSByZW5kZXJlZC5cbiAgICovXG4gIHNldCBocmVmKF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iSXRlbVsnaHJlZiddKSB7fTtcbiAgICAvKipcbiAgICogV2hlcmUgdG8gZGlzcGxheSB0aGUgbGluayBpbiB0aGUgYnJvd3NlciBjb250ZXh0LiBSZWxldmFudCBvbmx5IGlmIGBocmVmYCBpcyBzZXQuXG4gICAqL1xuICBzZXQgdGFyZ2V0KF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iSXRlbVsndGFyZ2V0J10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rIGluIHRoZSBicm93c2VyIGNvbnRleHQuIFJlbGV2YW50IG9ubHkgaWYgYGhyZWZgIGlzIHNldC5cbiAgICovXG4gIHNldCByZWwoXzogQ29tcG9uZW50cy5CcUJyZWFkY3J1bWJJdGVtWydyZWwnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCcmVhZGNydW1iSXRlbSBleHRlbmRzIENvbXBvbmVudHMuQnFCcmVhZGNydW1iSXRlbSB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGlzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnYmxvY2snLCAnYm9yZGVyJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnanVzdGlmeUNvbnRlbnQnLCAnbG9hZGluZycsICdzaXplJywgJ3RhcmdldCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdibG9jaycsICdib3JkZXInLCAnZGlzYWJsZWQnLCAnZG93bmxvYWQnLCAnaHJlZicsICdqdXN0aWZ5Q29udGVudCcsICdsb2FkaW5nJywgJ3NpemUnLCAndGFyZ2V0JywgJ3R5cGUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQnV0dG9uRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGFwcGVhcmFuY2Ugc3R5bGUgdG8gYXBwbHkgdG8gdGhlIGJ1dHRvblxuICAgKi9cbiAgc2V0IGFwcGVhcmFuY2UoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnYXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBpdCB3aWxsIG1ha2UgdGhlIGJ1dHRvbiBmaXQgdG8gaXRzIHBhcmVudCB3aWR0aC5cbiAgICovXG4gIHNldCBibG9jayhfOiBDb21wb25lbnRzLkJxQnV0dG9uWydibG9jayddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGNvcm5lciByYWRpdXMgb2YgdGhlIGJ1dHRvblxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxQnV0dG9uWydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBidXR0b24gd2lsbCBiZSBkaXNhYmxlZCAobm8gaW50ZXJhY3Rpb24gYWxsb3dlZClcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxQnV0dG9uWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGVsbHMgdGhlIGJyb3dzZXIgdG8gdHJlYXQgdGhlIGxpbmtlZCBVUkwgYXMgYSBkb3dubG9hZC4gT25seSB1c2VkIHdoZW4gYGhyZWZgIGlzIHNldC5cbkRldGFpbHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItZG93bmxvYWRcbiAgICovXG4gIHNldCBkb3dubG9hZChfOiBDb21wb25lbnRzLkJxQnV0dG9uWydkb3dubG9hZCddKSB7fTtcbiAgICAvKipcbiAgICogV2hlbiBzZXQsIHRoZSB1bmRlcmx5aW5nIGJ1dHRvbiB3aWxsIGJlIHJlbmRlcmVkIGFzIGFuIGA8YT5gIHdpdGggdGhpcyBgaHJlZmAgaW5zdGVhZCBvZiBhIGA8YnV0dG9uPmBcbiAgICovXG4gIHNldCBocmVmKF86IENvbXBvbmVudHMuQnFCdXR0b25bJ2hyZWYnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRldGVybWluYXRlIGhvdyB0aGUgY29udGVudCBzaG91bGQgYmUgYWxpZ25lZFxuICAgKi9cbiAgc2V0IGp1c3RpZnlDb250ZW50KF86IENvbXBvbmVudHMuQnFCdXR0b25bJ2p1c3RpZnlDb250ZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAgaXQgd2lsbCBkaXNwbGF5IHRoZSBidXR0b24gaW4gYSBsb2FkaW5nIHN0YXRlXG4gICAqL1xuICBzZXQgbG9hZGluZyhfOiBDb21wb25lbnRzLkJxQnV0dG9uWydsb2FkaW5nJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgYnV0dG9uXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxQnV0dG9uWydzaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLCBhcyB0aGUgbmFtZSBmb3IgYSBicm93c2luZyBjb250ZXh0IChhIGB0YWJgLCBgd2luZG93YCwgb3IgYDxpZnJhbWU+YClcbkRldGFpbHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItdGFyZ2V0XG4gICAqL1xuICBzZXQgdGFyZ2V0KF86IENvbXBvbmVudHMuQnFCdXR0b25bJ3RhcmdldCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGJ1dHRvblxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhcmlhbnQgb2YgYnV0dG9uIHRvIGFwcGx5IG9uIHRvcCBvZiB0aGUgYXBwZWFyYW5jZSAoYXBwbGljYWJsZSBvbmx5IHRvIGBhcHBlYXJhbmNlPVwicHJpbWFyeVwiYClcbiAgICovXG4gIHNldCB2YXJpYW50KF86IENvbXBvbmVudHMuQnFCdXR0b25bJ3ZhcmlhbnQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLkJxQnV0dG9uIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGJ1dHRvbiBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnV0dG9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFCdXR0b25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGJ1dHRvbiBnZXRzIGZvY3VzXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnV0dG9uRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXInLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFDYXJkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFDYXJkRWxlbWVudDtcbiAgICAvKipcbiAgICogVHlwZSBvZiBjYXJkIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcUNhcmRbJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBjYXJkIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxQ2FyZFsnYm9yZGVyJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUNhcmQgZXh0ZW5kcyBDb21wb25lbnRzLkJxQ2FyZCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnaW5kZXRlcm1pbmF0ZScsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtY2hlY2tib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybUlkJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFDaGVja2JveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQ2hlY2tib3hFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIGNoZWNrYm94IGRpc3BsYXlzIGJhY2tncm91bmQgb24gaG92ZXJcbiAgICovXG4gIHNldCBiYWNrZ3JvdW5kT25Ib3ZlcihfOiBDb21wb25lbnRzLkJxQ2hlY2tib3hbJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZm9ybSBJRCB0aGF0IHRoZSBjaGVja2JveCBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHNldCBmb3JtSWQoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94Wydmb3JtSWQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBuYXRpdmUgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHNldCBmb3JtVmFsaWRhdGlvbk1lc3NhZ2UoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94Wydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgY2hlY2tib3ggaXMgY2hlY2tlZFxuICAgKi9cbiAgc2V0IGNoZWNrZWQoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydjaGVja2VkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIGNoZWNrYm94IGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdGF0ZSB0aGF0IGlzIG5laXRoZXIgY2hlY2tlZCBub3IgdW5jaGVja2VkXG4gICAqL1xuICBzZXQgaW5kZXRlcm1pbmF0ZShfOiBDb21wb25lbnRzLkJxQ2hlY2tib3hbJ2luZGV0ZXJtaW5hdGUnXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEhUTUwgaW5wdXQgZm9ybSBjb250cm9sLiBTdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBhcyBwYXJ0IG9mIGEgbmFtZS92YWx1ZSBwYWlyLlxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBtdXN0IHNwZWNpZnkgYSB2YWx1ZSBmb3IgdGhlIGNoZWNrYm94IGJlZm9yZSB0aGUgb3duaW5nIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZFxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94LiBQcmltYXJpbHkgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGEgbGlzdCBvZiByZWxhdGVkIGNoZWNrYm94ZXMgdGhhdCBoYXZlIHRoZSBzYW1lIG5hbWUuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94Wyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnLCAnYnFGb2N1cycsICdicUJsdXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuQnFDaGVja2JveCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQ2hlY2tib3hFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQ2hlY2tib3hFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGVhckJ1dHRvbkxhYmVsJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmaXJzdERheU9mV2VlaycsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdmb3JtYXRPcHRpb25zJywgJ2lzRGF0ZURpc2FsbG93ZWQnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbW9udGhzJywgJ21vbnRoc1BlclZpZXcnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdzaG93T3V0c2lkZURheXMnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndGVudGF0aXZlJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kYXRlLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2Zvcm0nLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2Zvcm1hdE9wdGlvbnMnLCAnaXNEYXRlRGlzYWxsb3dlZCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdtb250aHMnLCAnbW9udGhzUGVyVmlldycsICduYW1lJywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Nob3dPdXRzaWRlRGF5cycsICdza2lkZGluZycsICdzdHJhdGVneScsICd0ZW50YXRpdmUnLCAndHlwZScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIERhdGUgcGlja2VyIGlucHV0IHdpbGwgYmUgZm9jdXNlZCBvbiBjb21wb25lbnQgcmVuZGVyXG4gICAqL1xuICBzZXQgYXV0b2ZvY3VzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydhdXRvZm9jdXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjbGVhciBidXR0b24gYXJpYSBsYWJlbFxuICAgKi9cbiAgc2V0IGNsZWFyQnV0dG9uTGFiZWwoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2NsZWFyQnV0dG9uTGFiZWwnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNsZWFyIGJ1dHRvbiB3b24ndCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBkaXNhYmxlQ2xlYXIoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2Rpc2FibGVDbGVhciddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIERhdGUgcGlja2VyIGlucHV0IGlzIGRpc2FibGVkIG9yIG5vdC5cbklmIGB0cnVlYCwgdGhlIERhdGUgcGlja2VyIGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgZGlzdGFuY2UgKGd1dHRlciBvciBtYXJnaW4pIGJldHdlZW4gdGhlIERhdGUgcGlja2VyIHBhbmVsIGFuZCB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICovXG4gIHNldCBkaXN0YW5jZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZGlzdGFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIHdoZXJlIFN1bmRheSBpcyAwLCBNb25kYXkgaXMgMSwgZXRjXG4gICAqL1xuICBzZXQgZmlyc3REYXlPZldlZWsoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2ZpcnN0RGF5T2ZXZWVrJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgb3B0aW9ucyB0byB1c2Ugd2hlbiBmb3JtYXR0aW5nIHRoZSBkaXNwbGF5ZWQgdmFsdWUuXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL0RhdGVUaW1lRm9ybWF0I3VzaW5nX29wdGlvbnNcbiAgICovXG4gIHNldCBmb3JtYXRPcHRpb25zKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydmb3JtYXRPcHRpb25zJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGZvcm0gdGhhdCB0aGUgRGF0ZSBwaWNrZXIgaW5wdXQgYmVsb25ncyB0by5cbiAgICovXG4gIHNldCBmb3JtKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydmb3JtJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIChtYW5kYXRvcnkgaWYgYHJlcXVpcmVkYCBpcyBzZXQpXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGRhdGUgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0ZSBzaG91bGQgbm90IGJlIHNlbGVjdGFibGVcbiAgICovXG4gIHNldCBpc0RhdGVEaXNhbGxvd2VkKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydpc0RhdGVEaXNhbGxvd2VkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbG9jYWxlIGZvciBmb3JtYXR0aW5nIGRhdGVzLiBJZiBub3Qgc2V0LCB3aWxsIHVzZSB0aGUgYnJvd3NlcidzIGxvY2FsZS5cbkRldGFpbHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwjbG9jYWxlc19hcmd1bWVudFxuICAgKi9cbiAgc2V0IGxvY2FsZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnbG9jYWxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21heCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNldCBtaW4oXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21pbiddKSB7fTtcbiAgICAvKipcbiAgICogTnVtYmVyIG9mIG1vbnRocyB0byBzaG93IHdoZW4gcmFuZ2UgaXMgYHRydWVgXG4gICAqL1xuICBzZXQgbW9udGhzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydtb250aHMnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBzaG91bGQgbmF2aWdhdGUgdGhlIGNhbGVuZGFyLlxuLSBzaW5nbGU6IFRoZSBidXR0b25zIHdpbGwgbmF2aWdhdGUgYnkgYSBzaW5nbGUgbW9udGggYXQgYSB0aW1lLlxuLSBtb250aHM6IFRoZSBidXR0b25zIHdpbGwgbmF2aWdhdGUgYnkgdGhlIG51bWJlciBvZiBtb250aHMgZGlzcGxheWVkIHBlciB2aWV3LlxuICAgKi9cbiAgc2V0IG1vbnRoc1BlclZpZXcoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21vbnRoc1BlclZpZXcnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBEYXRlIHBpY2tlciBpbnB1dCBuYW1lLlxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIERhdGUgcGlja2VyIHBhbmVsIHdpbGwgYmUgdmlzaWJsZS5cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBEYXRlIHBpY2tlciBwYW5lbC5cbiAgICovXG4gIHNldCBwYW5lbEhlaWdodChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBEYXRlIHBpY2tlciBpbnB1dCBwbGFjZWhvbGRlciB0ZXh0IHZhbHVlXG4gICAqL1xuICBzZXQgcGxhY2Vob2xkZXIoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWxcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBEYXRlIHBpY2tlciBpbnB1dCBpcyByZXF1aXJlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgc2tpZGRpbmcgYmV0d2VlbiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IHNraWRkaW5nKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydza2lkZGluZyddKSB7fTtcbiAgICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGRheXMgb3V0c2lkZSB0aGUgbW9udGhcbiAgICovXG4gIHNldCBzaG93T3V0c2lkZURheXMoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3Nob3dPdXRzaWRlRGF5cyddKSB7fTtcbiAgICAvKipcbiAgICogRGVmaW5lcyB0aGUgc3RyYXRlZ3kgdG8gcG9zaXRpb24gdGhlIERhdGUgcGlja2VyIHBhbmVsXG4gICAqL1xuICBzZXQgc3RyYXRlZ3koXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3N0cmF0ZWd5J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZGF0ZSB0aGF0IGlzIHRlbnRhdGl2ZWx5IHNlbGVjdGVkIGUuZy4gdGhlIHN0YXJ0IG9mIGEgcmFuZ2Ugc2VsZWN0aW9uXG4gICAqL1xuICBzZXQgdGVudGF0aXZlKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWyd0ZW50YXRpdmUnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgaG93IHRoZSBjYWxlbmRhciB3aWxsIGJlaGF2ZSwgYWxsb3dpbmcgc2luZ2xlIGRhdGUgc2VsZWN0aW9uLCByYW5nZSBzZWxlY3Rpb24sIG9yIG11bHRpcGxlIGRhdGUgc2VsZWN0aW9uXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBTZWxlY3QgaW5wdXQuIEByZW1hcmtzIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHNlbGVjdCBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWyd2YWxpZGF0aW9uU3RhdHVzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2VsZWN0IGlucHV0IHZhbHVlIHJlcHJlc2VudHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlIG9yIHJhbmdlIGFuZCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgZmllbGQgdG8gYSBwcmV2aW91cyB2YWx1ZS5cbkFsbCBkYXRlcyBhcmUgZXhwZWN0ZWQgaW4gSVNPLTg2MDEgZm9ybWF0IChZWVlZLU1NLUREKS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEYXRlUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5CcURhdGVQaWNrZXIge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFEYXRlUGlja2VyRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFEYXRlUGlja2VyRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcURhdGVQaWNrZXJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaGFzIHJlY2VpdmVkIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2Rpc2FibGVCYWNrZHJvcCcsICdkaXNhYmxlQ2xvc2VDbGlja091dHNpZGUnLCAnZGlzYWJsZUNsb3NlRXNjS2V5ZG93bicsICdmb290ZXJBcHBlYXJhbmNlJywgJ2hpZGVDbG9zZUJ1dHRvbicsICdvcGVuJywgJ3NpemUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnY2FuY2VsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdkaXNhYmxlQmFja2Ryb3AnLCAnZGlzYWJsZUNsb3NlQ2xpY2tPdXRzaWRlJywgJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nLCAnZm9vdGVyQXBwZWFyYW5jZScsICdoaWRlQ2xvc2VCdXR0b24nLCAnb3BlbicsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEaWFsb2dFbGVtZW50O1xuICAgIC8qKlxuICAgKiBCb3JkZXIgcmFkaXVzIG9mIHRoZSBkaWFsb2cgY29tcG9uZW50XG4gICAqL1xuICBzZXQgYm9yZGVyKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2JvcmRlciddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJhY2tkcm9wIG92ZXJsYXkgd29uJ3QgYmUgc2hvd24gd2hlbiB0aGUgZGlhbG9nIG9wZW5zXG4gICAqL1xuICBzZXQgZGlzYWJsZUJhY2tkcm9wKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2Rpc2FibGVCYWNrZHJvcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRpYWxvZyB3aWxsIG5vdCBjbG9zZSB3aGVuIHRoZSBbRXNjXSBrZXkgaXMgcHJlc3NcbiAgICovXG4gIHNldCBkaXNhYmxlQ2xvc2VFc2NLZXlkb3duKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBub3QgY2xvc2Ugd2hlbiBjbGlja2luZyBvbiB0aGUgYmFja2Ryb3Agb3ZlcmxheVxuICAgKi9cbiAgc2V0IGRpc2FibGVDbG9zZUNsaWNrT3V0c2lkZShfOiBDb21wb25lbnRzLkJxRGlhbG9nWydkaXNhYmxlQ2xvc2VDbGlja091dHNpZGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIG9mIGZvb3RlclxuICAgKi9cbiAgc2V0IGZvb3RlckFwcGVhcmFuY2UoXzogQ29tcG9uZW50cy5CcURpYWxvZ1snZm9vdGVyQXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgaXQgaGlkZXMgdGhlIGNsb3NlIGJ1dHRvblxuICAgKi9cbiAgc2V0IGhpZGVDbG9zZUJ1dHRvbihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydoaWRlQ2xvc2VCdXR0b24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBiZSBzaG93biBhcyBvcGVuXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgZGlhbG9nXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxRGlhbG9nWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNhbmNlbCcsICdicUNsb3NlJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnRzLkJxRGlhbG9nIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgaGFzIGJlZW4gY2FuY2VsZWQgb3IgZGlzbWlzc2VkXG4gICAqL1xuICBicUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgd2lsbCBjbG9zZVxuICAgKi9cbiAgYnFDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgd2lsbCBvcGVuXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIGZpbmlzaCBvcGVuaW5nXG4gICAqL1xuICBicUFmdGVyT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgZmluaXNoIGNsb3NpbmdcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGFzaGVkJywgJ29yaWVudGF0aW9uJywgJ3N0cm9rZUJhc2lzJywgJ3N0cm9rZUNvbG9yJywgJ3N0cm9rZURhc2hHYXAnLCAnc3Ryb2tlRGFzaFdpZHRoJywgJ3N0cm9rZUxpbmVjYXAnLCAnc3Ryb2tlVGhpY2tuZXNzJywgJ3RpdGxlQWxpZ25tZW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkYXNoZWQnLCAnb3JpZW50YXRpb24nLCAnc3Ryb2tlQmFzaXMnLCAnc3Ryb2tlQ29sb3InLCAnc3Ryb2tlRGFzaEdhcCcsICdzdHJva2VEYXNoV2lkdGgnLCAnc3Ryb2tlTGluZWNhcCcsICdzdHJva2VUaGlja25lc3MnLCAndGl0bGVBbGlnbm1lbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFEaXZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEaXZpZGVyRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRpdmlkZXIgaGFzIGEgZGFzaGVkIHBhdHRlcm5cbiAgICovXG4gIHNldCBkYXNoZWQoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ2Rhc2hlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRlZmF1bHQgb3JpZW50YXRpb24gb2YgdGhlIGRpdmlkZXJcbiAgICovXG4gIHNldCBvcmllbnRhdGlvbihfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnb3JpZW50YXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc3Ryb2tlIGNvbG9yIG9mIHRoZSBkaXZpZGVyLiBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgdmFsaWQgdmFsdWUgb2YgdGhlIHBhbGV0dGUgY29sb3JcbiAgICovXG4gIHNldCBzdHJva2VDb2xvcihfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlQ29sb3InXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgYWxpZ25tZW50IG9mIHRoZSB0aXRsZSBvbiB0aGUgbWFpbiBheGlzIG9mIHRoZSBkaXZpZGVyIChob3Jpem9udGFsIC8gdmVydGljYWwpXG4gICAqL1xuICBzZXQgdGl0bGVBbGlnbm1lbnQoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3RpdGxlQWxpZ25tZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIHdpZHRoIG9mIGVhY2ggZGFzaCBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZS4gVGhpcyBpcyBhcHBsaWNhYmxlIHdoZW4gdGhlIHN0cm9rZSBpcyBkYXNoZWRcbiAgICovXG4gIHNldCBzdHJva2VEYXNoV2lkdGgoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZURhc2hXaWR0aCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBnYXAgb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFRoaXMgaXMgYXBwbGljYWJsZSB3aGVuIHRoZSBzdHJva2UgaXMgZGFzaGVkXG4gICAqL1xuICBzZXQgc3Ryb2tlRGFzaEdhcChfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlRGFzaEdhcCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSB0aGlja25lc3Mgb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFZhbHVlIGV4cHJlc3NlZCBpbiBweFxuICAgKi9cbiAgc2V0IHN0cm9rZVRoaWNrbmVzcyhfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlVGhpY2tuZXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIG1pbiB3aWR0aCBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZSB3aGVuIHRleHQgaXMgbm90IGNlbnRlcmVkLiBWYWx1ZSBleHByZXNzZWQgaW4gcHhcbiAgICovXG4gIHNldCBzdHJva2VCYXNpcyhfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlQmFzaXMnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgbGluZSBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZS4gVGhpcyBpcyBhcHBsaWNhYmxlIHdoZW4gdGhlIHN0cm9rZSBpcyBkYXNoZWRcbiAgICovXG4gIHNldCBzdHJva2VMaW5lY2FwKF86IENvbXBvbmVudHMuQnFEaXZpZGVyWydzdHJva2VMaW5lY2FwJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjbG9zZU9uQ2xpY2tPdXRzaWRlJywgJ2Nsb3NlT25Fc2MnLCAnZW5hYmxlQmFja2Ryb3AnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAncG9zaXRpb24nXSxcbiAgbWV0aG9kczogWydoaWRlJywgJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWRyYXdlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xvc2VPbkNsaWNrT3V0c2lkZScsICdjbG9zZU9uRXNjJywgJ2VuYWJsZUJhY2tkcm9wJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRHJhd2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEcmF3ZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYmFja2Ryb3Agb3ZlcmxheSB3aWxsIGJlIHNob3duIHdoZW4gdGhlIGRyYXdlciBvcGVuc1xuICAgKi9cbiAgc2V0IGVuYWJsZUJhY2tkcm9wKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2VuYWJsZUJhY2tkcm9wJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZHJhd2VyIHdpbGwgbm90IGNsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFuZWxcbiAgICovXG4gIHNldCBjbG9zZU9uQ2xpY2tPdXRzaWRlKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2Nsb3NlT25DbGlja091dHNpZGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBub3QgY2xvc2Ugd2hlbiB0aGUgW0VzY10ga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIHNldCBjbG9zZU9uRXNjKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2Nsb3NlT25Fc2MnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkcmF3ZXIgY29tcG9uZW50IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ29wZW4nXSkge307XG4gICAgLyoqXG4gICAqICBAZGVwcmVjYXRlZCBEZWZpbmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhd2VyXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogRGVmaW5lcyB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYXdlclxuICAgKi9cbiAgc2V0IHBvc2l0aW9uKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ3Bvc2l0aW9uJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsb3NlJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEcmF3ZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxRHJhd2VyIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyYXdlciBpcyBjbG9zZWRcbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyYXdlciBpcyBvcGVuZWRcbiAgICovXG4gIGJxT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRyYXdlciBoYXMgYmVlbiBvcGVuZWRcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgZHJhd2VyIGhhcyBiZWVuIGNsb3NlZFxuICAgKi9cbiAgYnFBZnRlckNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAna2VlcE9wZW5PblNlbGVjdCcsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRHJvcGRvd25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZHJvcGRvd24gcGFuZWwgd2lsbCBiZSB2aXNpYmxlIGFuZCB3b24ndCBiZSBzaG93bi5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgcGFuZWwgYW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHBhbmVsIHdpbGwgcmVtYWluIG9wZW4gYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZS5cbiAgICovXG4gIHNldCBrZWVwT3Blbk9uU2VsZWN0KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsna2VlcE9wZW5PblNlbGVjdCddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgcGFuZWwgd2lsbCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBkcm9wZG93biBwYW5lbFxuICAgKi9cbiAgc2V0IHBhbmVsSGVpZ2h0KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBhbmVsIHNob3VsZCBoYXZlIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICovXG4gIHNldCBzYW1lV2lkdGgoXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydzYW1lV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHNraWRkaW5nIGJldHdlZW4gdGhlIHBhbmVsIGFuZCB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgc2V0IHNraWRkaW5nKF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnc2tpZGRpbmcnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHN0cmF0ZWd5IHRvIHBvc2l0aW9uIHRoZSBwYW5lbFxuICAgKi9cbiAgc2V0IHN0cmF0ZWd5KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnc3RyYXRlZ3knXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxT3BlbiddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5CcURyb3Bkb3duIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyb3Bkb3duIHBhbmVsIGlzIG9wZW5lZCBvciBjbG9zZWQuXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1lbXB0eS1zdGF0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUVtcHR5U3RhdGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUVtcHR5U3RhdGVFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgZW1wdHkgc3RhdGUgY29tcG9uZW50XG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxRW1wdHlTdGF0ZVsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFFbXB0eVN0YXRlIGV4dGVuZHMgQ29tcG9uZW50cy5CcUVtcHR5U3RhdGUge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnbGFiZWwnLCAnbmFtZScsICdzaXplJywgJ3NyYycsICd3ZWlnaHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhYmVsJywgJ25hbWUnLCAnc2l6ZScsICdzcmMnLCAnd2VpZ2h0J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxSWNvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgaWNvbiwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eVxuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFJY29uWydsYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBzdHJva2UgY29sb3Igb2YgdGhlIFNWRy4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgY29sb3IoXzogQ29tcG9uZW50cy5CcUljb25bJ2NvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJY29uIG5hbWUgdG8gbG9hZC4gUGxlYXNlIGNoZWNrIGFsbCBhdmFpbGFibGUgaWNvbnMgW2hlcmVdKGh0dHBzOi8vcGhvc3Bob3JpY29ucy5jb20vKVxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcUljb25bJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc2l6ZSBvZiB0aGUgU1ZHXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxSWNvblsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBzb3VyY2Ugb2YgdGhlIFNWRy4gSWYgdGhlIHNvdXJjZSBpcyBzZXQsIHRoZSBuYW1lIHByb3BlcnR5IHdpbGwgYmUgaWdub3JlZFxuICAgKi9cbiAgc2V0IHNyYyhfOiBDb21wb25lbnRzLkJxSWNvblsnc3JjJ10pIHt9O1xuICAgIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWQgSXQgc2V0IHRoZSBpY29uIHdlaWdodC9zdHlsZVxuICAgKi9cbiAgc2V0IHdlaWdodChfOiBDb21wb25lbnRzLkJxSWNvblsnd2VpZ2h0J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydzdmdMb2FkZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFJY29uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUljb24ge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgU1ZHIGhhcyBsb2FkZWRcbiAgICovXG4gIHN2Z0xvYWRlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvY2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnYXV0b2NvcnJlY3QnLCAnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdpbnB1dG1vZGUnLCAnbWF4JywgJ21heGxlbmd0aCcsICdtaW4nLCAnbWlubGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGVwJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtaW5wdXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Zvcm0nLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2lucHV0bW9kZScsICdtYXgnLCAnbWF4bGVuZ3RoJywgJ21pbicsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAndHlwZScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUlucHV0RWxlbWVudDtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIHNob3VsZCBiZSBjYXBpdGFsaXplZCBhbmQgaG93LlxuUG9zc2libGUgdmFsdWVzIGFyZSAnb2ZmJywgJ25vbmUnLCAnb24nLCAnc2VudGVuY2VzJywgJ3dvcmRzJywgYW5kICdjaGFyYWN0ZXJzJy5cblNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hdXRvY2FwaXRhbGl6ZVxuICAgKi9cbiAgc2V0IGF1dG9jYXBpdGFsaXplKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2NhcGl0YWxpemUnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvbXBsZXRlIGVuYWJsZWQuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUjdmFsdWVzXG4gICAqL1xuICBzZXQgYXV0b2NvbXBsZXRlKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2NvbXBsZXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvcnJlY3QgZW5hYmxlZC5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29uJyBhbmQgJ29mZicuXG4gICAqL1xuICBzZXQgYXV0b2NvcnJlY3QoXzogQ29tcG9uZW50cy5CcUlucHV0WydhdXRvY29ycmVjdCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGlucHV0IHdpbGwgYmUgZm9jdXNlZCBvbiBjb21wb25lbnQgcmVuZGVyXG4gICAqL1xuICBzZXQgYXV0b2ZvY3VzKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2ZvY3VzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY2xlYXIgYnV0dG9uIGFyaWEgbGFiZWxcbiAgICovXG4gIHNldCBjbGVhckJ1dHRvbkxhYmVsKF86IENvbXBvbmVudHMuQnFJbnB1dFsnY2xlYXJCdXR0b25MYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgYmVmb3JlIGVtaXR0aW5nIHRoZSBgYnFJbnB1dGAgZXZlbnQgYWZ0ZXIgdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5BIHZhbHVlIG9mIDAgbWVhbnMgbm8gZGVib3VuY2luZyB3aWxsIG9jY3VyLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2RlYm91bmNlVGltZSddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkIG9yIG5vdC5cbklmIGB0cnVlYCwgdGhlIGlucHV0IGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbGVhciBidXR0b24gd29uJ3QgYmUgZGlzcGxheWVkXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsZWFyKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZGlzYWJsZUNsZWFyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGZvcm0gdGhhdCB0aGUgaW5wdXQgZmllbGQgYmVsb25ncyB0by5cbiAgICovXG4gIHNldCBmb3JtKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZm9ybSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSAobWFuZGF0b3J5IGlmIGByZXF1aXJlZGAgaXMgc2V0KVxuICAgKi9cbiAgc2V0IGZvcm1WYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGlucHV0bW9kZSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBpbnB1dCBtZWNoYW5pc20gd291bGQgYmUgbW9zdCBoZWxwZnVsIGZvciB1c2VycyBlbnRlcmluZyBjb250ZW50IGludG8gdGhlIGlucHV0IGZpZWxkLlxuVGhpcyBhbGxvd3MgYSBicm93c2VyIHRvIGRpc3BsYXkgYW4gYXBwcm9wcmlhdGUgdmlydHVhbCBrZXlib2FyZCB3aGlsZSBlZGl0aW5nLlxuUG9zc2libGUgdmFsdWVzIGFyZSAnbm9uZScsICd0ZXh0JywgJ2RlY2ltYWwnLCAnbnVtZXJpYycsICd0ZWwnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3VybCcsIGFuZCAnZGF0ZScuXG4gICAqL1xuICBzZXQgaW5wdXRtb2RlKF86IENvbXBvbmVudHMuQnFJbnB1dFsnaW5wdXRtb2RlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuT25seSBhcHBsaWVzIHRvIGRhdGUgYW5kIG51bWJlciBpbnB1dCB0eXBlcy5cbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcUlucHV0WydtYXgnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdGhlIGlucHV0IGZpZWxkIGNhbiBhY2NlcHQuXG4gICAqL1xuICBzZXQgbWF4bGVuZ3RoKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWF4bGVuZ3RoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuT25seSBhcHBsaWVzIHRvIGRhdGUgYW5kIG51bWJlciBpbnB1dCB0eXBlcy5cbiAgICovXG4gIHNldCBtaW4oXzogQ29tcG9uZW50cy5CcUlucHV0WydtaW4nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdGhlIGlucHV0IGZpZWxkIGNhbiBhY2NlcHQuXG4gICAqL1xuICBzZXQgbWlubGVuZ3RoKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWlubGVuZ3RoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaW5wdXQgZmllbGQgbmFtZS5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogU3BlY2lmaWVzIGEgcmVndWxhciBleHByZXNzaW9uIHRoZSBmb3JtIGNvbnRyb2wncyB2YWx1ZSBzaG91bGQgbWF0Y2guXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9wYXR0ZXJuXG4gICAqL1xuICBzZXQgcGF0dGVybihfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3BhdHRlcm4nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbnB1dCBwbGFjZWhvbGRlciB0ZXh0IHZhbHVlXG4gICAqL1xuICBzZXQgcGxhY2Vob2xkZXIoXzogQ29tcG9uZW50cy5CcUlucHV0WydwbGFjZWhvbGRlciddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGlucHV0IGZpZWxkIGNhbm5vdCBiZSBtb2RpZmllZC5cbiAgICovXG4gIHNldCByZWFkb25seShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3JlYWRvbmx5J10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIHRvIGJlIGZpbGxlZCBvdXQgYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIGZvcm0uXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcUlucHV0WydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGdyYW51bGFyaXR5IHRoYXQgdGhlIHZhbHVlIG11c3QgYWRoZXJlIHRvLlxuVmFsaWQgZm9yIGRhdGUsIG1vbnRoLCB3ZWVrLCB0aW1lLCBkYXRldGltZS1sb2NhbCwgbnVtYmVyLCBhbmQgcmFuZ2UuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNzdGVwXG4gICAqL1xuICBzZXQgc3RlcChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3N0ZXAnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0eXBlIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgaW5wdXQgZmllbGQgdG8gZGlzcGxheS5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAnbnVtYmVyJywgJ3RlbCcsICdzZWFyY2gnLCAndXJsJywgYW5kIG1vcmUuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNpbnB1dF90eXBlc1xuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcUlucHV0Wyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIGlucHV0LiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFJbnB1dFsndmFsaWRhdGlvblN0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGlucHV0IHZhbHVlLCBpdCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgaW5wdXQgdG8gYSBwcmV2aW91cyB2YWx1ZVxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFJbnB1dFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUlucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5CcUlucHV0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGNoYW5nZWQgYW5kIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgZmluaXNoZXMgdHlwaW5nIG9yIHBhc3RpbmcgdGV4dCBpbnRvIHRoZSBpbnB1dCBmaWVsZCBhbmQgdGhlbiBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdOyBlbDogSFRNTEJxSW5wdXRFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkXG4gICAqL1xuICBicUNsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaGFzIHJlY2VpdmVkIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgdHlwZXMgb3IgcGFzdGVzIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBicUlucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW107IGVsOiBIVE1MQnFJbnB1dEVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvRGlzbWlzcycsICdib3JkZXInLCAnZGlzYWJsZUNsb3NlJywgJ2hpZGVJY29uJywgJ29wZW4nLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93JywgJ3RvYXN0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1ub3RpZmljYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9EaXNtaXNzJywgJ2JvcmRlcicsICdkaXNhYmxlQ2xvc2UnLCAnaGlkZUljb24nLCAnb3BlbicsICd0aW1lJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFOb3RpZmljYXRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcU5vdGlmaWNhdGlvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBub3RpZmljYXRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGhpZGUgYWZ0ZXIgdGhlIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZVxuICAgKi9cbiAgc2V0IGF1dG9EaXNtaXNzKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ2F1dG9EaXNtaXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29yZGVyIHJhZGl1cyBvZiB0aGUgbm90aWZpY2F0aW9uIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uWydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbG9zZSBidXR0b24gYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgbm90aWZpY2F0aW9uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsb3NlKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ2Rpc2FibGVDbG9zZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG5vdGlmaWNhdGlvbiBpY29uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsnaGlkZUljb24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBub3RpZmljYXRpb24gd2lsbCBiZSBzaG93blxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSBub3RpZmljYXRpb24gd2lsbCBjbG9zZSBpdHNlbGYuIE9ubHkgdmFsaWQgaWYgYGF1dG9EaXNtaXNzPVwidHJ1ZVwiYFxuICAgKi9cbiAgc2V0IHRpbWUoXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsndGltZSddKSB7fTtcbiAgICAvKipcbiAgICogVHlwZSBvZiBOb3RpZmljYXRpb25cbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ3R5cGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnLCAnYnFBZnRlck9wZW4nLCAnYnFBZnRlckNsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxTm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgaGlkZGVuXG4gICAqL1xuICBicUhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBzaG93blxuICAgKi9cbiAgYnFTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGhhcyBiZWVuIG9wZW5lZFxuICAgKi9cbiAgYnFBZnRlck9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBub3RpZmljYXRpb24gaGFzIGJlZW4gY2xvc2VkXG4gICAqL1xuICBicUFmdGVyQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ3NlbGVjdGVkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1vcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcU9wdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxT3B0aW9uRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9wdGlvbiBpcyBoaWRkZW4uXG4gICAqL1xuICBzZXQgaGlkZGVuKF86IENvbXBvbmVudHMuQnFPcHRpb25bJ2hpZGRlbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxT3B0aW9uWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLiBDYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgaXRlbVxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFPcHRpb25bJ3ZhbHVlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkIGFuZCBhY3RpdmUuXG4gICAqL1xuICBzZXQgc2VsZWN0ZWQoXzogQ29tcG9uZW50cy5CcU9wdGlvblsnc2VsZWN0ZWQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxQ2xpY2snLCAnYnFFbnRlciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcU9wdGlvbiBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb24ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFPcHRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgZm9jdXNlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcU9wdGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgb24gZW50ZXIga2V5IHByZXNzXG4gICAqL1xuICBicUVudGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtb3B0aW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEJxT3B0aW9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcU9wdGlvbkdyb3VwRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFPcHRpb25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb25Hcm91cCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLW9wdGlvbi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFPcHRpb25MaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFPcHRpb25MaXN0RWxlbWVudDtcbiAgICAvKipcbiAgICogQXJpYSBsYWJlbCBmb3IgdGhlIGxpc3QuXG4gICAqL1xuICBzZXQgYXJpYUxhYmVsKF86IENvbXBvbmVudHMuQnFPcHRpb25MaXN0WydhcmlhTGFiZWwnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxU2VsZWN0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb25MaXN0IHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYGJxLW9wdGlvbmAgaXMgc2VsZWN0ZWQgKG9uIGNsaWNrL2VudGVyIHByZXNzKS5cbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBpdGVtOiBIVE1MQnFPcHRpb25FbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXBhZ2UtdGl0bGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQYWdlVGl0bGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVBhZ2VUaXRsZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxUGFnZVRpdGxlIGV4dGVuZHMgQ29tcG9uZW50cy5CcVBhZ2VUaXRsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXN0YW5jZScsICdvcGVuJywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXN0YW5jZScsICdvcGVuJywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxUGFuZWxFbGVtZW50O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgcGFuZWwgYW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcVBhbmVsWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFQYW5lbFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgcGFuZWwgd2lsbCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcVBhbmVsWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwYW5lbCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAqL1xuICBzZXQgc2FtZVdpZHRoKF86IENvbXBvbmVudHMuQnFQYW5lbFsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBza2lkZGluZyBiZXR3ZWVuIHRoZSBwYW5lbCBhbmQgdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICovXG4gIHNldCBza2lkZGluZyhfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3NraWRkaW5nJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzdHJhdGVneSB0byBwb3NpdGlvbiB0aGUgcGFuZWxcbiAgICovXG4gIHNldCBzdHJhdGVneShfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3N0cmF0ZWd5J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5CcVBhbmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcHJvZ3Jlc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVByb2dyZXNzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFQcm9ncmVzc0VsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEl0IHdpbGwgc2V0IHRoZSBib3JkZXIgc3R5bGUgb2YgdGhlIHByb2dyZXNzIGJhclxuICAgKi9cbiAgc2V0IGJvcmRlclNoYXBlKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1snYm9yZGVyU2hhcGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgYSB0b29sdGlwIHdpbGwgYmUgc2hvd24gZGlzcGxheWluZyB0aGUgcHJvZ3Jlc3MgdmFsdWVcbiAgICovXG4gIHNldCBlbmFibGVUb29sdGlwKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1snZW5hYmxlVG9vbHRpcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIG9mIHByb2dyZXNzIGJhciBpcyBlbmFibGVkXG4gICAqL1xuICBzZXQgaW5kZXRlcm1pbmF0ZShfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2luZGV0ZXJtaW5hdGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlLCBhIGxhYmVsIHRleHQgc2hvd2luZyB0aGUgdmFsdWUgKGluIHBlcmNlbnRhZ2UpIHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBsYWJlbChfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2xhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQcm9ncmVzcyBiYXIgdGhpY2tuZXNzXG4gICAqL1xuICBzZXQgdGhpY2tuZXNzKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1sndGhpY2tuZXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQcm9ncmVzcyB0eXBlXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVByb2dyZXNzWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFQcm9ncmVzcyBleHRlbmRzIENvbXBvbmVudHMuQnFQcm9ncmVzcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1cicsICdnZXROYXRpdmVJbnB1dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybUlkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxUmFkaW9FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHJhZGlvIGlucHV0IGlzIGNoZWNrZWRcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFSYWRpb1snY2hlY2tlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSByYWRpbyBpbnB1dCBpcyBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFSYWRpb1snZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgcmFkaW8gZGlzcGxheXMgYmFja2dyb3VuZCBvbiBob3ZlclxuICAgKi9cbiAgc2V0IGJhY2tncm91bmRPbkhvdmVyKF86IENvbXBvbmVudHMuQnFSYWRpb1snYmFja2dyb3VuZE9uSG92ZXInXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBmb3JtIElEIHRoYXQgdGhlIHJhZGlvIGlucHV0IGlzIGFzc29jaWF0ZWQgd2l0aFxuICAgKi9cbiAgc2V0IGZvcm1JZChfOiBDb21wb25lbnRzLkJxUmFkaW9bJ2Zvcm1JZCddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgSFRNTCBpbnB1dCBmb3JtIGNvbnRyb2wuIFN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGFzIHBhcnQgb2YgYSBuYW1lL3ZhbHVlIHBhaXIuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxUmFkaW9bJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgd2lsbCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIG11c3Qgc3BlY2lmeSBhIHZhbHVlIGZvciB0aGUgcmFkaW8gYmVmb3JlIHRoZSBvd25pbmcgZm9ybSBjYW4gYmUgc3VibWl0dGVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVJhZGlvWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8uXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVJhZGlvWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbGljaycsICdicUZvY3VzJywgJ2JxQmx1cicsICdicUtleURvd24nXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuQnFSYWRpbyB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgYnFLZXlEb3duOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZWQnLCAnZmllbGRzZXQnLCAnbmFtZScsICdvcmllbnRhdGlvbicsICdyZXF1aXJlZCcsICdyZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1yYWRpby1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2ZpZWxkc2V0JywgJ25hbWUnLCAnb3JpZW50YXRpb24nLCAncmVxdWlyZWQnLCAncmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVJhZGlvR3JvdXBFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCBhbGwgcmFkaW8gaW5wdXRzIGluIHRoZSBncm91cCB3aWxsIGRpc3BsYXkgYSBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZE9uSG92ZXIoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlbGF5IHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhhdCBgYnFDaGFuZ2VgIGV2ZW50IGhhbmRsZXIgZ2V0cyB0cmlnZ2VyZWQgb25jZSB0aGUgdmFsdWUgY2hhbmdlXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgcmFkaW8gaW5wdXRzIGFyZSBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBkaXNwbGF5cyBmaWVsZHNldFxuICAgKi9cbiAgc2V0IGZpZWxkc2V0KF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydmaWVsZHNldCddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgSFRNTCBpbnB1dCBmb3JtIGNvbnRyb2wuIFN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGFzIHBhcnQgb2YgYSBuYW1lL3ZhbHVlIHBhaXIuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRpc3BsYXkgb3JpZW50YXRpb24gb2YgdGhlIHJhZGlvIGlucHV0c1xuICAgKi9cbiAgc2V0IG9yaWVudGF0aW9uKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydvcmllbnRhdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsncmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8uXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxUmFkaW9Hcm91cCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgdGFyZ2V0OiBIVE1MQnFSYWRpb0VsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2Zvcm0nLCAna2VlcE9wZW5PblNlbGVjdCcsICdtYXhUYWdzVmlzaWJsZScsICdtdWx0aXBsZScsICduYW1lJywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3NhbWVXaWR0aCcsICdza2lkZGluZycsICdzdHJhdGVneScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInLCAncmVzZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmb3JtJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnbWF4VGFnc1Zpc2libGUnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU2VsZWN0RWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBpbnB1dCB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxU2VsZWN0WydhdXRvZm9jdXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjbGVhciBidXR0b24gYXJpYSBsYWJlbFxuICAgKi9cbiAgc2V0IGNsZWFyQnV0dG9uTGFiZWwoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnY2xlYXJCdXR0b25MYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgYmVmb3JlIGVtaXR0aW5nIHRoZSBgYnFJbnB1dGAgZXZlbnQgYWZ0ZXIgdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5BIHZhbHVlIG9mIDAgbWVhbnMgbm8gZGVib3VuY2luZyB3aWxsIG9jY3VyLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTZWxlY3QgaW5wdXQgaXMgZGlzYWJsZWQgb3Igbm90LlxuSWYgYHRydWVgLCB0aGUgU2VsZWN0IGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY2xlYXIgYnV0dG9uIHdvbid0IGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IGRpc2FibGVDbGVhcihfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkaXNhYmxlQ2xlYXInXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGRpc3RhbmNlIChndXR0ZXIgb3IgbWFyZ2luKSBiZXR3ZWVuIHRoZSBTZWxlY3QgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2Rpc3RhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGZvcm0gdGhhdCB0aGUgU2VsZWN0IGlucHV0IGJlbG9uZ3MgdG8uXG4gICAqL1xuICBzZXQgZm9ybShfOiBDb21wb25lbnRzLkJxU2VsZWN0Wydmb3JtJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgU2VsZWN0IHBhbmVsIHdpbGwgcmVtYWluIG9wZW4gYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZS5cbiAgICovXG4gIHNldCBrZWVwT3Blbk9uU2VsZWN0KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2tlZXBPcGVuT25TZWxlY3QnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBTZWxlY3QgaW5wdXQgbmFtZS5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0YWdzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZFxuICAgKi9cbiAgc2V0IG1heFRhZ3NWaXNpYmxlKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ21heFRhZ3NWaXNpYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgU2VsZWN0IGlucHV0IHdpbGwgYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICovXG4gIHNldCBtdWx0aXBsZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydtdWx0aXBsZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBwYW5lbCB3aWxsIGJlIHZpc2libGUuXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxU2VsZWN0WydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBTZWxlY3QgcGFuZWwuXG4gICAqL1xuICBzZXQgcGFuZWxIZWlnaHQoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBTZWxlY3QgaW5wdXQgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZVxuICAgKi9cbiAgc2V0IHBsYWNlaG9sZGVyKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgU2VsZWN0IHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBjYW5ub3QgYmUgZmlsdGVyZWQgKHNlYXJjaGluZyB3b24ndCBiZSBhdmFpbGFibGUpXG4gICAqL1xuICBzZXQgcmVhZG9ubHkoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncmVhZG9ubHknXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgU2VsZWN0IGlucHV0IGlzIHJlcXVpcmVkIHRvIGJlIGZpbGxlZCBvdXQgYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIGZvcm0uXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBhbmVsIHNob3VsZCBoYXZlIHRoZSBTZWxlY3Qgc2FtZSB3aWR0aCBhcyB0aGUgaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgc2V0IHNhbWVXaWR0aChfOiBDb21wb25lbnRzLkJxU2VsZWN0WydzYW1lV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHNraWRkaW5nIGJldHdlZW4gdGhlIFNlbGVjdCBwYW5lbCBhbmQgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqL1xuICBzZXQgc2tpZGRpbmcoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnc2tpZGRpbmcnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHN0cmF0ZWd5IHRvIHBvc2l0aW9uIHRoZSBTZWxlY3QgcGFuZWxcbiAgICovXG4gIHNldCBzdHJhdGVneShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydzdHJhdGVneSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBTZWxlY3QgaW5wdXQuIEByZW1hcmtzIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHNlbGVjdCBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3ZhbGlkYXRpb25TdGF0dXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzZWxlY3QgaW5wdXQgdmFsdWUsIGl0IGNhbiBiZSB1c2VkIHRvIHJlc2V0IHRoZSBmaWVsZCB0byBhIHByZXZpb3VzIHZhbHVlXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFTZWxlY3QnLCAnYnFJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuQnFTZWxlY3Qge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIFNlbGVjdCBpbnB1dCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2VsZWN0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWRcbiAgICovXG4gIGJxQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTZWxlY3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgU2VsZWN0IGlucHV0IGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNlbGVjdEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgKi9cbiAgYnFTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXTsgaXRlbTogSFRNTEJxT3B0aW9uRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgU2VsZWN0IGlucHV0IGNoYW5nZXMgaXRzIHZhbHVlIHdoaWxlIHR5cGluZ1xuICAgKi9cbiAgYnFJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdjb2xsYXBzZScsICdzaXplJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlQ29sbGFwc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNpZGUtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdjb2xsYXBzZScsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2lkZU1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNpZGVNZW51RWxlbWVudDtcbiAgICAvKipcbiAgICogSXQgc2V0cyBhIHByZWRlZmluZWQgYXBwZWFyYW5jZSBvZiB0aGUgc2lkZSBtZW51XG4gICAqL1xuICBzZXQgYXBwZWFyYW5jZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVbJ2FwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjb250YWluZXIgd2lsbCByZWR1Y2UgaXRzIHdpZHRoXG4gICAqL1xuICBzZXQgY29sbGFwc2UoXzogQ29tcG9uZW50cy5CcVNpZGVNZW51Wydjb2xsYXBzZSddKSB7fTtcbiAgICAvKipcbiAgICogSXQgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgbmF2aWdhdGlvbiBtZW51IGl0ZW1zXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ29sbGFwc2UnLCAnYnFTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTaWRlTWVudSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBTaWRlIG1lbnUgY2hhbmdlcyBpdHMgd2lkdGggZnJvbSBleHBhbmRlZCB0byBjb2xsYXBzZSBhbmQgdmljZSB2ZXJzYVxuICAgKi9cbiAgYnFDb2xsYXBzZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY29sbGFwc2U6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWN0aXZlL3NlbGVjdGVkIG1lbnUgaXRlbSBjaGFuZ2VzXG4gICAqL1xuICBicVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zaWRlLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2lkZU1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbWVudSBpdGVtIHdpbGwgYmUgc2hvd24gYXMgYWN0aXZlL3NlbGVjdGVkLlxuICAgKi9cbiAgc2V0IGFjdGl2ZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVJdGVtWydhY3RpdmUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBpdGVtIGxhYmVsIGFuZCBzdWZmaXggd2lsbCBiZSBoaWRkZW4gYW5kIHRoZSB3aXRoIHdpbGwgYmUgcmVkdWNlIGFjY29yZGluZyB0byBpdHMgcGFyZW50XG4gICAqL1xuICBzZXQgY29sbGFwc2UoXzogQ29tcG9uZW50cy5CcVNpZGVNZW51SXRlbVsnY29sbGFwc2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBtZW51IGl0ZW0gd2lsbCBiZSBkaXNhYmxlZCAobm8gaW50ZXJhY3Rpb24gYWxsb3dlZClcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVJdGVtWydkaXNhYmxlZCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCbHVyJywgJ2JxRm9jdXMnLCAnYnFDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNpZGVNZW51SXRlbSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudUl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYnV0dG9uIGdldHMgZm9jdXNcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdlbmFibGVUb29sdGlwJywgJ2VuYWJsZVZhbHVlSW5kaWNhdG9yJywgJ2dhcCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnc3RlcCcsICd0b29sdGlwQWx3YXlzVmlzaWJsZScsICd0eXBlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zbGlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdlbmFibGVUb29sdGlwJywgJ2VuYWJsZVZhbHVlSW5kaWNhdG9yJywgJ2dhcCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnc3RlcCcsICd0b29sdGlwQWx3YXlzVmlzaWJsZScsICd0eXBlJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2xpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFTbGlkZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCB0byB0cmlnZ2VyIHRoZSBgYnFDaGFuZ2VgIGV2ZW50IGFmdGVyIGVhY2ggdmFsdWUgY2hhbmdlLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgc2xpZGVyIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAgaXQgd2lsbCBzaG93IHRoZSB2YWx1ZSBsYWJlbCBvbiBhIHNpZGUgb2YgdGhlIHNsaWRlciB0cmFjayBhcmVhXG4gICAqL1xuICBzZXQgZW5hYmxlVmFsdWVJbmRpY2F0b3IoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZW5hYmxlVmFsdWVJbmRpY2F0b3InXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgYW1vdW50IHRvIHJlbWFpbiBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAob25seSBmb3IgcmFuZ2UgdHlwZSkuXG4gICAqL1xuICBzZXQgZ2FwKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ2dhcCddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBtYXggdmFsdWUgb2YgdGhlIHNsaWRlci5cbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnbWF4J10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIG1pbiB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKi9cbiAgc2V0IG1pbihfOiBDb21wb25lbnRzLkJxU2xpZGVyWydtaW4nXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpclxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzdGVwIG9mIHRoZSBzbGlkZXIuXG7imqDvuI8gUGxlYXNlIG5vdGljZSB0aGF0IHRoZSB2YWx1ZSAob3IgbGlzdCBvZiB2YWx1ZXMgaWYgdGhlIHNsaWRlciB0eXBlIGlzIGByYW5nZWApIHdpbGwgYmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBgc3RlcGAuXG4gICAqL1xuICBzZXQgc3RlcChfOiBDb21wb25lbnRzLkJxU2xpZGVyWydzdGVwJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIHRoZSB0eXBlIG9mIHNsaWRlciB0byBkaXNwbGF5XG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHNsaWRlci5cbi0gSWYgdGhlIHNsaWRlciB0eXBlIGlzIGBzaW5nbGVgLCB0aGUgdmFsdWUgaXMgYSBudW1iZXIuXG4tIElmIHRoZSBzbGlkZXIgdHlwZSBpcyBgcmFuZ2VgLCB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgKHRoZSBmaXJzdCBudW1iZXIgcmVwcmVzZW50cyB0aGUgYG1pbmAgdmFsdWUgYW5kIHRoZSBzZWNvbmQgbnVtYmVyIHJlcHJlc2VudHMgdGhlIGBtYXhgIHZhbHVlKS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyd2YWx1ZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBhIHRvb2x0aXAgd2lsbCBiZSBzaG93biBkaXNwbGF5aW5nIHRoZSBwcm9ncmVzcyB2YWx1ZVxuICAgKi9cbiAgc2V0IGVuYWJsZVRvb2x0aXAoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZW5hYmxlVG9vbHRpcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBhIHRvb2x0aXAgd2lsbCBhbHdheXMgZGlzcGxheSB0aGUgcHJvZ3Jlc3MgdmFsdWUuXG5JdCByZWxpZXMgb24gZW5hYmxlVG9vbHRpcCBhbmQgaWYgZW5hYmxlVG9vbHRpcCBpcyBmYWxzZSwgdG9vbHRpcEFsd2F5c1Zpc2libGUgY2Fubm90IGJlIHRydWUuXG4gICAqL1xuICBzZXQgdG9vbHRpcEFsd2F5c1Zpc2libGUoXzogQ29tcG9uZW50cy5CcVNsaWRlclsndG9vbHRpcEFsd2F5c1Zpc2libGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxQmx1cicsICdicUZvY3VzJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBUU2xpZGVyVmFsdWUgYXMgSUJxU2xpZGVyVFNsaWRlclZhbHVlIH0gZnJvbSAnQGJlZXEvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNsaWRlciBleHRlbmRzIENvbXBvbmVudHMuQnFTbGlkZXIge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBjaGFuZ2UgdGhlIHZhbHVlIG9uIHJhbmdlIGlucHV0c1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBFeGNsdWRlPElCcVNsaWRlclRTbGlkZXJWYWx1ZSwgc3RyaW5nPjsgZWw6IEhUTUxCcVNsaWRlckVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2xpZGVyIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTbGlkZXJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzbGlkZXIgZ2V0cyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2xpZGVyRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnc2l6ZScsICd0ZXh0UG9zaXRpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNwaW5uZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdzaXplJywgJ3RleHRQb3NpdGlvbiddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVNwaW5uZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNwaW5uZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiBgZmFsc2VgLCB0aGUgYW5pbWF0aW9uIG9uIHRoZSBpY29uIGVsZW1lbnQgd2lsbCBiZSBzdG9wcGVkXG4gICAqL1xuICBzZXQgYW5pbWF0aW9uKF86IENvbXBvbmVudHMuQnFTcGlubmVyWydhbmltYXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYWJlbCB0ZXh0XG4gICAqL1xuICBzZXQgdGV4dFBvc2l0aW9uKF86IENvbXBvbmVudHMuQnFTcGlubmVyWyd0ZXh0UG9zaXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIGljb24gZWxlbWVudCBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFTcGlubmVyWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNwaW5uZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxU3Bpbm5lciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWyd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zdGF0dXMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTdGF0dXMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN0YXR1c0VsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHR5cGUgb2Ygc3RhdHVzIHRvIGRpc3BsYXlcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFTdGF0dXNbJ3R5cGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3RhdHVzIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN0YXR1cyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJywgJ3N0YXR1cycsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zdGVwLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnLCAnc3RhdHVzJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTdGVwSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3RlcEl0ZW1FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIHByZWZpeCBzaXplXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxU3RlcEl0ZW1bJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgc3RlcCBpdGVtIGFwcGVhcmFuY2UgYmFzZWQgb24gaXRzIHN0YXR1c1xuICAgKi9cbiAgc2V0IHN0YXR1cyhfOiBDb21wb25lbnRzLkJxU3RlcEl0ZW1bJ3N0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyB0aGUgc3RlcCBpdGVtIHR5cGUgdXNlZFxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVN0ZXBJdGVtWyd0eXBlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3RlcEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLkJxU3RlcEl0ZW0ge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHN0ZXAgaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0YXJnZXQ6IEhUTUxCcVN0ZXBJdGVtRWxlbWVudDsgdmFsdWU6IHN0cmluZyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RpdmlkZXJDb2xvcicsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN0ZXBzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXZpZGVyQ29sb3InLCAnc2l6ZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU3RlcHMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN0ZXBzRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBsaW5lIHRoYXQgY29ubmVjdHMgdGhlIHN0ZXBzLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBkZWNsYXJhdGl2ZSBjb2xvciB0b2tlbi5cbiAgICovXG4gIHNldCBkaXZpZGVyQ29sb3IoXzogQ29tcG9uZW50cy5CcVN0ZXBzWydkaXZpZGVyQ29sb3InXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBzdGVwc1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcVN0ZXBzWydzaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwcmVmaXggZWxlbWVudCB0byB1c2Ugb24gdGhlIHN0ZXAgaXRlbXNcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFTdGVwc1sndHlwZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGVwcyBleHRlbmRzIENvbXBvbmVudHMuQnFTdGVwcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdmdWxsV2lkdGgnLCAnaW5uZXJMYWJlbCcsICdqdXN0aWZ5Q29udGVudCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3JldmVyc2VPcmRlcicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3ZDbGljaycsICd2Rm9jdXMnLCAndkJsdXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN3aXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnZnVsbFdpZHRoJywgJ2lubmVyTGFiZWwnLCAnanVzdGlmeUNvbnRlbnQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdyZXZlcnNlT3JkZXInLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVN3aXRjaEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIGEgYmFja2dyb3VuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiBob3ZlclxuICAgKi9cbiAgc2V0IGJhY2tncm91bmRPbkhvdmVyKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciBpZiB0aGUgc3dpdGNoIGlzIGBPTmAgYnkgZGVmYXVsdCAod2hlbiB0aGUgcGFnZSBsb2FkcylcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2NoZWNrZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBzd2l0Y2ggY29udHJvbCB3aWxsIGJlIGRpc2FibGVkIGFuZCBubyBpbnRlcmFjdGlvbiB3aWxsIGJlIGFsbG93ZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgc2V0IGZvcm1WYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxU3dpdGNoWydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjb21wb25lbnQgd2lsbCB0YWtlIHRoZSBmdWxsIHdpZHRoIHNwYWNlIGF2YWlsYWJsZSBvbiB0aGUgcGFyZW50IGNvbnRhaW5lclxuICAgKi9cbiAgc2V0IGZ1bGxXaWR0aChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydmdWxsV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGluZGljYXRlcyBob3cgdG8gdG8gZGlzcGxheSB0aGUgb24vb2ZmIG1hcmtzIGluc2lkZSB0aGUgY29udHJvbCwgd2l0aCBpY29ucyBvciBub25lIChkZWZhdWx0KVxuICAgKi9cbiAgc2V0IGlubmVyTGFiZWwoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnaW5uZXJMYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyBob3cgdG8gZGlzdHJpYnV0ZSB0aGUgc3BhY2UgYmV0d2VlbiBhbmQgYXJvdW5kIHRoZSBjb250cm9sIGFuZCB0aGUgbGFiZWwgdGV4dFxuKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LWNvbnRlbnQpXG4gICAqL1xuICBzZXQganVzdGlmeUNvbnRlbnQoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnanVzdGlmeUNvbnRlbnQnXSkge307XG4gICAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpclxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBpdCB3aWxsIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgbXVzdCBzd2l0Y2ggYE9OYCB0aGUgZWxlbWVudCBiZWZvcmUgdGhlIG93bmluZyBmb3JtIGNhbiBiZSBzdWJtaXR0ZWRcbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9yZGVyIG9mIHRoZSBjb250cm9sIGFuZCB0aGUgbGFiZWwgdGV4dCB3aWxsIGJlIGNoYW5nZWRcbiAgICovXG4gIHNldCByZXZlcnNlT3JkZXIoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsncmV2ZXJzZU9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaW5wdXQgY29udHJvbCdzIHZhbHVlLCBzdWJtaXR0ZWQgYXMgYSBuYW1lL3ZhbHVlIHBhaXIgd2l0aCBmb3JtIGRhdGEuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxRm9jdXMnLCAnYnFCbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3dpdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN3aXRjaCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc3dpdGNoIGdldHMgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTd2l0Y2hFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVN3aXRjaEVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbnRyb2xzJywgJ2Rpc2FibGVkJywgJ29yaWVudGF0aW9uJywgJ3BsYWNlbWVudCcsICdzaXplJywgJ3RhYklkJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29udHJvbHMnLCAnZGlzYWJsZWQnLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndGFiSWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVRhYkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUgdGFiIGlzIGFjdGl2ZVxuICAgKi9cbiAgc2V0IGFjdGl2ZShfOiBDb21wb25lbnRzLkJxVGFiWydhY3RpdmUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0YWIgcGFuZWwgaWQgdGhhdCB0aGUgdGFiIGNvbnRyb2xzXG4gICAqL1xuICBzZXQgY29udHJvbHMoXzogQ29tcG9uZW50cy5CcVRhYlsnY29udHJvbHMnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgdGFiIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcVRhYlsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdGhhdCB0YWIgc2hvdWxkIGJlIHJlbmRlclxuICAgKi9cbiAgc2V0IG9yaWVudGF0aW9uKF86IENvbXBvbmVudHMuQnFUYWJbJ29yaWVudGF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHRoYXQgdGFiIHNob3VsZCBiZSByZW5kZXJcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRhYlsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdGFiXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxVGFiWydzaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHRhYlxuICAgKi9cbiAgc2V0IHRhYklkKF86IENvbXBvbmVudHMuQnFUYWJbJ3RhYklkJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsaWNrJywgJ2JxRm9jdXMnLCAnYnFCbHVyJywgJ2JxS2V5RG93biddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRhYiBleHRlbmRzIENvbXBvbmVudHMuQnFUYWIge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIHN0YXRlIGNoYW5nZXNcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIgZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhYkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFiRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBicUtleURvd246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlRGl2aWRlcicsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFiLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZURpdmlkZXInLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUYWJHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxVGFiR3JvdXBFbGVtZW50O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlbGF5IHZhbHVlIGFwcGxpZWQgdG8gYnFDaGFuZ2UgZXZlbnQgaGFuZGxlclxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ2RlYm91bmNlVGltZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHVuZGVybGluZSBkaXZpZGVyIGJlbG93IHRoZSB0YWJzIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgZGlzYWJsZURpdmlkZXIoXzogQ29tcG9uZW50cy5CcVRhYkdyb3VwWydkaXNhYmxlRGl2aWRlciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0aGF0IHRhYiBzaG91bGQgYmUgcmVuZGVyXG4gICAqL1xuICBzZXQgb3JpZW50YXRpb24oXzogQ29tcG9uZW50cy5CcVRhYkdyb3VwWydvcmllbnRhdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHBsYWNlbWVudCB0aGF0IHRhYiBzaG91bGQgYmUgcmVuZGVyXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFUYWJHcm91cFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdGFiXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaWQgb2YgdGhlIHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRhYkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRhYkdyb3VwIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdGFyZ2V0OiBIVE1MQnFUYWJFbGVtZW50OyB2YWx1ZTogc3RyaW5nIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2NsaWNrYWJsZScsICdjb2xvcicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAncmVtb3ZhYmxlJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ2hpZGUnLCAnc2hvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGFnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnY2xpY2thYmxlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdyZW1vdmFibGUnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVGFnIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUYWdFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgY29ybmVyIHJhZGl1cyBvZiB0aGUgVGFnICh3aWxsIG92ZXJyaWRlIHNpemUncyBwcmVkZWZpbmVkIGJvcmRlcilcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcVRhZ1snYm9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGNhbiBiZSBjbGlja2FibGVcbiAgICovXG4gIHNldCBjbGlja2FibGUoXzogQ29tcG9uZW50cy5CcVRhZ1snY2xpY2thYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29sb3Igc3R5bGUgb2YgdGhlIFRhZ1xuICAgKi9cbiAgc2V0IGNvbG9yKF86IENvbXBvbmVudHMuQnFUYWdbJ2NvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIHdpbGwgYmUgZGlzYWJsZWQgKG9ubHkgaWYgY2xpY2thYmxlID0gYHRydWVgLCBubyBpbnRlcmFjdGlvbiBhbGxvd2VkKVxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFUYWdbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGNvbXBvbmVudCB3aWxsIGhpZGRlbiAob25seSBpZiByZW1vdmFibGUgPSBgdHJ1ZWApXG4gICAqL1xuICBzZXQgaGlkZGVuKF86IENvbXBvbmVudHMuQnFUYWdbJ2hpZGRlbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFRhZyBjb21wb25lbnQgY2FuIGJlIHJlbW92ZWRcbiAgICovXG4gIHNldCByZW1vdmFibGUoXzogQ29tcG9uZW50cy5CcVRhZ1sncmVtb3ZhYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGlzIHNlbGVjdGVkIChvbmx5IGlmIGNsaWNrYWJsZSA9IGB0cnVlYClcbiAgICovXG4gIHNldCBzZWxlY3RlZChfOiBDb21wb25lbnRzLkJxVGFnWydzZWxlY3RlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIFRhZyBjb21wb25lbnRcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFUYWdbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIFRhZyB0byBhcHBseSBvbiB0b3Agb2YgdGhlIHZhcmlhbnRcbiAgICovXG4gIHNldCB2YXJpYW50KF86IENvbXBvbmVudHMuQnFUYWdbJ3ZhcmlhbnQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xvc2UnLCAnYnFPcGVuJywgJ2JxQmx1cicsICdicUNsaWNrJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUYWcgZXh0ZW5kcyBDb21wb25lbnRzLkJxVGFnIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBjbG9zZS9oaWRkZW5cbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBub3Qgb3Blbi9zaG93blxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRhZyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFnRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0YWcgaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhZ0VsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGFnIGlzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWdFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Hcm93JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVSZXNpemUnLCAnZGlzYWJsZWQnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnbWF4bGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzcGVsbGNoZWNrJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnLCAnd3JhcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtdGV4dGFyZWEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Hcm93JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVSZXNpemUnLCAnZGlzYWJsZWQnLCAnZm9ybScsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnbWF4bGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzcGVsbGNoZWNrJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnLCAnd3JhcCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0YXJlYSBmaWVsZCBzaG91bGQgYmUgY2FwaXRhbGl6ZWQgYW5kIGhvdy5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29mZicsICdub25lJywgJ29uJywgJ3NlbnRlbmNlcycsICd3b3JkcycsIGFuZCAnY2hhcmFjdGVycycuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemVcbiAgICovXG4gIHNldCBhdXRvY2FwaXRhbGl6ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9jYXBpdGFsaXplJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdGhlIHRleHRhcmVhIGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb21wbGV0ZSBlbmFibGVkLlxuU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlI3ZhbHVlc1xuICAgKi9cbiAgc2V0IGF1dG9jb21wbGV0ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9jb21wbGV0ZSddKSB7fTtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIHRleHRhcmVhIGZpZWxkIHNob3VsZCBoYXZlIGF1dG9jb3JyZWN0IGVuYWJsZWQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlICdvbicgYW5kICdvZmYnLlxuICAgKi9cbiAgc2V0IGF1dG9jb3JyZWN0KF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b2NvcnJlY3QnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0ZXh0YXJlYSB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9mb2N1cyddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dGFyZWEgd2lsbCBhdXRvbWF0aWNhbGx5IGdyb3cgYW5kIHNocmluayB0byBmaXQgaXRzIGNvbnRlbnRzLlxuSWYgYGZhbHNlYCwgdGhlIHRleHRhcmVhIHdpbGwgaGF2ZSBhIGZpeGVkIGhlaWdodCBzcGVjaWZpZWQgYnkgdGhlIGByb3dzYCBwcm9wZXJ0eS5cbiAgICovXG4gIHNldCBhdXRvR3JvdyhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2F1dG9Hcm93J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCBiZWZvcmUgZW1pdHRpbmcgdGhlIGBicUlucHV0YCBldmVudCBhZnRlciB0aGUgdGV4dGFyZWEgdmFsdWUgY2hhbmdlcy5cbkEgdmFsdWUgb2YgMCBtZWFucyBubyBkZWJvdW5jaW5nIHdpbGwgb2NjdXIuXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZGVib3VuY2VUaW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSB0ZXh0YXJlYS5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHdpbGwgYmxvY2sgdGhlIHVzZXIncyBhYmlsaXR5IHRvIHJlc2l6ZSB0aGUgdGV4dGFyZWEuXG4gICAqL1xuICBzZXQgZGlzYWJsZVJlc2l6ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2Rpc2FibGVSZXNpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZm9ybSB0aGF0IHRoZSB0ZXh0YXJlYSBmaWVsZCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgc2V0IGZvcm0oXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydmb3JtJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZm9ybVZhbGlkYXRpb25NZXNzYWdlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSBlbnRlcmVkIGludG8gdGhlIHRleHRhcmVhIChgMGA6IG5vIGxpbWl0KS5cbldoZW4gZW5hYmxlZCwgYSBjaGFyYWN0ZXIgY291bnRlciB3aWxsIGJlIHNob3duIHVuZGVybmVhdGggdGhlIHRleHRhcmVhLlxuICAgKi9cbiAgc2V0IG1heGxlbmd0aChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ21heGxlbmd0aCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRvIHNob3cgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZS5cbiAgICovXG4gIHNldCBwbGFjZWhvbGRlcihfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdGV4dGFyZWEgZmllbGQgY2Fubm90IGJlIG1vZGlmaWVkLlxuICAgKi9cbiAgc2V0IHJlYWRvbmx5KF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsncmVhZG9ubHknXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dGFyZWEgZmllbGQgaXMgcmVxdWlyZWQgdG8gYmUgZmlsbGVkIG91dCBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS5cbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIEl0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgc2V0IHJvd3MoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydyb3dzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdGV4dGFyZWEgY29udGVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLlxuICAgKi9cbiAgc2V0IHNwZWxsY2hlY2soXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydzcGVsbGNoZWNrJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHRleHRhcmVhLiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSB0ZXh0YXJlYS4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIHRleHRhcmVhIGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgdGV4dGFyZWEgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIHRleHRhcmVhIGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsndmFsaWRhdGlvblN0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSB0ZXh0YXJlYS4gSXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIHRleHRhcmVhIHRvIGEgcHJldmlvdXMgdmFsdWUuXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWyd2YWx1ZSddKSB7fTtcbiAgICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0aGUgdGV4dCBpbiBhIHRleHQgYXJlYSBpcyB0byBiZSB3cmFwcGVkIHdoZW4gc3VibWl0dGVkIGluIGEgZm9ybVxuICAgKi9cbiAgc2V0IHdyYXAoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWyd3cmFwJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJywgJ2JxSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUZXh0YXJlYSBleHRlbmRzIENvbXBvbmVudHMuQnFUZXh0YXJlYSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgdGV4dGFyZWEgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgdGV4dGFyZWEgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIHRleHRhcmVhIGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWRcbiAgICovXG4gIGJxQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUZXh0YXJlYUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSBoYXMgcmVjZWl2ZWQgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUZXh0YXJlYUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSB2YWx1ZSBjaGFuZ2VzLlxuVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdXNlciB0eXBlcyBvciBwYXN0ZXMgdGV4dCBpbnRvIHRoZSB0ZXh0YXJlYSBmaWVsZC5cbiAgICovXG4gIGJxSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFUZXh0YXJlYUVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXInLCAnaGlkZUljb24nLCAnb3BlbicsICdwbGFjZW1lbnQnLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ3RvYXN0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10b2FzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2hpZGVJY29uJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3RpbWUnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRvYXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUb2FzdEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBjb3JkZXIgcmFkaXVzIG9mIHRoZSB0b2FzdCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcVRvYXN0Wydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgdG9hc3RcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFUb2FzdFsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogUGxhY2VtZW50IG9mIHRvYXN0XG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFUb2FzdFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHdpbGwgaGlkZSB0b2FzdCBpY29uXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcVRvYXN0WydoaWRlSWNvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHRvYXN0IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFUb2FzdFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSB0b2FzdCB3aWxsIGNsb3NlIGl0c2VsZlxuICAgKi9cbiAgc2V0IHRpbWUoXzogQ29tcG9uZW50cy5CcVRvYXN0Wyd0aW1lJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUhpZGUnLCAnYnFTaG93J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxVG9hc3Qge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIGhpZGRlblxuICAgKi9cbiAgYnFIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVG9hc3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRvYXN0RWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVG9vbHRpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxVG9vbHRpcEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0b29sdGlwIHdpbGwgYWx3YXlzIGJlIHZpc2libGVcbiAgICovXG4gIHNldCBhbHdheXNWaXNpYmxlKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydhbHdheXNWaXNpYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEaXN0YW5jZSBiZXR3ZWVuIHRyaWdnZXIgZWxlbWVudCBhbmQgdG9vbHRpcFxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFycm93IG9uIHRoZSB0b29sdGlwIGNvbnRlbnQgd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBoaWRlQXJyb3coXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ2hpZGVBcnJvdyddKSB7fTtcbiAgXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogV2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4oYXBwbGljYWJsZSBvbmx5IGZvciBjb250ZW50IHNob3J0ZXIgdGhhbiB0aGUgdHJpZ2dlciBlbGVtZW50KVxuICAgKi9cbiAgc2V0IHNhbWVXaWR0aChfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIGFjdGlvbiB3aGVuIHRoZSB0b29sdGlwIHNob3VsZCBiZSBkaXNwbGF5ZWQsIG9uIGhvdmVyIChkZWZhdWx0KSBvciBjbGlja1xuICAgKi9cbiAgc2V0IGRpc3BsYXlPbihfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsnZGlzcGxheU9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIHRvb2x0aXAgaXMgdmlzaWJsZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQsXG5hbmQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSB0cmlnZ2VyXG4gICAqL1xuICBzZXQgdmlzaWJsZShfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsndmlzaWJsZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRvb2x0aXAge31cblxuXG4iXX0=
|