igniteui-angular 17.2.3 → 17.2.5

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.
Files changed (37) hide show
  1. package/esm2022/lib/card/card.component.mjs +17 -26
  2. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +2 -3
  3. package/fesm2022/igniteui-angular.mjs +17 -27
  4. package/fesm2022/igniteui-angular.mjs.map +1 -1
  5. package/lib/card/card.component.d.ts +2 -8
  6. package/lib/core/styles/components/input/_input-group-component.scss +4 -0
  7. package/lib/core/styles/components/input/_input-group-theme.scss +17 -4
  8. package/lib/core/styles/components/navbar/_navbar-theme.scss +10 -6
  9. package/lib/core/styles/components/slider/_slider-theme.scss +27 -2
  10. package/lib/core/styles/components/tree/_tree-theme.scss +4 -0
  11. package/package.json +2 -2
  12. package/styles/igniteui-angular-dark.css +1 -1
  13. package/styles/igniteui-angular.css +1 -1
  14. package/styles/igniteui-bootstrap-dark.css +1 -1
  15. package/styles/igniteui-bootstrap-light.css +1 -1
  16. package/styles/igniteui-dark-green.css +1 -1
  17. package/styles/igniteui-fluent-dark-excel.css +1 -1
  18. package/styles/igniteui-fluent-dark-word.css +1 -1
  19. package/styles/igniteui-fluent-dark.css +1 -1
  20. package/styles/igniteui-fluent-light-excel.css +1 -1
  21. package/styles/igniteui-fluent-light-word.css +1 -1
  22. package/styles/igniteui-fluent-light.css +1 -1
  23. package/styles/igniteui-indigo-dark.css +1 -1
  24. package/styles/igniteui-indigo-light.css +1 -1
  25. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  26. package/styles/maps/igniteui-angular.css.map +1 -1
  27. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  28. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  29. package/styles/maps/igniteui-dark-green.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  35. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  36. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  37. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -275,6 +275,19 @@ export class IgxCardComponent {
275
275
  * ```
276
276
  */
277
277
  this.role = 'group';
278
+ /**
279
+ * Sets/gets whether the card is elevated.
280
+ * Default value is `false`.
281
+ *
282
+ * @example
283
+ * ```html
284
+ * <igx-card elevated></igx-card>
285
+ * ```
286
+ * ```typescript
287
+ * let cardElevation = this.card.elevated;
288
+ * ```
289
+ */
290
+ this.elevated = false;
278
291
  /**
279
292
  * Sets the value of the `horizontal` attribute of the card.
280
293
  * Setting this to `true` will make the different card sections align horizontally,
@@ -286,32 +299,9 @@ export class IgxCardComponent {
286
299
  * ```
287
300
  */
288
301
  this.horizontal = false;
289
- /**
290
- * @hidden
291
- * @internal
292
- */
293
- this._elevated = false;
294
- }
295
- /**
296
- * Sets/gets whether the card is elevated.
297
- * Default value is `false`.
298
- *
299
- * @example
300
- * ```html
301
- * <igx-card elevated></igx-card>
302
- * ```
303
- * ```typescript
304
- * let cardElevation = this.card.elevated;
305
- * ```
306
- */
307
- get elevated() {
308
- return this._elevated;
309
- }
310
- set elevated(value) {
311
- this._elevated = (value === '') || value;
312
302
  }
313
303
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
314
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxCardComponent, isStandalone: true, selector: "igx-card", inputs: { id: "id", role: "role", elevated: "elevated", horizontal: ["horizontal", "horizontal", booleanAttribute] }, host: { properties: { "attr.id": "this.id", "class.igx-card": "this.cssClass", "attr.role": "this.role", "class.igx-card--elevated": "this.elevated", "class.igx-card--horizontal": "this.horizontal" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
304
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxCardComponent, isStandalone: true, selector: "igx-card", inputs: { id: "id", role: "role", elevated: ["elevated", "elevated", booleanAttribute], horizontal: ["horizontal", "horizontal", booleanAttribute] }, host: { properties: { "attr.id": "this.id", "class.igx-card": "this.cssClass", "attr.role": "this.role", "class.igx-card--elevated": "this.elevated", "class.igx-card--horizontal": "this.horizontal" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
315
305
  }
316
306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxCardComponent, decorators: [{
317
307
  type: Component,
@@ -330,7 +320,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
330
320
  }, {
331
321
  type: Input
332
322
  }], elevated: [{
333
- type: Input
323
+ type: Input,
324
+ args: [{ transform: booleanAttribute }]
334
325
  }, {
335
326
  type: HostBinding,
336
327
  args: ['class.igx-card--elevated']
@@ -423,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
423
414
  type: HostBinding,
424
415
  args: ['class.igx-card-actions--justify']
425
416
  }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJkL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhcmQvY2FyZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJkL2NhcmQtYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBTUksd0JBQXdCO1FBRWpCLGFBQVEsR0FBRyxpQkFBaUIsQ0FBQztRQUVwQzs7Ozs7Ozs7V0FRRztRQUlJLFVBQUssR0FBRyxNQUFNLENBQUM7UUFFdEI7Ozs7Ozs7O1dBUUc7UUFHSSxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXZCOztXQUVHO1FBR0ksU0FBSSxHQUFHLEtBQUssQ0FBQztLQUN2Qjs4R0F0Q1kscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixV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dCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgT3B0aW9uYWwsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG4vKipcbiAqIElneENhcmRNZWRpYSBpcyBjb250YWluZXIgZm9yIHRoZSBjYXJkIG1lZGlhIHNlY3Rpb24uXG4gKiBVc2UgaXQgdG8gd3JhcCBpbWFnZXMgYW5kIHZpZGVvcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2lneC1jYXJkLW1lZGlhJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRNZWRpYURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZF9fbWVkaWEnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2FyZF9fbWVkaWEnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHdpZHRoYCBhbmQgYG1pbi13aWR0aGAgc3R5bGUgcHJvcGVydHlcbiAgICAgKiBvZiB0aGUgbWVkaWEgY29udGFpbmVyLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBzZXQgdG8gYGF1dG9gLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYXJkLW1lZGlhIHdpZHRoPVwiMzAwcHhcIj48L2lneC1jYXJkLW1lZGlhPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLXdpZHRoJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aWR0aCA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBoZWlnaHRgIHN0eWxlIHByb3BlcnR5IG9mIHRoZSBtZWRpYSBjb250YWluZXIuXG4gICAgICogSWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgc2V0IHRvIGBhdXRvYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZC1tZWRpYSBoZWlnaHQ9XCI1MCVcIj48L2lneC1jYXJkLW1lZGlhPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWlnaHQgPSAnYXV0byc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBtZWRpYSBjb250YWluZXIuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvbGUgPSAnaW1nJztcbn1cblxuLyoqXG4gKiBJZ3hDYXJkSGVhZGVyIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgaGVhZGVyXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWNhcmQtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRIZWFkZXJDb21wb25lbnQge1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhcmQtaGVhZGVyJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWNhcmQtaGVhZGVyJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxheW91dCBzdHlsZSBvZiB0aGUgaGVhZGVyLlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIGhlYWRlciBlbGVtZW50cyh0aHVtYm5haWwgYW5kIHRpdGxlL3N1YnRpdGxlKSBhcmUgYWxpZ25lZCBob3Jpem9udGFsbHkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhcmQtaGVhZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCI+PC9pZ3gtY2FyZC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1oZWFkZXItLXZlcnRpY2FsJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgdmVydGljYWwgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBJZ3hDYXJkVGh1bWJuYWlsIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgdGh1bWJuYWlsIHNlY3Rpb24uXG4gKiBVc2UgaXQgdG8gd3JhcCBhbnl0aGluZyB5b3Ugd2FudCB0byBiZSB1c2VkIGFzIGEgdGh1bWJuYWlsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYXJkVGh1bWJuYWlsXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYXJkVGh1bWJuYWlsRGlyZWN0aXZlIHsgfVxuXG4vKipcbiAqIGlneENhcmRIZWFkZXJUaXRsZSBpcyB1c2VkIHRvIGRlbm90ZSB0aGUgaGVhZGVyIHRpdGxlIGluIGEgY2FyZC5cbiAqIFVzZSBpdCB0byB0YWcgdGV4dCBub2Rlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Q2FyZEhlYWRlclRpdGxlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYXJkSGVhZGVyVGl0bGVEaXJlY3RpdmUge1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhcmQtaGVhZGVyX190aXRsZScpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1jYXJkX19oZWFkZXJfX3RpdGxlJztcbn1cblxuLyoqXG4gKiBpZ3hDYXJkSGVhZGVyU3VidGl0bGUgaXMgdXNlZCB0byBkZW5vdGUgdGhlIGhlYWRlciBzdWJ0aXRsZSBpbiBhIGNhcmQuXG4gKiBVc2UgaXQgdG8gdGFnIHRleHQgbm9kZXMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhcmRIZWFkZXJTdWJ0aXRsZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FyZEhlYWRlclN1YnRpdGxlRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYXJkLWhlYWRlcl9fc3VidGl0bGUnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2FyZC1oZWFkZXJfX3N1YnRpdGxlJztcbn1cbi8qKlxuICogSWd4Q2FyZENvbnRlbnQgaXMgY29udGFpbmVyIGZvciB0aGUgY2FyZCBjb250ZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnaWd4LWNhcmQtY29udGVudCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYXJkQ29udGVudERpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1jb250ZW50JylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWNhcmQtY29udGVudCc7XG59XG5cbi8qKlxuICogSWd4Q2FyZEZvb3RlciBpcyBjb250YWluZXIgZm9yIHRoZSBjYXJkIGZvb3RlclxuICovXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnaWd4LWNhcmQtZm9vdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRGb290ZXJEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBjYXJkIGZvb3Rlci5cbiAgICAgKiBCeSBkZWZhdWx0IHRoZSB2YWx1ZSBpcyBzZXQgdG8gYGZvb3RlcmAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhcmQtZm9vdGVyIHJvbGU9XCJmb290ZXJcIj48L2lneC1jYXJkLWZvb3Rlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICdmb290ZXInO1xufVxuXG4vKipcbiAqIENhcmQgcHJvdmlkZXMgYSB3YXkgdG8gZGlzcGxheSBvcmdhbml6ZWQgY29udGVudCBpbiBhcHBlYWxpbmcgd2F5LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q2FyZE1vZHVsZVxuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtY2FyZC10aGVtZSwgaWd4LWljb24tdGhlbWUsIGlneC1idXR0b24tdGhlbWVcbiAqXG4gKiBAaWd4S2V5d29yZHMgY2FyZCwgYnV0dG9uLCBhdmF0YXIsIGljb25cbiAqXG4gKiBAaWd4R3JvdXAgTGF5b3V0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIENhcmQgc2VydmVzIGFzIGEgY29udGFpbmVyIHRoYXQgYWxsb3dzIGN1c3RvbSBjb250ZW50IHRvIGJlIG9yZ2FuaXplZCBpbiBhbiBhcHBlYWxpbmcgd2F5LiBUaGVyZSBhcmVcbiAqIGZpdmUgc2VjdGlvbnMgaW4gYSBjYXJkIHRoYXQgeW91IGNhbiB1c2UgdG8gb3JnYW5pemUgeW91ciBjb250ZW50LiBUaGVzZSBhcmUgaGVhZGVyLCBtZWRpYSwgY29udGVudCwgYWN0aW9ucywgYW5kIGZvb3Rlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1jYXJkPlxuICogICA8aWd4LWNhcmQtaGVhZGVyPlxuICogICAgIDxoMyBpZ3hDYXJkSGVhZGVyVGl0bGU+e3t0aXRsZX19PC9oMz5cbiAqICAgICA8aDUgaWd4Q2FyZEhlYWRlclN1YnRpdGxlPnt7c3VidGl0bGV9fTwvaDU+XG4gKiAgIDwvaWd4LWNhcmQtaGVhZGVyPlxuICogICA8aWd4LWNhcmQtYWN0aW9ucz5cbiAqICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBpZ3hSaXBwbGU+U2hhcmU8L2J1dHRvbj5cbiAqICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBpZ3hSaXBwbGU+UGxheSBBbGJ1bTwvYnV0dG9uPlxuICogICA8L2lneC1jYXJkLWFjdGlvbnM+XG4gKiA8L2lneC1jYXJkPlxuICogYGBgXG4gKi9cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRDb21wb25lbnQge1xuICAgIHByaXZhdGUgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2VsZXZhdGVkOiBib29sZWFuIHwgJyc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIGNhcmQuXG4gICAgICogSWYgbm90IHNldCwgYGlkYCB3aWxsIGhhdmUgdmFsdWUgYFwiaWd4LWNhcmQtMFwiYDtcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZCBpZD1cIm15LWZpcnN0LWNhcmRcIj48L2lneC1jYXJkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2FyZElkID0gIHRoaXMuY2FyZC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1jYXJkLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgaWd4LWNhcmRgIGNzcyBjbGFzcyB0byB0aGUgY2FyZCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZCcpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1jYXJkJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBjYXJkLlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHZhbHVlIGlzIHNldCB0byBgZ3JvdXBgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYXJkIHJvbGU9XCJncm91cFwiPjwvaWd4LWNhcmQ+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvbGUgPSAnZ3JvdXAnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHdoZXRoZXIgdGhlIGNhcmQgaXMgZWxldmF0ZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYXJkIGVsZXZhdGVkPjwvaWd4LWNhcmQ+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjYXJkRWxldmF0aW9uID0gdGhpcy5jYXJkLmVsZXZhdGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC0tZWxldmF0ZWQnKVxuICAgIHB1YmxpYyBnZXQgZWxldmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGV2YXRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGVsZXZhdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VsZXZhdGVkID0gKHZhbHVlIGFzIGFueSA9PT0gJycpIHx8IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBgaG9yaXpvbnRhbGAgYXR0cmlidXRlIG9mIHRoZSBjYXJkLlxuICAgICAqIFNldHRpbmcgdGhpcyB0byBgdHJ1ZWAgd2lsbCBtYWtlIHRoZSBkaWZmZXJlbnQgY2FyZCBzZWN0aW9ucyBhbGlnbiBob3Jpem9udGFsbHksXG4gICAgICogZXNzZW50aWFsbHkgZmxpcHBpbmcgdGhlIGNhcmQgdG8gdGhlIHNpZGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhcmQgW2hvcml6b250YWxdPVwidHJ1ZVwiPjwvaWd4LWNhcmQ+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC0taG9yaXpvbnRhbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGhvcml6b250YWwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbGV2YXRlZCA9IGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgSWd4Q2FyZEFjdGlvbnNMYXlvdXQgPSAvKkBfX1BVUkVfXyovbWtlbnVtKHtcbiAgICBTVEFSVDogJ3N0YXJ0JyxcbiAgICBKVVNUSUZZOiAnanVzdGlmeSdcbn0pO1xuZXhwb3J0IHR5cGUgSWd4Q2FyZEFjdGlvbnNMYXlvdXQgPSAodHlwZW9mIElneENhcmRBY3Rpb25zTGF5b3V0KVtrZXlvZiB0eXBlb2YgSWd4Q2FyZEFjdGlvbnNMYXlvdXRdO1xuXG4vKipcbiAqIElneENhcmRBY3Rpb25zIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgYWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2lneC1jYXJkLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2FyZC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxheW91dCBzdHlsZSBvZiB0aGUgYWN0aW9ucy5cbiAgICAgKiBZb3UgY2FuIGp1c3RpZnkgdGhlIGVsZW1lbnRzIHNsb3R0ZWQgaW4gdGhlIGlneC1jYXJkLWFjdGlvbiBjb250YWluZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgYXJlIHBvc2l0aW9uZWQgZXF1YWxseSBmcm9tIG9uZSBhbm90aGVyIHRha2luZyB1cCBhbGwgdGhlXG4gICAgICogc3BhY2UgYXZhaWxhYmxlIGFsb25nIHRoZSBjYXJkIGFjdGlvbnMgYXhpcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZC1hY3Rpb25zIGxheW91dD1cImp1c3RpZnlcIj48L2lneC1jYXJkLWFjdGlvbnM+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYXlvdXQ6IElneENhcmRBY3Rpb25zTGF5b3V0IHwgc3RyaW5nID0gSWd4Q2FyZEFjdGlvbnNMYXlvdXQuU1RBUlQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2ZXJ0aWNhbCBhdHRyaWJ1dGUgb2YgdGhlIGFjdGlvbnMuXG4gICAgICogV2hlbiBzZXQgdG8gYHRydWVgIHRoZSBhY3Rpb25zIHdpbGwgYmUgbGF5ZWQgb3V0IHZlcnRpY2FsbHkuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zLS12ZXJ0aWNhbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBBIGdldHRlciB0aGF0IHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGxheW91dCBoYXMgYmVlblxuICAgICAqIHNldCB0byBganVzdGlmeWAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zLS1qdXN0aWZ5JylcbiAgICBwdWJsaWMgZ2V0IGlzSnVzdGlmeUxheW91dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0ID09PSBJZ3hDYXJkQWN0aW9uc0xheW91dC5KVVNUSUZZO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWZXJ0aWNhbFNldCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChJZ3hDYXJkQ29tcG9uZW50KSBwdWJsaWMgY2FyZDogSWd4Q2FyZENvbXBvbmVudCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZlcnRpY2FsU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZlcnRpY2FsU2V0ICYmIHRoaXMuY2FyZC5ob3Jpem9udGFsKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtY2FyZC1oZWFkZXJfX3RodW1ibmFpbFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1hdmF0YXIsIGlneC1jYXJkLW1lZGlhLCBbaWd4Q2FyZFRodW1ibmFpbF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImlneC1jYXJkLWhlYWRlcl9fdGl0bGVzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiXG4gICAgICAgIFtpZ3hDYXJkSGVhZGVyVGl0bGVdLFxuICAgICAgICBbaWd4Q2FyZEhlYWRlclN1YnRpdGxlXSxcbiAgICAgICAgLmlneC1jYXJkLWhlYWRlcl9fdGl0bGUsXG4gICAgICAgIC5pZ3gtY2FyZC1oZWFkZXJfX3RpdGxlLS1zbWFsbCxcbiAgICAgICAgLmlneC1jYXJkLWhlYWRlcl9fc3VidGl0bGVcIj5cbiAgICA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIiwiPGRpdiAjYnV0dG9ucyBjbGFzcz1cImlneC1jYXJkLWFjdGlvbnNfX3N0YXJ0XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lneFN0YXJ0XSwgW2lneEJ1dHRvbl06bm90KFtpZ3hFbmRdKVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxkaXYgY2xhc3M9XCJpZ3gtY2FyZC1hY3Rpb25zX19lbmRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4RW5kXSwgW2lneEljb25CdXR0b25dOm5vdChbaWd4U3RhcnRdKSwgaWd4LWljb246bm90KFtpZ3hTdGFydF0pXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJkL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhcmQvY2FyZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJkL2NhcmQtYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBTUksd0JBQXdCO1FBRWpCLGFBQVEsR0FBRyxpQkFBaUIsQ0FBQztRQUVwQzs7Ozs7Ozs7V0FRRztRQUlJLFVBQUssR0FBRyxNQUFNLENBQUM7UUFFdEI7Ozs7Ozs7O1dBUUc7UUFHSSxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXZCOztXQUVHO1FBR0ksU0FBSSxHQUFHLEtBQUssQ0FBQztLQUN2Qjs4R0F0Q1kscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSVUsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFlN0IsS0FBSztzQkFIWCxXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQzdCLEtBQUs7Z0JBY0MsTUFBTTtzQkFGWixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixLQUFLO2dCQVFDLElBQUk7c0JBRlYsV0FBVzt1QkFBQyxXQUFXOztzQkFDdkIsS0FBSzs7QUFJVjs7R0FFRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNSSx3QkFBd0I7UUFFakIsYUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBRXBDOzs7Ozs7OztXQVFHO1FBR0ksYUFBUSxHQUFHLEtBQUssQ0FBQztLQUMzQjs4R0FqQlksc0JBQXNCO2tHQUF0QixzQkFBc0IsZ0dBZVgsZ0JBQWdCLHFKQ3pGeEMsZ2NBZUE7OzJGRDJEYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksaUJBQWlCLGNBRWYsSUFBSTs4QkFLVCxRQUFRO3NCQURkLFdBQVc7dUJBQUMsdUJBQXVCO2dCQWM3QixRQUFRO3NCQUZkLFdBQVc7dUJBQUMsaUNBQWlDOztzQkFDN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7QUFJMUM7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQUdEOzs7R0FHRztBQUtILE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFLSSx3QkFBd0I7UUFFakIsYUFBUSxHQUFHLHlCQUF5QixDQUFDO0tBQy9DOzhHQUpZLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJVSxRQUFRO3NCQURkLFdBQVc7dUJBQUMsOEJBQThCOztBQUkvQzs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sOEJBQThCO0lBSjNDO1FBS0ksd0JBQXdCO1FBRWpCLGFBQVEsR0FBRywyQkFBMkIsQ0FBQztLQUNqRDs4R0FKWSw4QkFBOEI7a0dBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSVUsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGlDQUFpQzs7QUFHbEQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBTUksd0JBQXdCO1FBRWpCLGFBQVEsR0FBRyxrQkFBa0IsQ0FBQztLQUN4Qzs4R0FKWSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJVSxRQUFRO3NCQURkLFdBQVc7dUJBQUMsd0JBQXdCOztBQUl6Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNSTs7Ozs7Ozs7V0FRRztRQUdJLFNBQUksR0FBRyxRQUFRLENBQUM7S0FDMUI7OEdBYlksc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBYVUsSUFBSTtzQkFGVixXQUFXO3VCQUFDLFdBQVc7O3NCQUN2QixLQUFLOztBQUlWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1JOzs7Ozs7Ozs7OztXQVdHO1FBR0ksT0FBRSxHQUFHLFlBQVksT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUVwQzs7Ozs7V0FLRztRQUVJLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFFN0I7Ozs7Ozs7O1dBUUc7UUFHSSxTQUFJLEdBQUcsT0FBTyxDQUFDO1FBRXRCOzs7Ozs7Ozs7OztXQVdHO1FBR0ksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7Ozs7Ozs7O1dBU0c7UUFHSSxlQUFVLEdBQUcsS0FBSyxDQUFDO0tBQzdCOzhHQXBFWSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixpSEFtRE4sZ0JBQWdCLDRDQWVmLGdCQUFnQix3T0U1UXhDLDZCQUNBOzsyRkZ5TWEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNJLFVBQVUsY0FFUixJQUFJOzhCQWlCVCxFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBVUMsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFjdEIsSUFBSTtzQkFGVixXQUFXO3VCQUFDLFdBQVc7O3NCQUN2QixLQUFLO2dCQWlCQyxRQUFRO3NCQUZkLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7O3NCQUNuQyxXQUFXO3VCQUFDLDBCQUEwQjtnQkFlaEMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQyw0QkFBNEI7O3NCQUN4QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztBQUkxQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUEsTUFBTSxDQUFDO0lBQ3BELEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLFNBQVM7Q0FDckIsQ0FBQyxDQUFDO0FBR0g7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBd0JoQzs7O09BR0c7SUFDSCxJQUNXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBSUQsWUFBeUQsSUFBc0I7UUFBdEIsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFsQy9FOzs7Ozs7Ozs7O1dBVUc7UUFHSSxXQUFNLEdBQWtDLG9CQUFvQixDQUFDLEtBQUssQ0FBQztRQUUxRTs7O1dBR0c7UUFHSSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBV2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXFELENBQUM7SUFFcEY7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxFQUFFO1lBQ3hCLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7YUFDN0I7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDOzhHQXpEUSx1QkFBdUIsa0JBbUNBLGdCQUFnQjtrR0FuQ3ZDLHVCQUF1QixtSEFxQlosZ0JBQWdCLHFPR3BUeEMsd1VBU0E7OzJGSHNSYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBRUksa0JBQWtCLGNBRWhCLElBQUk7OzBCQXFDSCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5Q0FyQnpDLE1BQU07c0JBRlosV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUNwQyxLQUFLO2dCQVNDLFFBQVE7c0JBRmQsV0FBVzt1QkFBQyxrQ0FBa0M7O3NCQUM5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVEzQixlQUFlO3NCQUR6QixXQUFXO3VCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBIb3N0QmluZGluZyxcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbi8qKlxuICogSWd4Q2FyZE1lZGlhIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgbWVkaWEgc2VjdGlvbi5cbiAqIFVzZSBpdCB0byB3cmFwIGltYWdlcyBhbmQgdmlkZW9zLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnaWd4LWNhcmQtbWVkaWEnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FyZE1lZGlhRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYXJkX19tZWRpYScpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1jYXJkX19tZWRpYSc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgbWluLXdpZHRoYCBzdHlsZSBwcm9wZXJ0eVxuICAgICAqIG9mIHRoZSBtZWRpYSBjb250YWluZXIuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIHNldCB0byBgYXV0b2AuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhcmQtbWVkaWEgd2lkdGg9XCIzMDBweFwiPjwvaWd4LWNhcmQtbWVkaWE+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aCcpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpZHRoID0gJ2F1dG8nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGhlaWdodGAgc3R5bGUgcHJvcGVydHkgb2YgdGhlIG1lZGlhIGNvbnRhaW5lci5cbiAgICAgKiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBzZXQgdG8gYGF1dG9gLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYXJkLW1lZGlhIGhlaWdodD1cIjUwJVwiPjwvaWd4LWNhcmQtbWVkaWE+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlaWdodCA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIG1lZGlhIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICdpbWcnO1xufVxuXG4vKipcbiAqIElneENhcmRIZWFkZXIgaXMgY29udGFpbmVyIGZvciB0aGUgY2FyZCBoZWFkZXJcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY2FyZC1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FyZEhlYWRlckNvbXBvbmVudCB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1oZWFkZXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2FyZC1oZWFkZXInO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGF5b3V0IHN0eWxlIG9mIHRoZSBoZWFkZXIuXG4gICAgICogQnkgZGVmYXVsdCB0aGUgaGVhZGVyIGVsZW1lbnRzKHRodW1ibmFpbCBhbmQgdGl0bGUvc3VidGl0bGUpIGFyZSBhbGlnbmVkIGhvcml6b250YWxseS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZC1oZWFkZXIgW3ZlcnRpY2FsXT1cInRydWVcIj48L2lneC1jYXJkLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYXJkLWhlYWRlci0tdmVydGljYWwnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyB2ZXJ0aWNhbCA9IGZhbHNlO1xufVxuXG4vKipcbiAqIElneENhcmRUaHVtYm5haWwgaXMgY29udGFpbmVyIGZvciB0aGUgY2FyZCB0aHVtYm5haWwgc2VjdGlvbi5cbiAqIFVzZSBpdCB0byB3cmFwIGFueXRoaW5nIHlvdSB3YW50IHRvIGJlIHVzZWQgYXMgYSB0aHVtYm5haWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhcmRUaHVtYm5haWxdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRUaHVtYm5haWxEaXJlY3RpdmUgeyB9XG5cbi8qKlxuICogaWd4Q2FyZEhlYWRlclRpdGxlIGlzIHVzZWQgdG8gZGVub3RlIHRoZSBoZWFkZXIgdGl0bGUgaW4gYSBjYXJkLlxuICogVXNlIGl0IHRvIHRhZyB0ZXh0IG5vZGVzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYXJkSGVhZGVyVGl0bGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRIZWFkZXJUaXRsZURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1oZWFkZXJfX3RpdGxlJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWNhcmRfX2hlYWRlcl9fdGl0bGUnO1xufVxuXG4vKipcbiAqIGlneENhcmRIZWFkZXJTdWJ0aXRsZSBpcyB1c2VkIHRvIGRlbm90ZSB0aGUgaGVhZGVyIHN1YnRpdGxlIGluIGEgY2FyZC5cbiAqIFVzZSBpdCB0byB0YWcgdGV4dCBub2Rlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Q2FyZEhlYWRlclN1YnRpdGxlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYXJkSGVhZGVyU3VidGl0bGVEaXJlY3RpdmUge1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhcmQtaGVhZGVyX19zdWJ0aXRsZScpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1jYXJkLWhlYWRlcl9fc3VidGl0bGUnO1xufVxuLyoqXG4gKiBJZ3hDYXJkQ29udGVudCBpcyBjb250YWluZXIgZm9yIHRoZSBjYXJkIGNvbnRlbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdpZ3gtY2FyZC1jb250ZW50JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRDb250ZW50RGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYXJkLWNvbnRlbnQnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2FyZC1jb250ZW50Jztcbn1cblxuLyoqXG4gKiBJZ3hDYXJkRm9vdGVyIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgZm9vdGVyXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdpZ3gtY2FyZC1mb290ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FyZEZvb3RlckRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIGNhcmQgZm9vdGVyLlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHZhbHVlIGlzIHNldCB0byBgZm9vdGVyYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZC1mb290ZXIgcm9sZT1cImZvb3RlclwiPjwvaWd4LWNhcmQtZm9vdGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2Zvb3Rlcic7XG59XG5cbi8qKlxuICogQ2FyZCBwcm92aWRlcyBhIHdheSB0byBkaXNwbGF5IG9yZ2FuaXplZCBjb250ZW50IGluIGFwcGVhbGluZyB3YXkuXG4gKlxuICogQGlneE1vZHVsZSBJZ3hDYXJkTW9kdWxlXG4gKlxuICogQGlneFRoZW1lIGlneC1jYXJkLXRoZW1lLCBpZ3gtaWNvbi10aGVtZSwgaWd4LWJ1dHRvbi10aGVtZVxuICpcbiAqIEBpZ3hLZXl3b3JkcyBjYXJkLCBidXR0b24sIGF2YXRhciwgaWNvblxuICpcbiAqIEBpZ3hHcm91cCBMYXlvdXRzXG4gKlxuICogQHJlbWFya3NcbiAqIFRoZSBJZ25pdGUgVUkgQ2FyZCBzZXJ2ZXMgYXMgYSBjb250YWluZXIgdGhhdCBhbGxvd3MgY3VzdG9tIGNvbnRlbnQgdG8gYmUgb3JnYW5pemVkIGluIGFuIGFwcGVhbGluZyB3YXkuIFRoZXJlIGFyZVxuICogZml2ZSBzZWN0aW9ucyBpbiBhIGNhcmQgdGhhdCB5b3UgY2FuIHVzZSB0byBvcmdhbml6ZSB5b3VyIGNvbnRlbnQuIFRoZXNlIGFyZSBoZWFkZXIsIG1lZGlhLCBjb250ZW50LCBhY3Rpb25zLCBhbmQgZm9vdGVyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNhcmQ+XG4gKiAgIDxpZ3gtY2FyZC1oZWFkZXI+XG4gKiAgICAgPGgzIGlneENhcmRIZWFkZXJUaXRsZT57e3RpdGxlfX08L2gzPlxuICogICAgIDxoNSBpZ3hDYXJkSGVhZGVyU3VidGl0bGU+e3tzdWJ0aXRsZX19PC9oNT5cbiAqICAgPC9pZ3gtY2FyZC1oZWFkZXI+XG4gKiAgIDxpZ3gtY2FyZC1hY3Rpb25zPlxuICogICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIGlneFJpcHBsZT5TaGFyZTwvYnV0dG9uPlxuICogICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIGlneFJpcHBsZT5QbGF5IEFsYnVtPC9idXR0b24+XG4gKiAgIDwvaWd4LWNhcmQtYWN0aW9ucz5cbiAqIDwvaWd4LWNhcmQ+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FyZENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBjYXJkLlxuICAgICAqIElmIG5vdCBzZXQsIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1jYXJkLTBcImA7XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhcmQgaWQ9XCJteS1maXJzdC1jYXJkXCI+PC9pZ3gtY2FyZD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNhcmRJZCA9ICB0aGlzLmNhcmQuaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtY2FyZC0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGlneC1jYXJkYCBjc3MgY2xhc3MgdG8gdGhlIGNhcmQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhcmQnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2FyZCc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgY2FyZC5cbiAgICAgKiBCeSBkZWZhdWx0IHRoZSB2YWx1ZSBpcyBzZXQgdG8gYGdyb3VwYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZCByb2xlPVwiZ3JvdXBcIj48L2lneC1jYXJkPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2dyb3VwJztcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjYXJkIGlzIGVsZXZhdGVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZCBlbGV2YXRlZD48L2lneC1jYXJkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2FyZEVsZXZhdGlvbiA9IHRoaXMuY2FyZC5lbGV2YXRlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC0tZWxldmF0ZWQnKVxuICAgIHB1YmxpYyBlbGV2YXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGBob3Jpem9udGFsYCBhdHRyaWJ1dGUgb2YgdGhlIGNhcmQuXG4gICAgICogU2V0dGluZyB0aGlzIHRvIGB0cnVlYCB3aWxsIG1ha2UgdGhlIGRpZmZlcmVudCBjYXJkIHNlY3Rpb25zIGFsaWduIGhvcml6b250YWxseSxcbiAgICAgKiBlc3NlbnRpYWxseSBmbGlwcGluZyB0aGUgY2FyZCB0byB0aGUgc2lkZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZCBbaG9yaXpvbnRhbF09XCJ0cnVlXCI+PC9pZ3gtY2FyZD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYXJkLS1ob3Jpem9udGFsJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgaG9yaXpvbnRhbCA9IGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgSWd4Q2FyZEFjdGlvbnNMYXlvdXQgPSAvKkBfX1BVUkVfXyovbWtlbnVtKHtcbiAgICBTVEFSVDogJ3N0YXJ0JyxcbiAgICBKVVNUSUZZOiAnanVzdGlmeSdcbn0pO1xuZXhwb3J0IHR5cGUgSWd4Q2FyZEFjdGlvbnNMYXlvdXQgPSAodHlwZW9mIElneENhcmRBY3Rpb25zTGF5b3V0KVtrZXlvZiB0eXBlb2YgSWd4Q2FyZEFjdGlvbnNMYXlvdXRdO1xuXG4vKipcbiAqIElneENhcmRBY3Rpb25zIGlzIGNvbnRhaW5lciBmb3IgdGhlIGNhcmQgYWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2lneC1jYXJkLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2FyZC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhcmRBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxheW91dCBzdHlsZSBvZiB0aGUgYWN0aW9ucy5cbiAgICAgKiBZb3UgY2FuIGp1c3RpZnkgdGhlIGVsZW1lbnRzIHNsb3R0ZWQgaW4gdGhlIGlneC1jYXJkLWFjdGlvbiBjb250YWluZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgYXJlIHBvc2l0aW9uZWQgZXF1YWxseSBmcm9tIG9uZSBhbm90aGVyIHRha2luZyB1cCBhbGwgdGhlXG4gICAgICogc3BhY2UgYXZhaWxhYmxlIGFsb25nIHRoZSBjYXJkIGFjdGlvbnMgYXhpcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FyZC1hY3Rpb25zIGxheW91dD1cImp1c3RpZnlcIj48L2lneC1jYXJkLWFjdGlvbnM+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYXlvdXQ6IElneENhcmRBY3Rpb25zTGF5b3V0IHwgc3RyaW5nID0gSWd4Q2FyZEFjdGlvbnNMYXlvdXQuU1RBUlQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2ZXJ0aWNhbCBhdHRyaWJ1dGUgb2YgdGhlIGFjdGlvbnMuXG4gICAgICogV2hlbiBzZXQgdG8gYHRydWVgIHRoZSBhY3Rpb25zIHdpbGwgYmUgbGF5ZWQgb3V0IHZlcnRpY2FsbHkuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zLS12ZXJ0aWNhbCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBBIGdldHRlciB0aGF0IHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGxheW91dCBoYXMgYmVlblxuICAgICAqIHNldCB0byBganVzdGlmeWAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FyZC1hY3Rpb25zLS1qdXN0aWZ5JylcbiAgICBwdWJsaWMgZ2V0IGlzSnVzdGlmeUxheW91dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0ID09PSBJZ3hDYXJkQWN0aW9uc0xheW91dC5KVVNUSUZZO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWZXJ0aWNhbFNldCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChJZ3hDYXJkQ29tcG9uZW50KSBwdWJsaWMgY2FyZDogSWd4Q2FyZENvbXBvbmVudCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZlcnRpY2FsU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZlcnRpY2FsU2V0ICYmIHRoaXMuY2FyZC5ob3Jpem9udGFsKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtY2FyZC1oZWFkZXJfX3RodW1ibmFpbFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1hdmF0YXIsIGlneC1jYXJkLW1lZGlhLCBbaWd4Q2FyZFRodW1ibmFpbF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImlneC1jYXJkLWhlYWRlcl9fdGl0bGVzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiXG4gICAgICAgIFtpZ3hDYXJkSGVhZGVyVGl0bGVdLFxuICAgICAgICBbaWd4Q2FyZEhlYWRlclN1YnRpdGxlXSxcbiAgICAgICAgLmlneC1jYXJkLWhlYWRlcl9fdGl0bGUsXG4gICAgICAgIC5pZ3gtY2FyZC1oZWFkZXJfX3RpdGxlLS1zbWFsbCxcbiAgICAgICAgLmlneC1jYXJkLWhlYWRlcl9fc3VidGl0bGVcIj5cbiAgICA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIiwiPGRpdiAjYnV0dG9ucyBjbGFzcz1cImlneC1jYXJkLWFjdGlvbnNfX3N0YXJ0XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lneFN0YXJ0XSwgW2lneEJ1dHRvbl06bm90KFtpZ3hFbmRdKVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxkaXYgY2xhc3M9XCJpZ3gtY2FyZC1hY3Rpb25zX19lbmRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4RW5kXSwgW2lneEljb25CdXR0b25dOm5vdChbaWd4U3RhcnRdKSwgaWd4LWljb246bm90KFtpZ3hTdGFydF0pXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -94,7 +94,7 @@ export class IgxNavigationDrawerComponent {
94
94
  * @hidden
95
95
  */
96
96
  get flexWidth() {
97
- if (!this.pin) {
97
+ if (!this.pin || (!this.isOpen && !this.miniTemplate)) {
98
98
  return '0px';
99
99
  }
100
100
  if (this.isOpen) {
@@ -103,7 +103,6 @@ export class IgxNavigationDrawerComponent {
103
103
  if (this.miniTemplate && this.miniWidth) {
104
104
  return this.miniWidth;
105
105
  }
106
- return '0px';
107
106
  }
108
107
  /** @hidden */
109
108
  get isPinnedRight() {
@@ -791,4 +790,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
791
790
  type: HostBinding,
792
791
  args: ['style.order']
793
792
  }] } });
794
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL25hdmlnYXRpb24tZHJhd2VyL25hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9uYXZpZ2F0aW9uLWRyYXdlci9uYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUVULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHbkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBY0gsTUFBTSxPQUFPLDRCQUE0QjtJQTRMckM7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILElBQ1csTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBSztR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LE1BQU07c0JBQXRCLE1BQU07Z0JBUVUsT0FBTztzQkFBdkIsTUFBTTtnQkFRVSxNQUFNO3NCQUF0QixNQUFNO2dCQU1HLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7Z0JBR3RDLE9BQU87c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDWSxRQUFRO3NCQUF2RCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1EsV0FBVztzQkFBeEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXdCekIsTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkF5QzNCLFlBQVk7c0JBRHRCLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLEVBQUU7Z0JBWWpGLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsaUJBQWlCO2dCQWlCbkIsYUFBYTtzQkFEdkIsV0FBVzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlLCBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBIYW1tZXJHZXN0dXJlc01hbmFnZXIgfSBmcm9tICcuLi9jb3JlL3RvdWNoJztcbmltcG9ydCB7IElneE5hdkRyYXdlck1pbmlUZW1wbGF0ZURpcmVjdGl2ZSwgSWd4TmF2RHJhd2VyVGVtcGxhdGVEaXJlY3RpdmUsIElneE5hdkRyYXdlckl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL25hdmlnYXRpb24tZHJhd2VyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEhhbW1lcklucHV0IH0gZnJvbSAnLi4vY29yZS90b3VjaC1hbm5vdGF0aW9ucyc7XG5cbmxldCBORVhUX0lEID0gMDtcbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgTmF2aWdhdGlvbiBEcmF3ZXIqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvbmF2ZHJhd2VyKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgTmF2aWdhdGlvbiBEcmF3ZXIgaXMgYSBjb2xsYXBzaWJsZSBzaWRlIG5hdmlnYXRpb24gY29udGFpbmVyIGNvbW1vbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgTmF2YmFyLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LW5hdi1kcmF3ZXIgaWQ9XCJuYXZpZ2F0aW9uXCIgW2lzT3Blbl09XCJ0cnVlXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSBpZ3hEcmF3ZXI+XG4gKiAgICAgPG5hdj5cbiAqICAgICAgIDxzcGFuIGlneERyYXdlckl0ZW0gW2lzSGVhZGVyXT1cInRydWVcIj5FbWFpbDwvc3Bhbj5cbiAqICAgICAgIDxzcGFuIGlneERyYXdlckl0ZW0gaWd4UmlwcGxlPkluYm94PC9zcGFuPlxuICogICAgICAgPHNwYW4gaWd4RHJhd2VySXRlbSBpZ3hSaXBwbGU+RGVsZXRlZDwvc3Bhbj5cbiAqICAgICAgIDxzcGFuIGlneERyYXdlckl0ZW0gaWd4UmlwcGxlPlNlbnQ8L3NwYW4+XG4gKiAgICAgPC9uYXY+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L2lneC1uYXYtZHJhd2VyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHByb3ZpZGVyczogW0hhbW1lckdlc3R1cmVzTWFuYWdlcl0sXG4gICAgc2VsZWN0b3I6ICdpZ3gtbmF2LWRyYXdlcicsXG4gICAgdGVtcGxhdGVVcmw6ICduYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIGBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneE5hdkRyYXdlckl0ZW1EaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIElneE5hdmlnYXRpb25EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50c1xuICAgIElUb2dnbGVWaWV3LFxuICAgIE9uSW5pdCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMge1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbmF2LWRyYXdlcicpXG4gICAgcHVibGljIGNzc0NsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIElEIG9mIHRoZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlOYXZEcmF3ZXJJZCA9IHRoaXMubmF2ZHJhd2VyLmlkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiAgPGlneC1uYXYtZHJhd2VyIGlkPSduYXZkcmF3ZXInPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKSBwdWJsaWMgaWQgPSBgaWd4LW5hdi1kcmF3ZXItJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBOYXZpZ2F0aW9uIERyYXdlci4gQ2FuIGJlIFwibGVmdFwiKGRlZmF1bHQpIG9yIFwicmlnaHRcIi5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlOYXZEcmF3ZXJQb3NpdGlvbiA9IHRoaXMubmF2ZHJhd2VyLnBvc2l0aW9uO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW3Bvc2l0aW9uXT1cIidsZWZ0J1wiPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBvc2l0aW9uID0gJ2xlZnQnO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgdXNlIG9mIHRvdWNoIGdlc3R1cmVzIHRvIG1hbmlwdWxhdGUgdGhlIGRyYXdlcjpcbiAgICAgKiAtIHN3aXBlL3BhbiBmcm9tIGVkZ2UgdG8gb3Blbiwgc3dpcGUtdG9nZ2xlIGFuZCBwYW4tZHJhZy5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgZ2VzdHVyZXNFbmFibGVkID0gdGhpcy5uYXZkcmF3ZXIuZW5hYmxlR2VzdHVyZXM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbZW5hYmxlR2VzdHVyZXNdPSd0cnVlJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgZW5hYmxlR2VzdHVyZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogTWluaW11bSBkZXZpY2Ugd2lkdGggcmVxdWlyZWQgZm9yIGF1dG9tYXRpYyBwaW4gdG8gYmUgdG9nZ2xlZC5cbiAgICAgKiBEZWZhdWx0IGlzIDEwMjQsIGNhbiBiZSBzZXQgdG8gYSBmYWxzeSB2YWx1ZSB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG5hdkRyYXdlclBpblRocmVzaG9sZCA9IHRoaXMubmF2ZHJhd2VyLnBpblRocmVzaG9sZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1uYXYtZHJhd2VyIFtwaW5UaHJlc2hvbGRdPScxMDI0Jz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwaW5UaHJlc2hvbGQgPSAxMDI0O1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBwaW5uZWQgdGhlIGRyYXdlciBpcyByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgaW5zdGVhZCBvZiBzaXR0aW5nIGFib3ZlIGNvbnRlbnQuXG4gICAgICogTWF5IHJlcXVpcmUgYWRkaXRpb25hbCBsYXlvdXQgc3R5bGluZy5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbmF2RHJhd2VySXNQaW5uZWQgPSB0aGlzLm5hdmRyYXdlci5waW47XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbcGluXT0nZmFsc2UnPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHB1YmxpYyBwaW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdpZHRoIG9mIHRoZSBkcmF3ZXIgaW4gaXRzIG9wZW4gc3RhdGUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG5hdkRyYXdlcldpZHRoID0gdGhpcy5uYXZkcmF3ZXIud2lkdGg7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbd2lkdGhdPVwiJzIyOHB4J1wiPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHdpZHRoO1xuXG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBhbmltYXRpb24sIHdoZW4gdG9nZ2xpbmcgdGhlIGRyYXdlci4gU2V0IHRvIGBmYWxzZWAgYnkgZGVmYXVsdC5cbiAgICAgKiBgYGBgaHRtbFxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCI+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbmF2LWRyYXdlci0tZGlzYWJsZS1hbmltYXRpb24nKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2lkdGggb2YgdGhlIGRyYXdlciBpbiBpdHMgbWluaSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbmF2RHJhd2VyTWluaVdpZHRoID0gdGhpcy5uYXZkcmF3ZXIubWluaVdpZHRoO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW21pbmlXaWR0aF09XCInMzRweCdcIj48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtaW5pV2lkdGg7XG5cbiAgICAvKipcbiAgICAgKiBQaW5uZWQgc3RhdGUgY2hhbmdlIG91dHB1dCBmb3IgdHdvLXdheSBiaW5kaW5nLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbKHBpbildPSdpc1Bpbm5lZCc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHBpbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgYXMgdGhlIE5hdmlnYXRpb24gRHJhd2VyIGlzIGFib3V0IHRvIG9wZW4uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtbmF2LWRyYXdlciAob3BlbmluZyk9J29uT3BlbmluZygpJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb3BlbmluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBOYXZpZ2F0aW9uIERyYXdlciBoYXMgb3BlbmVkLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciAob3BlbmVkKT0nb25PcGVuZWQoKSc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCBhcyB0aGUgTmF2aWdhdGlvbiBEcmF3ZXIgaXMgYWJvdXQgdG8gY2xvc2UuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1uYXYtZHJhd2VyIChjbG9zaW5nKT0nb25DbG9zaW5nKCknPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbG9zaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gdGhlIE5hdmlnYXRpb24gRHJhd2VyIGhhcyBjbG9zZWQuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1uYXYtZHJhd2VyIChjbG9zZWQpPSdvbkNsb3NlZCgpJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4TmF2RHJhd2VyVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogSWd4TmF2RHJhd2VyVGVtcGxhdGVEaXJlY3RpdmUgfSlcbiAgICBwcm90ZWN0ZWQgY29udGVudFRlbXBsYXRlOiBJZ3hOYXZEcmF3ZXJUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2FzaWRlJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfZHJhd2VyOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXknLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9vdmVybGF5OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2R1bW15JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfc3R5bGVEdW1teTogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU3RhdGUgb2YgdGhlIGRyYXdlci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbmF2RHJhd2VySXNPcGVuID0gdGhpcy5uYXZkcmF3ZXIuaXNPcGVuO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW2lzT3Blbl09J2ZhbHNlJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmcuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgWyhpc09wZW4pXT0nbW9kZWwuaXNPcGVuJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLl9pc09wZW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbmF0aXZlRWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRlbXBsYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5taW5pVGVtcGxhdGUgJiYgIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5taW5pVGVtcGxhdGUudGVtcGxhdGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRUZW1wbGF0ZS50ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21pbmlUZW1wbGF0ZTogSWd4TmF2RHJhd2VyTWluaVRlbXBsYXRlRGlyZWN0aXZlO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1pbmlUZW1wbGF0ZSgpOiBJZ3hOYXZEcmF3ZXJNaW5pVGVtcGxhdGVEaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluaVRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneE5hdkRyYXdlck1pbmlUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBJZ3hOYXZEcmF3ZXJNaW5pVGVtcGxhdGVEaXJlY3RpdmUgfSlcbiAgICBwdWJsaWMgc2V0IG1pbmlUZW1wbGF0ZSh2OiBJZ3hOYXZEcmF3ZXJNaW5pVGVtcGxhdGVEaXJlY3RpdmUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZXREcmF3ZXJXaWR0aCh2ID8gdGhpcy5taW5pV2lkdGggOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWluaVRlbXBsYXRlID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4QmFzaXMnKVxuICAgIHB1YmxpYyBnZXQgZmxleFdpZHRoKCkge1xuICAgICAgICBpZiAoIXRoaXMucGluKSB7XG4gICAgICAgICAgICByZXR1cm4gJzBweCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW5pVGVtcGxhdGUgJiYgdGhpcy5taW5pV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbmlXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnMHB4JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUub3JkZXInKVxuICAgIHB1YmxpYyBnZXQgaXNQaW5uZWRSaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGluICYmIHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgPyAnMScgOiAnMCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2VzdHVyZXNBdHRhY2hlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3dpZHRoQ2FjaGU6IHsgd2lkdGg6IG51bWJlcjsgbWluaVdpZHRoOiBudW1iZXI7IHdpbmRvd1dpZHRoOiBudW1iZXIgfSA9IHsgd2lkdGg6IG51bGwsIG1pbmlXaWR0aDogbnVsbCwgd2luZG93V2lkdGg6IG51bGwgfTtcbiAgICBwcml2YXRlIF9yZXNpemVPYnNlcnZlcjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgY3NzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgZHJhd2VyOiAnaWd4LW5hdi1kcmF3ZXJfX2FzaWRlJyxcbiAgICAgICAgbWluaTogJ2lneC1uYXYtZHJhd2VyX19hc2lkZS0tbWluaScsXG4gICAgICAgIG92ZXJsYXk6ICdpZ3gtbmF2LWRyYXdlcl9fb3ZlcmxheScsXG4gICAgICAgIHN0eWxlRHVtbXk6ICdpZ3gtbmF2LWRyYXdlcl9fc3R5bGUtZHVtbXknXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRyYXdlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyYXdlci5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG92ZXJsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3R5bGVEdW1teSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlRHVtbXkubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogUGFuIGFuaW1hdGlvbiBwcm9wZXJ0aWVzICovXG4gICAgcHJpdmF0ZSBfcGFubmluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3BhblN0YXJ0V2lkdGg6IG51bWJlcjtcbiAgICBwcml2YXRlIF9wYW5MaW1pdDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdG8gZGVjaWRlIHdoZXRoZXIgdG8gY2hhbmdlIHdpZHRoIG9yIHRyYW5zbGF0ZSB0aGUgZHJhd2VyIGZyb20gcGFuIGdlc3R1cmUuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNBbmltYXRlV2lkdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpbiB8fCAhIXRoaXMubWluaVRlbXBsYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21heEVkZ2Vab25lID0gNTA7XG4gICAgLyoqXG4gICAgICogVXNlZCBmb3IgdG91Y2ggZ2VzdHVyZXMgKHN3aXBlIGFuZCBwYW4pLlxuICAgICAqIERlZmF1bHRzIHRvIDUwIChpbiBweCkgYW5kIGlzIGV4dGVuZGVkIHRvIGF0IGxlYXN0IDExMCUgb2YgdGhlIG1pbmkgdGVtcGxhdGUgd2lkdGggaWYgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbWF4RWRnZVpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhFZGdlWm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBEcmF3ZXIgd2lkdGggZm9yIHNwZWNpZmljIHN0YXRlLlxuICAgICAqIFdpbGwgYXR0ZW1wdCB0byBldmFsdWF0ZSByZXF1ZXN0ZWQgc3RhdGUgYW5kIGNhY2hlLlxuICAgICAqXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBleHBlY3RlZFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFeHBlY3RlZFdpZHRoKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIERyYXdlciBtaW5pIHdpZHRoIGZvciBzcGVjaWZpYyBzdGF0ZS5cbiAgICAgKiBXaWxsIGF0dGVtcHQgdG8gZXZhbHVhdGUgcmVxdWVzdGVkIHN0YXRlIGFuZCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGV4cGVjdGVkTWluaVdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFeHBlY3RlZFdpZHRoKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvdWNoTWFuYWdlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RvdWNoTWFuYWdlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBvc2VzIG9wdGlvbmFsIG5hdmlnYXRpb24gc2VydmljZVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3N0YXRlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgX3RvdWNoTWFuYWdlcjogSGFtbWVyR2VzdHVyZXNNYW5hZ2VyLFxuICAgICAgICBwcml2YXRlIHBsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gRE9NIGFuZCBASW5wdXQoKS1zIGluaXRpYWxpemVkXG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUuYWRkKHRoaXMuaWQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZXREcmF3ZXJXaWR0aCh0aGlzLndpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAvLyB3YWl0IGZvciB0ZW1wbGF0ZSBhbmQgbmctY29udGVudCB0byBiZSByZWFkeVxuICAgICAgICB0aGlzLnVwZGF0ZUVkZ2Vab25lKCk7XG4gICAgICAgIHRoaXMuY2hlY2tQaW5UaHJlc2hvbGQoKTtcblxuICAgICAgICB0aGlzLmVuc3VyZUV2ZW50cygpO1xuXG4gICAgICAgIC8vIFRPRE86IGFwcGx5IHBsYXRmb3JtLXNhZmUgUnVsZXIgZnJvbSBodHRwOi8vcGxua3IuY28vZWRpdC84MW5XRHlyZVlNemt1bmloZlJnWD9wPXByZXZpZXdcbiAgICAgICAgLy8gKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzY1MTUpLCBibG9ja2VkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzY5MDRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl90b3VjaE1hbmFnZXIuZGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlLnJlbW92ZSh0aGlzLmlkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgICAgICAvLyBzaW1wbGUgc2V0dGluZ3MgY2FuIGNvbWUgZnJvbSBhdHRyaWJ1dGUgc2V0IChyYXRoZXIgdGhhbiBiaW5kaW5nKSwgbWFrZSBzdXJlIGJvb2xlYW4gcHJvcHMgYXJlIGNvbnZlcnRlZFxuICAgICAgICBpZiAoY2hhbmdlcy5lbmFibGVHZXN0dXJlcyAmJiBjaGFuZ2VzLmVuYWJsZUdlc3R1cmVzLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUdlc3R1cmVzID0gISEodGhpcy5lbmFibGVHZXN0dXJlcyAmJiB0aGlzLmVuYWJsZUdlc3R1cmVzLnRvU3RyaW5nKCkgPT09ICd0cnVlJyk7XG4gICAgICAgICAgICB0aGlzLmVuc3VyZUV2ZW50cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLnBpbiAmJiBjaGFuZ2VzLnBpbi5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5waW4gPSAhISh0aGlzLnBpbiAmJiB0aGlzLnBpbi50b1N0cmluZygpID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgaWYgKHRoaXMucGluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG91Y2hNYW5hZ2VyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9nZXN0dXJlc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5zdXJlRXZlbnRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5waW5UaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBpblRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5zdXJlRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1BpblRocmVzaG9sZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMud2lkdGggJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoY2hhbmdlcy53aWR0aC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNldERyYXdlcldpZHRoKHRoaXMuaXNPcGVuID8gdGhpcy53aWR0aCA6ICh0aGlzLm1pbmlUZW1wbGF0ZSA/IHRoaXMubWluaVdpZHRoIDogJycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLm1pbmlXaWR0aCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoY2hhbmdlcy5taW5pV2lkdGguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRWRnZVpvbmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgTmF2aWdhdGlvbiBEcmF3ZXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5uYXZkcmF3ZXIudG9nZ2xlKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gdGhlIE5hdmlnYXRpb24gRHJhd2VyLiBIYXMgbm8gZWZmZWN0IGlmIGFscmVhZHkgb3BlbmVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMubmF2ZHJhd2VyLm9wZW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Bhbm5pbmcpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdCgpO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG5cbiAgICAgICAgLy8gVE9ETzogU3dpdGNoIHRvIGFuaW1hdGUgQVBJIHdoZW4gYXZhaWxhYmxlXG4gICAgICAgIC8vIHZhciBhbmltYXRpb25Dc3MgPSB0aGlzLmFuaW1hdGUuY3NzKCk7XG4gICAgICAgIC8vICAgICBhbmltYXRpb25Dc3NcbiAgICAgICAgLy8gICAgICAgICAuc2V0U3R5bGVzKHsnd2lkdGgnOic1MHB4J30sIHsnd2lkdGgnOic0MDBweCd9KVxuICAgICAgICAvLyAgICAgICAgIC5zdGFydCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgLy8gICAgICAgICAub25Db21wbGV0ZSgoKSA9PiBhbmltYXRpb25Dc3Muc2V0VG9TdHlsZXMoeyd3aWR0aCc6J2F1dG8nfSkuc3RhcnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcblxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgdGhpcy50b2dnbGVPcGVuZWRFdmVudCwgZmFsc2UpO1xuICAgICAgICB0aGlzLnNldERyYXdlcldpZHRoKHRoaXMud2lkdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBOYXZpZ2F0aW9uIERyYXdlci4gSGFzIG5vIGVmZmVjdCBpZiBhbHJlYWR5IGNsb3NlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLm5hdmRyYXdlci5jbG9zZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Bhbm5pbmcpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoKTtcblxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldERyYXdlcldpZHRoKHRoaXMubWluaVRlbXBsYXRlID8gdGhpcy5taW5pV2lkdGggOiAnJyk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLnRvZ2dsZUNsb3NlZEV2ZW50LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRfbWF4RWRnZVpvbmUodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9tYXhFZGdlWm9uZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgRHJhd2VyIHdpZHRoIGZvciBzcGVjaWZpYyBzdGF0ZS4gV2lsbCBhdHRlbXB0IHRvIGV2YWx1YXRlIHJlcXVlc3RlZCBzdGF0ZSBhbmQgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIFttaW5pXSAtIFJlcXVlc3QgbWluaSB3aWR0aCBpbnN0ZWFkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEV4cGVjdGVkV2lkdGgobWluaT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBpZiAobWluaSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1pbmlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubWluaVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodGhpcy5taW5pV2lkdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXRoaXMuaXNPcGVuKSB7IC8vIFRoaXMgV09OJ1Qgd29yayBkdWUgdG8gdHJhbnNpdGlvbiB0aW1pbmdzLi4uXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblsxXS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl93aWR0aENhY2hlLm1pbmlXaWR0aCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBjbGFzcyBmb3Igd2lkdGggY2FsYy4gVE9ETz9cbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2UgY2xhc3MgZm9yIHdpZHRoIGNhbGMuIFRPRE8/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5zdHlsZUR1bW15LCB0aGlzLmNzcy5kcmF3ZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuc3R5bGVEdW1teSwgdGhpcy5jc3MubWluaSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3dpZHRoQ2FjaGUubWluaVdpZHRoID0gdGhpcy5zdHlsZUR1bW15Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuc3R5bGVEdW1teSwgdGhpcy5jc3MuZHJhd2VyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnN0eWxlRHVtbXksIHRoaXMuY3NzLm1pbmkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGhDYWNoZS5taW5pV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRoaXMud2lkdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fd2lkdGhDYWNoZS53aWR0aCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBjbGFzcyBmb3Igd2lkdGggY2FsYy4gVE9ETz9cbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2UgY2xhc3MgZm9yIHdpZHRoIGNhbGMuIFRPRE8/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5zdHlsZUR1bW15LCB0aGlzLmNzcy5kcmF3ZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl93aWR0aENhY2hlLndpZHRoID0gdGhpcy5zdHlsZUR1bW15Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuc3R5bGVEdW1teSwgdGhpcy5jc3MuZHJhd2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoQ2FjaGUud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFdpbmRvd1dpZHRoKCkge1xuICAgICAgICByZXR1cm4gKHdpbmRvdy5pbm5lcldpZHRoID4gMCkgPyB3aW5kb3cuaW5uZXJXaWR0aCA6IHNjcmVlbi53aWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkcmF3ZXIgd2lkdGguXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXREcmF3ZXJXaWR0aCh3aWR0aDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtVXRpbC5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhd2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmF3ZXIsICd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmF3ZXIsICd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50IERyYXdlciB3aWR0aC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERyYXdlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyYXdlci5vZmZzZXRXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuc3VyZUV2ZW50cygpIHtcbiAgICAgICAgLy8gc2V0IGxpc3RlbmVycyBmb3Igc3dpcGUvcGFuIG9ubHkgaWYgbmVlZGVkLCBidXQganVzdCBvbmNlXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUdlc3R1cmVzICYmICF0aGlzLnBpbiAmJiAhdGhpcy5fZ2VzdHVyZXNBdHRhY2hlZCkge1xuICAgICAgICAgICAgLy8gQnVpbHQtaW4gbWFuYWdlciBoYW5kbGVyKEwyMDg4NykgY2F1c2VzIGVuZGxlc3MgbG9vcCBhbmQgbWF4IHN0YWNrIGV4Y2VwdGlvbi5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzY5OTNcbiAgICAgICAgICAgIC8vIFVzZSBvdXJzIGZvciBub3cgKHVudGlsIGJldGEuMTApOlxuICAgICAgICAgICAgLy8gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnQsIFwic3dpcGVcIiwgdGhpcy5zd2lwZSk7XG4gICAgICAgICAgICB0aGlzLl90b3VjaE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcignZG9jdW1lbnQnLCAnc3dpcGUnLCB0aGlzLnN3aXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2dlc3R1cmVzQXR0YWNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudCwgXCJwYW5zdGFydFwiLCB0aGlzLnBhbnN0YXJ0KTtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50LCBcInBhblwiLCB0aGlzLnBhbik7XG4gICAgICAgICAgICB0aGlzLl90b3VjaE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcignZG9jdW1lbnQnLCAncGFuc3RhcnQnLCB0aGlzLnBhbnN0YXJ0KTtcbiAgICAgICAgICAgIHRoaXMuX3RvdWNoTWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKCdkb2N1bWVudCcsICdwYW5tb3ZlJywgdGhpcy5wYW4pO1xuICAgICAgICAgICAgdGhpcy5fdG91Y2hNYW5hZ2VyLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIoJ2RvY3VtZW50JywgJ3BhbmVuZCcsIHRoaXMucGFuRW5kKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZU9ic2VydmVyICYmIHRoaXMucGxhdGZvcm1VdGlsLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShkZWJvdW5jZSgoKSA9PiBpbnRlcnZhbCgxNTApKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUGluVGhyZXNob2xkKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRWRnZVpvbmUoKSB7XG4gICAgICAgIGxldCBtYXhWYWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5taW5pVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIG1heFZhbHVlID0gTWF0aC5tYXgodGhpcy5fbWF4RWRnZVpvbmUsIHRoaXMuZ2V0RXhwZWN0ZWRXaWR0aCh0cnVlKSAqIDEuMSk7XG4gICAgICAgICAgICB0aGlzLnNldF9tYXhFZGdlWm9uZShtYXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUGluVGhyZXNob2xkID0gKGV2dD86IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wbGF0Zm9ybVV0aWwuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHdpbmRvd1dpZHRoO1xuICAgICAgICBpZiAodGhpcy5waW5UaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHdpbmRvd1dpZHRoID0gdGhpcy5nZXRXaW5kb3dXaWR0aCgpO1xuICAgICAgICAgICAgaWYgKGV2dCAmJiB0aGlzLl93aWR0aENhY2hlLndpbmRvd1dpZHRoID09PSB3aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3dpZHRoQ2FjaGUud2luZG93V2lkdGggPSB3aW5kb3dXaWR0aDtcbiAgICAgICAgICAgIGlmICghdGhpcy5waW4gJiYgd2luZG93V2lkdGggPj0gdGhpcy5waW5UaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5waW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5waW4gJiYgd2luZG93V2lkdGggPCB0aGlzLnBpblRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGluID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5waW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzd2lwZSA9IChldnQ6IEhhbW1lcklucHV0KSA9PiB7XG4gICAgICAgIC8vIFRPRE86IENvdWxkIGFsc28gZm9yY2UgaW5wdXQgdHlwZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjcxMDgwNTJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZUdlc3R1cmVzIHx8IGV2dC5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFtbWVySlMgc3dpcGUgaXMgaG9yaXpvbnRhbC1vbmx5IGJ5IGRlZmF1bHQsIGRvbid0IGNoZWNrIGRlbHRhWVxuICAgICAgICBsZXQgZGVsdGFYO1xuICAgICAgICBsZXQgc3RhcnRQb3NpdGlvbjtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIC8vIHdoZW4gb24gdGhlIHJpZ2h0IHVzZSBpbnZlcnNlIG9mIGRlbHRhWFxuICAgICAgICAgICAgZGVsdGFYID0gLWV2dC5kZWx0YVg7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5nZXRXaW5kb3dXaWR0aCgpIC0gKGV2dC5jZW50ZXIueCArIGV2dC5kaXN0YW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWx0YVggPSBldnQuZGVsdGFYO1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGV2dC5jZW50ZXIueCAtIGV2dC5kaXN0YW5jZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBvbmx5IGFjY2VwdCBjbG9zaW5nIHN3aXBlIChpZ25vcmluZyBtaW5FZGdlWm9uZSkgd2hlbiB0aGUgZHJhd2VyIGlzIGV4cGFuZGVkOlxuICAgICAgICBpZiAoKHRoaXMuaXNPcGVuICYmIGRlbHRhWCA8IDApIHx8XG4gICAgICAgICAgICAvLyBwb3NpdGl2ZSBkZWx0YVggZnJvbSB0aGUgZWRnZTpcbiAgICAgICAgICAgIChkZWx0YVggPiAwICYmIHN0YXJ0UG9zaXRpb24gPCB0aGlzLm1heEVkZ2Vab25lKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHBhbnN0YXJ0ID0gKGV2dDogSGFtbWVySW5wdXQpID0+IHsgLy8gVE9ETzogdGVzdCBjb2RlXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVHZXN0dXJlcyB8fCB0aGlzLnBpbiB8fCBldnQucG9pbnRlclR5cGUgIT09ICd0b3VjaCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/IHRoaXMuZ2V0V2luZG93V2lkdGgoKSAtIChldnQuY2VudGVyLnggKyBldnQuZGlzdGFuY2UpXG4gICAgICAgICAgICA6IGV2dC5jZW50ZXIueCAtIGV2dC5kaXN0YW5jZTtcblxuICAgICAgICAvLyBjYWNoZSB3aWR0aCBkdXJpbmcgYW5pbWF0aW9uLCBmbGFnIHRvIGFsbG93IGZ1cnRoZXIgaGFuZGxpbmdcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuIHx8IChzdGFydFBvc2l0aW9uIDwgdGhpcy5tYXhFZGdlWm9uZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Bhbm5pbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcGFuU3RhcnRXaWR0aCA9IHRoaXMuZ2V0RXhwZWN0ZWRXaWR0aCghdGhpcy5pc09wZW4pO1xuICAgICAgICAgICAgdGhpcy5fcGFuTGltaXQgPSB0aGlzLmdldEV4cGVjdGVkV2lkdGgodGhpcy5pc09wZW4pO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMub3ZlcmxheSwgJ3Bhbm5pbmcnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcmF3ZXIsICdwYW5uaW5nJyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYW4gPSAoZXZ0OiBIYW1tZXJJbnB1dCkgPT4ge1xuICAgICAgICAvLyBUT0RPOiBpbnB1dC5kZWx0YVggPSBwcmV2RGVsdGEueCArIChjZW50ZXIueCAtIG9mZnNldC54KTtcbiAgICAgICAgLy8gZ2V0IGFjdHVhbCBkZWx0YSAobm90IHRvdGFsIHNlc3Npb24gb25lKSBmcm9tIGV2ZW50P1xuICAgICAgICAvLyBwYW4gV0lMTCBhbHNvIGZpcmUgYWZ0ZXIgYSBmdWxsIHN3aXBlLCBvbmx5IHJlc2l6ZSBvbiBmbGFnXG4gICAgICAgIGlmICghdGhpcy5fcGFubmluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpZ2h0OiBib29sZWFuID0gdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JztcbiAgICAgICAgLy8gd2hlbiBvbiB0aGUgcmlnaHQgdXNlIGludmVyc2Ugb2YgZGVsdGFYXG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IHJpZ2h0ID8gLWV2dC5kZWx0YVggOiBldnQuZGVsdGFYO1xuICAgICAgICBsZXQgbmV3WDtcbiAgICAgICAgbGV0IHBlcmNlbnQ7XG4gICAgICAgIGNvbnN0IHZpc2libGVXaWR0aCA9IHRoaXMuX3BhblN0YXJ0V2lkdGggKyBkZWx0YVg7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIGRlbHRhWCA8IDApIHtcbiAgICAgICAgICAgIC8vIHdoZW4gdmlzaWJsZVdpZHRoIGhpdHMgbGltaXQgLSBzdG9wIGFuaW1hdGluZ1xuICAgICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSB0aGlzLl9wYW5MaW1pdCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQW5pbWF0ZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcGVyY2VudCA9ICh2aXNpYmxlV2lkdGggLSB0aGlzLl9wYW5MaW1pdCkgLyAodGhpcy5fcGFuU3RhcnRXaWR0aCAtIHRoaXMuX3BhbkxpbWl0KTtcbiAgICAgICAgICAgICAgICBuZXdYID0gdmlzaWJsZVdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gdmlzaWJsZVdpZHRoIC8gdGhpcy5fcGFuU3RhcnRXaWR0aDtcbiAgICAgICAgICAgICAgICBuZXdYID0gZXZ0LmRlbHRhWDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0WFNpemUobmV3WCwgcGVyY2VudC50b1ByZWNpc2lvbigyKSk7XG5cbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc09wZW4gJiYgZGVsdGFYID4gMCkge1xuICAgICAgICAgICAgLy8gd2hlbiB2aXNpYmxlV2lkdGggaGl0cyBsaW1pdCAtIHN0b3AgYW5pbWF0aW5nXG4gICAgICAgICAgICBpZiAodmlzaWJsZVdpZHRoID49IHRoaXMuX3BhbkxpbWl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNBbmltYXRlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gKHZpc2libGVXaWR0aCAtIHRoaXMuX3BhblN0YXJ0V2lkdGgpIC8gKHRoaXMuX3BhbkxpbWl0IC0gdGhpcy5fcGFuU3RhcnRXaWR0aCk7XG4gICAgICAgICAgICAgICAgbmV3WCA9IHZpc2libGVXaWR0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVyY2VudCA9IHZpc2libGVXaWR0aCAvIHRoaXMuX3BhbkxpbWl0O1xuICAgICAgICAgICAgICAgIG5ld1ggPSAodGhpcy5fcGFuTGltaXQgLSB2aXNpYmxlV2lkdGgpICogKHJpZ2h0ID8gMSA6IC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0WFNpemUobmV3WCwgcGVyY2VudC50b1ByZWNpc2lvbigyKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYW5FbmQgPSAoZXZ0OiBIYW1tZXJJbnB1dCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcGFubmluZykge1xuICAgICAgICAgICAgY29uc3QgZGVsdGFYID0gdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/IC1ldnQuZGVsdGFYIDogZXZ0LmRlbHRhWDtcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVXaWR0aDogbnVtYmVyID0gdGhpcy5fcGFuU3RhcnRXaWR0aCArIGRlbHRhWDtcbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW4oKTtcblxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgcGFuIGJyb3VnaHQgdGhlIGRyYXdlciB0byA1MCVcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB2aXNpYmxlV2lkdGggPD0gdGhpcy5fcGFuU3RhcnRXaWR0aCAvIDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzT3BlbiAmJiB2aXNpYmxlV2lkdGggPj0gdGhpcy5fcGFuTGltaXQgLyAyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9wYW5TdGFydFdpZHRoID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlc2V0UGFuKCkge1xuICAgICAgICB0aGlzLl9wYW5uaW5nID0gZmFsc2U7XG4gICAgICAgIC8qIHN0eWxlcyBmYWlsIHRvIGFwcGx5IHdoZW4gc2V0IG9uIHBhcmVudCBkdWUgdG8gZXh0cmEgYXR0cmlidXRlcywgcHJvYiBuZyBidWcgKi9cbiAgICAgICAgLyogc3R5bGVzIGZhaWwgdG8gYXBwbHkgd2hlbiBzZXQgb24gcGFyZW50IGR1ZSB0byBleHRyYSBhdHRyaWJ1dGVzLCBwcm9iIG5nIGJ1ZyAqL1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMub3ZlcmxheSwgJ3Bhbm5pbmcnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRyYXdlciwgJ3Bhbm5pbmcnKTtcbiAgICAgICAgdGhpcy5zZXRYU2l6ZSgwLCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb3Igd2lkdGggaW4gY2FzZSB0aGUgZHJhd2VyIGRvZXNuJ3QgY2hhbmdlIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHggdGhlIG51bWJlciBwaXhlbHMgdG8gdHJhbnNsYXRlIG9uIHRoZSBYIGF4aXMgb3IgdGhlIHdpZHRoIHRvIHNldC4gMCB3aWR0aCB3aWxsIGNsZWFyIHRoZSBzdHlsZSBpbnN0ZWFkLlxuICAgICAqIEBwYXJhbSBvcGFjaXR5IG9wdGlvbmFsIHZhbHVlIHRvIGFwcGx5IHRvIHRoZSBvdmVybGF5XG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRYU2l6ZSh4OiBudW1iZXIsIG9wYWNpdHk/OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gQW5ndWxhciBwb2x5ZmlsbHMgcGF0Y2hlcyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBidXQgc3dpdGNoIHRvIERvbUFkYXB0ZXIgQVBJIChUT0RPKVxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0FuaW1hdGVXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmF3ZXIsICd3aWR0aCcsIHggPyBNYXRoLmFicyh4KSArICdweCcgOiAnJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmF3ZXIsICd0cmFuc2Zvcm0nLCB4ID8gJ3RyYW5zbGF0ZTNkKCcgKyB4ICsgJ3B4LDAsMCknIDogJycpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmF3ZXIsICctd2Via2l0LXRyYW5zZm9ybScsIHggPyAndHJhbnNsYXRlM2QoJyArIHggKyAncHgsMCwwKScgOiAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BhY2l0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm92ZXJsYXksICdvcGFjaXR5Jywgb3BhY2l0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlT3BlbmVkRXZlbnQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLnRvZ2dsZU9wZW5lZEV2ZW50LCBmYWxzZSk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB0b2dnbGVDbG9zZWRFdmVudCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMudG9nZ2xlQ2xvc2VkRXZlbnQsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIH07XG59XG4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRJdGVtc1RlbXBsYXRlPlxuICAgIDxkaXYgaWd4RHJhd2VySXRlbSBbaXNIZWFkZXJdPVwidHJ1ZVwiPk5hdmlnYXRpb24gRHJhd2VyPC9kaXY+XG4gICAgPGRpdiBpZ3hEcmF3ZXJJdGVtPiBTdGFydCBieSBhZGRpbmc8L2Rpdj5cbiAgICA8ZGl2IGlneERyYXdlckl0ZW0+IDxjb2RlPiZsdDtuZy10ZW1wbGF0ZSBpZ3hEcmF3ZXImZ3Q7PC9jb2RlPiA8L2Rpdj5cbiAgICA8ZGl2IGlneERyYXdlckl0ZW0+IEFuZCBzb21lIGl0ZW1zIGluc2lkZSA8L2Rpdj5cbiAgICA8ZGl2IGlneERyYXdlckl0ZW0+IFN0eWxlIHdpdGggaWd4RHJhd2VySXRlbSA8L2Rpdj5cbiAgICA8ZGl2IGlneERyYXdlckl0ZW0+IGFuZCBpZ3hSaXBwbGUgZGlyZWN0aXZlczwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBbaGlkZGVuXT1cInBpblwiXG4gICAgY2xhc3M9XCJpZ3gtbmF2LWRyYXdlcl9fb3ZlcmxheVwiXG4gICAgW2NsYXNzLmlneC1uYXYtZHJhd2VyX19vdmVybGF5LS1oaWRkZW5dPVwiIWlzT3BlblwiXG4gICAgW2NsYXNzLmlneC1uYXYtZHJhd2VyLS1kaXNhYmxlLWFuaW1hdGlvbl09XCJkaXNhYmxlQW5pbWF0aW9uXCJcbiAgICAoY2xpY2spPVwiY2xvc2UoKVwiICNvdmVybGF5PlxuPC9kaXY+XG48YXNpZGUgcm9sZT1cIm5hdmlnYXRpb25cIlxuICAgIGNsYXNzPVwiaWd4LW5hdi1kcmF3ZXJfX2FzaWRlXCJcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXJfX2FzaWRlLS1jb2xsYXBzZWRdPVwiIW1pbmlUZW1wbGF0ZSAmJiAhaXNPcGVuXCJcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXJfX2FzaWRlLS1taW5pXT1cIm1pbmlUZW1wbGF0ZSAmJiAhaXNPcGVuXCJcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXJfX2FzaWRlLS1ub3JtYWxdPVwiIW1pbmlUZW1wbGF0ZSB8fCBpc09wZW5cIlxuICAgIFtjbGFzcy5pZ3gtbmF2LWRyYXdlcl9fYXNpZGUtLXBpbm5lZF09XCJwaW5cIlxuICAgIFtjbGFzcy5pZ3gtbmF2LWRyYXdlcl9fYXNpZGUtLXJpZ2h0XT1cInBvc2l0aW9uID09PSAncmlnaHQnXCIgI2FzaWRlXG4gICAgW2NsYXNzLmlneC1uYXYtZHJhd2VyLS1kaXNhYmxlLWFuaW1hdGlvbl09XCJkaXNhYmxlQW5pbWF0aW9uXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGUgfHwgZGVmYXVsdEl0ZW1zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvYXNpZGU+XG48ZGl2IGNsYXNzPVwiaWd4LW5hdi1kcmF3ZXJfX3N0eWxlLWR1bW15XCIgI2R1bW15PjwvZGl2PlxuIl19
793
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL25hdmlnYXRpb24tZHJhd2VyL25hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9uYXZpZ2F0aW9uLWRyYXdlci9uYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUVULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHbkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBY0gsTUFBTSxPQUFPLDRCQUE0QjtJQTRMckM7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILElBQ1csTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBSztR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c0JBQXpCLE1BQU07Z0JBUVUsT0FBTztzQkFBdkIsTUFBTTtnQkFRVSxNQUFNO3NCQUF0QixNQUFNO2dCQVFVLE9BQU87c0JBQXZCLE1BQU07Z0JBUVUsTUFBTTtzQkFBdEIsTUFBTTtnQkFNRyxlQUFlO3NCQUR4QixZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFO2dCQUd0QyxPQUFPO3NCQUFwRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1ksUUFBUTtzQkFBdkQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNRLFdBQVc7c0JBQXhELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF3QnpCLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBeUMzQixZQUFZO3NCQUR0QixZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlDQUFpQyxFQUFFO2dCQVlqRixTQUFTO3NCQURuQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFpQm5CLGFBQWE7c0JBRHZCLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlLFxuICAgIFZpZXdDaGlsZCxcbiAgICBSZW5kZXJlcjIsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgSVRvZ2dsZVZpZXcgfSBmcm9tICcuLi9jb3JlL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgSGFtbWVyR2VzdHVyZXNNYW5hZ2VyIH0gZnJvbSAnLi4vY29yZS90b3VjaCc7XG5pbXBvcnQgeyBJZ3hOYXZEcmF3ZXJNaW5pVGVtcGxhdGVEaXJlY3RpdmUsIElneE5hdkRyYXdlclRlbXBsYXRlRGlyZWN0aXZlLCBJZ3hOYXZEcmF3ZXJJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWRyYXdlci5kaXJlY3RpdmVzJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIYW1tZXJJbnB1dCB9IGZyb20gJy4uL2NvcmUvdG91Y2gtYW5ub3RhdGlvbnMnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIE5hdmlnYXRpb24gRHJhd2VyKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL25hdmRyYXdlcilcbiAqXG4gKiBUaGUgSWduaXRlIFVJIE5hdmlnYXRpb24gRHJhd2VyIGlzIGEgY29sbGFwc2libGUgc2lkZSBuYXZpZ2F0aW9uIGNvbnRhaW5lciBjb21tb25seSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIE5hdmJhci5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1uYXYtZHJhd2VyIGlkPVwibmF2aWdhdGlvblwiIFtpc09wZW5dPVwidHJ1ZVwiPlxuICogICA8bmctdGVtcGxhdGUgaWd4RHJhd2VyPlxuICogICAgIDxuYXY+XG4gKiAgICAgICA8c3BhbiBpZ3hEcmF3ZXJJdGVtIFtpc0hlYWRlcl09XCJ0cnVlXCI+RW1haWw8L3NwYW4+XG4gKiAgICAgICA8c3BhbiBpZ3hEcmF3ZXJJdGVtIGlneFJpcHBsZT5JbmJveDwvc3Bhbj5cbiAqICAgICAgIDxzcGFuIGlneERyYXdlckl0ZW0gaWd4UmlwcGxlPkRlbGV0ZWQ8L3NwYW4+XG4gKiAgICAgICA8c3BhbiBpZ3hEcmF3ZXJJdGVtIGlneFJpcHBsZT5TZW50PC9zcGFuPlxuICogICAgIDwvbmF2PlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC9pZ3gtbmF2LWRyYXdlcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtIYW1tZXJHZXN0dXJlc01hbmFnZXJdLFxuICAgIHNlbGVjdG9yOiAnaWd4LW5hdi1kcmF3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICBgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hOYXZEcmF3ZXJJdGVtRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hOYXZpZ2F0aW9uRHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHNcbiAgICBJVG9nZ2xlVmlldyxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzIHtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LW5hdi1kcmF3ZXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJRCBvZiB0aGUgY29tcG9uZW50XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15TmF2RHJhd2VySWQgPSB0aGlzLm5hdmRyYXdlci5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogIDxpZ3gtbmF2LWRyYXdlciBpZD0nbmF2ZHJhd2VyJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KCkgcHVibGljIGlkID0gYGlneC1uYXYtZHJhd2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgTmF2aWdhdGlvbiBEcmF3ZXIuIENhbiBiZSBcImxlZnRcIihkZWZhdWx0KSBvciBcInJpZ2h0XCIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15TmF2RHJhd2VyUG9zaXRpb24gPSB0aGlzLm5hdmRyYXdlci5wb3NpdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1uYXYtZHJhd2VyIFtwb3NpdGlvbl09XCInbGVmdCdcIj48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwb3NpdGlvbiA9ICdsZWZ0JztcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHVzZSBvZiB0b3VjaCBnZXN0dXJlcyB0byBtYW5pcHVsYXRlIHRoZSBkcmF3ZXI6XG4gICAgICogLSBzd2lwZS9wYW4gZnJvbSBlZGdlIHRvIG9wZW4sIHN3aXBlLXRvZ2dsZSBhbmQgcGFuLWRyYWcuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGdlc3R1cmVzRW5hYmxlZCA9IHRoaXMubmF2ZHJhd2VyLmVuYWJsZUdlc3R1cmVzO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW2VuYWJsZUdlc3R1cmVzXT0ndHJ1ZSc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHVibGljIGVuYWJsZUdlc3R1cmVzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIE1pbmltdW0gZGV2aWNlIHdpZHRoIHJlcXVpcmVkIGZvciBhdXRvbWF0aWMgcGluIHRvIGJlIHRvZ2dsZWQuXG4gICAgICogRGVmYXVsdCBpcyAxMDI0LCBjYW4gYmUgc2V0IHRvIGEgZmFsc3kgdmFsdWUgdG8gZGlzYWJsZSB0aGlzIGJlaGF2aW9yLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBuYXZEcmF3ZXJQaW5UaHJlc2hvbGQgPSB0aGlzLm5hdmRyYXdlci5waW5UaHJlc2hvbGQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciBbcGluVGhyZXNob2xkXT0nMTAyNCc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGluVGhyZXNob2xkID0gMTAyNDtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gcGlubmVkIHRoZSBkcmF3ZXIgaXMgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGluc3RlYWQgb2Ygc2l0dGluZyBhYm92ZSBjb250ZW50LlxuICAgICAqIE1heSByZXF1aXJlIGFkZGl0aW9uYWwgbGF5b3V0IHN0eWxpbmcuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG5hdkRyYXdlcklzUGlubmVkID0gdGhpcy5uYXZkcmF3ZXIucGluO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW3Bpbl09J2ZhbHNlJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgcGluID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaWR0aCBvZiB0aGUgZHJhd2VyIGluIGl0cyBvcGVuIHN0YXRlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBuYXZEcmF3ZXJXaWR0aCA9IHRoaXMubmF2ZHJhd2VyLndpZHRoO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW3dpZHRoXT1cIicyMjhweCdcIj48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDtcblxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgYW5pbWF0aW9uLCB3aGVuIHRvZ2dsaW5nIHRoZSBkcmF3ZXIuIFNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gICAgICogYGBgYGh0bWxcbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgW2Rpc2FibGVBbmltYXRpb25dPVwidHJ1ZVwiPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LW5hdi1kcmF3ZXItLWRpc2FibGUtYW5pbWF0aW9uJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHVibGljIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdpZHRoIG9mIHRoZSBkcmF3ZXIgaW4gaXRzIG1pbmkgc3RhdGUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG5hdkRyYXdlck1pbmlXaWR0aCA9IHRoaXMubmF2ZHJhd2VyLm1pbmlXaWR0aDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1uYXYtZHJhd2VyIFttaW5pV2lkdGhdPVwiJzM0cHgnXCI+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWluaVdpZHRoO1xuXG4gICAgLyoqXG4gICAgICogUGlubmVkIHN0YXRlIGNoYW5nZSBvdXRwdXQgZm9yIHR3by13YXkgYmluZGluZy5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgWyhwaW4pXT0naXNQaW5uZWQnPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBwaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KHRydWUpO1xuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIGFzIHRoZSBOYXZpZ2F0aW9uIERyYXdlciBpcyBhYm91dCB0byBvcGVuLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LW5hdi1kcmF3ZXIgKG9wZW5pbmcpPSdvbk9wZW5pbmcoKSc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgTmF2aWdhdGlvbiBEcmF3ZXIgaGFzIG9wZW5lZC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LW5hdi1kcmF3ZXIgKG9wZW5lZCk9J29uT3BlbmVkKCknPjwvaWd4LW5hdi1kcmF3ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgYXMgdGhlIE5hdmlnYXRpb24gRHJhd2VyIGlzIGFib3V0IHRvIGNsb3NlLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciAoY2xvc2luZyk9J29uQ2xvc2luZygpJz48L2lneC1uYXYtZHJhd2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBOYXZpZ2F0aW9uIERyYXdlciBoYXMgY2xvc2VkLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbmF2LWRyYXdlciAoY2xvc2VkKT0nb25DbG9zZWQoKSc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneE5hdkRyYXdlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IElneE5hdkRyYXdlclRlbXBsYXRlRGlyZWN0aXZlIH0pXG4gICAgcHJvdGVjdGVkIGNvbnRlbnRUZW1wbGF0ZTogSWd4TmF2RHJhd2VyVGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKCdhc2lkZScsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgX2RyYXdlcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdvdmVybGF5JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfb3ZlcmxheTogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdkdW1teScsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgX3N0eWxlRHVtbXk6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHRoZSBkcmF3ZXIuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG5hdkRyYXdlcklzT3BlbiA9IHRoaXMubmF2ZHJhd2VyLmlzT3BlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1uYXYtZHJhd2VyIFtpc09wZW5dPSdmYWxzZSc+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1uYXYtZHJhd2VyIFsoaXNPcGVuKV09J21vZGVsLmlzT3Blbic+PC9pZ3gtbmF2LWRyYXdlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZ2V0IGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgICB9XG4gICAgcHVibGljIHNldCBpc09wZW4odmFsdWUpIHtcbiAgICAgICAgdGhpcy5faXNPcGVuID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5faXNPcGVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZUVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWluaVRlbXBsYXRlICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWluaVRlbXBsYXRlLnRlbXBsYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudFRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGUudGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9taW5pVGVtcGxhdGU6IElneE5hdkRyYXdlck1pbmlUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBtaW5pVGVtcGxhdGUoKTogSWd4TmF2RHJhd2VyTWluaVRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbmlUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hOYXZEcmF3ZXJNaW5pVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogSWd4TmF2RHJhd2VyTWluaVRlbXBsYXRlRGlyZWN0aXZlIH0pXG4gICAgcHVibGljIHNldCBtaW5pVGVtcGxhdGUodjogSWd4TmF2RHJhd2VyTWluaVRlbXBsYXRlRGlyZWN0aXZlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgodiA/IHRoaXMubWluaVdpZHRoIDogJycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21pbmlUZW1wbGF0ZSA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZmxleEJhc2lzJylcbiAgICBwdWJsaWMgZ2V0IGZsZXhXaWR0aCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBpbiB8fCAoIXRoaXMuaXNPcGVuICYmICF0aGlzLm1pbmlUZW1wbGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMHB4JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5taW5pVGVtcGxhdGUgJiYgdGhpcy5taW5pV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbmlXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcmRlcicpXG4gICAgcHVibGljIGdldCBpc1Bpbm5lZFJpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5waW4gJiYgdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICcxJyA6ICcwJztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXN0dXJlc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfd2lkdGhDYWNoZTogeyB3aWR0aDogbnVtYmVyOyBtaW5pV2lkdGg6IG51bWJlcjsgd2luZG93V2lkdGg6IG51bWJlciB9ID0geyB3aWR0aDogbnVsbCwgbWluaVdpZHRoOiBudWxsLCB3aW5kb3dXaWR0aDogbnVsbCB9O1xuICAgIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBjc3M6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICBkcmF3ZXI6ICdpZ3gtbmF2LWRyYXdlcl9fYXNpZGUnLFxuICAgICAgICBtaW5pOiAnaWd4LW5hdi1kcmF3ZXJfX2FzaWRlLS1taW5pJyxcbiAgICAgICAgb3ZlcmxheTogJ2lneC1uYXYtZHJhd2VyX19vdmVybGF5JyxcbiAgICAgICAgc3R5bGVEdW1teTogJ2lneC1uYXYtZHJhd2VyX19zdHlsZS1kdW1teSdcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZHJhd2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJhd2VyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgb3ZlcmxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdHlsZUR1bW15KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGVEdW1teS5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBQYW4gYW5pbWF0aW9uIHByb3BlcnRpZXMgKi9cbiAgICBwcml2YXRlIF9wYW5uaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcGFuU3RhcnRXaWR0aDogbnVtYmVyO1xuICAgIHByaXZhdGUgX3BhbkxpbWl0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB0byBkZWNpZGUgd2hldGhlciB0byBjaGFuZ2Ugd2lkdGggb3IgdHJhbnNsYXRlIHRoZSBkcmF3ZXIgZnJvbSBwYW4gZ2VzdHVyZS5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc0FuaW1hdGVXaWR0aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGluIHx8ICEhdGhpcy5taW5pVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWF4RWRnZVpvbmUgPSA1MDtcbiAgICAvKipcbiAgICAgKiBVc2VkIGZvciB0b3VjaCBnZXN0dXJlcyAoc3dpcGUgYW5kIHBhbikuXG4gICAgICogRGVmYXVsdHMgdG8gNTAgKGluIHB4KSBhbmQgaXMgZXh0ZW5kZWQgdG8gYXQgbGVhc3QgMTEwJSBvZiB0aGUgbWluaSB0ZW1wbGF0ZSB3aWR0aCBpZiBhdmFpbGFibGUuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBtYXhFZGdlWm9uZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heEVkZ2Vab25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIERyYXdlciB3aWR0aCBmb3Igc3BlY2lmaWMgc3RhdGUuXG4gICAgICogV2lsbCBhdHRlbXB0IHRvIGV2YWx1YXRlIHJlcXVlc3RlZCBzdGF0ZSBhbmQgY2FjaGUuXG4gICAgICpcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGV4cGVjdGVkV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEV4cGVjdGVkV2lkdGgoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgRHJhd2VyIG1pbmkgd2lkdGggZm9yIHNwZWNpZmljIHN0YXRlLlxuICAgICAqIFdpbGwgYXR0ZW1wdCB0byBldmFsdWF0ZSByZXF1ZXN0ZWQgc3RhdGUgYW5kIGNhY2hlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXhwZWN0ZWRNaW5pV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEV4cGVjdGVkV2lkdGgodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG91Y2hNYW5hZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cG9zZXMgb3B0aW9uYWwgbmF2aWdhdGlvbiBzZXJ2aWNlXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfc3RhdGU6IElneE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBfdG91Y2hNYW5hZ2VyOiBIYW1tZXJHZXN0dXJlc01hbmFnZXIsXG4gICAgICAgIHByaXZhdGUgcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBET00gYW5kIEBJbnB1dCgpLXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZS5hZGQodGhpcy5pZCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNldERyYXdlcldpZHRoKHRoaXMud2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIC8vIHdhaXQgZm9yIHRlbXBsYXRlIGFuZCBuZy1jb250ZW50IHRvIGJlIHJlYWR5XG4gICAgICAgIHRoaXMudXBkYXRlRWRnZVpvbmUoKTtcbiAgICAgICAgdGhpcy5jaGVja1BpblRocmVzaG9sZCgpO1xuXG4gICAgICAgIHRoaXMuZW5zdXJlRXZlbnRzKCk7XG5cbiAgICAgICAgLy8gVE9ETzogYXBwbHkgcGxhdGZvcm0tc2FmZSBSdWxlciBmcm9tIGh0dHA6Ly9wbG5rci5jby9lZGl0LzgxbldEeXJlWU16a3VuaWhmUmdYP3A9cHJldmlld1xuICAgICAgICAvLyAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjUxNSksIGJsb2NrZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjkwNFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3RvdWNoTWFuYWdlci5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUucmVtb3ZlKHRoaXMuaWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemVPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KSB7XG4gICAgICAgIC8vIHNpbXBsZSBzZXR0aW5ncyBjYW4gY29tZSBmcm9tIGF0dHJpYnV0ZSBzZXQgKHJhdGhlciB0aGFuIGJpbmRpbmcpLCBtYWtlIHN1cmUgYm9vbGVhbiBwcm9wcyBhcmUgY29udmVydGVkXG4gICAgICAgIGlmIChjaGFuZ2VzLmVuYWJsZUdlc3R1cmVzICYmIGNoYW5nZXMuZW5hYmxlR2VzdHVyZXMuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlR2VzdHVyZXMgPSAhISh0aGlzLmVuYWJsZUdlc3R1cmVzICYmIHRoaXMuZW5hYmxlR2VzdHVyZXMudG9TdHJpbmcoKSA9PT0gJ3RydWUnKTtcbiAgICAgICAgICAgIHRoaXMuZW5zdXJlRXZlbnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMucGluICYmIGNoYW5nZXMucGluLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnBpbiA9ICEhKHRoaXMucGluICYmIHRoaXMucGluLnRvU3RyaW5nKCkgPT09ICd0cnVlJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5waW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b3VjaE1hbmFnZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2dlc3R1cmVzQXR0YWNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnN1cmVFdmVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnBpblRocmVzaG9sZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGluVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnN1cmVFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUGluVGhyZXNob2xkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy53aWR0aCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZXREcmF3ZXJXaWR0aChjaGFuZ2VzLndpZHRoLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgodGhpcy5pc09wZW4gPyB0aGlzLndpZHRoIDogKHRoaXMubWluaVRlbXBsYXRlID8gdGhpcy5taW5pV2lkdGggOiAnJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMubWluaVdpZHRoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcmF3ZXJXaWR0aChjaGFuZ2VzLm1pbmlXaWR0aC5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy51cGRhdGVFZGdlWm9uZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBOYXZpZ2F0aW9uIERyYXdlci5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLm5hdmRyYXdlci50b2dnbGUoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiB0aGUgTmF2aWdhdGlvbiBEcmF3ZXIuIEhhcyBubyBlZmZlY3QgaWYgYWxyZWFkeSBvcGVuZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5uYXZkcmF3ZXIub3BlbigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKCkge1xuICAgICAgICBpZiAodGhpcy5fcGFubmluZykge1xuICAgICAgICAgICAgdGhpcy5yZXNldFBhbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmluZy5lbWl0KCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcblxuICAgICAgICAvLyBUT0RPOiBTd2l0Y2ggdG8gYW5pbWF0ZSBBUEkgd2hlbiBhdmFpbGFibGVcbiAgICAgICAgLy8gdmFyIGFuaW1hdGlvbkNzcyA9IHRoaXMuYW5pbWF0ZS5jc3MoKTtcbiAgICAgICAgLy8gICAgIGFuaW1hdGlvbkNzc1xuICAgICAgICAvLyAgICAgICAgIC5zZXRTdHlsZXMoeyd3aWR0aCc6JzUwcHgnfSwgeyd3aWR0aCc6JzQwMHB4J30pXG4gICAgICAgIC8vICAgICAgICAgLnN0YXJ0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAvLyAgICAgICAgIC5vbkNvbXBsZXRlKCgpID0+IGFuaW1hdGlvbkNzcy5zZXRUb1N0eWxlcyh7J3dpZHRoJzonYXV0byd9KS5zdGFydCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLnRvZ2dsZU9wZW5lZEV2ZW50LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgodGhpcy53aWR0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgdGhlIE5hdmlnYXRpb24gRHJhd2VyLiBIYXMgbm8gZWZmZWN0IGlmIGFscmVhZHkgY2xvc2VkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMubmF2ZHJhd2VyLmNsb3NlKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5fcGFubmluZykge1xuICAgICAgICAgICAgdGhpcy5yZXNldFBhbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NpbmcuZW1pdCgpO1xuXG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgodGhpcy5taW5pVGVtcGxhdGUgPyB0aGlzLm1pbmlXaWR0aCA6ICcnKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMudG9nZ2xlQ2xvc2VkRXZlbnQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldF9tYXhFZGdlWm9uZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heEVkZ2Vab25lID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBEcmF3ZXIgd2lkdGggZm9yIHNwZWNpZmljIHN0YXRlLiBXaWxsIGF0dGVtcHQgdG8gZXZhbHVhdGUgcmVxdWVzdGVkIHN0YXRlIGFuZCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gW21pbmldIC0gUmVxdWVzdCBtaW5pIHdpZHRoIGluc3RlYWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RXhwZWN0ZWRXaWR0aChtaW5pPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgICAgIGlmIChtaW5pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubWluaVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5taW5pV2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLm1pbmlXaWR0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGlmICghdGhpcy5pc09wZW4pIHsgLy8gVGhpcyBXT04nVCB3b3JrIGR1ZSB0byB0cmFuc2l0aW9uIHRpbWluZ3MuLi5cbiAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzFdLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3dpZHRoQ2FjaGUubWluaVdpZHRoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvcmNlIGNsYXNzIGZvciB3aWR0aCBjYWxjLiBUT0RPP1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBjbGFzcyBmb3Igd2lkdGggY2FsYy4gVE9ETz9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnN0eWxlRHVtbXksIHRoaXMuY3NzLmRyYXdlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5zdHlsZUR1bW15LCB0aGlzLmNzcy5taW5pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fd2lkdGhDYWNoZS5taW5pV2lkdGggPSB0aGlzLnN0eWxlRHVtbXkub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5zdHlsZUR1bW15LCB0aGlzLmNzcy5kcmF3ZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuc3R5bGVEdW1teSwgdGhpcy5jc3MubWluaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93aWR0aENhY2hlLm1pbmlXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodGhpcy53aWR0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl93aWR0aENhY2hlLndpZHRoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvcmNlIGNsYXNzIGZvciB3aWR0aCBjYWxjLiBUT0RPP1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBjbGFzcyBmb3Igd2lkdGggY2FsYy4gVE9ETz9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnN0eWxlRHVtbXksIHRoaXMuY3NzLmRyYXdlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3dpZHRoQ2FjaGUud2lkdGggPSB0aGlzLnN0eWxlRHVtbXkub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5zdHlsZUR1bW15LCB0aGlzLmNzcy5kcmF3ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGhDYWNoZS53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V2luZG93V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiAod2luZG93LmlubmVyV2lkdGggPiAwKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRyYXdlciB3aWR0aC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERyYXdlcldpZHRoKHdpZHRoOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMucGxhdGZvcm1VdGlsLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmF3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYXdlciwgJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYXdlciwgJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgRHJhd2VyIHdpZHRoLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RHJhd2VyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd2VyLm9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5zdXJlRXZlbnRzKCkge1xuICAgICAgICAvLyBzZXQgbGlzdGVuZXJzIGZvciBzd2lwZS9wYW4gb25seSBpZiBuZWVkZWQsIGJ1dCBqdXN0IG9uY2VcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR2VzdHVyZXMgJiYgIXRoaXMucGluICYmICF0aGlzLl9nZXN0dXJlc0F0dGFjaGVkKSB7XG4gICAgICAgICAgICAvLyBCdWlsdC1pbiBtYW5hZ2VyIGhhbmRsZXIoTDIwODg3KSBjYXVzZXMgZW5kbGVzcyBsb29wIGFuZCBtYXggc3RhY2sgZXhjZXB0aW9uLlxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjk5M1xuICAgICAgICAgICAgLy8gVXNlIG91cnMgZm9yIG5vdyAodW50aWwgYmV0YS4xMCk6XG4gICAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudCwgXCJzd2lwZVwiLCB0aGlzLnN3aXBlKTtcbiAgICAgICAgICAgIHRoaXMuX3RvdWNoTWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKCdkb2N1bWVudCcsICdzd2lwZScsIHRoaXMuc3dpcGUpO1xuICAgICAgICAgICAgdGhpcy5fZ2VzdHVyZXNBdHRhY2hlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50LCBcInBhbnN0YXJ0XCIsIHRoaXMucGFuc3RhcnQpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnQsIFwicGFuXCIsIHRoaXMucGFuKTtcbiAgICAgICAgICAgIHRoaXMuX3RvdWNoTWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKCdkb2N1bWVudCcsICdwYW5zdGFydCcsIHRoaXMucGFuc3RhcnQpO1xuICAgICAgICAgICAgdGhpcy5fdG91Y2hNYW5hZ2VyLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIoJ2RvY3VtZW50JywgJ3Bhbm1vdmUnLCB0aGlzLnBhbik7XG4gICAgICAgICAgICB0aGlzLl90b3VjaE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcignZG9jdW1lbnQnLCAncGFuZW5kJywgdGhpcy5wYW5FbmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplT2JzZXJ2ZXIgJiYgdGhpcy5wbGF0Zm9ybVV0aWwuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKGRlYm91bmNlKCgpID0+IGludGVydmFsKDE1MCkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tQaW5UaHJlc2hvbGQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVFZGdlWm9uZSgpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLm1pbmlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heCh0aGlzLl9tYXhFZGdlWm9uZSwgdGhpcy5nZXRFeHBlY3RlZFdpZHRoKHRydWUpICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMuc2V0X21heEVkZ2Vab25lKG1heFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tQaW5UaHJlc2hvbGQgPSAoZXZ0PzogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnBsYXRmb3JtVXRpbC5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2luZG93V2lkdGg7XG4gICAgICAgIGlmICh0aGlzLnBpblRocmVzaG9sZCkge1xuICAgICAgICAgICAgd2luZG93V2lkdGggPSB0aGlzLmdldFdpbmRvd1dpZHRoKCk7XG4gICAgICAgICAgICBpZiAoZXZ0ICYmIHRoaXMuX3dpZHRoQ2FjaGUud2luZG93V2lkdGggPT09IHdpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fd2lkdGhDYWNoZS53aW5kb3dXaWR0aCA9IHdpbmRvd1dpZHRoO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBpbiAmJiB3aW5kb3dXaWR0aCA+PSB0aGlzLnBpblRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGluID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBpbiAmJiB3aW5kb3dXaWR0aCA8IHRoaXMucGluVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5waW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHN3aXBlID0gKGV2dDogSGFtbWVySW5wdXQpID0+IHtcbiAgICAgICAgLy8gVE9ETzogQ291bGQgYWxzbyBmb3JjZSBpbnB1dCB0eXBlOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNzEwODA1MlxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlR2VzdHVyZXMgfHwgZXZ0LnBvaW50ZXJUeXBlICE9PSAndG91Y2gnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW1tZXJKUyBzd2lwZSBpcyBob3Jpem9udGFsLW9ubHkgYnkgZGVmYXVsdCwgZG9uJ3QgY2hlY2sgZGVsdGFZXG4gICAgICAgIGxldCBkZWx0YVg7XG4gICAgICAgIGxldCBzdGFydFBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgLy8gd2hlbiBvbiB0aGUgcmlnaHQgdXNlIGludmVyc2Ugb2YgZGVsdGFYXG4gICAgICAgICAgICBkZWx0YVggPSAtZXZ0LmRlbHRhWDtcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSB0aGlzLmdldFdpbmRvd1dpZHRoKCkgLSAoZXZ0LmNlbnRlci54ICsgZXZ0LmRpc3RhbmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbHRhWCA9IGV2dC5kZWx0YVg7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZXZ0LmNlbnRlci54IC0gZXZ0LmRpc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9ubHkgYWNjZXB0IGNsb3Npbmcgc3dpcGUgKGlnbm9yaW5nIG1pbkVkZ2Vab25lKSB3aGVuIHRoZSBkcmF3ZXIgaXMgZXhwYW5kZWQ6XG4gICAgICAgIGlmICgodGhpcy5pc09wZW4gJiYgZGVsdGFYIDwgMCkgfHxcbiAgICAgICAgICAgIC8vIHBvc2l0aXZlIGRlbHRhWCBmcm9tIHRoZSBlZGdlOlxuICAgICAgICAgICAgKGRlbHRhWCA+IDAgJiYgc3RhcnRQb3NpdGlvbiA8IHRoaXMubWF4RWRnZVpvbmUpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgcGFuc3RhcnQgPSAoZXZ0OiBIYW1tZXJJbnB1dCkgPT4geyAvLyBUT0RPOiB0ZXN0IGNvZGVcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZUdlc3R1cmVzIHx8IHRoaXMucGluIHx8IGV2dC5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnID8gdGhpcy5nZXRXaW5kb3dXaWR0aCgpIC0gKGV2dC5jZW50ZXIueCArIGV2dC5kaXN0YW5jZSlcbiAgICAgICAgICAgIDogZXZ0LmNlbnRlci54IC0gZXZ0LmRpc3RhbmNlO1xuXG4gICAgICAgIC8vIGNhY2hlIHdpZHRoIGR1cmluZyBhbmltYXRpb24sIGZsYWcgdG8gYWxsb3cgZnVydGhlciBoYW5kbGluZ1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gfHwgKHN0YXJ0UG9zaXRpb24gPCB0aGlzLm1heEVkZ2Vab25lKSkge1xuICAgICAgICAgICAgdGhpcy5fcGFubmluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9wYW5TdGFydFdpZHRoID0gdGhpcy5nZXRFeHBlY3RlZFdpZHRoKCF0aGlzLmlzT3Blbik7XG4gICAgICAgICAgICB0aGlzLl9wYW5MaW1pdCA9IHRoaXMuZ2V0RXhwZWN0ZWRXaWR0aCh0aGlzLmlzT3Blbik7XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5vdmVybGF5LCAncGFubmluZycpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYXdlciwgJ3Bhbm5pbmcnKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHBhbiA9IChldnQ6IEhhbW1lcklucHV0KSA9PiB7XG4gICAgICAgIC8vIFRPRE86IGlucHV0LmRlbHRhWCA9IHByZXZEZWx0YS54ICsgKGNlbnRlci54IC0gb2Zmc2V0LngpO1xuICAgICAgICAvLyBnZXQgYWN0dWFsIGRlbHRhIChub3QgdG90YWwgc2Vzc2lvbiBvbmUpIGZyb20gZXZlbnQ/XG4gICAgICAgIC8vIHBhbiBXSUxMIGFsc28gZmlyZSBhZnRlciBhIGZ1bGwgc3dpcGUsIG9ubHkgcmVzaXplIG9uIGZsYWdcbiAgICAgICAgaWYgKCF0aGlzLl9wYW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmlnaHQ6IGJvb2xlYW4gPSB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnO1xuICAgICAgICAvLyB3aGVuIG9uIHRoZSByaWdodCB1c2UgaW52ZXJzZSBvZiBkZWx0YVhcbiAgICAgICAgY29uc3QgZGVsdGFYID0gcmlnaHQgPyAtZXZ0LmRlbHRhWCA6IGV2dC5kZWx0YVg7XG4gICAgICAgIGxldCBuZXdYO1xuICAgICAgICBsZXQgcGVyY2VudDtcbiAgICAgICAgY29uc3QgdmlzaWJsZVdpZHRoID0gdGhpcy5fcGFuU3RhcnRXaWR0aCArIGRlbHRhWDtcblxuICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgZGVsdGFYIDwgMCkge1xuICAgICAgICAgICAgLy8gd2hlbiB2aXNpYmxlV2lkdGggaGl0cyBsaW1pdCAtIHN0b3AgYW5pbWF0aW5nXG4gICAgICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9IHRoaXMuX3BhbkxpbWl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNBbmltYXRlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gKHZpc2libGVXaWR0aCAtIHRoaXMuX3BhbkxpbWl0KSAvICh0aGlzLl9wYW5TdGFydFdpZHRoIC0gdGhpcy5fcGFuTGltaXQpO1xuICAgICAgICAgICAgICAgIG5ld1ggPSB2aXNpYmxlV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSB2aXNpYmxlV2lkdGggLyB0aGlzLl9wYW5TdGFydFdpZHRoO1xuICAgICAgICAgICAgICAgIG5ld1ggPSBldnQuZGVsdGFYO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRYU2l6ZShuZXdYLCBwZXJjZW50LnRvUHJlY2lzaW9uKDIpKTtcblxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzT3BlbiAmJiBkZWx0YVggPiAwKSB7XG4gICAgICAgICAgICAvLyB3aGVuIHZpc2libGVXaWR0aCBoaXRzIGxpbWl0IC0gc3RvcCBhbmltYXRpbmdcbiAgICAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPj0gdGhpcy5fcGFuTGltaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0FuaW1hdGVXaWR0aCkge1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAodmlzaWJsZVdpZHRoIC0gdGhpcy5fcGFuU3RhcnRXaWR0aCkgLyAodGhpcy5fcGFuTGltaXQgLSB0aGlzLl9wYW5TdGFydFdpZHRoKTtcbiAgICAgICAgICAgICAgICBuZXdYID0gdmlzaWJsZVdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gdmlzaWJsZVdpZHRoIC8gdGhpcy5fcGFuTGltaXQ7XG4gICAgICAgICAgICAgICAgbmV3WCA9ICh0aGlzLl9wYW5MaW1pdCAtIHZpc2libGVXaWR0aCkgKiAocmlnaHQgPyAxIDogLTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRYU2l6ZShuZXdYLCBwZXJjZW50LnRvUHJlY2lzaW9uKDIpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHBhbkVuZCA9IChldnQ6IEhhbW1lcklucHV0KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9wYW5uaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnID8gLWV2dC5kZWx0YVggOiBldnQuZGVsdGFYO1xuICAgICAgICAgICAgY29uc3QgdmlzaWJsZVdpZHRoOiBudW1iZXIgPSB0aGlzLl9wYW5TdGFydFdpZHRoICsgZGVsdGFYO1xuICAgICAgICAgICAgdGhpcy5yZXNldFBhbigpO1xuXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBwYW4gYnJvdWdodCB0aGUgZHJhd2VyIHRvIDUwJVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHZpc2libGVXaWR0aCA8PSB0aGlzLl9wYW5TdGFydFdpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNPcGVuICYmIHZpc2libGVXaWR0aCA+PSB0aGlzLl9wYW5MaW1pdCAvIDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3BhblN0YXJ0V2lkdGggPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVzZXRQYW4oKSB7XG4gICAgICAgIHRoaXMuX3Bhbm5pbmcgPSBmYWxzZTtcbiAgICAgICAgLyogc3R5bGVzIGZhaWwgdG8gYXBwbHkgd2hlbiBzZXQgb24gcGFyZW50IGR1ZSB0byBleHRyYSBhdHRyaWJ1dGVzLCBwcm9iIG5nIGJ1ZyAqL1xuICAgICAgICAvKiBzdHlsZXMgZmFpbCB0byBhcHBseSB3aGVuIHNldCBvbiBwYXJlbnQgZHVlIHRvIGV4dHJhIGF0dHJpYnV0ZXMsIHByb2IgbmcgYnVnICovXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5vdmVybGF5LCAncGFubmluZycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZHJhd2VyLCAncGFubmluZycpO1xuICAgICAgICB0aGlzLnNldFhTaXplKDAsICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvciB3aWR0aCBpbiBjYXNlIHRoZSBkcmF3ZXIgZG9lc24ndCBjaGFuZ2UgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCB0aGUgbnVtYmVyIHBpeGVscyB0byB0cmFuc2xhdGUgb24gdGhlIFggYXhpcyBvciB0aGUgd2lkdGggdG8gc2V0LiAwIHdpZHRoIHdpbGwgY2xlYXIgdGhlIHN0eWxlIGluc3RlYWQuXG4gICAgICogQHBhcmFtIG9wYWNpdHkgb3B0aW9uYWwgdmFsdWUgdG8gYXBwbHkgdG8gdGhlIG92ZXJsYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFhTaXplKHg6IG51bWJlciwgb3BhY2l0eT86IHN0cmluZykge1xuICAgICAgICAvLyBBbmd1bGFyIHBvbHlmaWxscyBwYXRjaGVzIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGJ1dCBzd2l0Y2ggdG8gRG9tQWRhcHRlciBBUEkgKFRPRE8pXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQW5pbWF0ZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYXdlciwgJ3dpZHRoJywgeCA/IE1hdGguYWJzKHgpICsgJ3B4JyA6ICcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYXdlciwgJ3RyYW5zZm9ybScsIHggPyAndHJhbnNsYXRlM2QoJyArIHggKyAncHgsMCwwKScgOiAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYXdlciwgJy13ZWJraXQtdHJhbnNmb3JtJywgeCA/ICd0cmFuc2xhdGUzZCgnICsgeCArICdweCwwLDApJyA6ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcGFjaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMub3ZlcmxheSwgJ29wYWNpdHknLCBvcGFjaXR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVPcGVuZWRFdmVudCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMudG9nZ2xlT3BlbmVkRXZlbnQsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHRvZ2dsZUNsb3NlZEV2ZW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgdGhpcy50b2dnbGVDbG9zZWRFdmVudCwgZmFsc2UpO1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgfTtcbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1zVGVtcGxhdGU+XG4gICAgPGRpdiBpZ3hEcmF3ZXJJdGVtIFtpc0hlYWRlcl09XCJ0cnVlXCI+TmF2aWdhdGlvbiBEcmF3ZXI8L2Rpdj5cbiAgICA8ZGl2IGlneERyYXdlckl0ZW0+IFN0YXJ0IGJ5IGFkZGluZzwvZGl2PlxuICAgIDxkaXYgaWd4RHJhd2VySXRlbT4gPGNvZGU+Jmx0O25nLXRlbXBsYXRlIGlneERyYXdlciZndDs8L2NvZGU+IDwvZGl2PlxuICAgIDxkaXYgaWd4RHJhd2VySXRlbT4gQW5kIHNvbWUgaXRlbXMgaW5zaWRlIDwvZGl2PlxuICAgIDxkaXYgaWd4RHJhd2VySXRlbT4gU3R5bGUgd2l0aCBpZ3hEcmF3ZXJJdGVtIDwvZGl2PlxuICAgIDxkaXYgaWd4RHJhd2VySXRlbT4gYW5kIGlneFJpcHBsZSBkaXJlY3RpdmVzPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IFtoaWRkZW5dPVwicGluXCJcbiAgICBjbGFzcz1cImlneC1uYXYtZHJhd2VyX19vdmVybGF5XCJcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXJfX292ZXJsYXktLWhpZGRlbl09XCIhaXNPcGVuXCJcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXItLWRpc2FibGUtYW5pbWF0aW9uXT1cImRpc2FibGVBbmltYXRpb25cIlxuICAgIChjbGljayk9XCJjbG9zZSgpXCIgI292ZXJsYXk+XG48L2Rpdj5cbjxhc2lkZSByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgY2xhc3M9XCJpZ3gtbmF2LWRyYXdlcl9fYXNpZGVcIlxuICAgIFtjbGFzcy5pZ3gtbmF2LWRyYXdlcl9fYXNpZGUtLWNvbGxhcHNlZF09XCIhbWluaVRlbXBsYXRlICYmICFpc09wZW5cIlxuICAgIFtjbGFzcy5pZ3gtbmF2LWRyYXdlcl9fYXNpZGUtLW1pbmldPVwibWluaVRlbXBsYXRlICYmICFpc09wZW5cIlxuICAgIFtjbGFzcy5pZ3gtbmF2LWRyYXdlcl9fYXNpZGUtLW5vcm1hbF09XCIhbWluaVRlbXBsYXRlIHx8IGlzT3BlblwiXG4gICAgW2NsYXNzLmlneC1uYXYtZHJhd2VyX19hc2lkZS0tcGlubmVkXT1cInBpblwiXG4gICAgW2NsYXNzLmlneC1uYXYtZHJhd2VyX19hc2lkZS0tcmlnaHRdPVwicG9zaXRpb24gPT09ICdyaWdodCdcIiAjYXNpZGVcbiAgICBbY2xhc3MuaWd4LW5hdi1kcmF3ZXItLWRpc2FibGUtYW5pbWF0aW9uXT1cImRpc2FibGVBbmltYXRpb25cIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZSB8fCBkZWZhdWx0SXRlbXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9hc2lkZT5cbjxkaXYgY2xhc3M9XCJpZ3gtbmF2LWRyYXdlcl9fc3R5bGUtZHVtbXlcIiAjZHVtbXk+PC9kaXY+XG4iXX0=
@@ -32364,6 +32364,19 @@ class IgxCardComponent {
32364
32364
  * ```
32365
32365
  */
32366
32366
  this.role = 'group';
32367
+ /**
32368
+ * Sets/gets whether the card is elevated.
32369
+ * Default value is `false`.
32370
+ *
32371
+ * @example
32372
+ * ```html
32373
+ * <igx-card elevated></igx-card>
32374
+ * ```
32375
+ * ```typescript
32376
+ * let cardElevation = this.card.elevated;
32377
+ * ```
32378
+ */
32379
+ this.elevated = false;
32367
32380
  /**
32368
32381
  * Sets the value of the `horizontal` attribute of the card.
32369
32382
  * Setting this to `true` will make the different card sections align horizontally,
@@ -32375,32 +32388,9 @@ class IgxCardComponent {
32375
32388
  * ```
32376
32389
  */
32377
32390
  this.horizontal = false;
32378
- /**
32379
- * @hidden
32380
- * @internal
32381
- */
32382
- this._elevated = false;
32383
- }
32384
- /**
32385
- * Sets/gets whether the card is elevated.
32386
- * Default value is `false`.
32387
- *
32388
- * @example
32389
- * ```html
32390
- * <igx-card elevated></igx-card>
32391
- * ```
32392
- * ```typescript
32393
- * let cardElevation = this.card.elevated;
32394
- * ```
32395
- */
32396
- get elevated() {
32397
- return this._elevated;
32398
- }
32399
- set elevated(value) {
32400
- this._elevated = (value === '') || value;
32401
32391
  }
32402
32392
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32403
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxCardComponent, isStandalone: true, selector: "igx-card", inputs: { id: "id", role: "role", elevated: "elevated", horizontal: ["horizontal", "horizontal", booleanAttribute] }, host: { properties: { "attr.id": "this.id", "class.igx-card": "this.cssClass", "attr.role": "this.role", "class.igx-card--elevated": "this.elevated", "class.igx-card--horizontal": "this.horizontal" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
32393
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxCardComponent, isStandalone: true, selector: "igx-card", inputs: { id: "id", role: "role", elevated: ["elevated", "elevated", booleanAttribute], horizontal: ["horizontal", "horizontal", booleanAttribute] }, host: { properties: { "attr.id": "this.id", "class.igx-card": "this.cssClass", "attr.role": "this.role", "class.igx-card--elevated": "this.elevated", "class.igx-card--horizontal": "this.horizontal" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
32404
32394
  }
32405
32395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxCardComponent, decorators: [{
32406
32396
  type: Component,
@@ -32419,7 +32409,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
32419
32409
  }, {
32420
32410
  type: Input
32421
32411
  }], elevated: [{
32422
- type: Input
32412
+ type: Input,
32413
+ args: [{ transform: booleanAttribute }]
32423
32414
  }, {
32424
32415
  type: HostBinding,
32425
32416
  args: ['class.igx-card--elevated']
@@ -82534,7 +82525,7 @@ class IgxNavigationDrawerComponent {
82534
82525
  * @hidden
82535
82526
  */
82536
82527
  get flexWidth() {
82537
- if (!this.pin) {
82528
+ if (!this.pin || (!this.isOpen && !this.miniTemplate)) {
82538
82529
  return '0px';
82539
82530
  }
82540
82531
  if (this.isOpen) {
@@ -82543,7 +82534,6 @@ class IgxNavigationDrawerComponent {
82543
82534
  if (this.miniTemplate && this.miniWidth) {
82544
82535
  return this.miniWidth;
82545
82536
  }
82546
- return '0px';
82547
82537
  }
82548
82538
  /** @hidden */
82549
82539
  get isPinnedRight() {