valtech-components 4.0.1034 → 4.0.1035

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.
@@ -538,7 +538,7 @@ export class ChatComposerComponent {
538
538
  </div>
539
539
  }
540
540
  </div>
541
- `, isInline: true, styles: [":host{display:block}.composer{display:flex;flex-direction:column;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));background:var(--ion-background-color, #fff);border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.reply-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-left:3px solid var(--ion-color-primary);border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.reply-content{display:flex;flex-direction:column;flex:1;min-width:0;font-size:.8125rem}.reply-name{font-weight:700;color:var(--ion-color-primary)}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ion-color-dark, #92949c)}.pending-row{display:flex;gap:8px;flex-wrap:wrap;padding:2px 4px}.thumb{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1));cursor:pointer}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ion-color-dark, #92949c);font-size:1.5rem}.thumb-name{font-size:.5625rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-text-color, #000)}.thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:#0000008c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem}.shell{display:flex;flex-direction:column;gap:8px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:26px;padding:12px 16px}.editable{min-height:40px;max-height:180px;overflow-y:auto;outline:none;font-size:.9375rem;line-height:1.4;color:var(--ion-text-color, #000);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.editable.is-empty:before{content:attr(data-placeholder);color:var(--ion-color-dark, #92949c);pointer-events:none}.actions{display:flex;align-items:center;gap:4px}.actions-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1.25rem}.icon-btn:hover{color:var(--ion-color-primary)}.icon-btn.dictate.active{color:var(--ion-color-primary);animation:dictate-pulse 1.2s ease-in-out infinite}@keyframes dictate-pulse{0%,to{opacity:1}50%{opacity:.4}}.send-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff);cursor:pointer;font-size:1.125rem;transition:transform .1s ease}.send-btn:active{transform:scale(.92)}.icon-btn.danger{color:var(--ion-color-danger, #eb445a)}.audio-chip{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.audio-chip audio{flex:1;height:36px;min-width:0}.thumb-remove.inline{position:static;flex-shrink:0;background:var(--ion-color-medium, #92949c)}.rec-bar{display:flex;align-items:center;gap:10px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:4px 8px}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--ion-color-danger, #eb445a);animation:rec-pulse 1.2s ease-in-out infinite}.rec-time{font-variant-numeric:tabular-nums;font-size:.9375rem;color:var(--ion-text-color, #000)}.rec-spacer{flex:1}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
541
+ `, isInline: true, styles: [":host{display:block}.composer{display:flex;flex-direction:column;gap:6px;padding:var(--val-chat-composer-padding, 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)) );background:var(--val-chat-composer-background, var(--ion-background-color, #fff))}.reply-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-left:3px solid var(--ion-color-primary);border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.reply-content{display:flex;flex-direction:column;flex:1;min-width:0;font-size:.8125rem}.reply-name{font-weight:700;color:var(--ion-color-primary)}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ion-color-dark, #92949c)}.pending-row{display:flex;gap:8px;flex-wrap:wrap;padding:2px 4px}.thumb{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1));cursor:pointer}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ion-color-dark, #92949c);font-size:1.5rem}.thumb-name{font-size:.5625rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-text-color, #000)}.thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:#0000008c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem}.shell{display:flex;flex-direction:column;gap:6px;background:var(--val-chat-input-background, var(--ion-color-light, #f4f5f8));border:1px solid var(--val-chat-input-border, var(--ion-border-color, rgba(0, 0, 0, .08)));border-radius:var(--val-chat-input-radius, 24px);padding:10px 12px}.editable{min-height:32px;max-height:180px;overflow-y:auto;outline:none;font-size:.95rem;line-height:1.4;color:var(--ion-text-color, #000);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.editable.is-empty:before{content:attr(data-placeholder);color:var(--ion-color-dark, #92949c);pointer-events:none}.actions{display:flex;align-items:center;gap:4px}.actions-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1.15rem}.icon-btn:hover{color:var(--ion-color-primary)}.icon-btn.dictate.active{color:var(--ion-color-primary);animation:dictate-pulse 1.2s ease-in-out infinite}@keyframes dictate-pulse{0%,to{opacity:1}50%{opacity:.4}}.send-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:none;border-radius:50%;background:var(--val-chat-send-background, var(--ion-color-dark, #111));color:var(--val-chat-send-color, #fff);cursor:pointer;font-size:1.125rem;transition:transform .1s ease}.send-btn:active{transform:scale(.92)}.icon-btn.danger{color:var(--ion-color-danger, #eb445a)}.audio-chip{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.audio-chip audio{flex:1;height:36px;min-width:0}.thumb-remove.inline{position:static;flex-shrink:0;background:var(--ion-color-medium, #92949c)}.rec-bar{display:flex;align-items:center;gap:10px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:4px 8px}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--ion-color-danger, #eb445a);animation:rec-pulse 1.2s ease-in-out infinite}.rec-time{font-variant-numeric:tabular-nums;font-size:.9375rem;color:var(--ion-text-color, #000)}.rec-spacer{flex:1}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
542
542
  }
543
543
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatComposerComponent, decorators: [{
544
544
  type: Component,
@@ -659,6 +659,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
659
659
  </div>
660
660
  }
661
661
  </div>
662
- `, styles: [":host{display:block}.composer{display:flex;flex-direction:column;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));background:var(--ion-background-color, #fff);border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.reply-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-left:3px solid var(--ion-color-primary);border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.reply-content{display:flex;flex-direction:column;flex:1;min-width:0;font-size:.8125rem}.reply-name{font-weight:700;color:var(--ion-color-primary)}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ion-color-dark, #92949c)}.pending-row{display:flex;gap:8px;flex-wrap:wrap;padding:2px 4px}.thumb{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1));cursor:pointer}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ion-color-dark, #92949c);font-size:1.5rem}.thumb-name{font-size:.5625rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-text-color, #000)}.thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:#0000008c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem}.shell{display:flex;flex-direction:column;gap:8px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:26px;padding:12px 16px}.editable{min-height:40px;max-height:180px;overflow-y:auto;outline:none;font-size:.9375rem;line-height:1.4;color:var(--ion-text-color, #000);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.editable.is-empty:before{content:attr(data-placeholder);color:var(--ion-color-dark, #92949c);pointer-events:none}.actions{display:flex;align-items:center;gap:4px}.actions-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1.25rem}.icon-btn:hover{color:var(--ion-color-primary)}.icon-btn.dictate.active{color:var(--ion-color-primary);animation:dictate-pulse 1.2s ease-in-out infinite}@keyframes dictate-pulse{0%,to{opacity:1}50%{opacity:.4}}.send-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff);cursor:pointer;font-size:1.125rem;transition:transform .1s ease}.send-btn:active{transform:scale(.92)}.icon-btn.danger{color:var(--ion-color-danger, #eb445a)}.audio-chip{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.audio-chip audio{flex:1;height:36px;min-width:0}.thumb-remove.inline{position:static;flex-shrink:0;background:var(--ion-color-medium, #92949c)}.rec-bar{display:flex;align-items:center;gap:10px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:4px 8px}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--ion-color-danger, #eb445a);animation:rec-pulse 1.2s ease-in-out infinite}.rec-time{font-variant-numeric:tabular-nums;font-size:.9375rem;color:var(--ion-text-color, #000)}.rec-spacer{flex:1}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}\n"] }]
662
+ `, styles: [":host{display:block}.composer{display:flex;flex-direction:column;gap:6px;padding:var(--val-chat-composer-padding, 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)) );background:var(--val-chat-composer-background, var(--ion-background-color, #fff))}.reply-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-left:3px solid var(--ion-color-primary);border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.reply-content{display:flex;flex-direction:column;flex:1;min-width:0;font-size:.8125rem}.reply-name{font-weight:700;color:var(--ion-color-primary)}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ion-color-dark, #92949c)}.pending-row{display:flex;gap:8px;flex-wrap:wrap;padding:2px 4px}.thumb{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1));cursor:pointer}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ion-color-dark, #92949c);font-size:1.5rem}.thumb-name{font-size:.5625rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-text-color, #000)}.thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:#0000008c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem}.shell{display:flex;flex-direction:column;gap:6px;background:var(--val-chat-input-background, var(--ion-color-light, #f4f5f8));border:1px solid var(--val-chat-input-border, var(--ion-border-color, rgba(0, 0, 0, .08)));border-radius:var(--val-chat-input-radius, 24px);padding:10px 12px}.editable{min-height:32px;max-height:180px;overflow-y:auto;outline:none;font-size:.95rem;line-height:1.4;color:var(--ion-text-color, #000);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.editable.is-empty:before{content:attr(data-placeholder);color:var(--ion-color-dark, #92949c);pointer-events:none}.actions{display:flex;align-items:center;gap:4px}.actions-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1.15rem}.icon-btn:hover{color:var(--ion-color-primary)}.icon-btn.dictate.active{color:var(--ion-color-primary);animation:dictate-pulse 1.2s ease-in-out infinite}@keyframes dictate-pulse{0%,to{opacity:1}50%{opacity:.4}}.send-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:none;border-radius:50%;background:var(--val-chat-send-background, var(--ion-color-dark, #111));color:var(--val-chat-send-color, #fff);cursor:pointer;font-size:1.125rem;transition:transform .1s ease}.send-btn:active{transform:scale(.92)}.icon-btn.danger{color:var(--ion-color-danger, #eb445a)}.audio-chip{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.audio-chip audio{flex:1;height:36px;min-width:0}.thumb-remove.inline{position:static;flex-shrink:0;background:var(--ion-color-medium, #92949c)}.rec-bar{display:flex;align-items:center;gap:10px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:4px 8px}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--ion-color-danger, #eb445a);animation:rec-pulse 1.2s ease-in-out infinite}.rec-time{font-variant-numeric:tabular-nums;font-size:.9375rem;color:var(--ion-text-color, #000)}.rec-spacer{flex:1}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}\n"] }]
663
663
  }], ctorParameters: () => [] });
664
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFFNUcsUUFBUSxDQUFDO0lBQ1AsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osZUFBZTtJQUNmLFVBQVU7SUFDVixZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRTtRQUNGLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsSUFBSSxFQUFFLFFBQVE7UUFD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QUksQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLFVBQVU7UUFDWixDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQW5ZVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwrdENBcFd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUhULGkySEF0SFMsWUFBWSwrQkFBRSxPQUFPOzs0RkFxV3BCLHFCQUFxQjtrQkF4V2pDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFIVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY2hlY2ttYXJrT3V0bGluZSxcbiAgY2xvc2VPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIG1pY091dGxpbmUsXG4gIHB1bHNlT3V0bGluZSxcbiAgYXJyb3dVcE91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgZml4V2VibUR1cmF0aW9uIGZyb20gJ2ZpeC13ZWJtLWR1cmF0aW9uJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1lc3NhZ2VSZXBseVRvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhdC90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvbWVkaWEtdmlld2VyLW1vZGFsL21lZGlhLXZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNoZWNrbWFya091dGxpbmUsXG4gIGNsb3NlT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxuICBtaWNPdXRsaW5lLFxuICBwdWxzZU91dGxpbmUsXG4gIGFycm93VXBPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59KTtcblxuY29uc3QgQ0hBVF9DT01QT1NFUl9JMThOID0ge1xuICBlczoge1xuICAgIHBsYWNlaG9sZGVyOiAnRXNjcmliZSB1biBtZW5zYWplJyxcbiAgICBzZW5kOiAnRW52aWFyJyxcbiAgICBhdHRhY2g6ICdBZGp1bnRhcicsXG4gICAgdm9pY2U6ICdNZW5zYWplIGRlIHZveicsXG4gICAgZGljdGF0ZTogJ0RpY3RhcicsXG4gICAgbGlzdGVuaW5nOiAnRXNjdWNoYW5kb+KApicsXG4gICAgZG9uZTogJ0xpc3RvJyxcbiAgICByZXBseWluZ1RvOiAnUmVzcG9uZGllbmRvIGEnLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICByZW1vdmU6ICdRdWl0YXInLFxuICB9LFxuICBlbjoge1xuICAgIHBsYWNlaG9sZGVyOiAnV3JpdGUgYSBtZXNzYWdlJyxcbiAgICBzZW5kOiAnU2VuZCcsXG4gICAgYXR0YWNoOiAnQXR0YWNoJyxcbiAgICB2b2ljZTogJ1ZvaWNlIG1lc3NhZ2UnLFxuICAgIGRpY3RhdGU6ICdEaWN0YXRlJyxcbiAgICBsaXN0ZW5pbmc6ICdMaXN0ZW5pbmfigKYnLFxuICAgIGRvbmU6ICdEb25lJyxcbiAgICByZXBseWluZ1RvOiAnUmVwbHlpbmcgdG8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgcmVtb3ZlOiAnUmVtb3ZlJyxcbiAgfSxcbn07XG5cbi8qKiBUaXBvcyBtw61uaW1vcyBkZSBsYSBXZWIgU3BlZWNoIEFQSSAobm8gZXN0w6FuIGVuIGxpYi5kb20gZXN0w6FuZGFyKS4gKi9cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkxpa2Uge1xuICBsYW5nOiBzdHJpbmc7XG4gIGNvbnRpbnVvdXM6IGJvb2xlYW47XG4gIGludGVyaW1SZXN1bHRzOiBib29sZWFuO1xuICBzdGFydCgpOiB2b2lkO1xuICBzdG9wKCk6IHZvaWQ7XG4gIGFib3J0KCk6IHZvaWQ7XG4gIG9ucmVzdWx0OlxuICAgIHwgKChldmVudDogeyByZXN1bHRJbmRleDogbnVtYmVyOyByZXN1bHRzOiBBcnJheUxpa2U8eyAwOiB7IHRyYW5zY3JpcHQ6IHN0cmluZyB9OyBpc0ZpbmFsOiBib29sZWFuIH0+IH0pID0+IHZvaWQpXG4gICAgfCBudWxsO1xuICBvbmVuZDogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25lcnJvcjogKChldmVudDogeyBlcnJvcjogc3RyaW5nIH0pID0+IHZvaWQpIHwgbnVsbDtcbn1cblxudHlwZSBQZW5kaW5nS2luZCA9ICdpbWFnZScgfCAnYXVkaW8nIHwgJ2ZpbGUnO1xuXG5pbnRlcmZhY2UgUGVuZGluZ0F0dGFjaG1lbnQge1xuICBpZDogbnVtYmVyO1xuICBmaWxlOiBGaWxlO1xuICB1cmw/OiBzdHJpbmc7XG4gIGtpbmQ6IFBlbmRpbmdLaW5kO1xufVxuXG4vKiogRXZlbnRvIGRlIGVudsOtbzogdGV4dG8gKGNhcHRpb24pICsgYWRqdW50b3Mgc3RhZ2VkLiBmaWxlcyB2YWPDrW8gPT4gc29sbyB0ZXh0by4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbXBvc2VyU2VuZEV2ZW50IHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaWxlczogRmlsZVtdO1xufVxuXG4vKipcbiAqIHZhbC1jaGF0LWNvbXBvc2VyIOKAlCBiYXJyYSBkZSByZWRhY2Npw7NuIGVzdGlsbyBOb3Rpb24vQ2xhdWRlIChmdWxsIGN1c3RvbSkuXG4gKlxuICogRWwgZWRpdG9yIGVzIHVuIGBjb250ZW50ZWRpdGFibGVgIChOTyBpb24tdGV4dGFyZWEpOiBjcmVjZSBoYXN0YSB1biBtYXgtaGVpZ2h0LFxuICogc29wb3J0YSBwZWdhciB0ZXh0byBwbGFubyBlIGltw6FnZW5lcyBkZWwgcG9ydGFwYXBlbGVzLCBFbnRlciBlbnbDrWEgLyBTaGlmdCtFbnRlclxuICogc2FsdGEgbMOtbmVhLiBEZWJham8sIHVuYSBmaWxhIGRlIGFjY2lvbmVzIHByb3BpYXM6IGFkanVudGFyICgrKSwgbWljL2Vudmlhci5cbiAqIExvcyBhZGp1bnRvcyAoYm90w7NuIC8gcGVnYXIgLyBhdWRpbyBncmFiYWRvKSBzZSBhY3VtdWxhbiBjb21vIG1pbmlhdHVyYXMgZGVcbiAqIFBSRVZJRVcgeSBzZSBtYW5kYW4gZW4gVU4gc29sbyBldmVudG8gYHNlbmQge3RleHQsIGZpbGVzfWAgKGNhcHRpb24gKyBhZGp1bnRvcykuXG4gKlxuICogUGVuc2FkbyBwYXJhIHZpdmlyIGVuIHVuIGNvbnRlbmVkb3IgZmlqbyBhbCBmb25kbyBkZWwgdmlld3BvcnQgKGVsIGNvbnN1bWVyXG4gKiBhbmNsYSBsYSBwb3NpY2nDs24pLiBObyBpbmNsdXllIGVtb2ppIHBpY2tlciAoZWwgdGVjbGFkbyBkZWwgc2lzdGVtYSBsbyB0cmFlKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYXQtY29tcG9zZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29tcG9zZXJcIj5cbiAgICAgIEBpZiAocmVwbHlpbmdUbygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1iYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1uYW1lXCI+e3sgcmVwbHlpbmdUbygpIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1ib2R5XCI+e3sgcmVwbHlpbmdUbygpIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVwbHkuZW1pdCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZWNvcmRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjLWJhclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0biBkYW5nZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NhbmNlbCcpXCIgKGNsaWNrKT1cImNhbmNlbFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy10aW1lXCI+e3sgcmVjVGltZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZG9uZScpXCIgKGNsaWNrKT1cImZpbmlzaFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgICAgICAgQGlmIChwZW5kaW5nKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlbmRpbmctcm93XCI+XG4gICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBwZW5kaW5nKCk7IHRyYWNrIGF0dC5pZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoYXR0LmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpby1jaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkF1ZGlvRXJyb3IoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uQXVkaW9Mb2FkZWQoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGh1bWItcmVtb3ZlIGlubGluZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVtb3ZlJylcIiAoY2xpY2spPVwicmVtb3ZlUGVuZGluZyhhdHQuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxlXT1cImF0dC5raW5kID09PSAnZmlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0F0dGFjaG1lbnQoYXR0KVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ2aWV3QXR0YWNobWVudChhdHQpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdHQudXJsXCIgW2FsdF09XCJhdHQuZmlsZS5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRodW1iLW5hbWVcIj57eyBhdHQuZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRodW1iLXJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlUGVuZGluZyhhdHQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZWRpdGFibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWVtcHR5XT1cIiFib2R5KClcIlxuICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJkaWN0YXRpbmcoKSA/IHQoJ2xpc3RlbmluZycpIDogcGxhY2Vob2xkZXJUZXh0KClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGFjZWhvbGRlclRleHQoKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwic3luY0JvZHkoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb25zLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0F0dGFjaCgpKSB7XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdhdHRhY2gnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYWRkLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGhpZGRlbiAoY2hhbmdlKT1cIm9uRmlsZSgkZXZlbnQpXCIgYWNjZXB0PVwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93Vm9pY2VNZXNzYWdlKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCd2b2ljZScpXCIgKGNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInB1bHNlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd01pYygpICYmIGRpY3RhdGlvblN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJ0biBkaWN0YXRlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRpY3RhdGluZygpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2RpY3RhdGUnKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURpY3RhdGlvbigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWljLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2FuU2VuZCgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnc2VuZCcpXCIgKGNsaWNrKT1cIm9uU2VuZCgpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy11cC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLmNvbXBvc2VyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxMHB4IGNhbGMoOHB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1iYXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEpKTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucGVuZGluZy1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgICAgfVxuICAgICAgLnRodW1iIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogNzJweDtcbiAgICAgICAgaGVpZ2h0OiA3MnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC50aHVtYiBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC50aHVtYi5maWxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgfVxuICAgICAgLnRodW1iLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDAuNTYyNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC50aHVtYi1yZW1vdmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMnB4O1xuICAgICAgICByaWdodDogMnB4O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjU1KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLyogU2hlbGwgZXN0aWxvIE5vdGlvbjogZWRpdGFibGUgYXJyaWJhLCBmaWxhIGRlIGFjY2lvbmVzIGFiYWpvLiAqL1xuICAgICAgLnNoZWxsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICB9XG4gICAgICAuZWRpdGFibGUge1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAxODBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XG4gICAgICB9XG4gICAgICAuZWRpdGFibGUuaXMtZW1wdHk6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zLXNwYWNlciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAuaWNvbi1idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5pY29uLWJ0bi5kaWN0YXRlLmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGFuaW1hdGlvbjogZGljdGF0ZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuICAgICAgQGtleWZyYW1lcyBkaWN0YXRlLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0bjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cbiAgICAgIC5hdWRpby1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAuYXVkaW8tY2hpcCBhdWRpbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZS5pbmxpbmUge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucmVjLWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICB9XG4gICAgICAucmVjLWRvdCB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGFuaW1hdGlvbjogcmVjLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgICAucmVjLXRpbWUge1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWMtc3BhY2VyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIEBrZXlmcmFtZXMgcmVjLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q29tcG9zZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IG1heExlbmd0aCA9IGlucHV0PG51bWJlcj4oNDAwMCk7XG4gIHJlYWRvbmx5IHJlcGx5aW5nVG8gPSBpbnB1dDxNZXNzYWdlUmVwbHlUbyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBzaG93QXR0YWNoID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBCb3TDs24gZGUgZGljdGFkbyB2b3rihpJ0ZXh0byAoU3BlZWNoUmVjb2duaXRpb24pLiBOYXRpdm8gZW4gU2FmYXJpL2lPUyB5IENocm9tZS4gKi9cbiAgcmVhZG9ubHkgc2hvd01pYyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAvKiogQm90w7NuIGRlIG1lbnNhamUgZGUgdm96IChncmFiYXIgY2xpcCkuIE9wdC1pbjogbGEgcmVwcm9kdWNjacOzbiBjcm9zcy1kZXZpY2VcbiAgICogIHJlcXVpZXJlIHRyYW5zY29kZSBzZXJ2ZXItc2lkZSAocGVuZGllbnRlKSwgcG9yIGVzbyBkZWZhdWx0IGZhbHNlLiAqL1xuICByZWFkb25seSBzaG93Vm9pY2VNZXNzYWdlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHNlbmQgPSBvdXRwdXQ8Q2hhdENvbXBvc2VyU2VuZEV2ZW50PigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgY2FuY2VsUmVwbHkgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRhYmxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignZWRpdGFibGUnKTtcblxuICAvLyBEaWN0YWRvIHZveuKGknRleHRvIChXZWIgU3BlZWNoIEFQSSkuXG4gIHByb3RlY3RlZCByZWFkb25seSBkaWN0YXRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGljdGF0aW9uU3VwcG9ydGVkID0gISEoXG4gICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgU3BlZWNoUmVjb2duaXRpb24/OiB1bmtub3duIH0pLlNwZWVjaFJlY29nbml0aW9uIHx8XG4gICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgd2Via2l0U3BlZWNoUmVjb2duaXRpb24/OiB1bmtub3duIH0pLndlYmtpdFNwZWVjaFJlY29nbml0aW9uXG4gICk7XG4gIHByaXZhdGUgcmVjb2duaXRpb24/OiBTcGVlY2hSZWNvZ25pdGlvbkxpa2U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJvZHkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGVuZGluZyA9IHNpZ25hbDxQZW5kaW5nQXR0YWNobWVudFtdPihbXSk7XG4gIHByaXZhdGUgcGVuZGluZ0lkID0gMDtcblxuICAvLyBHcmFiYWNpw7NuIGRlIGF1ZGlvIChNZWRpYVJlY29yZGVyKS5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY29yZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVjU2Vjb25kcyA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSByZWNvcmRlcj86IE1lZGlhUmVjb3JkZXI7XG4gIHByaXZhdGUgcmVjU3RyZWFtPzogTWVkaWFTdHJlYW07XG4gIHByaXZhdGUgcmVjQ2h1bmtzOiBCbG9iW10gPSBbXTtcbiAgcHJpdmF0ZSByZWNUaW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjVGltZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHMgPSB0aGlzLnJlY1NlY29uZHMoKTtcbiAgICBjb25zdCBtbSA9IFN0cmluZyhNYXRoLmZsb29yKHMgLyA2MCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3Qgc3MgPSBTdHJpbmcocyAlIDYwKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBgJHttbX06JHtzc31gO1xuICB9KTtcblxuICBwcml2YXRlIGxhc3RUeXBpbmdFbWl0ID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnQ2hhdENvbXBvc2VyJywgQ0hBVF9DT01QT1NFUl9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5TZW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHJldHVybiAodC5sZW5ndGggPiAwICYmIHQubGVuZ3RoIDw9IHRoaXMubWF4TGVuZ3RoKCkpIHx8IHRoaXMucGVuZGluZygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwbGFjZWhvbGRlclRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcigpIHx8IHRoaXMuaTE4bi50KCdwbGFjZWhvbGRlcicsICdDaGF0Q29tcG9zZXInKTtcbiAgfSk7XG5cbiAgLyoqIExlZSBlbCB0ZXh0byBkZWwgY29udGVudGVkaXRhYmxlIGEgbGEgc2lnbmFsIGBib2R5YC4gKi9cbiAgcHJvdGVjdGVkIHN5bmNCb2R5KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIC8vIGlubmVyVGV4dCBjb25zZXJ2YSBsb3Mgc2FsdG9zIGRlIGzDrW5lYTsgcXVpdGEgZWwgXFxuIGZpbmFsIHF1ZSBlbCBuYXZlZ2Fkb3IgYWdyZWdhLlxuICAgIGNvbnN0IHRleHQgPSAoZWw/LmlubmVyVGV4dCA/PyAnJykucmVwbGFjZSgvXFxuJC8sICcnKTtcbiAgICB0aGlzLmJvZHkuc2V0KHRleHQpO1xuICAgIHRoaXMuZW1pdFR5cGluZ0RlYm91bmNlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vblNlbmQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGVnYXI6IHRleHRvIHBsYW5vIChzaW4gZm9ybWF0bykgKyBpbcOhZ2VuZXMgZGVsIHBvcnRhcGFwZWxlcy4gKi9cbiAgcHJvdGVjdGVkIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBkYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICBpZiAoIWRhdGEpIHJldHVybjtcblxuICAgIC8vIEltw6FnZW5lcyAoY2FwdHVyYXMgLyBjb3BpYXIgaW1hZ2VuKS5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgQXJyYXkuZnJvbShkYXRhLml0ZW1zKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUZXh0byBwbGFubyBpbnNlcnRhZG8gZW4gZWwgY2FyZXQgKGV2aXRhIHBlZ2FyIEhUTUwgY29uIGVzdGlsb3MpLlxuICAgIGNvbnN0IHRleHQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICBpZiAodGV4dCkge1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnLCBmYWxzZSwgdGV4dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY0JvZHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlbmQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wZW5kaW5nKCkubWFwKHAgPT4gcC5maWxlKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHRoaXMuc2VuZC5lbWl0KHsgdGV4dCwgZmlsZXMgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnBlbmRpbmcoKSkge1xuICAgICAgaWYgKGF0dC51cmwpIFVSTC5yZXZva2VPYmplY3RVUkwoYXR0LnVybCk7XG4gICAgfVxuICAgIHRoaXMucGVuZGluZy5zZXQoW10pO1xuICAgIHRoaXMuY2xlYXJFZGl0YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVkaXRhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbCkgZWwuaW5uZXJUZXh0ID0gJyc7XG4gICAgdGhpcy5ib2R5LnNldCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25GaWxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQZW5kaW5nKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBraW5kOiBQZW5kaW5nS2luZCA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgICAgPyAnaW1hZ2UnXG4gICAgICA6IGZpbGUudHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKVxuICAgICAgICA/ICdhdWRpbydcbiAgICAgICAgOiAnZmlsZSc7XG4gICAgY29uc3QgdXJsID0ga2luZCA9PT0gJ2ZpbGUnID8gdW5kZWZpbmVkIDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICB0aGlzLnBlbmRpbmcudXBkYXRlKGFyciA9PiBbLi4uYXJyLCB7IGlkOiB0aGlzLnBlbmRpbmdJZCsrLCBmaWxlLCB1cmwsIGtpbmQgfV0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVBlbmRpbmcoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZy51cGRhdGUoYXJyID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gYXJyLmZpbmQoYSA9PiBhLmlkID09PSBpZCk7XG4gICAgICBpZiAoZm91bmQ/LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChmb3VuZC51cmwpO1xuICAgICAgcmV0dXJuIGFyci5maWx0ZXIoYSA9PiBhLmlkICE9PSBpZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQWJyZSBlbCBhZGp1bnRvIHN0YWdlZCBlbiBlbCB2aXNvciBkZSBtZWRpb3MgKGltYWdlbiBmdWxsIC8gZGVzY2FyZ2EpLiAqL1xuICBwcm90ZWN0ZWQgdmlld0F0dGFjaG1lbnQoYXR0OiBQZW5kaW5nQXR0YWNobWVudCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbC5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHVybDogYXR0LnVybCwgbmFtZTogYXR0LmZpbGUubmFtZSwgbWltZVR5cGU6IGF0dC5maWxlLnR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFR5cGluZ0RlYm91bmNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0VHlwaW5nRW1pdCA+IDIwMDApIHtcbiAgICAgIHRoaXMubGFzdFR5cGluZ0VtaXQgPSBub3c7XG4gICAgICB0aGlzLnR5cGluZy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSA4pSAIEdyYWJhY2nDs24gZGUgYXVkaW8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBwaWNrQXVkaW9NaW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFsnYXVkaW8vd2VibTtjb2RlY3M9b3B1cycsICdhdWRpby93ZWJtJywgJ2F1ZGlvL21wNCddO1xuICAgIGNvbnN0IE1SID0gKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgTWVkaWFSZWNvcmRlcj86IHR5cGVvZiBNZWRpYVJlY29yZGVyIH0pLk1lZGlhUmVjb3JkZXI7XG4gICAgaWYgKCFNUj8uaXNUeXBlU3VwcG9ydGVkKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXMuZmluZChjID0+IE1SLmlzVHlwZVN1cHBvcnRlZChjKSkgPz8gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RhcnRSZWNvcmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVjb3JkaW5nKCkpIHJldHVybjtcbiAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXM/LmdldFVzZXJNZWRpYSB8fCAhKCdNZWRpYVJlY29yZGVyJyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aGlzLnZvaWNlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICB0aGlzLnJlY1N0cmVhbSA9IHN0cmVhbTtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5waWNrQXVkaW9NaW1lKCk7XG4gICAgICB0aGlzLnJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBtaW1lVHlwZSA/IHsgbWltZVR5cGUgfSA6IHVuZGVmaW5lZCk7XG4gICAgICBjb25zb2xlLmxvZygnW0NoYXRDb21wb3Nlcl0gcmVjb3JkaW5nIHN0YXJ0Jywge1xuICAgICAgICBwaWNrZWQ6IG1pbWVUeXBlIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICByZWNvcmRlck1pbWVUeXBlOiB0aGlzLnJlY29yZGVyLm1pbWVUeXBlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgICAgdGhpcy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBlID0+IHtcbiAgICAgICAgaWYgKGUuZGF0YS5zaXplID4gMCkgdGhpcy5yZWNDaHVua3MucHVzaChlLmRhdGEpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgIHRoaXMucmVjb3JkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMucmVjU2Vjb25kcy5zZXQoMCk7XG4gICAgICB0aGlzLnJlY1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5yZWNTZWNvbmRzLnVwZGF0ZShzID0+IHMgKyAxKSwgMTAwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyYSBsYSBncmFiYWNpw7NuIHkgbGEgc3RhZ2VhIGNvbW8gYWRqdW50byBwZW5kaWVudGUgKGNvbiBwcmV2aWV3IGRlIGF1ZGlvKS4gKi9cbiAgcHJvdGVjdGVkIGZpbmlzaFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmICghcmVjKSB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVjLm9uc3RvcCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSByZWMubWltZVR5cGUgfHwgJ2F1ZGlvL3dlYm0nO1xuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucmVjU2Vjb25kcygpICogMTAwMDtcbiAgICAgIGxldCBibG9iID0gbmV3IEJsb2IodGhpcy5yZWNDaHVua3MsIHsgdHlwZSB9KTtcblxuICAgICAgLy8gTWVkaWFSZWNvcmRlciBlc2NyaWJlIFdlYk0gU0lOIGVsIGhlYWRlciBkZSBkdXJhY2nDs24gKFNlZ21lbnQvRHVyYXRpb24pIOKGklxuICAgICAgLy8gZWwgPGF1ZGlvPiBsbyByZWNoYXphIGNvbiBTUkNfTk9UX1NVUFBPUlRFRCBhdW5xdWUgZWwgY29kZWMgZXN0w6kgc29wb3J0YWRvLlxuICAgICAgLy8gZml4LXdlYm0tZHVyYXRpb24gcGFyY2hlYSBlbCBoZWFkZXIgY29uIGxhIGR1cmFjacOzbiByZWFsIOKGkiByZXByb2R1Y2libGUuXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnd2VibScpICYmIGJsb2Iuc2l6ZSA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBibG9iID0gYXdhaXQgZml4V2VibUR1cmF0aW9uKGJsb2IsIGR1cmF0aW9uTXMsIHsgbG9nZ2VyOiBmYWxzZSB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hhdENvbXBvc2VyXSBmaXhXZWJtRHVyYXRpb24gZmFsbMOzLCBzZSB1c2EgZWwgYmxvYiBjcnVkbycsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXh0ID0gdHlwZS5pbmNsdWRlcygnbXA0JykgPyAnbTRhJyA6ICd3ZWJtJztcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGBhdWRpby0ke3RoaXMucmVjU2Vjb25kcygpfXMuJHtleHR9YCwgeyB0eXBlIH0pO1xuICAgICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIHJlY29yZGVkJywge1xuICAgICAgICB0eXBlLFxuICAgICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICAgIGNodW5rczogdGhpcy5yZWNDaHVua3MubGVuZ3RoLFxuICAgICAgICBjYW5QbGF5V2VibTogdGhpcy5jYW5QbGF5KCdhdWRpby93ZWJtJyksXG4gICAgICAgIGNhblBsYXlNcDQ6IHRoaXMuY2FuUGxheSgnYXVkaW8vbXA0JyksXG4gICAgICB9KTtcbiAgICAgIGlmIChibG9iLnNpemUgPiAwKSB0aGlzLmFkZFBlbmRpbmcoZmlsZSk7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9O1xuICAgIHJlYy5zdG9wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuY2VsUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlYyA9IHRoaXMucmVjb3JkZXI7XG4gICAgaWYgKHJlYykgcmVjLm9uc3RvcCA9ICgpID0+IHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIHRyeSB7XG4gICAgICByZWM/LnN0b3AoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIH1cbiAgICBpZiAoIXJlYykgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjVGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy5yZWNUaW1lcik7XG4gICAgdGhpcy5yZWNUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY1N0cmVhbT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0ID0+IHQuc3RvcCgpKTtcbiAgICB0aGlzLnJlY1N0cmVhbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY29yZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVjQ2h1bmtzID0gW107XG4gICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlY1NlY29uZHMuc2V0KDApO1xuICB9XG5cbiAgLyoqIERpYWduw7NzdGljbzogZWwgbmF2ZWdhZG9yIG5vIHB1ZG8gcmVwcm9kdWNpciBlbCBhZGp1bnRvIGRlIGF1ZGlvLiAqL1xuICBwcm90ZWN0ZWQgb25BdWRpb0Vycm9yKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc3QgZXJyID0gZWwuZXJyb3I7XG4gICAgY29uc3QgY29kZXM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgICAxOiAnQUJPUlRFRCcsXG4gICAgICAyOiAnTkVUV09SSycsXG4gICAgICAzOiAnREVDT0RFJyxcbiAgICAgIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcsXG4gICAgfTtcbiAgICBjb25zb2xlLmVycm9yKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyBwbGF5IGVycm9yJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgIGNvZGU6IGVycj8uY29kZSxcbiAgICAgIHJlYXNvbjogZXJyID8gY29kZXNbZXJyLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgbWVzc2FnZTogZXJyPy5tZXNzYWdlLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiB0aGlzLmNhblBsYXkoZmlsZS50eXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkF1ZGlvTG9hZGVkKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIGxvYWRlZG1ldGFkYXRhJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZHVyYXRpb246IGVsLmR1cmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIMK/RWwgbmF2ZWdhZG9yIGRlY2xhcmEgcXVlIHB1ZWRlIHJlcHJvZHVjaXIgZXN0ZSB0aXBvPyAnJyAvICdtYXliZScgLyAncHJvYmFibHknLiAqL1xuICBwcml2YXRlIGNhblBsYXkodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykuY2FuUGxheVR5cGUodHlwZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIDilIAgRGljdGFkbyB2b3rihpJ0ZXh0byAoV2ViIFNwZWVjaCBBUEkpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIHByb3RlY3RlZCB0b2dnbGVEaWN0YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGljdGF0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3RvcERpY3RhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGljdGF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydERpY3RhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBDdG9yID1cbiAgICAgICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IFNwZWVjaFJlY29nbml0aW9uPzogbmV3ICgpID0+IFNwZWVjaFJlY29nbml0aW9uTGlrZSB9KS5TcGVlY2hSZWNvZ25pdGlvbiB8fFxuICAgICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgd2Via2l0U3BlZWNoUmVjb2duaXRpb24/OiBuZXcgKCkgPT4gU3BlZWNoUmVjb2duaXRpb25MaWtlIH0pLndlYmtpdFNwZWVjaFJlY29nbml0aW9uO1xuICAgIGlmICghQ3RvcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjID0gbmV3IEN0b3IoKTtcbiAgICByZWMubGFuZyA9IHRoaXMuaTE4bi5sYW5nKCkgPT09ICdlbicgPyAnZW4tVVMnIDogJ2VzLUNMJztcbiAgICAvLyBjb250aW51b3VzPWZhbHNlOiB1bmEgZnJhc2UgeSBjb3J0YSBzb2xhIGFsIHBhdXNhci4gY29udGludW91cz10cnVlIGRlamFiYVxuICAgIC8vIGVsIHJlY29ub2NpbWllbnRvIGFiaWVydG8gaW5kZWZpbmlkYW1lbnRlIHkgZW4gYWxndW5vcyBuYXZlZ2Fkb3JlcyBjb2xnYWJhLlxuICAgIHJlYy5jb250aW51b3VzID0gZmFsc2U7XG4gICAgcmVjLmludGVyaW1SZXN1bHRzID0gZmFsc2U7IC8vIHNvbG8gcmVzdWx0YWRvcyBmaW5hbGVzIOKGkiBpbnNlcnRhbW9zIHRleHRvIGxpbXBpb1xuXG4gICAgcmVjLm9ucmVzdWx0ID0gZXZlbnQgPT4ge1xuICAgICAgbGV0IGZpbmFsVGV4dCA9ICcnO1xuICAgICAgZm9yIChsZXQgaSA9IGV2ZW50LnJlc3VsdEluZGV4OyBpIDwgZXZlbnQucmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByID0gZXZlbnQucmVzdWx0c1tpXTtcbiAgICAgICAgaWYgKHIuaXNGaW5hbCkgZmluYWxUZXh0ICs9IHJbMF0udHJhbnNjcmlwdDtcbiAgICAgIH1cbiAgICAgIGlmIChmaW5hbFRleHQpIHRoaXMuaW5zZXJ0RGljdGF0ZWQoZmluYWxUZXh0KTtcbiAgICB9O1xuICAgIHJlYy5vbmVycm9yID0gKCkgPT4gdGhpcy5zdG9wRGljdGF0aW9uKCk7XG4gICAgcmVjLm9uZW5kID0gKCkgPT4ge1xuICAgICAgLy8gRWwgcmVjb25vY2ltaWVudG8gcHVlZGUgY29ydGFyc2Ugc29sbzsgcmVmbGVqYW1vcyBlbCBlc3RhZG8uXG4gICAgICB0aGlzLmRpY3RhdGluZy5zZXQoZmFsc2UpO1xuICAgIH07XG5cbiAgICB0aGlzLnJlY29nbml0aW9uID0gcmVjO1xuICAgIHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRyeSB7XG4gICAgICByZWMuc3RhcnQoKTtcbiAgICAgIHRoaXMuZGljdGF0aW5nLnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuZGljdGF0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRGljdGF0aW9uKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlY29nbml0aW9uPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBub29wICovXG4gICAgfVxuICAgIHRoaXMuZGljdGF0aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvKiogSW5zZXJ0YSBlbCB0ZXh0byBkaWN0YWRvIGFsIGZpbmFsIGRlbCBlZGl0YWJsZSB5IHNpbmNyb25pemEgZWwgYm9keS4gKi9cbiAgcHJpdmF0ZSBpbnNlcnREaWN0YXRlZCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudCA9IGVsLmlubmVyVGV4dC5yZXBsYWNlKC9cXG4kLywgJycpO1xuICAgIGNvbnN0IHNlcCA9IGN1cnJlbnQgJiYgIWN1cnJlbnQuZW5kc1dpdGgoJyAnKSA/ICcgJyA6ICcnO1xuICAgIGVsLmlubmVyVGV4dCA9IGN1cnJlbnQgKyBzZXAgKyB0ZXh0O1xuICAgIC8vIENvbG9jYSBlbCBjYXJldCBhbCBmaW5hbC5cbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsKTtcbiAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIHNlbD8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsPy5hZGRSYW5nZShyYW5nZSk7XG4gICAgdGhpcy5ib2R5LnNldChlbC5pbm5lclRleHQucmVwbGFjZSgvXFxuJC8sICcnKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWNvZ25pdGlvbj8uYWJvcnQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9XG4gICAgZm9yIChjb25zdCBhdHQgb2YgdGhpcy5wZW5kaW5nKCkpIHtcbiAgICAgIGlmIChhdHQudXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGF0dC51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDaGF0Q29tcG9zZXInKTtcbiAgfVxufVxuIl19
664
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFFNUcsUUFBUSxDQUFDO0lBQ1AsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osZUFBZTtJQUNmLFVBQVU7SUFDVixZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRTtRQUNGLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsSUFBSSxFQUFFLFFBQVE7UUFD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QUksQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLFVBQVU7UUFDWixDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQW5ZVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwrdENBbld0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUhULG8rSEF0SFMsWUFBWSwrQkFBRSxPQUFPOzs0RkFvV3BCLHFCQUFxQjtrQkF2V2pDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFIVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY2hlY2ttYXJrT3V0bGluZSxcbiAgY2xvc2VPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIG1pY091dGxpbmUsXG4gIHB1bHNlT3V0bGluZSxcbiAgYXJyb3dVcE91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgZml4V2VibUR1cmF0aW9uIGZyb20gJ2ZpeC13ZWJtLWR1cmF0aW9uJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1lc3NhZ2VSZXBseVRvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhdC90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvbWVkaWEtdmlld2VyLW1vZGFsL21lZGlhLXZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNoZWNrbWFya091dGxpbmUsXG4gIGNsb3NlT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxuICBtaWNPdXRsaW5lLFxuICBwdWxzZU91dGxpbmUsXG4gIGFycm93VXBPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59KTtcblxuY29uc3QgQ0hBVF9DT01QT1NFUl9JMThOID0ge1xuICBlczoge1xuICAgIHBsYWNlaG9sZGVyOiAnRXNjcmliZSB1biBtZW5zYWplJyxcbiAgICBzZW5kOiAnRW52aWFyJyxcbiAgICBhdHRhY2g6ICdBZGp1bnRhcicsXG4gICAgdm9pY2U6ICdNZW5zYWplIGRlIHZveicsXG4gICAgZGljdGF0ZTogJ0RpY3RhcicsXG4gICAgbGlzdGVuaW5nOiAnRXNjdWNoYW5kb+KApicsXG4gICAgZG9uZTogJ0xpc3RvJyxcbiAgICByZXBseWluZ1RvOiAnUmVzcG9uZGllbmRvIGEnLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICByZW1vdmU6ICdRdWl0YXInLFxuICB9LFxuICBlbjoge1xuICAgIHBsYWNlaG9sZGVyOiAnV3JpdGUgYSBtZXNzYWdlJyxcbiAgICBzZW5kOiAnU2VuZCcsXG4gICAgYXR0YWNoOiAnQXR0YWNoJyxcbiAgICB2b2ljZTogJ1ZvaWNlIG1lc3NhZ2UnLFxuICAgIGRpY3RhdGU6ICdEaWN0YXRlJyxcbiAgICBsaXN0ZW5pbmc6ICdMaXN0ZW5pbmfigKYnLFxuICAgIGRvbmU6ICdEb25lJyxcbiAgICByZXBseWluZ1RvOiAnUmVwbHlpbmcgdG8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgcmVtb3ZlOiAnUmVtb3ZlJyxcbiAgfSxcbn07XG5cbi8qKiBUaXBvcyBtw61uaW1vcyBkZSBsYSBXZWIgU3BlZWNoIEFQSSAobm8gZXN0w6FuIGVuIGxpYi5kb20gZXN0w6FuZGFyKS4gKi9cbmludGVyZmFjZSBTcGVlY2hSZWNvZ25pdGlvbkxpa2Uge1xuICBsYW5nOiBzdHJpbmc7XG4gIGNvbnRpbnVvdXM6IGJvb2xlYW47XG4gIGludGVyaW1SZXN1bHRzOiBib29sZWFuO1xuICBzdGFydCgpOiB2b2lkO1xuICBzdG9wKCk6IHZvaWQ7XG4gIGFib3J0KCk6IHZvaWQ7XG4gIG9ucmVzdWx0OlxuICAgIHwgKChldmVudDogeyByZXN1bHRJbmRleDogbnVtYmVyOyByZXN1bHRzOiBBcnJheUxpa2U8eyAwOiB7IHRyYW5zY3JpcHQ6IHN0cmluZyB9OyBpc0ZpbmFsOiBib29sZWFuIH0+IH0pID0+IHZvaWQpXG4gICAgfCBudWxsO1xuICBvbmVuZDogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25lcnJvcjogKChldmVudDogeyBlcnJvcjogc3RyaW5nIH0pID0+IHZvaWQpIHwgbnVsbDtcbn1cblxudHlwZSBQZW5kaW5nS2luZCA9ICdpbWFnZScgfCAnYXVkaW8nIHwgJ2ZpbGUnO1xuXG5pbnRlcmZhY2UgUGVuZGluZ0F0dGFjaG1lbnQge1xuICBpZDogbnVtYmVyO1xuICBmaWxlOiBGaWxlO1xuICB1cmw/OiBzdHJpbmc7XG4gIGtpbmQ6IFBlbmRpbmdLaW5kO1xufVxuXG4vKiogRXZlbnRvIGRlIGVudsOtbzogdGV4dG8gKGNhcHRpb24pICsgYWRqdW50b3Mgc3RhZ2VkLiBmaWxlcyB2YWPDrW8gPT4gc29sbyB0ZXh0by4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbXBvc2VyU2VuZEV2ZW50IHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaWxlczogRmlsZVtdO1xufVxuXG4vKipcbiAqIHZhbC1jaGF0LWNvbXBvc2VyIOKAlCBiYXJyYSBkZSByZWRhY2Npw7NuIGVzdGlsbyBOb3Rpb24vQ2xhdWRlIChmdWxsIGN1c3RvbSkuXG4gKlxuICogRWwgZWRpdG9yIGVzIHVuIGBjb250ZW50ZWRpdGFibGVgIChOTyBpb24tdGV4dGFyZWEpOiBjcmVjZSBoYXN0YSB1biBtYXgtaGVpZ2h0LFxuICogc29wb3J0YSBwZWdhciB0ZXh0byBwbGFubyBlIGltw6FnZW5lcyBkZWwgcG9ydGFwYXBlbGVzLCBFbnRlciBlbnbDrWEgLyBTaGlmdCtFbnRlclxuICogc2FsdGEgbMOtbmVhLiBEZWJham8sIHVuYSBmaWxhIGRlIGFjY2lvbmVzIHByb3BpYXM6IGFkanVudGFyICgrKSwgbWljL2Vudmlhci5cbiAqIExvcyBhZGp1bnRvcyAoYm90w7NuIC8gcGVnYXIgLyBhdWRpbyBncmFiYWRvKSBzZSBhY3VtdWxhbiBjb21vIG1pbmlhdHVyYXMgZGVcbiAqIFBSRVZJRVcgeSBzZSBtYW5kYW4gZW4gVU4gc29sbyBldmVudG8gYHNlbmQge3RleHQsIGZpbGVzfWAgKGNhcHRpb24gKyBhZGp1bnRvcykuXG4gKlxuICogUGVuc2FkbyBwYXJhIHZpdmlyIGVuIHVuIGNvbnRlbmVkb3IgZmlqbyBhbCBmb25kbyBkZWwgdmlld3BvcnQgKGVsIGNvbnN1bWVyXG4gKiBhbmNsYSBsYSBwb3NpY2nDs24pLiBObyBpbmNsdXllIGVtb2ppIHBpY2tlciAoZWwgdGVjbGFkbyBkZWwgc2lzdGVtYSBsbyB0cmFlKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYXQtY29tcG9zZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29tcG9zZXJcIj5cbiAgICAgIEBpZiAocmVwbHlpbmdUbygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1iYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1uYW1lXCI+e3sgcmVwbHlpbmdUbygpIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1ib2R5XCI+e3sgcmVwbHlpbmdUbygpIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVwbHkuZW1pdCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZWNvcmRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjLWJhclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0biBkYW5nZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NhbmNlbCcpXCIgKGNsaWNrKT1cImNhbmNlbFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy10aW1lXCI+e3sgcmVjVGltZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZG9uZScpXCIgKGNsaWNrKT1cImZpbmlzaFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgICAgICAgQGlmIChwZW5kaW5nKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlbmRpbmctcm93XCI+XG4gICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBwZW5kaW5nKCk7IHRyYWNrIGF0dC5pZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoYXR0LmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpby1jaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkF1ZGlvRXJyb3IoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uQXVkaW9Mb2FkZWQoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGh1bWItcmVtb3ZlIGlubGluZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVtb3ZlJylcIiAoY2xpY2spPVwicmVtb3ZlUGVuZGluZyhhdHQuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxlXT1cImF0dC5raW5kID09PSAnZmlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0F0dGFjaG1lbnQoYXR0KVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ2aWV3QXR0YWNobWVudChhdHQpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdHQudXJsXCIgW2FsdF09XCJhdHQuZmlsZS5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRodW1iLW5hbWVcIj57eyBhdHQuZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRodW1iLXJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlUGVuZGluZyhhdHQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZWRpdGFibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWVtcHR5XT1cIiFib2R5KClcIlxuICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJkaWN0YXRpbmcoKSA/IHQoJ2xpc3RlbmluZycpIDogcGxhY2Vob2xkZXJUZXh0KClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGFjZWhvbGRlclRleHQoKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwic3luY0JvZHkoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb25zLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0F0dGFjaCgpKSB7XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdhdHRhY2gnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYWRkLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGhpZGRlbiAoY2hhbmdlKT1cIm9uRmlsZSgkZXZlbnQpXCIgYWNjZXB0PVwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaG93Vm9pY2VNZXNzYWdlKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCd2b2ljZScpXCIgKGNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInB1bHNlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd01pYygpICYmIGRpY3RhdGlvblN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJ0biBkaWN0YXRlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRpY3RhdGluZygpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2RpY3RhdGUnKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURpY3RhdGlvbigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWljLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2FuU2VuZCgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnc2VuZCcpXCIgKGNsaWNrKT1cIm9uU2VuZCgpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy11cC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLmNvbXBvc2VyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXZhbC1jaGF0LWNvbXBvc2VyLXBhZGRpbmcsIDEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS12YWwtY2hhdC1jb21wb3Nlci1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLnJlcGx5LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJvZHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5wZW5kaW5nLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgICB9XG4gICAgICAudGh1bWIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA3MnB4O1xuICAgICAgICBoZWlnaHQ6IDcycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEpKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLnRodW1iIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLnRodW1iLmZpbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICB9XG4gICAgICAudGh1bWItbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41NjI1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIHJpZ2h0OiAycHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAvKiBTaGVsbCBlc3RpbG8gTm90aW9uOiBlZGl0YWJsZSBhcnJpYmEsIGZpbGEgZGUgYWNjaW9uZXMgYWJham8uICovXG4gICAgICAuc2hlbGwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWNoYXQtaW5wdXQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXZhbC1jaGF0LWlucHV0LWJvcmRlciwgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS12YWwtY2hhdC1pbnB1dC1yYWRpdXMsIDI0cHgpO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgICB9XG4gICAgICAuZWRpdGFibGUge1xuICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAxODBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuICAgICAgfVxuICAgICAgLmVkaXRhYmxlLmlzLWVtcHR5OjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xkZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucy1zcGFjZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cbiAgICAgIC5pY29uLWJ0bjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAuaWNvbi1idG4uZGljdGF0ZS5hY3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBhbmltYXRpb246IGRpY3RhdGUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cbiAgICAgIEBrZXlmcmFtZXMgZGljdGF0ZS1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuc2VuZC1idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWNoYXQtc2VuZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tY29sb3ItZGFyaywgIzExMSkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdmFsLWNoYXQtc2VuZC1jb2xvciwgI2ZmZik7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0bjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cbiAgICAgIC5hdWRpby1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAuYXVkaW8tY2hpcCBhdWRpbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZS5pbmxpbmUge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucmVjLWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICB9XG4gICAgICAucmVjLWRvdCB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGFuaW1hdGlvbjogcmVjLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgICAucmVjLXRpbWUge1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWMtc3BhY2VyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIEBrZXlmcmFtZXMgcmVjLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q29tcG9zZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IG1heExlbmd0aCA9IGlucHV0PG51bWJlcj4oNDAwMCk7XG4gIHJlYWRvbmx5IHJlcGx5aW5nVG8gPSBpbnB1dDxNZXNzYWdlUmVwbHlUbyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBzaG93QXR0YWNoID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBCb3TDs24gZGUgZGljdGFkbyB2b3rihpJ0ZXh0byAoU3BlZWNoUmVjb2duaXRpb24pLiBOYXRpdm8gZW4gU2FmYXJpL2lPUyB5IENocm9tZS4gKi9cbiAgcmVhZG9ubHkgc2hvd01pYyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAvKiogQm90w7NuIGRlIG1lbnNhamUgZGUgdm96IChncmFiYXIgY2xpcCkuIE9wdC1pbjogbGEgcmVwcm9kdWNjacOzbiBjcm9zcy1kZXZpY2VcbiAgICogIHJlcXVpZXJlIHRyYW5zY29kZSBzZXJ2ZXItc2lkZSAocGVuZGllbnRlKSwgcG9yIGVzbyBkZWZhdWx0IGZhbHNlLiAqL1xuICByZWFkb25seSBzaG93Vm9pY2VNZXNzYWdlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHNlbmQgPSBvdXRwdXQ8Q2hhdENvbXBvc2VyU2VuZEV2ZW50PigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgY2FuY2VsUmVwbHkgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRhYmxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignZWRpdGFibGUnKTtcblxuICAvLyBEaWN0YWRvIHZveuKGknRleHRvIChXZWIgU3BlZWNoIEFQSSkuXG4gIHByb3RlY3RlZCByZWFkb25seSBkaWN0YXRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGljdGF0aW9uU3VwcG9ydGVkID0gISEoXG4gICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgU3BlZWNoUmVjb2duaXRpb24/OiB1bmtub3duIH0pLlNwZWVjaFJlY29nbml0aW9uIHx8XG4gICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgd2Via2l0U3BlZWNoUmVjb2duaXRpb24/OiB1bmtub3duIH0pLndlYmtpdFNwZWVjaFJlY29nbml0aW9uXG4gICk7XG4gIHByaXZhdGUgcmVjb2duaXRpb24/OiBTcGVlY2hSZWNvZ25pdGlvbkxpa2U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJvZHkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGVuZGluZyA9IHNpZ25hbDxQZW5kaW5nQXR0YWNobWVudFtdPihbXSk7XG4gIHByaXZhdGUgcGVuZGluZ0lkID0gMDtcblxuICAvLyBHcmFiYWNpw7NuIGRlIGF1ZGlvIChNZWRpYVJlY29yZGVyKS5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY29yZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVjU2Vjb25kcyA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSByZWNvcmRlcj86IE1lZGlhUmVjb3JkZXI7XG4gIHByaXZhdGUgcmVjU3RyZWFtPzogTWVkaWFTdHJlYW07XG4gIHByaXZhdGUgcmVjQ2h1bmtzOiBCbG9iW10gPSBbXTtcbiAgcHJpdmF0ZSByZWNUaW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjVGltZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHMgPSB0aGlzLnJlY1NlY29uZHMoKTtcbiAgICBjb25zdCBtbSA9IFN0cmluZyhNYXRoLmZsb29yKHMgLyA2MCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3Qgc3MgPSBTdHJpbmcocyAlIDYwKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBgJHttbX06JHtzc31gO1xuICB9KTtcblxuICBwcml2YXRlIGxhc3RUeXBpbmdFbWl0ID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnQ2hhdENvbXBvc2VyJywgQ0hBVF9DT01QT1NFUl9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5TZW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHJldHVybiAodC5sZW5ndGggPiAwICYmIHQubGVuZ3RoIDw9IHRoaXMubWF4TGVuZ3RoKCkpIHx8IHRoaXMucGVuZGluZygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwbGFjZWhvbGRlclRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcigpIHx8IHRoaXMuaTE4bi50KCdwbGFjZWhvbGRlcicsICdDaGF0Q29tcG9zZXInKTtcbiAgfSk7XG5cbiAgLyoqIExlZSBlbCB0ZXh0byBkZWwgY29udGVudGVkaXRhYmxlIGEgbGEgc2lnbmFsIGBib2R5YC4gKi9cbiAgcHJvdGVjdGVkIHN5bmNCb2R5KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIC8vIGlubmVyVGV4dCBjb25zZXJ2YSBsb3Mgc2FsdG9zIGRlIGzDrW5lYTsgcXVpdGEgZWwgXFxuIGZpbmFsIHF1ZSBlbCBuYXZlZ2Fkb3IgYWdyZWdhLlxuICAgIGNvbnN0IHRleHQgPSAoZWw/LmlubmVyVGV4dCA/PyAnJykucmVwbGFjZSgvXFxuJC8sICcnKTtcbiAgICB0aGlzLmJvZHkuc2V0KHRleHQpO1xuICAgIHRoaXMuZW1pdFR5cGluZ0RlYm91bmNlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vblNlbmQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGVnYXI6IHRleHRvIHBsYW5vIChzaW4gZm9ybWF0bykgKyBpbcOhZ2VuZXMgZGVsIHBvcnRhcGFwZWxlcy4gKi9cbiAgcHJvdGVjdGVkIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBkYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICBpZiAoIWRhdGEpIHJldHVybjtcblxuICAgIC8vIEltw6FnZW5lcyAoY2FwdHVyYXMgLyBjb3BpYXIgaW1hZ2VuKS5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgQXJyYXkuZnJvbShkYXRhLml0ZW1zKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUZXh0byBwbGFubyBpbnNlcnRhZG8gZW4gZWwgY2FyZXQgKGV2aXRhIHBlZ2FyIEhUTUwgY29uIGVzdGlsb3MpLlxuICAgIGNvbnN0IHRleHQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICBpZiAodGV4dCkge1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnLCBmYWxzZSwgdGV4dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY0JvZHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlbmQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wZW5kaW5nKCkubWFwKHAgPT4gcC5maWxlKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHRoaXMuc2VuZC5lbWl0KHsgdGV4dCwgZmlsZXMgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnBlbmRpbmcoKSkge1xuICAgICAgaWYgKGF0dC51cmwpIFVSTC5yZXZva2VPYmplY3RVUkwoYXR0LnVybCk7XG4gICAgfVxuICAgIHRoaXMucGVuZGluZy5zZXQoW10pO1xuICAgIHRoaXMuY2xlYXJFZGl0YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVkaXRhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbCkgZWwuaW5uZXJUZXh0ID0gJyc7XG4gICAgdGhpcy5ib2R5LnNldCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25GaWxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQZW5kaW5nKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBraW5kOiBQZW5kaW5nS2luZCA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgICAgPyAnaW1hZ2UnXG4gICAgICA6IGZpbGUudHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKVxuICAgICAgICA/ICdhdWRpbydcbiAgICAgICAgOiAnZmlsZSc7XG4gICAgY29uc3QgdXJsID0ga2luZCA9PT0gJ2ZpbGUnID8gdW5kZWZpbmVkIDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICB0aGlzLnBlbmRpbmcudXBkYXRlKGFyciA9PiBbLi4uYXJyLCB7IGlkOiB0aGlzLnBlbmRpbmdJZCsrLCBmaWxlLCB1cmwsIGtpbmQgfV0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVBlbmRpbmcoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZy51cGRhdGUoYXJyID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gYXJyLmZpbmQoYSA9PiBhLmlkID09PSBpZCk7XG4gICAgICBpZiAoZm91bmQ/LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChmb3VuZC51cmwpO1xuICAgICAgcmV0dXJuIGFyci5maWx0ZXIoYSA9PiBhLmlkICE9PSBpZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQWJyZSBlbCBhZGp1bnRvIHN0YWdlZCBlbiBlbCB2aXNvciBkZSBtZWRpb3MgKGltYWdlbiBmdWxsIC8gZGVzY2FyZ2EpLiAqL1xuICBwcm90ZWN0ZWQgdmlld0F0dGFjaG1lbnQoYXR0OiBQZW5kaW5nQXR0YWNobWVudCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbC5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHVybDogYXR0LnVybCwgbmFtZTogYXR0LmZpbGUubmFtZSwgbWltZVR5cGU6IGF0dC5maWxlLnR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFR5cGluZ0RlYm91bmNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0VHlwaW5nRW1pdCA+IDIwMDApIHtcbiAgICAgIHRoaXMubGFzdFR5cGluZ0VtaXQgPSBub3c7XG4gICAgICB0aGlzLnR5cGluZy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSA4pSAIEdyYWJhY2nDs24gZGUgYXVkaW8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBwaWNrQXVkaW9NaW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFsnYXVkaW8vd2VibTtjb2RlY3M9b3B1cycsICdhdWRpby93ZWJtJywgJ2F1ZGlvL21wNCddO1xuICAgIGNvbnN0IE1SID0gKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgTWVkaWFSZWNvcmRlcj86IHR5cGVvZiBNZWRpYVJlY29yZGVyIH0pLk1lZGlhUmVjb3JkZXI7XG4gICAgaWYgKCFNUj8uaXNUeXBlU3VwcG9ydGVkKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXMuZmluZChjID0+IE1SLmlzVHlwZVN1cHBvcnRlZChjKSkgPz8gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RhcnRSZWNvcmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVjb3JkaW5nKCkpIHJldHVybjtcbiAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXM/LmdldFVzZXJNZWRpYSB8fCAhKCdNZWRpYVJlY29yZGVyJyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aGlzLnZvaWNlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICB0aGlzLnJlY1N0cmVhbSA9IHN0cmVhbTtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5waWNrQXVkaW9NaW1lKCk7XG4gICAgICB0aGlzLnJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBtaW1lVHlwZSA/IHsgbWltZVR5cGUgfSA6IHVuZGVmaW5lZCk7XG4gICAgICBjb25zb2xlLmxvZygnW0NoYXRDb21wb3Nlcl0gcmVjb3JkaW5nIHN0YXJ0Jywge1xuICAgICAgICBwaWNrZWQ6IG1pbWVUeXBlIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICByZWNvcmRlck1pbWVUeXBlOiB0aGlzLnJlY29yZGVyLm1pbWVUeXBlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgICAgdGhpcy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBlID0+IHtcbiAgICAgICAgaWYgKGUuZGF0YS5zaXplID4gMCkgdGhpcy5yZWNDaHVua3MucHVzaChlLmRhdGEpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgIHRoaXMucmVjb3JkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMucmVjU2Vjb25kcy5zZXQoMCk7XG4gICAgICB0aGlzLnJlY1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5yZWNTZWNvbmRzLnVwZGF0ZShzID0+IHMgKyAxKSwgMTAwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyYSBsYSBncmFiYWNpw7NuIHkgbGEgc3RhZ2VhIGNvbW8gYWRqdW50byBwZW5kaWVudGUgKGNvbiBwcmV2aWV3IGRlIGF1ZGlvKS4gKi9cbiAgcHJvdGVjdGVkIGZpbmlzaFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmICghcmVjKSB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVjLm9uc3RvcCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSByZWMubWltZVR5cGUgfHwgJ2F1ZGlvL3dlYm0nO1xuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucmVjU2Vjb25kcygpICogMTAwMDtcbiAgICAgIGxldCBibG9iID0gbmV3IEJsb2IodGhpcy5yZWNDaHVua3MsIHsgdHlwZSB9KTtcblxuICAgICAgLy8gTWVkaWFSZWNvcmRlciBlc2NyaWJlIFdlYk0gU0lOIGVsIGhlYWRlciBkZSBkdXJhY2nDs24gKFNlZ21lbnQvRHVyYXRpb24pIOKGklxuICAgICAgLy8gZWwgPGF1ZGlvPiBsbyByZWNoYXphIGNvbiBTUkNfTk9UX1NVUFBPUlRFRCBhdW5xdWUgZWwgY29kZWMgZXN0w6kgc29wb3J0YWRvLlxuICAgICAgLy8gZml4LXdlYm0tZHVyYXRpb24gcGFyY2hlYSBlbCBoZWFkZXIgY29uIGxhIGR1cmFjacOzbiByZWFsIOKGkiByZXByb2R1Y2libGUuXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnd2VibScpICYmIGJsb2Iuc2l6ZSA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBibG9iID0gYXdhaXQgZml4V2VibUR1cmF0aW9uKGJsb2IsIGR1cmF0aW9uTXMsIHsgbG9nZ2VyOiBmYWxzZSB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hhdENvbXBvc2VyXSBmaXhXZWJtRHVyYXRpb24gZmFsbMOzLCBzZSB1c2EgZWwgYmxvYiBjcnVkbycsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXh0ID0gdHlwZS5pbmNsdWRlcygnbXA0JykgPyAnbTRhJyA6ICd3ZWJtJztcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGBhdWRpby0ke3RoaXMucmVjU2Vjb25kcygpfXMuJHtleHR9YCwgeyB0eXBlIH0pO1xuICAgICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIHJlY29yZGVkJywge1xuICAgICAgICB0eXBlLFxuICAgICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICAgIGNodW5rczogdGhpcy5yZWNDaHVua3MubGVuZ3RoLFxuICAgICAgICBjYW5QbGF5V2VibTogdGhpcy5jYW5QbGF5KCdhdWRpby93ZWJtJyksXG4gICAgICAgIGNhblBsYXlNcDQ6IHRoaXMuY2FuUGxheSgnYXVkaW8vbXA0JyksXG4gICAgICB9KTtcbiAgICAgIGlmIChibG9iLnNpemUgPiAwKSB0aGlzLmFkZFBlbmRpbmcoZmlsZSk7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9O1xuICAgIHJlYy5zdG9wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuY2VsUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlYyA9IHRoaXMucmVjb3JkZXI7XG4gICAgaWYgKHJlYykgcmVjLm9uc3RvcCA9ICgpID0+IHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIHRyeSB7XG4gICAgICByZWM/LnN0b3AoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIH1cbiAgICBpZiAoIXJlYykgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjVGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy5yZWNUaW1lcik7XG4gICAgdGhpcy5yZWNUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY1N0cmVhbT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0ID0+IHQuc3RvcCgpKTtcbiAgICB0aGlzLnJlY1N0cmVhbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY29yZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVjQ2h1bmtzID0gW107XG4gICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlY1NlY29uZHMuc2V0KDApO1xuICB9XG5cbiAgLyoqIERpYWduw7NzdGljbzogZWwgbmF2ZWdhZG9yIG5vIHB1ZG8gcmVwcm9kdWNpciBlbCBhZGp1bnRvIGRlIGF1ZGlvLiAqL1xuICBwcm90ZWN0ZWQgb25BdWRpb0Vycm9yKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc3QgZXJyID0gZWwuZXJyb3I7XG4gICAgY29uc3QgY29kZXM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgICAxOiAnQUJPUlRFRCcsXG4gICAgICAyOiAnTkVUV09SSycsXG4gICAgICAzOiAnREVDT0RFJyxcbiAgICAgIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcsXG4gICAgfTtcbiAgICBjb25zb2xlLmVycm9yKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyBwbGF5IGVycm9yJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgIGNvZGU6IGVycj8uY29kZSxcbiAgICAgIHJlYXNvbjogZXJyID8gY29kZXNbZXJyLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgbWVzc2FnZTogZXJyPy5tZXNzYWdlLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiB0aGlzLmNhblBsYXkoZmlsZS50eXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkF1ZGlvTG9hZGVkKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIGxvYWRlZG1ldGFkYXRhJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZHVyYXRpb246IGVsLmR1cmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIMK/RWwgbmF2ZWdhZG9yIGRlY2xhcmEgcXVlIHB1ZWRlIHJlcHJvZHVjaXIgZXN0ZSB0aXBvPyAnJyAvICdtYXliZScgLyAncHJvYmFibHknLiAqL1xuICBwcml2YXRlIGNhblBsYXkodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykuY2FuUGxheVR5cGUodHlwZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIDilIAgRGljdGFkbyB2b3rihpJ0ZXh0byAoV2ViIFNwZWVjaCBBUEkpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIHByb3RlY3RlZCB0b2dnbGVEaWN0YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGljdGF0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3RvcERpY3RhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGljdGF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydERpY3RhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBDdG9yID1cbiAgICAgICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IFNwZWVjaFJlY29nbml0aW9uPzogbmV3ICgpID0+IFNwZWVjaFJlY29nbml0aW9uTGlrZSB9KS5TcGVlY2hSZWNvZ25pdGlvbiB8fFxuICAgICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgd2Via2l0U3BlZWNoUmVjb2duaXRpb24/OiBuZXcgKCkgPT4gU3BlZWNoUmVjb2duaXRpb25MaWtlIH0pLndlYmtpdFNwZWVjaFJlY29nbml0aW9uO1xuICAgIGlmICghQ3RvcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjID0gbmV3IEN0b3IoKTtcbiAgICByZWMubGFuZyA9IHRoaXMuaTE4bi5sYW5nKCkgPT09ICdlbicgPyAnZW4tVVMnIDogJ2VzLUNMJztcbiAgICAvLyBjb250aW51b3VzPWZhbHNlOiB1bmEgZnJhc2UgeSBjb3J0YSBzb2xhIGFsIHBhdXNhci4gY29udGludW91cz10cnVlIGRlamFiYVxuICAgIC8vIGVsIHJlY29ub2NpbWllbnRvIGFiaWVydG8gaW5kZWZpbmlkYW1lbnRlIHkgZW4gYWxndW5vcyBuYXZlZ2Fkb3JlcyBjb2xnYWJhLlxuICAgIHJlYy5jb250aW51b3VzID0gZmFsc2U7XG4gICAgcmVjLmludGVyaW1SZXN1bHRzID0gZmFsc2U7IC8vIHNvbG8gcmVzdWx0YWRvcyBmaW5hbGVzIOKGkiBpbnNlcnRhbW9zIHRleHRvIGxpbXBpb1xuXG4gICAgcmVjLm9ucmVzdWx0ID0gZXZlbnQgPT4ge1xuICAgICAgbGV0IGZpbmFsVGV4dCA9ICcnO1xuICAgICAgZm9yIChsZXQgaSA9IGV2ZW50LnJlc3VsdEluZGV4OyBpIDwgZXZlbnQucmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByID0gZXZlbnQucmVzdWx0c1tpXTtcbiAgICAgICAgaWYgKHIuaXNGaW5hbCkgZmluYWxUZXh0ICs9IHJbMF0udHJhbnNjcmlwdDtcbiAgICAgIH1cbiAgICAgIGlmIChmaW5hbFRleHQpIHRoaXMuaW5zZXJ0RGljdGF0ZWQoZmluYWxUZXh0KTtcbiAgICB9O1xuICAgIHJlYy5vbmVycm9yID0gKCkgPT4gdGhpcy5zdG9wRGljdGF0aW9uKCk7XG4gICAgcmVjLm9uZW5kID0gKCkgPT4ge1xuICAgICAgLy8gRWwgcmVjb25vY2ltaWVudG8gcHVlZGUgY29ydGFyc2Ugc29sbzsgcmVmbGVqYW1vcyBlbCBlc3RhZG8uXG4gICAgICB0aGlzLmRpY3RhdGluZy5zZXQoZmFsc2UpO1xuICAgIH07XG5cbiAgICB0aGlzLnJlY29nbml0aW9uID0gcmVjO1xuICAgIHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRyeSB7XG4gICAgICByZWMuc3RhcnQoKTtcbiAgICAgIHRoaXMuZGljdGF0aW5nLnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuZGljdGF0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRGljdGF0aW9uKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlY29nbml0aW9uPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBub29wICovXG4gICAgfVxuICAgIHRoaXMuZGljdGF0aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvKiogSW5zZXJ0YSBlbCB0ZXh0byBkaWN0YWRvIGFsIGZpbmFsIGRlbCBlZGl0YWJsZSB5IHNpbmNyb25pemEgZWwgYm9keS4gKi9cbiAgcHJpdmF0ZSBpbnNlcnREaWN0YXRlZCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudCA9IGVsLmlubmVyVGV4dC5yZXBsYWNlKC9cXG4kLywgJycpO1xuICAgIGNvbnN0IHNlcCA9IGN1cnJlbnQgJiYgIWN1cnJlbnQuZW5kc1dpdGgoJyAnKSA/ICcgJyA6ICcnO1xuICAgIGVsLmlubmVyVGV4dCA9IGN1cnJlbnQgKyBzZXAgKyB0ZXh0O1xuICAgIC8vIENvbG9jYSBlbCBjYXJldCBhbCBmaW5hbC5cbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsKTtcbiAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIHNlbD8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsPy5hZGRSYW5nZShyYW5nZSk7XG4gICAgdGhpcy5ib2R5LnNldChlbC5pbm5lclRleHQucmVwbGFjZSgvXFxuJC8sICcnKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWNvZ25pdGlvbj8uYWJvcnQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9XG4gICAgZm9yIChjb25zdCBhdHQgb2YgdGhpcy5wZW5kaW5nKCkpIHtcbiAgICAgIGlmIChhdHQudXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGF0dC51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDaGF0Q29tcG9zZXInKTtcbiAgfVxufVxuIl19
@@ -240,7 +240,7 @@ export class MessageBubbleComponent {
240
240
  }
241
241
  </div>
242
242
  </div>
243
- `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
243
+ `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
244
244
  }
245
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageBubbleComponent, decorators: [{
246
246
  type: Component,
@@ -363,6 +363,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
363
363
  }
364
364
  </div>
365
365
  </div>
366
- `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
366
+ `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
367
367
  }], ctorParameters: () => [] });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFHNUcsUUFBUSxDQUFDO0lBQ1AsV0FBVztJQUNYLFNBQVM7SUFDVCxhQUFhO0lBQ2IsYUFBYTtJQUNiLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxZQUFZO0NBQ2IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsV0FBVztRQUNs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c0IsNDJCQWxYdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUhULHE4SEF4SFMsWUFBWSwrQkFBRSxPQUFPOzs0RkFtWHBCLHNCQUFzQjtrQkF0WGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUhUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IGZvcm1hdENsb2NrVGltZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kYXRldGltZSc7XG5pbXBvcnQgeyBNZWRpYVZpZXdlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL21lZGlhLXZpZXdlci1tb2RhbC9tZWRpYS12aWV3ZXItbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgKGNsaWNrKT1cInZpZXdBdHRhY2htZW50KGF0dClcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGF1ZGlvQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpb3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhdHQgb2YgYXVkaW9BdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHQtYXVkaW9cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdWRpb0Vycm9yKGF0dCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSB8fCBjYW5Nb2RlcmF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLmF1ZGlvcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWF1ZGlvIHtcbiAgICAgICAgd2lkdGg6IDI0MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuZmlsZS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgLTJweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgICAuZWRpdGVkIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuICAgICAgLnN0YXR1cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuc3RhdHVzLnJlYWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSwgIzRmYzNmNyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLmZhaWxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktdGludCwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiAuY291bnQge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpIC5hY3Rpb25zIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuICAvKiogT3duZXIvbW9kZXJhdG9yIGRlbCBjaGF0OiBwdWVkZSBib3JyYXIgbWVuc2FqZXMgYWplbm9zIChtb2RlcmFjaW9uKS4gKi9cbiAgcmVhZG9ubHkgY2FuTW9kZXJhdGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uID0gb3V0cHV0PE1lc3NhZ2VCdWJibGVBY3Rpb24+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWVzc2FnZUJ1YmJsZScsIE1FU1NBR0VfQlVCQkxFX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWUgPSBjb21wdXRlZCgoKSA9PiBmb3JtYXRDbG9ja1RpbWUodGhpcy5tc2coKS5jcmVhdGVkQXQsIHRoaXMubG9jYWxlKCkpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubXNnKCkuc2VuZGVyTmFtZT8udHJpbSgpID8/ICcnO1xuICAgIGlmICghbmFtZSkgcmV0dXJuICc/JztcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQoL1xccysvKTtcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gPz8gJycpKS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW1hZ2VBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+IGEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhdWRpb0F0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+ICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSAmJiAhYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1c0ljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLm1zZygpLnN0YXR1cykge1xuICAgICAgY2FzZSAnc2VuZGluZyc6XG4gICAgICAgIHJldHVybiAndGltZS1vdXRsaW5lJztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiAnYWxlcnQtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2RlbGl2ZXJlZCc6XG4gICAgICBjYXNlICdyZWFkJzpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmstZG9uZSc7XG4gICAgICBjYXNlICdzZW50JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrJztcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1zZygpLmlzRGVsZXRlZCkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aW9uc09wZW4udXBkYXRlKHYgPT4gIXYpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXQodHlwZTogTWVzc2FnZUJ1YmJsZUFjdGlvblsndHlwZSddLCB0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgdHlwZSwgbXNnSWQ6IHRoaXMubXNnKCkubXNnSWQsIHRva2VuIH0pO1xuICB9XG5cbiAgLyoqIEFicmUgbGEgaW1hZ2VuIGFkanVudGEgZW4gZWwgdmlzb3IgZGUgbWVkaW9zIGEgcGFudGFsbGEgY29tcGxldGEuICovXG4gIHByb3RlY3RlZCB2aWV3QXR0YWNobWVudChhdHQ6IHsgdXJsOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IG1pbWVUeXBlPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWwub3Blbih7XG4gICAgICBjb21wb25lbnQ6IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczogeyB1cmw6IGF0dC51cmwsIG5hbWU6IGF0dC5uYW1lLCBtaW1lVHlwZTogYXR0Lm1pbWVUeXBlIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogRGlhZ27Ds3N0aWNvOiBlbCBuYXZlZ2Fkb3Igbm8gcHVkbyByZXByb2R1Y2lyIGVsIGF1ZGlvIHJlY2liaWRvLiAqL1xuICBwcm90ZWN0ZWQgb25BdWRpb0Vycm9yKGF0dDogeyB1cmw6IHN0cmluZzsgbWltZVR5cGU/OiBzdHJpbmcgfSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXQgYXMgSFRNTEF1ZGlvRWxlbWVudDtcbiAgICBjb25zdCBjb2RlczogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHsgMTogJ0FCT1JURUQnLCAyOiAnTkVUV09SSycsIDM6ICdERUNPREUnLCA0OiAnU1JDX05PVF9TVVBQT1JURUQnIH07XG4gICAgY29uc3QgY2FuUGxheSA9IGF0dC5taW1lVHlwZSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykuY2FuUGxheVR5cGUoYXR0Lm1pbWVUeXBlKSA6ICcnO1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tNZXNzYWdlQnViYmxlXSBhdWRpbyBwbGF5IGVycm9yJywge1xuICAgICAgbWltZVR5cGU6IGF0dC5taW1lVHlwZSxcbiAgICAgIHVybDogYXR0LnVybC5zbGljZSgwLCA4MCksXG4gICAgICBjb2RlOiBlbC5lcnJvcj8uY29kZSxcbiAgICAgIHJlYXNvbjogZWwuZXJyb3IgPyBjb2Rlc1tlbC5lcnJvci5jb2RlXSA6ICd1bmtub3duJyxcbiAgICAgIGNhblBsYXlUaGlzVHlwZTogY2FuUGxheSxcbiAgICB9KTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNZXNzYWdlQnViYmxlJyk7XG4gIH1cbn1cbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFHNUcsUUFBUSxDQUFDO0lBQ1AsV0FBVztJQUNYLFNBQVM7SUFDVCxhQUFhO0lBQ2IsYUFBYTtJQUNiLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxZQUFZO0NBQ2IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsV0FBVztRQUNs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c0IsNDJCQWxYdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUhULG1qSUF4SFMsWUFBWSwrQkFBRSxPQUFPOzs0RkFtWHBCLHNCQUFzQjtrQkF0WGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUhUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IGZvcm1hdENsb2NrVGltZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kYXRldGltZSc7XG5pbXBvcnQgeyBNZWRpYVZpZXdlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL21lZGlhLXZpZXdlci1tb2RhbC9tZWRpYS12aWV3ZXItbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgKGNsaWNrKT1cInZpZXdBdHRhY2htZW50KGF0dClcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGF1ZGlvQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpb3NcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhdHQgb2YgYXVkaW9BdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHQtYXVkaW9cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdWRpb0Vycm9yKGF0dCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSB8fCBjYW5Nb2RlcmF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICB9XG4gICAgICAucm93LnRhaWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgLmF2YXRhci5oaWRkZW4ge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgICAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbig4NiUsIDY4MHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYnViYmxlLXdyYXAge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICB9XG4gICAgICAuYnViYmxlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiA5cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLW1lc3NhZ2UtYmFja2dyb3VuZCwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS12YWwtbWVzc2FnZS1ib3JkZXIsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDE4cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLW1lc3NhZ2UtbWluZS1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tY29sb3ItZGFyaywgIzExMSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXZhbC1tZXNzYWdlLW1pbmUtYm9yZGVyLCB2YXIoLS12YWwtbWVzc2FnZS1taW5lLWJhY2tncm91bmQsIHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMTExKSkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdmFsLW1lc3NhZ2UtbWluZS1jb2xvciwgI2ZmZik7XG4gICAgICB9XG4gICAgICAubWluZS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMThweDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUuZGVsZXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgICAgLm5hbWUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICB9XG4gICAgICAucmVwbHktcHJldmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMXB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgY3VycmVudENvbG9yO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEyKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgfVxuICAgICAgLnJlcGx5LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJvZHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICAgIH1cbiAgICAgIC5ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgfVxuICAgICAgLmRlbGV0ZWQtdGV4dCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuICAgICAgLmF0dGFjaG1lbnRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIC5hdHQtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgICAuYXVkaW9zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIC5hdHQtYXVkaW8ge1xuICAgICAgICB3aWR0aDogMjQwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgfVxuICAgICAgLmZpbGVzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIC5maWxlLWNoaXAge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEyKSk7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLm1ldGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luOiAycHggMCAtMnB4IDhweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLXZhbC1tZXNzYWdlLW1ldGEtb3BhY2l0eSwgMCk7XG4gICAgICB9XG4gICAgICAuZWRpdGVkIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuICAgICAgLnN0YXR1cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuc3RhdHVzLnJlYWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSwgIzRmYzNmNyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLmZhaWxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktdGludCwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiAuY291bnQge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpIC5hY3Rpb25zIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuICAvKiogT3duZXIvbW9kZXJhdG9yIGRlbCBjaGF0OiBwdWVkZSBib3JyYXIgbWVuc2FqZXMgYWplbm9zIChtb2RlcmFjaW9uKS4gKi9cbiAgcmVhZG9ubHkgY2FuTW9kZXJhdGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uID0gb3V0cHV0PE1lc3NhZ2VCdWJibGVBY3Rpb24+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWVzc2FnZUJ1YmJsZScsIE1FU1NBR0VfQlVCQkxFX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWUgPSBjb21wdXRlZCgoKSA9PiBmb3JtYXRDbG9ja1RpbWUodGhpcy5tc2coKS5jcmVhdGVkQXQsIHRoaXMubG9jYWxlKCkpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubXNnKCkuc2VuZGVyTmFtZT8udHJpbSgpID8/ICcnO1xuICAgIGlmICghbmFtZSkgcmV0dXJuICc/JztcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQoL1xccysvKTtcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gPz8gJycpKS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW1hZ2VBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+IGEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhdWRpb0F0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVBdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+ICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSAmJiAhYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnYXVkaW8vJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1c0ljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLm1zZygpLnN0YXR1cykge1xuICAgICAgY2FzZSAnc2VuZGluZyc6XG4gICAgICAgIHJldHVybiAndGltZS1vdXRsaW5lJztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiAnYWxlcnQtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2RlbGl2ZXJlZCc6XG4gICAgICBjYXNlICdyZWFkJzpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmstZG9uZSc7XG4gICAgICBjYXNlICdzZW50JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrJztcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1zZygpLmlzRGVsZXRlZCkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aW9uc09wZW4udXBkYXRlKHYgPT4gIXYpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXQodHlwZTogTWVzc2FnZUJ1YmJsZUFjdGlvblsndHlwZSddLCB0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgdHlwZSwgbXNnSWQ6IHRoaXMubXNnKCkubXNnSWQsIHRva2VuIH0pO1xuICB9XG5cbiAgLyoqIEFicmUgbGEgaW1hZ2VuIGFkanVudGEgZW4gZWwgdmlzb3IgZGUgbWVkaW9zIGEgcGFudGFsbGEgY29tcGxldGEuICovXG4gIHByb3RlY3RlZCB2aWV3QXR0YWNobWVudChhdHQ6IHsgdXJsOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IG1pbWVUeXBlPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWwub3Blbih7XG4gICAgICBjb21wb25lbnQ6IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczogeyB1cmw6IGF0dC51cmwsIG5hbWU6IGF0dC5uYW1lLCBtaW1lVHlwZTogYXR0Lm1pbWVUeXBlIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogRGlhZ27Ds3N0aWNvOiBlbCBuYXZlZ2Fkb3Igbm8gcHVkbyByZXByb2R1Y2lyIGVsIGF1ZGlvIHJlY2liaWRvLiAqL1xuICBwcm90ZWN0ZWQgb25BdWRpb0Vycm9yKGF0dDogeyB1cmw6IHN0cmluZzsgbWltZVR5cGU/OiBzdHJpbmcgfSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXQgYXMgSFRNTEF1ZGlvRWxlbWVudDtcbiAgICBjb25zdCBjb2RlczogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHsgMTogJ0FCT1JURUQnLCAyOiAnTkVUV09SSycsIDM6ICdERUNPREUnLCA0OiAnU1JDX05PVF9TVVBQT1JURUQnIH07XG4gICAgY29uc3QgY2FuUGxheSA9IGF0dC5taW1lVHlwZSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykuY2FuUGxheVR5cGUoYXR0Lm1pbWVUeXBlKSA6ICcnO1xuICAgIGNvbnNvbGUuZXJyb3IoJ1tNZXNzYWdlQnViYmxlXSBhdWRpbyBwbGF5IGVycm9yJywge1xuICAgICAgbWltZVR5cGU6IGF0dC5taW1lVHlwZSxcbiAgICAgIHVybDogYXR0LnVybC5zbGljZSgwLCA4MCksXG4gICAgICBjb2RlOiBlbC5lcnJvcj8uY29kZSxcbiAgICAgIHJlYXNvbjogZWwuZXJyb3IgPyBjb2Rlc1tlbC5lcnJvci5jb2RlXSA6ICd1bmtub3duJyxcbiAgICAgIGNhblBsYXlUaGlzVHlwZTogY2FuUGxheSxcbiAgICB9KTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNZXNzYWdlQnViYmxlJyk7XG4gIH1cbn1cbiJdfQ==