ng-inail-common 2.0.35-beta.1 → 2.0.35-beta.2

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.
@@ -161,7 +161,7 @@ export class MenuComponent extends BasicUxElementComponent {
161
161
  * @param item
162
162
  */
163
163
  this.getShowObservable = (item) => {
164
- return isObservable(item.show) ? item.show : undefined;
164
+ return isObservable(item.show) ? item.show : new BehaviorSubject(false);
165
165
  };
166
166
  /**
167
167
  * Restituisce true se l'elemento
@@ -547,4 +547,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
547
547
  type: ViewChild,
548
548
  args: ['menu']
549
549
  }] } });
550
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFDLHNCQUFzQixFQUFzQixNQUFNLG9DQUFvQyxDQUFDO0FBQy9GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBRXBELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUV6QixNQUFNLHdCQUF3QixHQUFHLDZDQUE2QyxDQUFDO0FBNEIvRTs7OztHQUlHO0FBQ0gsTUFB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QUM7OzJHQXBzQlUsYUFBYSx5RUFxS0osc0JBQXNCOytGQXJLL0IsYUFBYSxxbEJDdkcxQixrckhBaUZBLHNXRHNCYSxhQUFhOzRGQUFiLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJOzswQkF1S3hCLE1BQU07MkJBQUMsc0JBQXNCOzRDQTlKMUMsTUFBTTtzQkFETCxLQUFLO2dCQVFOLFNBQVM7c0JBRFIsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFTTixJQUFJO3NCQURILEtBQUs7Z0JBUU4sT0FBTztzQkFETixLQUFLO2dCQU9OLE1BQU07c0JBREwsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBUU4sTUFBTTtzQkFETCxLQUFLO2dCQWlCTixXQUFXO3NCQURWLEtBQUs7Z0JBU04sU0FBUztzQkFEUixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFTTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBT04sU0FBUztzQkFEUixNQUFNO2dCQVNQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxJQUFJO3NCQURILFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7aXNGdW5jdGlvbn0gZnJvbSAncnhqcy9pbnRlcm5hbC1jb21wYXRpYmlsaXR5JztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Nsb25lLCB1dWlkdjR9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvbW1vbi5vcGVyYXRvcnMnO1xuaW1wb3J0IHtCYXNpY1V4RWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vYmFzaWMtdXgtZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtOR19JTkFJTF9DT01NT05fQ09ORklHLCBOZ0luYWlsQ29tbW9uQ29uZmlnfSBmcm9tICcuLi8uLi8uLi8uLi9uZy1pbmFpbC1jb21tb24uY29uZmlnJztcbmltcG9ydCB7Z2V0Q29uZmlnVmFsdWV9IGZyb20gJy4uLy4uL2Jhc2UuY29tcG9uZW50JztcblxuY29uc3QgQ09MTEFQU0lOR19EVVJBVElPTiA9IDM1MDtcbmNvbnN0IEFVVE9fU0hPVyA9ICdhdXRvJztcblxuY29uc3QgRk9DVVNBQkxFX0lURU1TX1NFTEVDVE9SID0gJ3VsLmluYWlsLW1lbnUgPiBsaSA+IGE6bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ2hlY2tGbiA9ICgpID0+IGJvb2xlYW47XG5leHBvcnQgZGVjbGFyZSB0eXBlIEdldFN0cmluZ0ZuID0gKCkgPT4gc3RyaW5nO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBNZW51SXRlbVNob3dNb2RlID0gJ2F1dG8nO1xuXG50eXBlIENvbGxhcHNlTW9kZSA9ICdzaG93JyB8ICdoaWRlJyB8ICd0b2dnbGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtIHtcblxuICBpZD86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IEdldFN0cmluZ0ZuO1xuICB0aXRsZT86IHN0cmluZyB8IEdldFN0cmluZ0ZuO1xuICBhcmlhTGFiZWw/OiBzdHJpbmcgfCBHZXRTdHJpbmdGbjtcbiAgbGluaz86IHN0cmluZyB8IEdldFN0cmluZ0ZuO1xuICBsaW5rUmVnZXg/OiBzdHJpbmcgfCBHZXRTdHJpbmdGbjtcbiAgcXVlcnlQYXJhbXM/OiB7XG4gICAgW2s6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgY2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgYWN0aXZlTGlua3M/OiBzdHJpbmdbXTtcbiAgc2hvdz86IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgQ2hlY2tGbiB8IE1lbnVJdGVtU2hvd01vZGU7XG4gIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcbiAgc3ViSXRlbXM/OiBNZW51SXRlbVtdO1xuICBwYXJlbnQ/OiBNZW51SXRlbTtcbn1cblxuLyoqXG4gKiBEZWVwIGNvcHkgZGVsbCdvZ2dldHRvIE1lbnVJdGVtXG4gKlxuICogQHBhcmFtIGl0ZW1cbiAqL1xuY29uc3QgY2xvbmVJdGVtID0gKGl0ZW06IE1lbnVJdGVtKTogTWVudUl0ZW0gPT4ge1xuXG4gIGxldCBpdGVtQ2xvbmU6IE1lbnVJdGVtO1xuXG4gIGlmIChpdGVtKSB7XG5cbiAgICBpdGVtQ2xvbmUgPSBjbG9uZShpdGVtKTtcblxuICAgIGl0ZW1DbG9uZS5sYWJlbCA9IGl0ZW0ubGFiZWw7XG4gICAgaXRlbUNsb25lLmxpbmsgPSBpdGVtLmxpbms7XG4gICAgaXRlbUNsb25lLmxpbmtSZWdleCA9IGl0ZW0ubGlua1JlZ2V4O1xuICAgIGl0ZW1DbG9uZS5jYWxsYmFjayA9IGl0ZW0uY2FsbGJhY2s7XG4gICAgaXRlbUNsb25lLnNob3cgPSBpdGVtLnNob3c7XG4gICAgaXRlbUNsb25lLnBhcmVudCA9IGNsb25lSXRlbShpdGVtLnBhcmVudCk7XG4gICAgaXRlbUNsb25lLnN1Ykl0ZW1zID0gY2xvbmVJdGVtcyhpdGVtLnN1Ykl0ZW1zKTtcbiAgfVxuXG4gIHJldHVybiBpdGVtQ2xvbmU7XG59O1xuXG4vKipcbiAqIERlZXAgY29weSBkZWxsJ29nZ2V0dG8gTWVudUl0ZW1bXVxuICpcbiAqIEBwYXJhbSBpdGVtc1xuICovXG5jb25zdCBjbG9uZUl0ZW1zID0gKGl0ZW1zOiBNZW51SXRlbVtdKTogTWVudUl0ZW1bXSA9PiB7XG5cbiAgbGV0IGl0ZW1zQ2xvbmU6IE1lbnVJdGVtW107XG5cbiAgaWYgKGl0ZW1zKSB7XG5cbiAgICBpdGVtc0Nsb25lID0gaXRlbXMubWFwKGl0ZW0gPT4gY2xvbmVJdGVtKGl0ZW0pKTtcbiAgfVxuXG4gIHJldHVybiBpdGVtc0Nsb25lO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5haWwtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBleHRlbmRzIEJhc2ljVXhFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnRvIHBhcmVudCBkZWwgbWVudS5cbiAgICogKCBRdWVzdG8gaW5wdXQgbm9uIGRldmUgZXNzZXJlIHBhc3NhdG8sIHNlcnZlIGludGVybmFtZW50ZSBwZXIgZmFyIGZ1bnppb25hcmUgaWwgbWVudSApXG4gICAqL1xuICBASW5wdXQoKVxuICBwYXJlbnQ6IE1lbnVJdGVtO1xuXG4gIC8qKlxuICAgKiBFbGVtZW50byBwYXJlbnQgZGVsIG1lbnUuXG4gICAqICggUXVlc3RvIGlucHV0IG5vbiBkZXZlIGVzc2VyZSBwYXNzYXRvLCBzZXJ2ZSBpbnRlcm5hbWVudGUgcGVyIGZhciBmdW56aW9uYXJlIGlsIG1lbnUgKVxuICAgKi9cbiAgQElucHV0KClcbiAgaW5uZXJNZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGlkIGRlbGwnZWxlbWVudG8gY2hlIHNpIHZ1b2xlIGF0dGl2YXJlLlxuICAgKiBTZSBzcGVjaWZpY2F0byBmYSBkaXZlbnRhcmUgYm9sZCBsYSB2b2NlIGRpIG1lbnUgYXNzb2NpYXRhXG4gICAqL1xuICBASW5wdXQoKVxuICBhY3RpdmVJdGVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtZXR0ZSBsJ2VsZW1lbnRvIGRlbCBtZW51XG4gICAqIGNoZSBjb3JyaXNwb25kZSBhbGwndXJsIGNvcnJlbnRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZW1pdEN1cnJlbnQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIENvbGxhc3NhIGlsIG1lbnVcbiAgICogU2UgcGFzc2F0byBpbiBpbnB1dCB1biBpZCBjb2xsYXNzYSBsbyBzcGVjaWZpY28gZWxlbWVudG8uXG4gICAqL1xuICBASW5wdXQoKVxuICBjb2xsYXBzZTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB2b2lkPjtcblxuICAvKipcbiAgICogRXNwYW5kZSBsZSB2b2NpIGRpIG1lbnUgZGkgcHJpbW8gbGl2ZWxsby5cbiAgICogU2Ugc3BlY2lmaWNhdG8gdW4gaWQgZXNwYW5kZSBpbCByYW1vIGRlbCBtZW51XG4gICAqIGNoZSBwb3J0YSBhbGwnZWxlbWVudG8gY29uIGwnaWQgc3BlY2lmaWNhdG8uXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93OiBPYnNlcnZhYmxlPHN0cmluZyB8IHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBFc3BhbmRlIHR1dHRlIGxlIHZvY2kgZGVsIG1lbnVcbiAgICogY29tcHJlc2UgcXVlbGxlIGRlaSBsaXZlbGxpIGFubmlkYXRpXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93QWxsOiBPYnNlcnZhYmxlPHZvaWQ+OyAvLyB0b2RvIHRlc3RhcmVcblxuICAvKipcbiAgICogRWZmZXR0dWEgaWwgdG9nZ2xlIGRlbGwnZWxlbWVudG8gc3BlY2lmaWNhdG8gdHJhbWl0ZSBpZFxuICAgKi9cbiAgQElucHV0KClcbiAgdG9nZ2xlOiBPYnNlcnZhYmxlPHN0cmluZz47IC8vIHRvZG8gdGVzdGFyZVxuXG4gIC8qKlxuICAgKiBFbGVtZW50aSBkZWwgbWVudVxuICAgKi9cbiAgQElucHV0KClcbiAgaXRlbXM6IE1lbnVJdGVtW107XG4gIG9yaWdpbmFsSXRlbXM6IE1lbnVJdGVtW107XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICByZWluaXQ6IE9ic2VydmFibGU8dm9pZCB8IE1lbnVJdGVtW10+O1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGRpc2FiaWxpdGEgbGEgc292cmFzY3JpdHR1cmEgZGVsbGEgcHJvcHJpZXRhXG4gICAqIGxpbmsgbmVnbGkgZWxlbWVudGkgZGVsIG1lbnVcbiAgICogcXVhbmRvIGxhIHByb3ByaWV0YSBsaW5rUmVnZXggbWF0Y2hhXG4gICAqIGNvbiBsJ3VybCBjb3JyZW50ZVxuICAgKi9cbiAgZGlzYWJsZUxpbmtPdmVyd3JpdGluZzogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5tZW51Q29tcG9uZW50Py5kaXNhYmxlTGlua092ZXJ3cml0aW5nLCBmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgaW5kaWNhIGNoZSBsZSB2b2NpIGRlbCBtZW51IHNvbm8gY29sbGFzc2FiaWxpLlxuICAgKiBRdWVzdGEgaW1wb3N0YXppb25lIHZpZW5lIHNvdnJhc2NyaXR0YSBzZSBzcGVjaWZpY2F0byBkaXZlcnNhbWVudGVcbiAgICogbmVnbGkgZWxlbWVudGkgZGVsIG1lbnVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNpYmxlOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/Lm1lbnVDb21wb25lbnQ/LmNvbGxhcHNpYmxlLCBmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEluZGljYSBsbyBzdGF0byBpbml6aWFsZSBkZWwgbWVudSwgc2UgY29sYXNzYXRvIG8gZXNwYW5zby5cbiAgICogUXVlc3RhIGltcG9zdGF6aW9uZSB2aWVuZSBzb3ZyYXNjcml0dGEgc2Ugc3BlY2lmaWNhdG8gZGl2ZXJzYW1lbnRlXG4gICAqIG5lZ2xpIGVsZW1lbnRpIGRlbCBtZW51XG4gICAqL1xuICBASW5wdXQoKVxuICBjb2xsYXBzZWQ6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ubWVudUNvbXBvbmVudD8uY29sbGFwc2VkLCB1bmRlZmluZWQpO1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGFiaWxpdGEgbCdlZmZldHRvIGZpc2FybW9uaWNhXG4gICAqIHN1bGxlIHZvY2kgZGkgbWVudSBlc3BhbmRpYmlsaS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlT3RoZXI6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ubWVudUNvbXBvbmVudD8uY29sbGFwc2VPdGhlciwgZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGVzcGFuZGUgYXV0b21hdGljYW1lbnRlIGlsIHBlcmNvcnNvXG4gICAqIHZlcnNvIHVuIGVsZW1lbnRvXG4gICAqIHF1YW5kbyBxdWVzdG8gc2kgcmlmZXJpc2NlIGFsbCd1cmwgY29ycmVudGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGV4cGFuZEF1dG9tYXRpY2FsbHk6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ubWVudUNvbXBvbmVudD8uZXhwYW5kQXV0b21hdGljYWxseSwgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEVtZXR0ZSBsJ29nZ2V0dG8gTWVudUl0ZW0gYXNzb2NpYXRvIGFsbGEgdm9jZSBkaSBtZW51IHN1bGxhIHF1YWxlIHNpIGUnIGNsaWNjYXRvLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGl0ZW1DbGljazogRXZlbnRFbWl0dGVyPE1lbnVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIEVtZXR0ZSBsYSB2b2NlIGRpIG1lbnUgY2hlIGNvcnJpc3BvbmRlXG4gICAqIGNvbiBsJ3VybCBjb3JyZW50ZVxuICAgKiBkb3BvIHVuIGV2ZW50byBkaSByb3V0aW5nXG4gICAqL1xuICBAT3V0cHV0KClcbiAgY3VycmVudEl0ZW06IEV2ZW50RW1pdHRlcjxNZW51SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVJdGVtPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnKVxuICBtZW51OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvLyBAVmlld0NoaWxkcmVuKE1lbnVDb21wb25lbnQpXG4gIC8vIHNvdHRvTWVudTogUXVlcnlMaXN0PE1lbnVDb21wb25lbnQ+O1xuXG4gIGluaXppYWxpenphemlvbmVDb21wbGV0YXRhOiBib29sZWFuID0gZmFsc2U7XG4gIG1vc3RyYUl0ZW06IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gU2Vydm9ubyBwZXIgbCdhbmltYXppb25lIGRpIGFwZXJ0dXJhL2NoaXVzdXJhIGZsdWlkYVxuICBtZW51SGVpZ2h0JDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcbiAgZW1pdE1lbnVIZWlnaHQgPSAoKSA9PiB7XG5cbiAgICBpZiAodGhpcy5pc0NvbGxhcHNpYmxlKCkpIHtcblxuICAgICAgbGV0IHNjcm9sbEhlaWdodCA9IHRoaXMubWVudT8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsSGVpZ2h0O1xuICAgICAgbGV0IG5leHRIZWlnaHQgPSB0aGlzLmlzQ29sbGFwc2VkKCkgPyAwIDogc2Nyb2xsSGVpZ2h0O1xuXG4gICAgICBpZiAobmV4dEhlaWdodCA+IDApIHtcblxuICAgICAgICB0aGlzLm1lbnVIZWlnaHQkLm5leHQobmV4dEhlaWdodCk7XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgLy8gSW1wb3N0byBsJ2hlaWdodCBlZmZldHRpdm9cbiAgICAgICAgLy8gcGVyIHBvaSBpbXBvc3RhcmxvIHN1Yml0byBkb3BvIGEgMFxuICAgICAgICAvLyBpbiBtb2RvIGRhIGZhciBmdW56aW9uYXJlIGwnYW5pbWF6aW9uZS5cbiAgICAgICAgLy8gU2Ugbm9uIHZpZW5lIGltcG9zdGF0byB1biB2YWxvcmUgaW5pemlhbGVcbiAgICAgICAgLy8gbCdhbmltYXppb25lIENTUyBub24gZnVuemlvbmEuXG4gICAgICAgIHRoaXMubWVudUhlaWdodCQubmV4dChzY3JvbGxIZWlnaHQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVudUhlaWdodCQubmV4dCgwKSwgMTUpO1xuICAgICAgfVxuXG4gICAgICAvLyBSaW11b3ZvIGhlaWdodC5cbiAgICAgIC8vIEFsbGEgZmluZSBkZWxsJ2FuaW1hemlvbmUgbGEgcHJvcHJpZXRhIG5vbiBzZXJ2ZSBjaGUgcmltYW5nYSBpbXBvc3RhdGEuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVudUhlaWdodCQubmV4dCh1bmRlZmluZWQpLCBDT0xMQVBTSU5HX0RVUkFUSU9OKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIEBJbmplY3QoTkdfSU5BSUxfQ09NTU9OX0NPTkZJRylcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsaWJDb25maWc6IE5nSW5haWxDb21tb25Db25maWcpIHtcbiAgICBzdXBlcihjZHIsIGxpYkNvbmZpZyk7XG4gICAgc3VwZXIub3ZlcnJpZGVDb25maWcobGliQ29uZmlnPy5tZW51Q29tcG9uZW50KTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtbWVudV0nO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG5cbiAgICAvLyBJdGVtc1xuICAgIGlmIChjaGFuZ2VzPy5pdGVtcz8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIGlmICghdGhpcy5pbm5lck1lbnUpIHtcblxuICAgICAgICB0aGlzLml0ZW1zID0gY2xvbmVJdGVtcyhjaGFuZ2VzPy5pdGVtcz8uY3VycmVudFZhbHVlKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gY2xvbmVJdGVtcyhjaGFuZ2VzPy5pdGVtcz8uY3VycmVudFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbml6aWFsaXp6YUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgdGhpcy5lbWl0Q3VycmVudEl0ZW0oKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IEN1cnJlbnRcbiAgICBpZiAoY2hhbmdlcz8uZW1pdEN1cnJlbnQ/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goY2hhbmdlcy5lbWl0Q3VycmVudC5jdXJyZW50VmFsdWUuc3Vic2NyaWJlKCgpID0+IHRoaXMuZW1pdEN1cnJlbnRJdGVtKCkpKTtcbiAgICB9XG5cbiAgICAvLyBDb2xsYXBzZWRcbiAgICBpZiAoY2hhbmdlcz8uY29sbGFwc2VkICYmICFjaGFuZ2VzPy5jb2xsYXBzZWQuaXNGaXJzdENoYW5nZSgpKSB7XG5cbiAgICAgIHRoaXMuZW1pdE1lbnVIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvLyBDb2xsYXNzYSBFbGVtZW50byBvIExpdmVsbG9cbiAgICBpZiAoY2hhbmdlcy5jb2xsYXBzZSAmJiBjaGFuZ2VzLmNvbGxhcHNlLmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIGNoYW5nZXMuY29sbGFwc2UuY3VycmVudFZhbHVlLnN1YnNjcmliZSgoaWQ6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgaWQgPT0gdW5kZWZpbmVkID8gdGhpcy5jb2xsYXNzYU1lbnUoKSA6IHRoaXMuY29sbGFzc2FJdGVtKHRoaXMuZmluZEl0ZW0oaWQsIHRoaXMuaXRlbXMpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRXNwYW5kaSBFbGVtZW50byBvIExpdmVsbG9cbiAgICBpZiAoY2hhbmdlcz8uc2hvdz8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucHVzaChcbiAgICAgICAgY2hhbmdlcy5zaG93LmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGlkOiBzdHJpbmcpID0+IHtcblxuICAgICAgICAgIGlkID09IHVuZGVmaW5lZCA/IHRoaXMuZXNwYW5kaU1lbnUoKSA6IHRoaXMuZXNwYW5kaVBlcmNvcnNvKGlkKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVG9nZ2xhIEVsZW1lbnRvXG4gICAgaWYgKGNoYW5nZXM/LnRvZ2dsZT8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucHVzaChjaGFuZ2VzLnRvZ2dsZS5jdXJyZW50VmFsdWUuc3Vic2NyaWJlKChpZDogc3RyaW5nKSA9PiB0aGlzLnRvZ2dsZUl0ZW0odGhpcy5maW5kSXRlbShpZCwgdGhpcy5pdGVtcykpKSk7XG4gICAgfVxuXG4gICAgLy8gLy8gdG9kb1xuICAgIC8vIC8vIEVzcGFuZGUgdHV0dGkgaSBsaXZlbGxpXG4gICAgLy8gaWYgKGNoYW5nZXMuc2hvd0FsbCAmJiBjaGFuZ2VzLnNob3dBbGwuY3VycmVudFZhbHVlKSB7XG4gICAgLy9cbiAgICAvLyAgIHRoaXMucHVzaChjaGFuZ2VzLnNob3dBbGwuY3VycmVudFZhbHVlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmVzcGFuZGlUdXR0aSgpKSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gSW1wb3N0YXppb25pIGRpIGRlZmF1bHRcblxuICAgIGlmICh0aGlzLmNvbGxhcHNpYmxlID09PSBmYWxzZSkge1xuXG4gICAgICB0aGlzLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbGxhcHNlZCA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgdGhpcy5jb2xsYXBzZWQgPSAodGhpcy5jb2xsYXBzaWJsZSA9PT0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5pbml6aWFsaXp6YUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIHRoaXMuaW5pemlhbGl6emF6aW9uZUNvbXBsZXRhdGEgPSB0cnVlO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRJdGVtKCk7XG5cbiAgICAvLyBSaWNlcmNhIGVkIGVtaXNzaW9uZSBkZWxsYSB2b2NlIGRpIG1lbnVcbiAgICAvLyBjb3JyaXNwb25kZW50ZSBhbGwndXJsIGNvcnJlbnRlXG4gICAgLy8gYWwgTmF2aWdhdGlvbkVuZFxuICAgIHRoaXMucHVzaChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbXBvc3RhVXJsRWZmZXR0aXZpKHRoaXMuaXRlbXMpO1xuICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRJdGVtKCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnJlaW5pdCkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIHRoaXMucmVpbml0LnN1YnNjcmliZSgoaXRlbXM6IE1lbnVJdGVtW10pID0+IHtcblxuICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBSZWluaXQhYCk7XG5cbiAgICAgICAgICB0aGlzLml0ZW1zID0gY2xvbmVJdGVtcyhpdGVtcyB8fCB0aGlzLm9yaWdpbmFsSXRlbXMpO1xuXG4gICAgICAgICAgaWYgKGl0ZW1zKSB7XG5cbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IGNsb25lSXRlbXMoaXRlbXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuaW5pemlhbGl6emFJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT3BlcmF0b3JpIGNvbnRyb2xsbyBzdGF0byBtZW51IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXNDb2xsYXBzaWJsZSA9ICgpOiBib29sZWFuID0+IHRoaXMuaW5uZXJNZW51ICYmIHRoaXMuY29sbGFwc2libGU7XG4gIGlzQ29sbGFwc2VkID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5pc0NvbGxhcHNpYmxlKCkgJiYgdGhpcy5jb2xsYXBzZWQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT3BlcmF0b3JpIGNvbnRyb2xsbyBzdGF0byBpdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXNJdGVtQ29sbGFwc2libGUgPSAoaXRlbTogTWVudUl0ZW0pID0+IGl0ZW0uY29sbGFwc2libGUgJiYgdGhpcy5oYXNTdWJJdGVtcyhpdGVtKTtcbiAgaXNJdGVtQ29sbGFwc2VkID0gKGl0ZW06IE1lbnVJdGVtKSA9PiBpdGVtPy5jb2xsYXBzaWJsZSAmJiBpdGVtPy5jb2xsYXBzZWQ7XG4gIGhhc1N1Ykl0ZW1zID0gKGl0ZW06IE1lbnVJdGVtKTogYm9vbGVhbiA9PiBpdGVtPy5zdWJJdGVtcz8ubGVuZ3RoID4gMDtcbiAgaXNBY3RpdmUgPSAoaXRlbTogTWVudUl0ZW0pID0+IHRoaXMuYWN0aXZlSXRlbSA/IChpdGVtLmlkID09IHRoaXMuYWN0aXZlSXRlbSkgOiB0aGlzLmlzQ3VycmVudFBhZ2VJdGVtKGl0ZW0pO1xuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBjaGUgbCdlbGVtZW50byBpbiBpbnB1dFxuICAgKiBzaWEgYXNzb2NpYXRvIGFsbCd1cmwgY29ycmVudGVcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIGlzQ3VycmVudFBhZ2VJdGVtID0gKGl0ZW06IE1lbnVJdGVtKTogYm9vbGVhbiA9PlxuICAgIHRoaXMuaXNDdXJyZW50VXJsKHRoaXMuZ2V0SXRlbUxpbmsoaXRlbSkpXG4gICAgfHwgdGhpcy5pc0N1cnJlbnRVcmwodGhpcy5nZXRJdGVtTGlua1JlZ2V4KGl0ZW0pKVxuICAgIHx8IChpdGVtLmFjdGl2ZUxpbmtzICE9IHVuZGVmaW5lZFxuICAgICAgJiYgaXRlbS5hY3RpdmVMaW5rcy5zb21lKHRoaXMuaXNDdXJyZW50VXJsKSk7XG5cbiAgLyoqXG4gICAqIFJlc3RpdHVpc2NlIHRydWUgc2UgbCdlbGVtZW50b1xuICAgKiBkZXZlIGVzc2VyZSB2aXN1YWxpenphdG9cbiAgICpcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIHNob3dJdGVtID0gKGl0ZW06IE1lbnVJdGVtKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGl0ZW0uc2hvdylcbiAgICAgID8gZmFsc2VcbiAgICAgIDogaXRlbS5zaG93ID09IHVuZGVmaW5lZFxuICAgICAgfHwgaXRlbS5zaG93ID09PSB0cnVlXG4gICAgICB8fCAoaXNGdW5jdGlvbihpdGVtLnNob3cpICYmIChpdGVtLnNob3cgYXMgQ2hlY2tGbikoKSA9PT0gdHJ1ZSlcbiAgICAgIHx8IHRoaXMuaXNBdXRvU2hvd0l0ZW0oaXRlbSk7XG4gIH07XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBnZXRTaG93T2JzZXJ2YWJsZSA9IChpdGVtOiBNZW51SXRlbSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4ge1xuXG4gICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShpdGVtLnNob3cpID8gaXRlbS5zaG93IDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXN0aXR1aXNjZSB0cnVlIHNlIGwnZWxlbWVudG9cbiAgICogZGV2ZSBlc3NlcmUgdmlzdWFsaXp6YXRvIGluIGF1dG9tYXRpY29cbiAgICogcXVhbmRvIGNvcnJpc3BvbmRlIGFsbCd1cmwgY29ycmVudGVcbiAgICogbyBzZSB1bm8gZGVpIHN1b2kgbm9kaSBmaWdsaVxuICAgKiBlJyB1biBlbGVtZW50byBjaGUgZGV2ZSBlc3NlcmUgdmlzdWFsaXp6YXRvIGluIGF1dG9tYXRpY28uXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBpc0F1dG9TaG93SXRlbSA9IChpdGVtOiBNZW51SXRlbSk6IGJvb2xlYW4gPT5cblxuICAgIGl0ZW0uc2hvdyA9PT0gQVVUT19TSE9XXG4gICAgJiYgKHRoaXMuaXNDdXJyZW50UGFnZUl0ZW0oaXRlbSlcbiAgICAgIHx8IChpdGVtLnN1Ykl0ZW1zICYmIGl0ZW0uc3ViSXRlbXMuc29tZSh0aGlzLmlzQXV0b1Nob3dJdGVtKSkpO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9wZXJhdG9yaSByZWN1cGVybyBpbmZvIGl0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBnZXRQcm9wZXJ0eVZhbHVlID0gKHByb3BlcnR5OiBzdHJpbmcgfCBHZXRTdHJpbmdGbikgPT4gaXNGdW5jdGlvbihwcm9wZXJ0eSkgPyAocHJvcGVydHkgYXMgR2V0U3RyaW5nRm4pKCkgOiBwcm9wZXJ0eTtcblxuICAvLyBnZXRJdGVtTGluayA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiBpc0Z1bmN0aW9uKGl0ZW0ubGluaykgPyAoaXRlbS5saW5rIGFzIEdldFN0cmluZ0ZuKSgpIDogaXRlbS5saW5rO1xuICAvLyBnZXRJdGVtTGlua1JlZ2V4ID0gKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nID0+IGlzRnVuY3Rpb24oaXRlbS5saW5rUmVnZXgpID8gKGl0ZW0ubGlua1JlZ2V4IGFzIEdldFN0cmluZ0ZuKSgpIDogaXRlbS5saW5rUmVnZXg7XG4gIC8vIGdldEl0ZW1MYWJlbCA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiBpc0Z1bmN0aW9uKGl0ZW0ubGFiZWwpID8gKGl0ZW0ubGFiZWwgYXMgR2V0U3RyaW5nRm4pKCkgOiBpdGVtLmxhYmVsO1xuICAvLyBnZXRJdGVtVGl0bGUgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gaXNGdW5jdGlvbihpdGVtLnRpdGxlKSA/IChpdGVtLnRpdGxlIGFzIEdldFN0cmluZ0ZuKSgpIDogaXRlbS50aXRsZTtcbiAgLy8gZ2V0SXRlbUFyaWFMYWJlbCA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiBpc0Z1bmN0aW9uKGl0ZW0uYXJpYUxhYmVsKSA/IChpdGVtLmFyaWFMYWJlbCBhcyBHZXRTdHJpbmdGbikoKSA6IGl0ZW0uYXJpYUxhYmVsO1xuXG4gIGdldEl0ZW1MaW5rID0gKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nID0+IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShpdGVtLmxpbmspO1xuICBnZXRJdGVtTGlua1JlZ2V4ID0gKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nID0+IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShpdGVtLmxpbmtSZWdleCk7XG4gIGdldEl0ZW1MYWJlbCA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiB0aGlzLmdldFByb3BlcnR5VmFsdWUoaXRlbS5sYWJlbCk7XG4gIGdldEl0ZW1UaXRsZSA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiB0aGlzLmdldFByb3BlcnR5VmFsdWUoaXRlbS50aXRsZSk7XG4gIGdldEl0ZW1BcmlhTGFiZWwgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGl0ZW0uYXJpYUxhYmVsKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPcGVyYXRvcmkgZGkgdXRpbGl0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBjaGUgbCd1cmwgZGF0byBpbiBpbnB1dFxuICAgKiBzaWEgcXVlbGxvIGNvcnJlbnRlXG4gICAqXG4gICAqIEBwYXJhbSB1cmxcbiAgICovXG4gIGlzQ3VycmVudFVybCA9ICh1cmw6IHN0cmluZyk6IGJvb2xlYW4gPT5cblxuICAgIHVybCAhPSB1bmRlZmluZWRcbiAgICAmJiB0aGlzLnJvdXRlci51cmxcbiAgICAgIC5zcGxpdCgnPycpWzBdXG4gICAgICAubWF0Y2gobmV3IFJlZ0V4cCgnXicuY29uY2F0KHVybCkuY29uY2F0KCckJyksICdpJykpICE9IG51bGw7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTWV0b2RpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIEluaXppYWxpenphIGdsaSBlbGVtZW50aSBkZWwgbWVudVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml6aWFsaXp6YUl0ZW1zKGl0ZW1zOiBNZW51SXRlbVtdKSB7XG5cbiAgICBpZiAoaXRlbXM/Lmxlbmd0aCkge1xuXG4gICAgICAvLyBJbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBwZXIgZ2xpIGVsZW1lbnRpXG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgICAgIGlmIChpdGVtLmlkID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgaXRlbS5pZCA9IHV1aWR2NCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uc2hvdyA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIGl0ZW0uc2hvdyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb2xsYXBzaWJsZSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIGl0ZW0uY29sbGFwc2libGUgPSB0aGlzLmNvbGxhcHNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29sbGFwc2libGUgPT0gZmFsc2UpIHtcblxuICAgICAgICAgIGl0ZW0uY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb2xsYXBzZWQgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAvLyBpdGVtLmNvbGxhcHNlZCA9ICh0aGlzLmNvbGxhcHNlZCA9PSB1bmRlZmluZWQpID8gKGl0ZW0uY29sbGFwc2libGUgPT0gdHJ1ZSkgOiB0aGlzLmNvbGxhcHNpYmxlO1xuICAgICAgICAgIGl0ZW0uY29sbGFwc2VkID0gKHRoaXMuY29sbGFwc2VkID09IHVuZGVmaW5lZCkgPyAoaXRlbS5jb2xsYXBzaWJsZSA9PSB0cnVlKSA6IHRoaXMuY29sbGFwc2VkO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXRQYXJlbnQoaXRlbXMsIHRoaXMucGFyZW50KTtcbiAgICAgIHRoaXMuaW1wb3N0YVVybEVmZmV0dGl2aShpdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNvdnJhc2NyaXZlIGxhIHByb3ByaWV0YSBsaW5rIGRlZ2xpIGVsZW1lbnRpIGRlbCBtZW51XG4gICAqIHNlIGxhIHByb3ByaWV0YSBsaW5rUmVnZXggbWF0Y2hhIGNvbiBsJ3VybCBjb3JyZW50ZS5cbiAgICovXG4gIHByaXZhdGUgaW1wb3N0YVVybEVmZmV0dGl2aShpdGVtczogTWVudUl0ZW1bXSkge1xuXG4gICAgaWYgKGl0ZW1zPy5sZW5ndGgpIHtcblxuICAgICAgaXRlbXMuZm9yRWFjaCh0aGlzLmltcG9zdGFVcmxFZmZldHRpdm8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTb3ZyYXNjcml2ZSBsYSBwcm9wcmlldGEgbGluayBkZWxsJ2VsZW1lbnRvIGRlbCBtZW51XG4gICAqIHNlIGxhIHByb3ByaWV0YSBsaW5rUmVnZXggbWF0Y2hhIGNvbiBsJ3VybCBjb3JyZW50ZS5cbiAgICovXG4gIHByaXZhdGUgaW1wb3N0YVVybEVmZmV0dGl2byA9IChpdGVtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVMaW5rT3ZlcndyaXRpbmcgJiYgaXRlbSAmJiB0aGlzLmlzQ3VycmVudFVybCh0aGlzLmdldEl0ZW1MaW5rUmVnZXgoaXRlbSkpKSB7XG5cbiAgICAgIGl0ZW0ubGluayA9IHRoaXMucm91dGVyLnVybDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEVtZXR0ZSBsJ2VsZW1lbnRvXG4gICAqIGFzc29jaWF0byBhbGwndXJsIGNvcnJlbnRlXG4gICAqL1xuICBwcml2YXRlIGVtaXRDdXJyZW50SXRlbSgpIHtcblxuICAgIGxldCBpdGVtOiBNZW51SXRlbSA9IHRoaXMuZmluZEN1cnJlbnRJdGVtKHRoaXMuaXRlbXMpO1xuXG4gICAgaWYgKGl0ZW0gIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIHRoaXMuaW1wb3N0YVVybEVmZmV0dGl2byhpdGVtKTtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoJ0VtaXNzaW9uZSBpdGVtIG1lbnUgdXJsIGNvcnJlbnRlOicpO1xuICAgICAgdGhpcy5lbWl0RGVidWcoaXRlbSk7XG5cbiAgICAgIHRoaXMuY3VycmVudEl0ZW0uZW1pdChpdGVtKTtcblxuICAgICAgLy8gdG9kbyA/Pz9cbiAgICAgIC8vIGlmICh0aGlzLmNvbGxhcHNlT3RoZXIpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgIHRoaXMuY29sbGFwc2VPdGhlcihpdGVtKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmljZXJjYSBsJ2VsZW1lbnRvIGRpIG1lbnUgaW5lcmVudGVcbiAgICogbCd1cmwgY29ycmVudGVcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1zXG4gICAqL1xuICBwcml2YXRlIGZpbmRDdXJyZW50SXRlbShpdGVtczogTWVudUl0ZW1bXSk6IE1lbnVJdGVtIHtcblxuICAgIGxldCByZXN1bHRJdGVtOiBNZW51SXRlbSA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChpdGVtcz8ubGVuZ3RoKSB7XG5cbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IE1lbnVJdGVtKSA9PiB7XG5cbiAgICAgICAgaWYgKHJlc3VsdEl0ZW0gPT0gdW5kZWZpbmVkICYmIGl0ZW0gIT0gdW5kZWZpbmVkICYmIHRoaXMuaXNDdXJyZW50UGFnZUl0ZW0oaXRlbSkpIHtcblxuICAgICAgICAgIHJlc3VsdEl0ZW0gPSBpdGVtO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0SXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGl0ZW1zXG4gICAqL1xuICBwcml2YXRlIGZpbmRJdGVtKGlkOiBzdHJpbmcsIGl0ZW1zOiBNZW51SXRlbVtdKSB7XG5cbiAgICBsZXQgcmVzdWx0SXRlbTogTWVudUl0ZW0gPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaXRlbXM/Lmxlbmd0aCkge1xuXG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgICAgIGlmIChyZXN1bHRJdGVtID09IHVuZGVmaW5lZCAmJiBpdGVtICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgcmVzdWx0SXRlbSA9IGl0ZW0uaWQgPT0gaWQgPyBpdGVtIDogdGhpcy5maW5kSXRlbShpZCwgaXRlbS5zdWJJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgcHJpdmF0ZSBlc3BhbmRpUGVyY29yc28oaWQ6IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgICAgIGxldCBpbm5lckl0ZW06IE1lbnVJdGVtID0gdGhpcy5maW5kSXRlbShpZCwgaXRlbS5zdWJJdGVtcyk7XG5cbiAgICAgICAgaWYgKChpdGVtPy5pZCA9PSBpZCkgfHwgaW5uZXJJdGVtICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgdGhpcy5lc3BhbmRpSXRlbShpdGVtKTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbGxhcHNlT3RoZXIpIHtcblxuICAgICAgICAgICAgdGhpcy5kb0NvbGxhcHNlT3RoZXIoaXRlbSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlubmVySXRlbSkge1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW9zdHJhSXRlbS5lbWl0KGlkKSwgQ09MTEFQU0lOR19EVVJBVElPTik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVzcGFuZGlNZW51ID0gKCkgPT4gdGhpcy5zZXRDb2xsYXBzZWRNZW51KCdzaG93Jyk7XG4gIHByaXZhdGUgY29sbGFzc2FNZW51ID0gKCkgPT4gdGhpcy5zZXRDb2xsYXBzZWRNZW51KCdoaWRlJyk7XG5cbiAgcHJpdmF0ZSBzZXRDb2xsYXBzZWRNZW51KG1vZGU6IENvbGxhcHNlTW9kZSkge1xuXG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5zZXRDb2xsYXBzZWQoaXRlbSwgbW9kZSkpO1xuICAgIH1cbiAgfVxuXG4gIGVzcGFuZGlJdGVtID0gKGl0ZW06IE1lbnVJdGVtKSA9PiB0aGlzLnNldENvbGxhcHNlZChpdGVtLCAnc2hvdycpO1xuICBjb2xsYXNzYUl0ZW0gPSAoaXRlbTogTWVudUl0ZW0pID0+IHRoaXMuc2V0Q29sbGFwc2VkKGl0ZW0sICdoaWRlJyk7XG4gIHRvZ2dsZUl0ZW0gPSAoaXRlbTogTWVudUl0ZW0pID0+IHRoaXMuc2V0Q29sbGFwc2VkKGl0ZW0sICd0b2dnbGUnKTtcblxuICBzZXRDb2xsYXBzZWQoaXRlbTogTWVudUl0ZW0sIG1vZGU6IENvbGxhcHNlTW9kZSkge1xuXG4gICAgaWYgKGl0ZW0gJiYgaXRlbS5jb2xsYXBzaWJsZSkge1xuXG4gICAgICBzd2l0Y2ggKG1vZGUpIHtcblxuICAgICAgICBjYXNlICdoaWRlJzpcbiAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgICAgaXRlbS5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICAgIGl0ZW0uY29sbGFwc2VkID0gIWl0ZW0uY29sbGFwc2VkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFyZW50KGl0ZW1zOiBNZW51SXRlbVtdLCBwYXJlbnQ6IE1lbnVJdGVtKSB7XG5cbiAgICBpZiAoaXRlbXM/Lmxlbmd0aCAmJiBwYXJlbnQpIHtcblxuICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIGl0ZW0ucGFyZW50ID0gdGhpcy50b0xpZ2h0SXRlbShwYXJlbnQpO1xuICAgICAgICAgIHRoaXMuc2V0UGFyZW50KGl0ZW0uc3ViSXRlbXMsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvTGlnaHRJdGVtKGU6IE1lbnVJdGVtKTogTWVudUl0ZW0ge1xuXG4gICAgcmV0dXJuIGUgIT0gdW5kZWZpbmVkXG4gICAgICA/IHtcbiAgICAgICAgaWQ6IGUuaWQsXG4gICAgICAgIGxhYmVsOiBlLmxhYmVsLFxuICAgICAgICBsaW5rOiBlLmxpbmssXG4gICAgICAgIHBhcmVudDogdGhpcy50b0xpZ2h0SXRlbShlLnBhcmVudClcbiAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaXRlbU9uQ2xpY2soaXRlbTogTWVudUl0ZW0pIHtcblxuICAgIGlmIChpdGVtKSB7XG5cbiAgICAgIGlmIChpdGVtLmNhbGxiYWNrICYmIGlzRnVuY3Rpb24oaXRlbS5jYWxsYmFjaykpIHtcblxuICAgICAgICBpdGVtLmNhbGxiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLmNvbGxhcHNpYmxlKSB7XG5cbiAgICAgICAgaXRlbS5jb2xsYXBzZWQgPSAhaXRlbS5jb2xsYXBzZWQ7XG5cbiAgICAgICAgaWYgKGl0ZW0uY29sbGFwc2VkID09PSBmYWxzZSAmJiB0aGlzLmNvbGxhcHNlT3RoZXIgPT09IHRydWUpIHtcblxuICAgICAgICAgIHRoaXMuZG9Db2xsYXBzZU90aGVyKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZldHRvIGZpc2FybW9uaWNhXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBwcml2YXRlIGRvQ29sbGFwc2VPdGhlcihpdGVtOiBNZW51SXRlbSkge1xuXG4gICAgaWYgKGl0ZW0pIHtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdG06IE1lbnVJdGVtKSA9PiB7XG5cbiAgICAgICAgaWYgKGl0bSAmJiBpdG0uaWQgIT0gaXRlbS5pZCkge1xuXG4gICAgICAgICAgaXRtLmNvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjdXJyZW50SXRlbVxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgY3VycmVudEl0ZW1IYW5kbGVyKGN1cnJlbnRJdGVtOiBNZW51SXRlbSwgaXRlbTogTWVudUl0ZW0pIHtcblxuICAgIGlmIChjdXJyZW50SXRlbSkge1xuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtLmVtaXQoY3VycmVudEl0ZW0pO1xuXG4gICAgICBpZiAodGhpcy5leHBhbmRBdXRvbWF0aWNhbGx5ID09PSB0cnVlICYmICF0aGlzLmlubmVyTWVudSkge1xuXG4gICAgICAgIHRoaXMuZXNwYW5kaVBlcmNvcnNvKGN1cnJlbnRJdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb2xsYXBzZWRPbkNoYW5nZSgpIHtcblxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgdGhpcy5lbWl0TWF4SGVpZ2h0KClcbiAgICAvLyAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5jb2xsYXBzZWQpXG4gICAgLy8gfSwgNTApXG4gIH1cblxuICBpdGVtT25BcnJvd0Rvd24oKSB7XG5cbiAgICBsZXQgZm9jdXNhYmxlSXRlbXMgPSB0aGlzLmZvY3VzYWJsZUl0ZW1zO1xuICAgIGZvY3VzYWJsZUl0ZW1zLmZpbHRlcigoaW5kZXgpID0+IGluZGV4ID4gZm9jdXNhYmxlSXRlbXMuaW5kZXgoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpLmZpcnN0KCk/LmZvY3VzKCk7XG4gIH1cblxuICBpdGVtT25BcnJvd1VwKCkge1xuICAgIGxldCBmb2N1c2FibGVJdGVtcyA9IHRoaXMuZm9jdXNhYmxlSXRlbXM7XG4gICAgZm9jdXNhYmxlSXRlbXMuZmlsdGVyKChpbmRleCkgPT4gaW5kZXggPCBmb2N1c2FibGVJdGVtcy5pbmRleChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkubGFzdCgpPy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0IGZvY3VzYWJsZUl0ZW1zKCkge1xuXG4gICAgcmV0dXJuIHdpbmRvd1snJCddKCdib2R5JykuZmluZChGT0NVU0FCTEVfSVRFTVNfU0VMRUNUT1IpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaW5pemlhbGl6emF6aW9uZUNvbXBsZXRhdGFcIj5cblxuICA8dWwgI21lbnVcbiAgICAgIGlkPVwie3tpZH19XCJcbiAgICAgIFthdHRyLnJvbGVdPVwiJ21lbnUnXCJcbiAgICAgIGNsYXNzPVwiaW5haWwtbWVudSB7e2NsYXNzfX1cIlxuICAgICAgW25nU3R5bGVdPVwieydoZWlnaHQucHgnOiAobWVudUhlaWdodCQgfCBhc3luYyl9XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnbGl2ZWxsb18yJzogaW5uZXJNZW51LCAnY29sbGFwc2VkJzogaXNDb2xsYXBzZWQoKX1cIj5cblxuICAgIDxkZWJ1Zy1wcmUgKm5nSWY9XCJzaG93U3RhdGVcIj5baW5haWwtbWVudS1pbnRyYW5ldF08YnI+XG4gICAgICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInaWQnXCIgW3Byb3BlcnRpZV09XCJpZFwiPjwvc3RhdGUtcHJvcGVydGllPlxuICAgICAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2lubmVyTWVudSdcIiBbcHJvcGVydGllXT1cImlubmVyTWVudVwiPjwvc3RhdGUtcHJvcGVydGllPlxuICAgICAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NvbGxhcHNpYmxlJ1wiIFtwcm9wZXJ0aWVdPVwiY29sbGFwc2libGVcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjb2xsYXBzZWQnXCIgW3Byb3BlcnRpZV09XCJjb2xsYXBzZWRcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjb2xsYXBzZU90aGVyJ1wiIFtwcm9wZXJ0aWVdPVwiY29sbGFwc2VPdGhlclwiPjwvc3RhdGUtcHJvcGVydGllPlxuICAgICAgPCEtLSAgICAgIHt7ZWxlbWVudHMgfCBqc29ufX0tLT5cbiAgICA8L2RlYnVnLXByZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cblxuICAgICAgPGxpICpuZ0lmPVwic2hvd0l0ZW0oaXRlbSkgfHwgKGdldFNob3dPYnNlcnZhYmxlKGl0ZW0pIHwgYXN5bmMpXCJcbiAgICAgICAgICBbYXR0ci5yb2xlXT1cIml0ZW0ubGluayA/ICdtZW51aXRlbScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogaXNBY3RpdmUoaXRlbSl9XCJcbiAgICAgICAgICBjbGFzcz1cImxpdmVsbG9fMVwiPlxuICAgICAgICA8YSAqbmdJZj1cIml0ZW0ubGlua1wiXG4gICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZ2V0SXRlbVRpdGxlKGl0ZW0pXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRJdGVtQXJpYUxhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNDb2xsYXBzZWQoKSA/ICctMScgOiAnMCdcIlxuICAgICAgICAgICBbcm91dGVyTGlua109XCJnZXRJdGVtTGluayhpdGVtKVwiXG4gICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRJdGVtTGFiZWwoaXRlbSlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzSXRlbUNvbGxhcHNpYmxlKGl0ZW0pID8gIWl0ZW0uY29sbGFwc2VkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1PbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgKGtleXVwLmFycm93VXApPVwiaXRlbU9uQXJyb3dVcCgpXCJcbiAgICAgICAgICAgKGtleXVwLmFycm93RG93bik9XCJpdGVtT25BcnJvd0Rvd24oKVwiXG4gICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpdGVtT25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgKm5nSWY9XCIhaXRlbS5saW5rXCJcbiAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICBbYXR0ci50aXRsZV09XCJnZXRJdGVtVGl0bGUoaXRlbSlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEl0ZW1BcmlhTGFiZWwoaXRlbSlcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc0NvbGxhcHNlZCgpID8gJy0xJyA6ICcwJ1wiXG4gICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEl0ZW1MYWJlbChpdGVtKVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNJdGVtQ29sbGFwc2libGUoaXRlbSkgPyAhaXRlbS5jb2xsYXBzZWQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAoY2xpY2spPVwiaXRlbU9uQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAoa2V5dXAuYXJyb3dVcCk9XCJpdGVtT25BcnJvd1VwKClcIlxuICAgICAgICAgICAoa2V5dXAuYXJyb3dEb3duKT1cIml0ZW1PbkFycm93RG93bigpXCJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIml0ZW1PbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIml0ZW1PbkNsaWNrKGl0ZW0pXCI+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRlYnVnLXByZSAqbmdJZj1cInNob3dTdGF0ZVwiPlttZW51LWl0ZW1dPGJyPlxuICAgICAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidpZCdcIiBbcHJvcGVydGllXT1cIml0ZW0uaWRcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgICAgICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInY29sbGFwc2libGUnXCIgW3Byb3BlcnRpZV09XCJpdGVtLmNvbGxhcHNpYmxlXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gICAgICAgICAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NvbGxhcHNlZCdcIiBbcHJvcGVydGllXT1cIml0ZW0uY29sbGFwc2VkXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gICAgICAgICAgPCEtLSAgICAgICAgICB7e2VsZW1lbnQgfCBqc29ufX0tLT5cbiAgICAgICAgPC9kZWJ1Zy1wcmU+XG4gICAgICAgIDxpbmFpbC1tZW51ICpuZ0lmPVwiaGFzU3ViSXRlbXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbS5pZCsnLWl0ZW1zJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5zdWJJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtwYXJlbnRdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lck1lbnVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtlbWl0Q3VycmVudF09XCJlbWl0Q3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzaWJsZV09XCJpdGVtLmNvbGxhcHNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzZU90aGVyXT1cImNvbGxhcHNlT3RoZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VdPVwiY29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICAgICBbdG9nZ2xlXT1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93XT1cIm1vc3RyYUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd1N0YXRlXT1cInNob3dTdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChjdXJyZW50SXRlbSk9XCJjdXJyZW50SXRlbUhhbmRsZXIoJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICA8L2luYWlsLW1lbnU+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9uZy1jb250YWluZXI+XG5cblxuIl19
550
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFDLHNCQUFzQixFQUFzQixNQUFNLG9DQUFvQyxDQUFDO0FBQy9GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBRXBELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUV6QixNQUFNLHdCQUF3QixHQUFHLDZDQUE2QyxDQUFDO0FBNEIvRTs7OztHQUlHO0FBQ0gsTUFB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QixDQUFDLENBQUM7SUFDNUQsQ0FBQzs7MkdBcHNCVSxhQUFhLHlFQXFLSixzQkFBc0I7K0ZBcksvQixhQUFhLHFsQkN2RzFCLGtySEFpRkEsc1dEc0JhLGFBQWE7NEZBQWIsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUk7OzBCQXVLeEIsTUFBTTsyQkFBQyxzQkFBc0I7NENBOUoxQyxNQUFNO3NCQURMLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLFVBQVU7c0JBRFQsS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQVNOLElBQUk7c0JBREgsS0FBSztnQkFRTixPQUFPO3NCQUROLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFRTixNQUFNO3NCQURMLEtBQUs7Z0JBaUJOLFdBQVc7c0JBRFYsS0FBSztnQkFTTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVNOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFPTixTQUFTO3NCQURSLE1BQU07Z0JBU1AsV0FBVztzQkFEVixNQUFNO2dCQUlQLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBpc09ic2VydmFibGUsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tICdyeGpzL2ludGVybmFsLWNvbXBhdGliaWxpdHknO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Y2xvbmUsIHV1aWR2NH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uLm9wZXJhdG9ycyc7XG5pbXBvcnQge0Jhc2ljVXhFbGVtZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi9iYXNpYy11eC1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge05HX0lOQUlMX0NPTU1PTl9DT05GSUcsIE5nSW5haWxDb21tb25Db25maWd9IGZyb20gJy4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWcnO1xuaW1wb3J0IHtnZXRDb25maWdWYWx1ZX0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuXG5jb25zdCBDT0xMQVBTSU5HX0RVUkFUSU9OID0gMzUwO1xuY29uc3QgQVVUT19TSE9XID0gJ2F1dG8nO1xuXG5jb25zdCBGT0NVU0FCTEVfSVRFTVNfU0VMRUNUT1IgPSAndWwuaW5haWwtbWVudSA+IGxpID4gYTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDaGVja0ZuID0gKCkgPT4gYm9vbGVhbjtcbmV4cG9ydCBkZWNsYXJlIHR5cGUgR2V0U3RyaW5nRm4gPSAoKSA9PiBzdHJpbmc7XG5leHBvcnQgZGVjbGFyZSB0eXBlIE1lbnVJdGVtU2hvd01vZGUgPSAnYXV0byc7XG5cbnR5cGUgQ29sbGFwc2VNb2RlID0gJ3Nob3cnIHwgJ2hpZGUnIHwgJ3RvZ2dsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW0ge1xuXG4gIGlkPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgR2V0U3RyaW5nRm47XG4gIHRpdGxlPzogc3RyaW5nIHwgR2V0U3RyaW5nRm47XG4gIGFyaWFMYWJlbD86IHN0cmluZyB8IEdldFN0cmluZ0ZuO1xuICBsaW5rPzogc3RyaW5nIHwgR2V0U3RyaW5nRm47XG4gIGxpbmtSZWdleD86IHN0cmluZyB8IEdldFN0cmluZ0ZuO1xuICBxdWVyeVBhcmFtcz86IHtcbiAgICBbazogc3RyaW5nXTogYW55O1xuICB9O1xuICBjYWxsYmFjaz86IEZ1bmN0aW9uO1xuICBhY3RpdmVMaW5rcz86IHN0cmluZ1tdO1xuICBzaG93PzogYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBDaGVja0ZuIHwgTWVudUl0ZW1TaG93TW9kZTtcbiAgY29sbGFwc2libGU/OiBib29sZWFuO1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICBzdWJJdGVtcz86IE1lbnVJdGVtW107XG4gIHBhcmVudD86IE1lbnVJdGVtO1xufVxuXG4vKipcbiAqIERlZXAgY29weSBkZWxsJ29nZ2V0dG8gTWVudUl0ZW1cbiAqXG4gKiBAcGFyYW0gaXRlbVxuICovXG5jb25zdCBjbG9uZUl0ZW0gPSAoaXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSA9PiB7XG5cbiAgbGV0IGl0ZW1DbG9uZTogTWVudUl0ZW07XG5cbiAgaWYgKGl0ZW0pIHtcblxuICAgIGl0ZW1DbG9uZSA9IGNsb25lKGl0ZW0pO1xuXG4gICAgaXRlbUNsb25lLmxhYmVsID0gaXRlbS5sYWJlbDtcbiAgICBpdGVtQ2xvbmUubGluayA9IGl0ZW0ubGluaztcbiAgICBpdGVtQ2xvbmUubGlua1JlZ2V4ID0gaXRlbS5saW5rUmVnZXg7XG4gICAgaXRlbUNsb25lLmNhbGxiYWNrID0gaXRlbS5jYWxsYmFjaztcbiAgICBpdGVtQ2xvbmUuc2hvdyA9IGl0ZW0uc2hvdztcbiAgICBpdGVtQ2xvbmUucGFyZW50ID0gY2xvbmVJdGVtKGl0ZW0ucGFyZW50KTtcbiAgICBpdGVtQ2xvbmUuc3ViSXRlbXMgPSBjbG9uZUl0ZW1zKGl0ZW0uc3ViSXRlbXMpO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW1DbG9uZTtcbn07XG5cbi8qKlxuICogRGVlcCBjb3B5IGRlbGwnb2dnZXR0byBNZW51SXRlbVtdXG4gKlxuICogQHBhcmFtIGl0ZW1zXG4gKi9cbmNvbnN0IGNsb25lSXRlbXMgPSAoaXRlbXM6IE1lbnVJdGVtW10pOiBNZW51SXRlbVtdID0+IHtcblxuICBsZXQgaXRlbXNDbG9uZTogTWVudUl0ZW1bXTtcblxuICBpZiAoaXRlbXMpIHtcblxuICAgIGl0ZW1zQ2xvbmUgPSBpdGVtcy5tYXAoaXRlbSA9PiBjbG9uZUl0ZW0oaXRlbSkpO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW1zQ2xvbmU7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LmNvbXBvbmVudC5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGV4dGVuZHMgQmFzaWNVeEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogRWxlbWVudG8gcGFyZW50IGRlbCBtZW51LlxuICAgKiAoIFF1ZXN0byBpbnB1dCBub24gZGV2ZSBlc3NlcmUgcGFzc2F0bywgc2VydmUgaW50ZXJuYW1lbnRlIHBlciBmYXIgZnVuemlvbmFyZSBpbCBtZW51IClcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhcmVudDogTWVudUl0ZW07XG5cbiAgLyoqXG4gICAqIEVsZW1lbnRvIHBhcmVudCBkZWwgbWVudS5cbiAgICogKCBRdWVzdG8gaW5wdXQgbm9uIGRldmUgZXNzZXJlIHBhc3NhdG8sIHNlcnZlIGludGVybmFtZW50ZSBwZXIgZmFyIGZ1bnppb25hcmUgaWwgbWVudSApXG4gICAqL1xuICBASW5wdXQoKVxuICBpbm5lck1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogaWQgZGVsbCdlbGVtZW50byBjaGUgc2kgdnVvbGUgYXR0aXZhcmUuXG4gICAqIFNlIHNwZWNpZmljYXRvIGZhIGRpdmVudGFyZSBib2xkIGxhIHZvY2UgZGkgbWVudSBhc3NvY2lhdGFcbiAgICovXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUl0ZW06IHN0cmluZztcblxuICAvKipcbiAgICogRW1ldHRlIGwnZWxlbWVudG8gZGVsIG1lbnVcbiAgICogY2hlIGNvcnJpc3BvbmRlIGFsbCd1cmwgY29ycmVudGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbWl0Q3VycmVudDogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogQ29sbGFzc2EgaWwgbWVudVxuICAgKiBTZSBwYXNzYXRvIGluIGlucHV0IHVuIGlkIGNvbGxhc3NhIGxvIHNwZWNpZmljbyBlbGVtZW50by5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlOiBPYnNlcnZhYmxlPHN0cmluZyB8IHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBFc3BhbmRlIGxlIHZvY2kgZGkgbWVudSBkaSBwcmltbyBsaXZlbGxvLlxuICAgKiBTZSBzcGVjaWZpY2F0byB1biBpZCBlc3BhbmRlIGlsIHJhbW8gZGVsIG1lbnVcbiAgICogY2hlIHBvcnRhIGFsbCdlbGVtZW50byBjb24gbCdpZCBzcGVjaWZpY2F0by5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3c6IE9ic2VydmFibGU8c3RyaW5nIHwgdm9pZD47XG5cbiAgLyoqXG4gICAqIEVzcGFuZGUgdHV0dGUgbGUgdm9jaSBkZWwgbWVudVxuICAgKiBjb21wcmVzZSBxdWVsbGUgZGVpIGxpdmVsbGkgYW5uaWRhdGlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3dBbGw6IE9ic2VydmFibGU8dm9pZD47IC8vIHRvZG8gdGVzdGFyZVxuXG4gIC8qKlxuICAgKiBFZmZldHR1YSBpbCB0b2dnbGUgZGVsbCdlbGVtZW50byBzcGVjaWZpY2F0byB0cmFtaXRlIGlkXG4gICAqL1xuICBASW5wdXQoKVxuICB0b2dnbGU6IE9ic2VydmFibGU8c3RyaW5nPjsgLy8gdG9kbyB0ZXN0YXJlXG5cbiAgLyoqXG4gICAqIEVsZW1lbnRpIGRlbCBtZW51XG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtczogTWVudUl0ZW1bXTtcbiAgb3JpZ2luYWxJdGVtczogTWVudUl0ZW1bXTtcblxuICAvKipcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJlaW5pdDogT2JzZXJ2YWJsZTx2b2lkIHwgTWVudUl0ZW1bXT47XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgZGlzYWJpbGl0YSBsYSBzb3ZyYXNjcml0dHVyYSBkZWxsYSBwcm9wcmlldGFcbiAgICogbGluayBuZWdsaSBlbGVtZW50aSBkZWwgbWVudVxuICAgKiBxdWFuZG8gbGEgcHJvcHJpZXRhIGxpbmtSZWdleCBtYXRjaGFcbiAgICogY29uIGwndXJsIGNvcnJlbnRlXG4gICAqL1xuICBkaXNhYmxlTGlua092ZXJ3cml0aW5nOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/Lm1lbnVDb21wb25lbnQ/LmRpc2FibGVMaW5rT3ZlcndyaXRpbmcsIGZhbHNlKTtcblxuICAvKipcbiAgICogU2UgdHJ1ZSBpbmRpY2EgY2hlIGxlIHZvY2kgZGVsIG1lbnUgc29ubyBjb2xsYXNzYWJpbGkuXG4gICAqIFF1ZXN0YSBpbXBvc3RhemlvbmUgdmllbmUgc292cmFzY3JpdHRhIHNlIHNwZWNpZmljYXRvIGRpdmVyc2FtZW50ZVxuICAgKiBuZWdsaSBlbGVtZW50aSBkZWwgbWVudVxuICAgKi9cbiAgQElucHV0KClcbiAgY29sbGFwc2libGU6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ubWVudUNvbXBvbmVudD8uY29sbGFwc2libGUsIGZhbHNlKTtcblxuICAvKipcbiAgICogSW5kaWNhIGxvIHN0YXRvIGluaXppYWxlIGRlbCBtZW51LCBzZSBjb2xhc3NhdG8gbyBlc3BhbnNvLlxuICAgKiBRdWVzdGEgaW1wb3N0YXppb25lIHZpZW5lIHNvdnJhc2NyaXR0YSBzZSBzcGVjaWZpY2F0byBkaXZlcnNhbWVudGVcbiAgICogbmVnbGkgZWxlbWVudGkgZGVsIG1lbnVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlZDogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5tZW51Q29tcG9uZW50Py5jb2xsYXBzZWQsIHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgYWJpbGl0YSBsJ2VmZmV0dG8gZmlzYXJtb25pY2FcbiAgICogc3VsbGUgdm9jaSBkaSBtZW51IGVzcGFuZGliaWxpLlxuICAgKi9cbiAgQElucHV0KClcbiAgY29sbGFwc2VPdGhlcjogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5tZW51Q29tcG9uZW50Py5jb2xsYXBzZU90aGVyLCBmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgZXNwYW5kZSBhdXRvbWF0aWNhbWVudGUgaWwgcGVyY29yc29cbiAgICogdmVyc28gdW4gZWxlbWVudG9cbiAgICogcXVhbmRvIHF1ZXN0byBzaSByaWZlcmlzY2UgYWxsJ3VybCBjb3JyZW50ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZXhwYW5kQXV0b21hdGljYWxseTogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5tZW51Q29tcG9uZW50Py5leHBhbmRBdXRvbWF0aWNhbGx5LCB0cnVlKTtcblxuICAvKipcbiAgICogRW1ldHRlIGwnb2dnZXR0byBNZW51SXRlbSBhc3NvY2lhdG8gYWxsYSB2b2NlIGRpIG1lbnUgc3VsbGEgcXVhbGUgc2kgZScgY2xpY2NhdG8uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbT4oKTtcblxuICAvKipcbiAgICogRW1ldHRlIGxhIHZvY2UgZGkgbWVudSBjaGUgY29ycmlzcG9uZGVcbiAgICogY29uIGwndXJsIGNvcnJlbnRlXG4gICAqIGRvcG8gdW4gZXZlbnRvIGRpIHJvdXRpbmdcbiAgICovXG4gIEBPdXRwdXQoKVxuICBjdXJyZW50SXRlbTogRXZlbnRFbWl0dGVyPE1lbnVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+KCk7XG5cbiAgQFZpZXdDaGlsZCgnbWVudScpXG4gIG1lbnU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8vIEBWaWV3Q2hpbGRyZW4oTWVudUNvbXBvbmVudClcbiAgLy8gc290dG9NZW51OiBRdWVyeUxpc3Q8TWVudUNvbXBvbmVudD47XG5cbiAgaW5pemlhbGl6emF6aW9uZUNvbXBsZXRhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbW9zdHJhSXRlbTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvLyBTZXJ2b25vIHBlciBsJ2FuaW1hemlvbmUgZGkgYXBlcnR1cmEvY2hpdXN1cmEgZmx1aWRhXG4gIG1lbnVIZWlnaHQkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xuICBlbWl0TWVudUhlaWdodCA9ICgpID0+IHtcblxuICAgIGlmICh0aGlzLmlzQ29sbGFwc2libGUoKSkge1xuXG4gICAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gdGhpcy5tZW51Py5uYXRpdmVFbGVtZW50Py5zY3JvbGxIZWlnaHQ7XG4gICAgICBsZXQgbmV4dEhlaWdodCA9IHRoaXMuaXNDb2xsYXBzZWQoKSA/IDAgOiBzY3JvbGxIZWlnaHQ7XG5cbiAgICAgIGlmIChuZXh0SGVpZ2h0ID4gMCkge1xuXG4gICAgICAgIHRoaXMubWVudUhlaWdodCQubmV4dChuZXh0SGVpZ2h0KTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICAvLyBJbXBvc3RvIGwnaGVpZ2h0IGVmZmV0dGl2b1xuICAgICAgICAvLyBwZXIgcG9pIGltcG9zdGFybG8gc3ViaXRvIGRvcG8gYSAwXG4gICAgICAgIC8vIGluIG1vZG8gZGEgZmFyIGZ1bnppb25hcmUgbCdhbmltYXppb25lLlxuICAgICAgICAvLyBTZSBub24gdmllbmUgaW1wb3N0YXRvIHVuIHZhbG9yZSBpbml6aWFsZVxuICAgICAgICAvLyBsJ2FuaW1hemlvbmUgQ1NTIG5vbiBmdW56aW9uYS5cbiAgICAgICAgdGhpcy5tZW51SGVpZ2h0JC5uZXh0KHNjcm9sbEhlaWdodCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51SGVpZ2h0JC5uZXh0KDApLCAxNSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJpbXVvdm8gaGVpZ2h0LlxuICAgICAgLy8gQWxsYSBmaW5lIGRlbGwnYW5pbWF6aW9uZSBsYSBwcm9wcmlldGEgbm9uIHNlcnZlIGNoZSByaW1hbmdhIGltcG9zdGF0YS5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51SGVpZ2h0JC5uZXh0KHVuZGVmaW5lZCksIENPTExBUFNJTkdfRFVSQVRJT04pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICBzdXBlci5vdmVycmlkZUNvbmZpZyhsaWJDb25maWc/Lm1lbnVDb21wb25lbnQpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gJ1tpbmFpbC1tZW51XSc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIEl0ZW1zXG4gICAgaWYgKGNoYW5nZXM/Lml0ZW1zPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgaWYgKCF0aGlzLmlubmVyTWVudSkge1xuXG4gICAgICAgIHRoaXMuaXRlbXMgPSBjbG9uZUl0ZW1zKGNoYW5nZXM/Lml0ZW1zPy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSXRlbXMgPSBjbG9uZUl0ZW1zKGNoYW5nZXM/Lml0ZW1zPy5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluaXppYWxpenphSXRlbXModGhpcy5pdGVtcyk7XG4gICAgICB0aGlzLmVtaXRDdXJyZW50SXRlbSgpO1xuICAgIH1cblxuICAgIC8vIEVtaXQgQ3VycmVudFxuICAgIGlmIChjaGFuZ2VzPy5lbWl0Q3VycmVudD8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucHVzaChjaGFuZ2VzLmVtaXRDdXJyZW50LmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5lbWl0Q3VycmVudEl0ZW0oKSkpO1xuICAgIH1cblxuICAgIC8vIENvbGxhcHNlZFxuICAgIGlmIChjaGFuZ2VzPy5jb2xsYXBzZWQgJiYgIWNoYW5nZXM/LmNvbGxhcHNlZC5pc0ZpcnN0Q2hhbmdlKCkpIHtcblxuICAgICAgdGhpcy5lbWl0TWVudUhlaWdodCgpO1xuICAgIH1cblxuICAgIC8vIENvbGxhc3NhIEVsZW1lbnRvIG8gTGl2ZWxsb1xuICAgIGlmIChjaGFuZ2VzLmNvbGxhcHNlICYmIGNoYW5nZXMuY29sbGFwc2UuY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucHVzaChcbiAgICAgICAgY2hhbmdlcy5jb2xsYXBzZS5jdXJyZW50VmFsdWUuc3Vic2NyaWJlKChpZDogc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgICBpZCA9PSB1bmRlZmluZWQgPyB0aGlzLmNvbGxhc3NhTWVudSgpIDogdGhpcy5jb2xsYXNzYUl0ZW0odGhpcy5maW5kSXRlbShpZCwgdGhpcy5pdGVtcykpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFc3BhbmRpIEVsZW1lbnRvIG8gTGl2ZWxsb1xuICAgIGlmIChjaGFuZ2VzPy5zaG93Py5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5wdXNoKFxuICAgICAgICBjaGFuZ2VzLnNob3cuY3VycmVudFZhbHVlLnN1YnNjcmliZSgoaWQ6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgaWQgPT0gdW5kZWZpbmVkID8gdGhpcy5lc3BhbmRpTWVudSgpIDogdGhpcy5lc3BhbmRpUGVyY29yc28oaWQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUb2dnbGEgRWxlbWVudG9cbiAgICBpZiAoY2hhbmdlcz8udG9nZ2xlPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5wdXNoKGNoYW5nZXMudG9nZ2xlLmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGlkOiBzdHJpbmcpID0+IHRoaXMudG9nZ2xlSXRlbSh0aGlzLmZpbmRJdGVtKGlkLCB0aGlzLml0ZW1zKSkpKTtcbiAgICB9XG5cbiAgICAvLyAvLyB0b2RvXG4gICAgLy8gLy8gRXNwYW5kZSB0dXR0aSBpIGxpdmVsbGlcbiAgICAvLyBpZiAoY2hhbmdlcy5zaG93QWxsICYmIGNoYW5nZXMuc2hvd0FsbC5jdXJyZW50VmFsdWUpIHtcbiAgICAvL1xuICAgIC8vICAgdGhpcy5wdXNoKGNoYW5nZXMuc2hvd0FsbC5jdXJyZW50VmFsdWUuc3Vic2NyaWJlKCgpID0+IHRoaXMuZXNwYW5kaVR1dHRpKCkpKTtcbiAgICAvLyB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBJbXBvc3RhemlvbmkgZGkgZGVmYXVsdFxuXG4gICAgaWYgKHRoaXMuY29sbGFwc2libGUgPT09IGZhbHNlKSB7XG5cbiAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sbGFwc2VkID09IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmNvbGxhcHNlZCA9ICh0aGlzLmNvbGxhcHNpYmxlID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLmluaXppYWxpenphSXRlbXModGhpcy5pdGVtcyk7XG4gICAgdGhpcy5pbml6aWFsaXp6YXppb25lQ29tcGxldGF0YSA9IHRydWU7XG4gICAgdGhpcy5lbWl0Q3VycmVudEl0ZW0oKTtcblxuICAgIC8vIFJpY2VyY2EgZWQgZW1pc3Npb25lIGRlbGxhIHZvY2UgZGkgbWVudVxuICAgIC8vIGNvcnJpc3BvbmRlbnRlIGFsbCd1cmwgY29ycmVudGVcbiAgICAvLyBhbCBOYXZpZ2F0aW9uRW5kXG4gICAgdGhpcy5wdXNoKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmltcG9zdGFVcmxFZmZldHRpdmkodGhpcy5pdGVtcyk7XG4gICAgICAgICAgdGhpcy5lbWl0Q3VycmVudEl0ZW0oKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMucmVpbml0KSB7XG5cbiAgICAgIHRoaXMucHVzaChcbiAgICAgICAgdGhpcy5yZWluaXQuc3Vic2NyaWJlKChpdGVtczogTWVudUl0ZW1bXSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5lbWl0RGVidWcoYFJlaW5pdCFgKTtcblxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBjbG9uZUl0ZW1zKGl0ZW1zIHx8IHRoaXMub3JpZ2luYWxJdGVtcyk7XG5cbiAgICAgICAgICBpZiAoaXRlbXMpIHtcblxuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1zID0gY2xvbmVJdGVtcyhpdGVtcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5pbml6aWFsaXp6YUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPcGVyYXRvcmkgY29udHJvbGxvIHN0YXRvIG1lbnUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBpc0NvbGxhcHNpYmxlID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5pbm5lck1lbnUgJiYgdGhpcy5jb2xsYXBzaWJsZTtcbiAgaXNDb2xsYXBzZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmlzQ29sbGFwc2libGUoKSAmJiB0aGlzLmNvbGxhcHNlZDtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPcGVyYXRvcmkgY29udHJvbGxvIHN0YXRvIGl0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBpc0l0ZW1Db2xsYXBzaWJsZSA9IChpdGVtOiBNZW51SXRlbSkgPT4gaXRlbS5jb2xsYXBzaWJsZSAmJiB0aGlzLmhhc1N1Ykl0ZW1zKGl0ZW0pO1xuICBpc0l0ZW1Db2xsYXBzZWQgPSAoaXRlbTogTWVudUl0ZW0pID0+IGl0ZW0/LmNvbGxhcHNpYmxlICYmIGl0ZW0/LmNvbGxhcHNlZDtcbiAgaGFzU3ViSXRlbXMgPSAoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuID0+IGl0ZW0/LnN1Ykl0ZW1zPy5sZW5ndGggPiAwO1xuICBpc0FjdGl2ZSA9IChpdGVtOiBNZW51SXRlbSkgPT4gdGhpcy5hY3RpdmVJdGVtID8gKGl0ZW0uaWQgPT0gdGhpcy5hY3RpdmVJdGVtKSA6IHRoaXMuaXNDdXJyZW50UGFnZUl0ZW0oaXRlbSk7XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIGNoZSBsJ2VsZW1lbnRvIGluIGlucHV0XG4gICAqIHNpYSBhc3NvY2lhdG8gYWxsJ3VybCBjb3JyZW50ZVxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgaXNDdXJyZW50UGFnZUl0ZW0gPSAoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuID0+XG4gICAgdGhpcy5pc0N1cnJlbnRVcmwodGhpcy5nZXRJdGVtTGluayhpdGVtKSlcbiAgICB8fCB0aGlzLmlzQ3VycmVudFVybCh0aGlzLmdldEl0ZW1MaW5rUmVnZXgoaXRlbSkpXG4gICAgfHwgKGl0ZW0uYWN0aXZlTGlua3MgIT0gdW5kZWZpbmVkXG4gICAgICAmJiBpdGVtLmFjdGl2ZUxpbmtzLnNvbWUodGhpcy5pc0N1cnJlbnRVcmwpKTtcblxuICAvKipcbiAgICogUmVzdGl0dWlzY2UgdHJ1ZSBzZSBsJ2VsZW1lbnRvXG4gICAqIGRldmUgZXNzZXJlIHZpc3VhbGl6emF0b1xuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgc2hvd0l0ZW0gPSAoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBpc09ic2VydmFibGUoaXRlbS5zaG93KVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBpdGVtLnNob3cgPT0gdW5kZWZpbmVkXG4gICAgICB8fCBpdGVtLnNob3cgPT09IHRydWVcbiAgICAgIHx8IChpc0Z1bmN0aW9uKGl0ZW0uc2hvdykgJiYgKGl0ZW0uc2hvdyBhcyBDaGVja0ZuKSgpID09PSB0cnVlKVxuICAgICAgfHwgdGhpcy5pc0F1dG9TaG93SXRlbShpdGVtKTtcbiAgfTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIGdldFNob3dPYnNlcnZhYmxlID0gKGl0ZW06IE1lbnVJdGVtKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG5cbiAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGl0ZW0uc2hvdykgPyBpdGVtLnNob3cgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVzdGl0dWlzY2UgdHJ1ZSBzZSBsJ2VsZW1lbnRvXG4gICAqIGRldmUgZXNzZXJlIHZpc3VhbGl6emF0byBpbiBhdXRvbWF0aWNvXG4gICAqIHF1YW5kbyBjb3JyaXNwb25kZSBhbGwndXJsIGNvcnJlbnRlXG4gICAqIG8gc2UgdW5vIGRlaSBzdW9pIG5vZGkgZmlnbGlcbiAgICogZScgdW4gZWxlbWVudG8gY2hlIGRldmUgZXNzZXJlIHZpc3VhbGl6emF0byBpbiBhdXRvbWF0aWNvLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgaXNBdXRvU2hvd0l0ZW0gPSAoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuID0+XG5cbiAgICBpdGVtLnNob3cgPT09IEFVVE9fU0hPV1xuICAgICYmICh0aGlzLmlzQ3VycmVudFBhZ2VJdGVtKGl0ZW0pXG4gICAgICB8fCAoaXRlbS5zdWJJdGVtcyAmJiBpdGVtLnN1Ykl0ZW1zLnNvbWUodGhpcy5pc0F1dG9TaG93SXRlbSkpKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPcGVyYXRvcmkgcmVjdXBlcm8gaW5mbyBpdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgZ2V0UHJvcGVydHlWYWx1ZSA9IChwcm9wZXJ0eTogc3RyaW5nIHwgR2V0U3RyaW5nRm4pID0+IGlzRnVuY3Rpb24ocHJvcGVydHkpID8gKHByb3BlcnR5IGFzIEdldFN0cmluZ0ZuKSgpIDogcHJvcGVydHk7XG5cbiAgLy8gZ2V0SXRlbUxpbmsgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gaXNGdW5jdGlvbihpdGVtLmxpbmspID8gKGl0ZW0ubGluayBhcyBHZXRTdHJpbmdGbikoKSA6IGl0ZW0ubGluaztcbiAgLy8gZ2V0SXRlbUxpbmtSZWdleCA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiBpc0Z1bmN0aW9uKGl0ZW0ubGlua1JlZ2V4KSA/IChpdGVtLmxpbmtSZWdleCBhcyBHZXRTdHJpbmdGbikoKSA6IGl0ZW0ubGlua1JlZ2V4O1xuICAvLyBnZXRJdGVtTGFiZWwgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gaXNGdW5jdGlvbihpdGVtLmxhYmVsKSA/IChpdGVtLmxhYmVsIGFzIEdldFN0cmluZ0ZuKSgpIDogaXRlbS5sYWJlbDtcbiAgLy8gZ2V0SXRlbVRpdGxlID0gKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nID0+IGlzRnVuY3Rpb24oaXRlbS50aXRsZSkgPyAoaXRlbS50aXRsZSBhcyBHZXRTdHJpbmdGbikoKSA6IGl0ZW0udGl0bGU7XG4gIC8vIGdldEl0ZW1BcmlhTGFiZWwgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gaXNGdW5jdGlvbihpdGVtLmFyaWFMYWJlbCkgPyAoaXRlbS5hcmlhTGFiZWwgYXMgR2V0U3RyaW5nRm4pKCkgOiBpdGVtLmFyaWFMYWJlbDtcblxuICBnZXRJdGVtTGluayA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiB0aGlzLmdldFByb3BlcnR5VmFsdWUoaXRlbS5saW5rKTtcbiAgZ2V0SXRlbUxpbmtSZWdleCA9IChpdGVtOiBNZW51SXRlbSk6IHN0cmluZyA9PiB0aGlzLmdldFByb3BlcnR5VmFsdWUoaXRlbS5saW5rUmVnZXgpO1xuICBnZXRJdGVtTGFiZWwgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGl0ZW0ubGFiZWwpO1xuICBnZXRJdGVtVGl0bGUgPSAoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcgPT4gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGl0ZW0udGl0bGUpO1xuICBnZXRJdGVtQXJpYUxhYmVsID0gKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nID0+IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShpdGVtLmFyaWFMYWJlbCk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT3BlcmF0b3JpIGRpIHV0aWxpdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogVmVyaWZpY2EgY2hlIGwndXJsIGRhdG8gaW4gaW5wdXRcbiAgICogc2lhIHF1ZWxsbyBjb3JyZW50ZVxuICAgKlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBpc0N1cnJlbnRVcmwgPSAodXJsOiBzdHJpbmcpOiBib29sZWFuID0+XG5cbiAgICB1cmwgIT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5yb3V0ZXIudXJsXG4gICAgICAuc3BsaXQoJz8nKVswXVxuICAgICAgLm1hdGNoKG5ldyBSZWdFeHAoJ14nLmNvbmNhdCh1cmwpLmNvbmNhdCgnJCcpLCAnaScpKSAhPSBudWxsO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1ldG9kaSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBJbml6aWFsaXp6YSBnbGkgZWxlbWVudGkgZGVsIG1lbnVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaW5pemlhbGl6emFJdGVtcyhpdGVtczogTWVudUl0ZW1bXSkge1xuXG4gICAgaWYgKGl0ZW1zPy5sZW5ndGgpIHtcblxuICAgICAgLy8gSW1wb3N0YXppb25pIGRpIGRlZmF1bHQgcGVyIGdsaSBlbGVtZW50aVxuICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICBpZiAoaXRlbS5pZCA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIGl0ZW0uaWQgPSB1dWlkdjQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLnNob3cgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICBpdGVtLnNob3cgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29sbGFwc2libGUgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICBpdGVtLmNvbGxhcHNpYmxlID0gdGhpcy5jb2xsYXBzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbGxhcHNpYmxlID09IGZhbHNlKSB7XG5cbiAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29sbGFwc2VkID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgLy8gaXRlbS5jb2xsYXBzZWQgPSAodGhpcy5jb2xsYXBzZWQgPT0gdW5kZWZpbmVkKSA/IChpdGVtLmNvbGxhcHNpYmxlID09IHRydWUpIDogdGhpcy5jb2xsYXBzaWJsZTtcbiAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9ICh0aGlzLmNvbGxhcHNlZCA9PSB1bmRlZmluZWQpID8gKGl0ZW0uY29sbGFwc2libGUgPT0gdHJ1ZSkgOiB0aGlzLmNvbGxhcHNlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2V0UGFyZW50KGl0ZW1zLCB0aGlzLnBhcmVudCk7XG4gICAgICB0aGlzLmltcG9zdGFVcmxFZmZldHRpdmkoaXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTb3ZyYXNjcml2ZSBsYSBwcm9wcmlldGEgbGluayBkZWdsaSBlbGVtZW50aSBkZWwgbWVudVxuICAgKiBzZSBsYSBwcm9wcmlldGEgbGlua1JlZ2V4IG1hdGNoYSBjb24gbCd1cmwgY29ycmVudGUuXG4gICAqL1xuICBwcml2YXRlIGltcG9zdGFVcmxFZmZldHRpdmkoaXRlbXM6IE1lbnVJdGVtW10pIHtcblxuICAgIGlmIChpdGVtcz8ubGVuZ3RoKSB7XG5cbiAgICAgIGl0ZW1zLmZvckVhY2godGhpcy5pbXBvc3RhVXJsRWZmZXR0aXZvKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU292cmFzY3JpdmUgbGEgcHJvcHJpZXRhIGxpbmsgZGVsbCdlbGVtZW50byBkZWwgbWVudVxuICAgKiBzZSBsYSBwcm9wcmlldGEgbGlua1JlZ2V4IG1hdGNoYSBjb24gbCd1cmwgY29ycmVudGUuXG4gICAqL1xuICBwcml2YXRlIGltcG9zdGFVcmxFZmZldHRpdm8gPSAoaXRlbTogTWVudUl0ZW0pID0+IHtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlTGlua092ZXJ3cml0aW5nICYmIGl0ZW0gJiYgdGhpcy5pc0N1cnJlbnRVcmwodGhpcy5nZXRJdGVtTGlua1JlZ2V4KGl0ZW0pKSkge1xuXG4gICAgICBpdGVtLmxpbmsgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBFbWV0dGUgbCdlbGVtZW50b1xuICAgKiBhc3NvY2lhdG8gYWxsJ3VybCBjb3JyZW50ZVxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0Q3VycmVudEl0ZW0oKSB7XG5cbiAgICBsZXQgaXRlbTogTWVudUl0ZW0gPSB0aGlzLmZpbmRDdXJyZW50SXRlbSh0aGlzLml0ZW1zKTtcblxuICAgIGlmIChpdGVtICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmltcG9zdGFVcmxFZmZldHRpdm8oaXRlbSk7XG5cbiAgICAgIHRoaXMuZW1pdERlYnVnKCdFbWlzc2lvbmUgaXRlbSBtZW51IHVybCBjb3JyZW50ZTonKTtcbiAgICAgIHRoaXMuZW1pdERlYnVnKGl0ZW0pO1xuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtLmVtaXQoaXRlbSk7XG5cbiAgICAgIC8vIHRvZG8gPz8/XG4gICAgICAvLyBpZiAodGhpcy5jb2xsYXBzZU90aGVyKSB7XG4gICAgICAvL1xuICAgICAgLy8gICB0aGlzLmNvbGxhcHNlT3RoZXIoaXRlbSk7XG4gICAgICAvLyB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJpY2VyY2EgbCdlbGVtZW50byBkaSBtZW51IGluZXJlbnRlXG4gICAqIGwndXJsIGNvcnJlbnRlXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtc1xuICAgKi9cbiAgcHJpdmF0ZSBmaW5kQ3VycmVudEl0ZW0oaXRlbXM6IE1lbnVJdGVtW10pOiBNZW51SXRlbSB7XG5cbiAgICBsZXQgcmVzdWx0SXRlbTogTWVudUl0ZW0gPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaXRlbXM/Lmxlbmd0aCkge1xuXG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgICAgIGlmIChyZXN1bHRJdGVtID09IHVuZGVmaW5lZCAmJiBpdGVtICE9IHVuZGVmaW5lZCAmJiB0aGlzLmlzQ3VycmVudFBhZ2VJdGVtKGl0ZW0pKSB7XG5cbiAgICAgICAgICByZXN1bHRJdGVtID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdEl0ZW07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSBpdGVtc1xuICAgKi9cbiAgcHJpdmF0ZSBmaW5kSXRlbShpZDogc3RyaW5nLCBpdGVtczogTWVudUl0ZW1bXSkge1xuXG4gICAgbGV0IHJlc3VsdEl0ZW06IE1lbnVJdGVtID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGl0ZW1zPy5sZW5ndGgpIHtcblxuICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICBpZiAocmVzdWx0SXRlbSA9PSB1bmRlZmluZWQgJiYgaXRlbSAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHJlc3VsdEl0ZW0gPSBpdGVtLmlkID09IGlkID8gaXRlbSA6IHRoaXMuZmluZEl0ZW0oaWQsIGl0ZW0uc3ViSXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0SXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIHByaXZhdGUgZXNwYW5kaVBlcmNvcnNvKGlkOiBzdHJpbmcpIHtcblxuICAgIGlmICh0aGlzLml0ZW1zKSB7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbTogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICBsZXQgaW5uZXJJdGVtOiBNZW51SXRlbSA9IHRoaXMuZmluZEl0ZW0oaWQsIGl0ZW0uc3ViSXRlbXMpO1xuXG4gICAgICAgIGlmICgoaXRlbT8uaWQgPT0gaWQpIHx8IGlubmVySXRlbSAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMuZXNwYW5kaUl0ZW0oaXRlbSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5jb2xsYXBzZU90aGVyKSB7XG5cbiAgICAgICAgICAgIHRoaXMuZG9Db2xsYXBzZU90aGVyKGl0ZW0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbm5lckl0ZW0pIHtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vc3RyYUl0ZW0uZW1pdChpZCksIENPTExBUFNJTkdfRFVSQVRJT04pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlc3BhbmRpTWVudSA9ICgpID0+IHRoaXMuc2V0Q29sbGFwc2VkTWVudSgnc2hvdycpO1xuICBwcml2YXRlIGNvbGxhc3NhTWVudSA9ICgpID0+IHRoaXMuc2V0Q29sbGFwc2VkTWVudSgnaGlkZScpO1xuXG4gIHByaXZhdGUgc2V0Q29sbGFwc2VkTWVudShtb2RlOiBDb2xsYXBzZU1vZGUpIHtcblxuICAgIGlmICh0aGlzLml0ZW1zKSB7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuc2V0Q29sbGFwc2VkKGl0ZW0sIG1vZGUpKTtcbiAgICB9XG4gIH1cblxuICBlc3BhbmRpSXRlbSA9IChpdGVtOiBNZW51SXRlbSkgPT4gdGhpcy5zZXRDb2xsYXBzZWQoaXRlbSwgJ3Nob3cnKTtcbiAgY29sbGFzc2FJdGVtID0gKGl0ZW06IE1lbnVJdGVtKSA9PiB0aGlzLnNldENvbGxhcHNlZChpdGVtLCAnaGlkZScpO1xuICB0b2dnbGVJdGVtID0gKGl0ZW06IE1lbnVJdGVtKSA9PiB0aGlzLnNldENvbGxhcHNlZChpdGVtLCAndG9nZ2xlJyk7XG5cbiAgc2V0Q29sbGFwc2VkKGl0ZW06IE1lbnVJdGVtLCBtb2RlOiBDb2xsYXBzZU1vZGUpIHtcblxuICAgIGlmIChpdGVtICYmIGl0ZW0uY29sbGFwc2libGUpIHtcblxuICAgICAgc3dpdGNoIChtb2RlKSB7XG5cbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgaXRlbS5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgIGl0ZW0uY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAndG9nZ2xlJzpcbiAgICAgICAgICBpdGVtLmNvbGxhcHNlZCA9ICFpdGVtLmNvbGxhcHNlZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmVudChpdGVtczogTWVudUl0ZW1bXSwgcGFyZW50OiBNZW51SXRlbSkge1xuXG4gICAgaWYgKGl0ZW1zPy5sZW5ndGggJiYgcGFyZW50KSB7XG5cbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IE1lbnVJdGVtKSA9PiB7XG5cbiAgICAgICAgaWYgKGl0ZW0gIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXMudG9MaWdodEl0ZW0ocGFyZW50KTtcbiAgICAgICAgICB0aGlzLnNldFBhcmVudChpdGVtLnN1Ykl0ZW1zLCBpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b0xpZ2h0SXRlbShlOiBNZW51SXRlbSk6IE1lbnVJdGVtIHtcblxuICAgIHJldHVybiBlICE9IHVuZGVmaW5lZFxuICAgICAgPyB7XG4gICAgICAgIGlkOiBlLmlkLFxuICAgICAgICBsYWJlbDogZS5sYWJlbCxcbiAgICAgICAgbGluazogZS5saW5rLFxuICAgICAgICBwYXJlbnQ6IHRoaXMudG9MaWdodEl0ZW0oZS5wYXJlbnQpXG4gICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGl0ZW1PbkNsaWNrKGl0ZW06IE1lbnVJdGVtKSB7XG5cbiAgICBpZiAoaXRlbSkge1xuXG4gICAgICBpZiAoaXRlbS5jYWxsYmFjayAmJiBpc0Z1bmN0aW9uKGl0ZW0uY2FsbGJhY2spKSB7XG5cbiAgICAgICAgaXRlbS5jYWxsYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5jb2xsYXBzaWJsZSkge1xuXG4gICAgICAgIGl0ZW0uY29sbGFwc2VkID0gIWl0ZW0uY29sbGFwc2VkO1xuXG4gICAgICAgIGlmIChpdGVtLmNvbGxhcHNlZCA9PT0gZmFsc2UgJiYgdGhpcy5jb2xsYXBzZU90aGVyID09PSB0cnVlKSB7XG5cbiAgICAgICAgICB0aGlzLmRvQ29sbGFwc2VPdGhlcihpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogRWZmZXR0byBmaXNhcm1vbmljYVxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBkb0NvbGxhcHNlT3RoZXIoaXRlbTogTWVudUl0ZW0pIHtcblxuICAgIGlmIChpdGVtKSB7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRtOiBNZW51SXRlbSkgPT4ge1xuXG4gICAgICAgIGlmIChpdG0gJiYgaXRtLmlkICE9IGl0ZW0uaWQpIHtcblxuICAgICAgICAgIGl0bS5jb2xsYXBzZWQgPSB0cnVlO1xuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY3VycmVudEl0ZW1cbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIGN1cnJlbnRJdGVtSGFuZGxlcihjdXJyZW50SXRlbTogTWVudUl0ZW0sIGl0ZW06IE1lbnVJdGVtKSB7XG5cbiAgICBpZiAoY3VycmVudEl0ZW0pIHtcblxuICAgICAgdGhpcy5jdXJyZW50SXRlbS5lbWl0KGN1cnJlbnRJdGVtKTtcblxuICAgICAgaWYgKHRoaXMuZXhwYW5kQXV0b21hdGljYWxseSA9PT0gdHJ1ZSAmJiAhdGhpcy5pbm5lck1lbnUpIHtcblxuICAgICAgICB0aGlzLmVzcGFuZGlQZXJjb3JzbyhjdXJyZW50SXRlbS5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29sbGFwc2VkT25DaGFuZ2UoKSB7XG5cbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAvLyAgIHRoaXMuZW1pdE1heEhlaWdodCgpXG4gICAgLy8gICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KHRoaXMuY29sbGFwc2VkKVxuICAgIC8vIH0sIDUwKVxuICB9XG5cbiAgaXRlbU9uQXJyb3dEb3duKCkge1xuXG4gICAgbGV0IGZvY3VzYWJsZUl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcztcbiAgICBmb2N1c2FibGVJdGVtcy5maWx0ZXIoKGluZGV4KSA9PiBpbmRleCA+IGZvY3VzYWJsZUl0ZW1zLmluZGV4KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKS5maXJzdCgpPy5mb2N1cygpO1xuICB9XG5cbiAgaXRlbU9uQXJyb3dVcCgpIHtcbiAgICBsZXQgZm9jdXNhYmxlSXRlbXMgPSB0aGlzLmZvY3VzYWJsZUl0ZW1zO1xuICAgIGZvY3VzYWJsZUl0ZW1zLmZpbHRlcigoaW5kZXgpID0+IGluZGV4IDwgZm9jdXNhYmxlSXRlbXMuaW5kZXgoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpLmxhc3QoKT8uZm9jdXMoKTtcbiAgfVxuXG4gIGdldCBmb2N1c2FibGVJdGVtcygpIHtcblxuICAgIHJldHVybiB3aW5kb3dbJyQnXSgnYm9keScpLmZpbmQoRk9DVVNBQkxFX0lURU1TX1NFTEVDVE9SKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXppYWxpenphemlvbmVDb21wbGV0YXRhXCI+XG5cbiAgPHVsICNtZW51XG4gICAgICBpZD1cInt7aWR9fVwiXG4gICAgICBbYXR0ci5yb2xlXT1cIidtZW51J1wiXG4gICAgICBjbGFzcz1cImluYWlsLW1lbnUge3tjbGFzc319XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnaGVpZ2h0LnB4JzogKG1lbnVIZWlnaHQkIHwgYXN5bmMpfVwiXG4gICAgICBbbmdDbGFzc109XCJ7J2xpdmVsbG9fMic6IGlubmVyTWVudSwgJ2NvbGxhcHNlZCc6IGlzQ29sbGFwc2VkKCl9XCI+XG5cbiAgICA8ZGVidWctcHJlICpuZ0lmPVwic2hvd1N0YXRlXCI+W2luYWlsLW1lbnUtaW50cmFuZXRdPGJyPlxuICAgICAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2lkJ1wiIFtwcm9wZXJ0aWVdPVwiaWRcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidpbm5lck1lbnUnXCIgW3Byb3BlcnRpZV09XCJpbm5lck1lbnVcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjb2xsYXBzaWJsZSdcIiBbcHJvcGVydGllXT1cImNvbGxhcHNpYmxlXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gICAgICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInY29sbGFwc2VkJ1wiIFtwcm9wZXJ0aWVdPVwiY29sbGFwc2VkXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gICAgICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInY29sbGFwc2VPdGhlcidcIiBbcHJvcGVydGllXT1cImNvbGxhcHNlT3RoZXJcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgICAgIDwhLS0gICAgICB7e2VsZW1lbnRzIHwganNvbn19LS0+XG4gICAgPC9kZWJ1Zy1wcmU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XG5cbiAgICAgIDxsaSAqbmdJZj1cInNob3dJdGVtKGl0ZW0pIHx8IChnZXRTaG93T2JzZXJ2YWJsZShpdGVtKSB8IGFzeW5jKVwiXG4gICAgICAgICAgW2F0dHIucm9sZV09XCJpdGVtLmxpbmsgPyAnbWVudWl0ZW0nIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IGlzQWN0aXZlKGl0ZW0pfVwiXG4gICAgICAgICAgY2xhc3M9XCJsaXZlbGxvXzFcIj5cbiAgICAgICAgPGEgKm5nSWY9XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgIFthdHRyLnRpdGxlXT1cImdldEl0ZW1UaXRsZShpdGVtKVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SXRlbUFyaWFMYWJlbChpdGVtKVwiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzQ29sbGFwc2VkKCkgPyAnLTEnIDogJzAnXCJcbiAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiZ2V0SXRlbUxpbmsoaXRlbSlcIlxuICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0SXRlbUxhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0l0ZW1Db2xsYXBzaWJsZShpdGVtKSA/ICFpdGVtLmNvbGxhcHNlZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgIChjbGljayk9XCJpdGVtT25DbGljayhpdGVtKVwiXG4gICAgICAgICAgIChrZXl1cC5hcnJvd1VwKT1cIml0ZW1PbkFycm93VXAoKVwiXG4gICAgICAgICAgIChrZXl1cC5hcnJvd0Rvd24pPVwiaXRlbU9uQXJyb3dEb3duKClcIlxuICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiaXRlbU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhICpuZ0lmPVwiIWl0ZW0ubGlua1wiXG4gICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZ2V0SXRlbVRpdGxlKGl0ZW0pXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRJdGVtQXJpYUxhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNDb2xsYXBzZWQoKSA/ICctMScgOiAnMCdcIlxuICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRJdGVtTGFiZWwoaXRlbSlcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzSXRlbUNvbGxhcHNpYmxlKGl0ZW0pID8gIWl0ZW0uY29sbGFwc2VkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1PbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgKGtleXVwLmFycm93VXApPVwiaXRlbU9uQXJyb3dVcCgpXCJcbiAgICAgICAgICAgKGtleXVwLmFycm93RG93bik9XCJpdGVtT25BcnJvd0Rvd24oKVwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJpdGVtT25DbGljayhpdGVtKVwiXG4gICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJpdGVtT25DbGljayhpdGVtKVwiPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxkZWJ1Zy1wcmUgKm5nSWY9XCJzaG93U3RhdGVcIj5bbWVudS1pdGVtXTxicj5cbiAgICAgICAgICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInaWQnXCIgW3Byb3BlcnRpZV09XCJpdGVtLmlkXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gICAgICAgICAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NvbGxhcHNpYmxlJ1wiIFtwcm9wZXJ0aWVdPVwiaXRlbS5jb2xsYXBzaWJsZVwiPjwvc3RhdGUtcHJvcGVydGllPlxuICAgICAgICAgIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjb2xsYXBzZWQnXCIgW3Byb3BlcnRpZV09XCJpdGVtLmNvbGxhcHNlZFwiPjwvc3RhdGUtcHJvcGVydGllPlxuICAgICAgICAgIDwhLS0gICAgICAgICAge3tlbGVtZW50IHwganNvbn19LS0+XG4gICAgICAgIDwvZGVidWctcHJlPlxuICAgICAgICA8aW5haWwtbWVudSAqbmdJZj1cImhhc1N1Ykl0ZW1zKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWQrJy1pdGVtcydcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW0uc3ViSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBbcGFyZW50XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJNZW51XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbZW1pdEN1cnJlbnRdPVwiZW1pdEN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2libGVdPVwiaXRlbS5jb2xsYXBzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VPdGhlcl09XCJjb2xsYXBzZU90aGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxhcHNlXT1cImNvbGxhcHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3RvZ2dsZV09XCJ0b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd109XCJtb3N0cmFJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTdGF0ZV09XCJzaG93U3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cIml0ZW1DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY3VycmVudEl0ZW0pPVwiY3VycmVudEl0ZW1IYW5kbGVyKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgPC9pbmFpbC1tZW51PlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvbmctY29udGFpbmVyPlxuXG5cbiJdfQ==
@@ -1290,7 +1290,7 @@ class MenuComponent extends BasicUxElementComponent {
1290
1290
  * @param item
1291
1291
  */
1292
1292
  this.getShowObservable = (item) => {
1293
- return isObservable(item.show) ? item.show : undefined;
1293
+ return isObservable(item.show) ? item.show : new BehaviorSubject(false);
1294
1294
  };
1295
1295
  /**
1296
1296
  * Restituisce true se l'elemento