@net7/components 3.8.1 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,11 @@ import * as i1 from "@angular/common";
7
7
  export class TextViewerComponent {
8
8
  constructor() {
9
9
  this.isDisplayed = false;
10
+ document.addEventListener('pb-page-ready', () => {
11
+ document.addEventListener('pb-end-update', (ev) => {
12
+ this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');
13
+ });
14
+ });
10
15
  }
11
16
  ngOnInit() {
12
17
  if (!TextViewerComponent._loaded) {
@@ -15,20 +20,9 @@ export class TextViewerComponent {
15
20
  s.setAttribute('type', 'module');
16
21
  s.onload = this.onScriptLoaded;
17
22
  document.head.appendChild(s);
18
- // this.listenToEvent();
19
- // console.log("test");
20
- window.addEventListener('load', () => {
21
- // console.log('load event listener');
22
- document.addEventListener('pb-end-update', (ev) => {
23
- // console.log(ev);
24
- this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');
25
- });
26
- });
27
23
  }
28
24
  }
29
25
  scrollElementsIntoView(target, type, view) {
30
- // console.log(`${type} scroll activated on ${view}`);
31
- // console.log(target);
32
26
  setTimeout(() => {
33
27
  let element;
34
28
  if (type === 'chapter') {
@@ -40,7 +34,6 @@ export class TextViewerComponent {
40
34
  .shadowRoot.querySelectorAll('pb-highlight');
41
35
  const highlightId = highlight[highlight.length - 1].id; // s.x
42
36
  const fragmentNumber = highlightId.replace('.', '\\.');
43
- // console.log(fragmentNumber);
44
37
  element = document
45
38
  .querySelector(view)
46
39
  .shadowRoot.querySelector(`#${fragmentNumber}`);
@@ -52,7 +45,6 @@ export class TextViewerComponent {
52
45
  .querySelector(`.n7-text-viewer ${view}`)
53
46
  .shadowRoot.querySelector(`#${key}`);
54
47
  }
55
- // console.log(`element to scroll: ${element}`)
56
48
  const container = document.querySelector(`.n7-text-viewer ${view}`);
57
49
  if (element) {
58
50
  container.scrollTop = element.offsetTop;
@@ -70,9 +62,9 @@ export class TextViewerComponent {
70
62
  TextViewerComponent._loaded = true;
71
63
  }
72
64
  onClick(payload) {
73
- if (!this.emit)
74
- return;
75
- this.emit('click', payload);
65
+ // FIXME: mettere logica onClick sul boilerplate / progetto
66
+ // if (!this.emit) return;
67
+ // this.emit('click', payload);
76
68
  if (this.isDisplayed === false) {
77
69
  let target;
78
70
  let i = 0;
@@ -101,9 +93,9 @@ TextViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
101
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TextViewerComponent, decorators: [{
102
94
  type: Component,
103
95
  args: [{ selector: 'n7-text-viewer', template: "<div\n class=\"n7-text-viewer {{data.classes || ''}}\"\n *ngIf=\"data && data.endpoint\"\n>\n\n <pb-page [attr.endpoint]=\"data.endpoint\" api-version=\"1.0.0\">\n <pb-document\n *ngFor=\"let doc of data.docs\"\n [path]=\"doc.xml\"\n [odd]=\"doc.odd\"\n [id]=\"doc.id\"\n >\n </pb-document>\n\n <app-drawer-layout force-narrow=\"force-narrow\" narrow=\"\">\n <app-header-layout>\n <app-header\n fixed=\"fixed\"\n data-template=\"browse:fix-links\"\n style=\"\n transition-duration: 0ms;\n transform: translate3d(0px, 0px, 0px);\n left: 0px;\n right: 0.399994px;\n \"\n >\n <app-toolbar\n class=\"toolbar\"\n sticky=\"sticky\"\n style=\"transform: translate3d(0px, 0px, 0px)\"\n >\n <paper-icon-button\n *ngIf=\"data.docs.length === 1\"\n id=\"tocToggle\"\n class=\"toc-toggle\"\n icon=\"icons:view-list\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n\n <pb-toggle-feature\n *ngIf=\"data.docs.length === 1\"\n name=\"highlight1\"\n selector=\"tei-app,pb-popover,pb-highlight\"\n default=\"off\"\n action=\"disable\"\n emit=\"transcription\"\n subscribe=\"transcription\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.view\">\n {{data.labels.view}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.view\">\n <pb-i18n key=\"document.plain\">Plain Reading View</pb-i18n>\n </ng-container>\n </pb-toggle-feature>\n\n <ng-container\n *ngIf=\"data.docs?.length == 1 || data.docs[0].translation\"\n >\n <pb-zoom\n emit=\"transcription\"\n direction=\"in\"\n icon=\"icons:zoom-in\"\n ></pb-zoom>\n <pb-zoom\n emit=\"transcription\"\n direction=\"out\"\n icon=\"icons:zoom-out\"\n ></pb-zoom>\n </ng-container>\n\n <ng-container\n *ngIf=\"!data.docs[0].translation && data.docs?.length == 1\"\n >\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"left\"\n subscribe=\"transcription\"\n direction=\"backward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-left\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"right\"\n subscribe=\"transcription\"\n direction=\"forward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-right\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </ng-container>\n\n <ng-container *ngIf=\"data.docs?.length > 1\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-icon-button\n *ngIf=\"data.docs?.length > 1\"\n id=\"tocToggle\"\n class=\"toc-toggle\"\n icon=\"icons:view-list\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"!data.docs[0].translation && data.docs?.length > 1\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"left\"\n subscribe=\"transcription\"\n direction=\"backward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-left\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </div>\n\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"right\"\n subscribe=\"transcription\"\n direction=\"forward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-right\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs?.length > 1 && !data.docs[0].translation\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-zoom\n emit=\"transcription\"\n direction=\"in\"\n icon=\"icons:zoom-in\"\n ></pb-zoom>\n\n <pb-zoom\n emit=\"transcription\"\n direction=\"out\"\n icon=\"icons:zoom-out\"\n ></pb-zoom>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs.length > 1 && data.labels && data.labels.select.label\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-select-feature\n id=\"select-view2\"\n name=\"view2\"\n [label]=\"data.labels && data.labels.select.label ? data.labels.select.label : 'Mostra entit\u00E0'\"\n [items]='[\n {\"name\": data.labels.select.type.all, \n \"selectors\": [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": false}]},\n {\"name\": data.labels.select.type.person, \n \"selectors\": \n [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": true}]},\n {\"name\": data.labels.select.type.place, \"selectors\": \n [{\"selector\": \".place\", \"state\": false}, {\"selector\": \".person\", \"state\": true}]}\n ]'\n subscribe=\"addChannel\"\n emit=\"addChannel\"\n ></pb-select-feature>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs.length > 1 && (!data.labels || !data.labels.select.label)\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-select-feature\n id=\"select-view2\"\n name=\"view2\"\n label=\"Mostra entit\u00E0\"\n [items]='[\n {\"name\": \"Tutto\", \n \"selectors\": [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": false}]},\n {\"name\": \"Personaggi\", \n \"selectors\": \n [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": true}]},\n {\"name\": \"Luoghi\", \"selectors\": \n [{\"selector\": \".place\", \"state\": false}, {\"selector\": \".person\", \"state\": true}]}\n ]'\n subscribe=\"addChannel\"\n emit=\"addChannel\"\n ></pb-select-feature>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs?.length > 1 && data.docs[1].channel && data.facsimile\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.index.hide\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-button raised=\"\" (click)=\"displayIndex()\"\n >{{ !isDisplayed ? data.labels.index.hide :\n data.labels.index.show }}</paper-button\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.index.hide\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-button raised=\"\" (click)=\"displayIndex()\"\n >{{ !isDisplayed ? 'Indici' : 'Riassunto'\n }}</paper-button\n >\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.docs && data.download\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-download\n [type]=\"data.download && data.download.format ? data.download.format: ''\"\n [src]=\"data.docs[0].id\"\n [url]=\"data.download && data.download.file ? data.download.file : ''\"\n dialog=\"downloadDialog\"\n [title]=\"data.download && data.download.format && data.download.label ? data.download.label + ' ' + data.download.format: ''\"\n >\n <paper-button raised=\"\"\n >{{data.download && data.download.format &&\n data.download.label ? data.download.label + ' ' +\n data.download.format: ''}}</paper-button\n >\n </pb-download>\n </div>\n </ng-container>\n\n <pb-progress\n subscribe=\"transcription\"\n indeterminate=\"\"\n bottom-item=\"bottom-item\"\n style=\"visibility: hidden\"\n ></pb-progress>\n </app-toolbar>\n </app-header>\n\n <pb-drawer\n toggle=\"tocToggle\"\n class=\"tocDrawer\"\n emit=\"toc\"\n subscribe=\"transcription\"\n >\n <div class=\"drawer-content\">\n <h3>\n <ng-container *ngIf=\"data.labels && data.labels.toc\">\n {{data.labels.toc}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.toc\">\n <pb-i18n key=\"document.contents\">Contents</pb-i18n>\n </ng-container>\n </h3>\n <pb-load\n *ngIf=\"data.docs\"\n id=\"toc\"\n url=\"api/document/{doc}/contents?target=transcription&amp;icons=true\"\n [src]=\"data.docs[0].id\"\n subscribe=\"toc\"\n emit=\"toc\"\n expand=\"expand\"\n auto=\"auto\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.loading\">\n {{data.labels.loading}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.loading\">\n <pb-i18n key=\"dialogs.loading\">Loading</pb-i18n>\n </ng-container>\n </pb-load>\n </div>\n </pb-drawer>\n <main class=\"content-body\">\n <pb-facsimile\n *ngIf=\"data.facsimile\"\n id=\"facsimile\"\n [attr.base-uri]=\"data.facsimile.uri\"\n subscribe=\"transcription\"\n default-zoom-level=\"0\"\n show-navigation-control=\"show-navigation-control\"\n show-navigator=\"show-navigator\"\n >\n </pb-facsimile>\n <ng-container *ngFor=\"let doc of data.docs; index as $i;\">\n <!-- NO CHANNEL -->\n <pb-view\n *ngIf=\"!doc.channel\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n subscribe=\"transcription\"\n emit=\"transcription\"\n [attr.wait-for]=\"data.facsimile ? '#facsimile' : null\"\n column-separator=\".tei-cb\"\n append-footnotes=\"append-footnotes\"\n view=\"{{ doc.view }}\"\n ></pb-view>\n <!-- WITH CHANNEL / MURUCA DEMO -->\n <pb-view\n *ngIf=\"doc.channel && doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n xpath=\"//text[@type='source']\"\n emit=\"{{ doc.channel }}\"\n subscribe=\"{{ doc.channel }}\"\n view=\"{{ doc.view }}\"\n >\n </pb-view>\n <pb-view\n *ngIf=\"doc.channel && doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n xpath=\"{{ doc.xpath }}\"\n emit=\"{{ doc.channel }}\"\n subscribe=\"{{ doc.channel }}\"\n view=\"{{ doc.view }}\"\n >\n <pb-param name=\"mode\" value=\"commentary\"></pb-param>\n </pb-view>\n <!-- WITH CHANNEL / addChannel -->\n <pb-view\n [hidden]=\"isDisplayed\"\n (click)=\"onClick($event)\"\n *ngIf=\"doc.channel && !doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n [odd]=\"doc.odd\"\n emit=\"addChannel\"\n subscribe=\"addChannel\"\n view=\"{{ doc.view }}\"\n >\n <pb-param name=\"mode\" value=\"commentary\"></pb-param>\n </pb-view>\n\n <ng-container *ngIf=\"doc.channel && !doc.translation\">\n <!-- -->\n <pb-view\n [hidden]=\"!isDisplayed\"\n *ngIf=\"doc.channel && !doc.translation\"\n [src]=\"doc.id\"\n [odd]=\"doc.odd\"\n id=\"text-viewer-index\"\n subscribe=\"index\"\n emit=\"letter\"\n >\n <pb-param name=\"mode\" value=\"facets\"></pb-param>\n </pb-view>\n <!-- -->\n </ng-container>\n </ng-container>\n </main>\n </app-header-layout>\n </app-drawer-layout>\n </pb-page>\n</div>\n" }]
104
- }], propDecorators: { data: [{
96
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
105
97
  type: Input
106
98
  }], emit: [{
107
99
  type: Input
108
100
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC12aWV3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC12aWV3ZXIvdGV4dC12aWV3ZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC12aWV3ZXIvdGV4dC12aWV3ZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsaUJBQWlCO0FBQ2pCLDZCQUE2QjtBQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBbUV6RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBaUNFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBNEVyQjtJQWxHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRTtZQUNoQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxZQUFZLENBQ1osS0FBSyxFQUNMLG9EQUFvRCxDQUNyRCxDQUFDO1lBQ0YsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ25DLHNDQUFzQztnQkFDdEMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFO29CQUNyRCxtQkFBbUI7b0JB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QUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzt1QkFDbEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDeEM7Z0JBQ0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUM7YUFDckU7U0FDRjs7WUFBTSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDOztBQW5HTSwyQkFBTyxHQUFHLEtBQUssQ0FBQztnSEFMWixtQkFBbUI7b0dBQW5CLG1CQUFtQiw4RkN0RWhDLDJ2ZEFrWUE7MkZENVRhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBSWpCLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVEVYVC1WSUVXRVIudHNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFRleHRWaWV3ZXJDb21wb25lbnQncyBcImRhdGFcIlxuICogQHByb3BlcnR5IGVuZHBvaW50IChyZXF1aXJlZClcbiAqIEBwcm9wZXJ0eSBkb2MgKHJlcXVpcmVkKVxuICogQHByb3BlcnR5IGZhY3NpbWlsZSAob3B0aW9uYWwpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dFZpZXdlckRhdGEge1xuICAvKlxuICAgKiBURUlQdWIgc2VydmVyIGVuZHBvaW50XG4gICAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuICAvKlxuICAgKiBYTUwgYW5kIE9ERCBwYXRoc1xuICAgKi9cbiAgZG9jczoge1xuICAgIHhtbDogc3RyaW5nO1xuICAgIG9kZDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdmlldzogc3RyaW5nO1xuICAgIGNoYW5uZWw/OiBzdHJpbmc7XG4gICAgdHJhbnNsYXRpb24/OiBib29sZWFuO1xuICAgIGRvd25sb2FkPzogc3RyaW5nO1xuICB9W107XG5cbiAgLypcbiAgICogRE9XTkxPQUQgRklMRVNcbiAgICovXG4gIGRvd25sb2FkPzoge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGZpbGU/OiBzdHJpbmc7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICB9O1xuXG4gIC8qXG4gICAqIExBQkVMUyBmb3IgVE9PTEJBUlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIHZpZXc/OiBzdHJpbmc7XG4gICAgc2VsZWN0Pzoge1xuICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICB0eXBlPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgaW5kZXg/OiB7XG4gICAgICBzaG93Pzogc3RyaW5nO1xuICAgICAgaGlkZT86IHN0cmluZztcbiAgICB9O1xuICAgIHRvYz86IHN0cmluZztcbiAgICBsb2FkaW5nPzogc3RyaW5nO1xuICB9O1xuICAvKlxuICAgKiBJSUlGIHNlcnZlciBlbmRwb2ludFxuICAgKi9cbiAgZmFjc2ltaWxlPzogYW55O1xuICAvKipcbiAgICogYWRkaXRpb25hbCBodG1sIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzZXM/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ243LXRleHQtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdmlld2VyLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0Vmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YTogVGV4dFZpZXdlckRhdGE7XG5cbiAgQElucHV0KCkgZW1pdDogYW55O1xuXG4gIHN0YXRpYyBfbG9hZGVkID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCFUZXh0Vmlld2VyQ29tcG9uZW50Ll9sb2FkZWQpIHtcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHMuc2V0QXR0cmlidXRlKFxuICAgICAgICAnc3JjJyxcbiAgICAgICAgJy9hc3NldHMvcGItY29tcG9uZW50cy9kaXN0L3BiLWNvbXBvbmVudHMtYnVuZGxlLmpzJ1xuICAgICAgKTtcbiAgICAgIHMuc2V0QXR0cmlidXRlKCd0eXBlJywgJ21vZHVsZScpO1xuICAgICAgcy5vbmxvYWQgPSB0aGlzLm9uU2NyaXB0TG9hZGVkO1xuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTtcbiAgICAgIC8vIHRoaXMubGlzdGVuVG9FdmVudCgpO1xuICAgICAgLy8gY29uc29sZS5sb2coXCJ0ZXN0XCIpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdsb2FkIGV2ZW50IGxpc3RlbmVyJyk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCAoZXY6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGV2KTtcbiAgICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcoZXYuZGV0YWlsLCAnY2hhcHRlcicsICcjdmlldzEnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc0Rpc3BsYXllZCA9IGZhbHNlO1xuXG4gIHNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCB0eXBlLCB2aWV3KSB7XG4gICAgLy8gY29uc29sZS5sb2coYCR7dHlwZX0gc2Nyb2xsIGFjdGl2YXRlZCBvbiAke3ZpZXd9YCk7XG4gICAgLy8gY29uc29sZS5sb2codGFyZ2V0KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxldCBlbGVtZW50OiBhbnk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2NoYXB0ZXInKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjdmlldzAnKVxuICAgICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigncGItaGlnaGxpZ2h0JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcubjctdGV4dC12aWV3ZXIgI3ZpZXcwJylcbiAgICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BiLWhpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0SWQgPSBoaWdobGlnaHRbaGlnaGxpZ2h0Lmxlbmd0aCAtIDFdLmlkOyAvLyBzLnhcblxuICAgICAgICAgIGNvbnN0IGZyYWdtZW50TnVtYmVyID0gaGlnaGxpZ2h0SWQucmVwbGFjZSgnLicsICdcXFxcLicpO1xuXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coZnJhZ21lbnROdW1iZXIpO1xuXG4gICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3Rvcih2aWV3KVxuICAgICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgIyR7ZnJhZ21lbnROdW1iZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VudGl0eScpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGFyZ2V0Ll9fa2V5O1xuICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcihgLm43LXRleHQtdmlld2VyICR7dmlld31gKVxuICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYCMke2tleX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gY29uc29sZS5sb2coYGVsZW1lbnQgdG8gc2Nyb2xsOiAke2VsZW1lbnR9YClcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLm43LXRleHQtdmlld2VyICR7dmlld31gKTtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCAzMDApO1xuICB9XG5cbiAgZGlzcGxheUluZGV4KCkge1xuICAgIGlmICh0aGlzLmlzRGlzcGxheWVkID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5pc0Rpc3BsYXllZCA9IHRydWU7XG4gICAgfSBlbHNlIHRoaXMuaXNEaXNwbGF5ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uU2NyaXB0TG9hZGVkKCkge1xuICAgIFRleHRWaWV3ZXJDb21wb25lbnQuX2xvYWRlZCA9IHRydWU7XG4gIH1cblxuICBvbkNsaWNrKHBheWxvYWQpIHtcbiAgICBpZiAoIXRoaXMuZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZW1pdCgnY2xpY2snLCBwYXlsb2FkKTtcbiAgICBpZiAodGhpcy5pc0Rpc3BsYXllZCA9PT0gZmFsc2UpIHtcbiAgICAgIGxldCB0YXJnZXQ7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICB3aGlsZSAoIXRhcmdldCAmJiBpIDwgcGF5bG9hZC5wYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKHBheWxvYWQucGF0aFtpXS50YWdOYW1lID09PSAnUEItSElHSExJR0hUJykge1xuICAgICAgICAgIHRhcmdldCA9IHBheWxvYWQucGF0aFtpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0Ll9fa2V5XG4gICAgICAgICYmICh0YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKCdwZXJzb24nKVxuICAgICAgICAgIHx8IHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ3BsYWNlJykpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXllZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudHNJbnRvVmlldyh0YXJnZXQsICdlbnRpdHknLCAnI3RleHQtdmlld2VyLWluZGV4Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHRoaXMuaXNEaXNwbGF5ZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm43LXRleHQtdmlld2VyIHt7ZGF0YS5jbGFzc2VzIHx8ICcnfX1cIlxuICAqbmdJZj1cImRhdGEgJiYgZGF0YS5lbmRwb2ludFwiXG4+XG5cbiAgPHBiLXBhZ2UgW2F0dHIuZW5kcG9pbnRdPVwiZGF0YS5lbmRwb2ludFwiIGFwaS12ZXJzaW9uPVwiMS4wLjBcIj5cbiAgICA8cGItZG9jdW1lbnRcbiAgICAgICpuZ0Zvcj1cImxldCBkb2Mgb2YgZGF0YS5kb2NzXCJcbiAgICAgIFtwYXRoXT1cImRvYy54bWxcIlxuICAgICAgW29kZF09XCJkb2Mub2RkXCJcbiAgICAgIFtpZF09XCJkb2MuaWRcIlxuICAgID5cbiAgICA8L3BiLWRvY3VtZW50PlxuXG4gICAgPGFwcC1kcmF3ZXItbGF5b3V0IGZvcmNlLW5hcnJvdz1cImZvcmNlLW5hcnJvd1wiIG5hcnJvdz1cIlwiPlxuICAgICAgPGFwcC1oZWFkZXItbGF5b3V0PlxuICAgICAgICA8YXBwLWhlYWRlclxuICAgICAgICAgIGZpeGVkPVwiZml4ZWRcIlxuICAgICAgICAgIGRhdGEtdGVtcGxhdGU9XCJicm93c2U6Zml4LWxpbmtzXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMG1zO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDBweCwgMHB4KTtcbiAgICAgICAgICAgIGxlZnQ6IDBweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwLjM5OTk5NHB4O1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXBwLXRvb2xiYXJcbiAgICAgICAgICAgIGNsYXNzPVwidG9vbGJhclwiXG4gICAgICAgICAgICBzdGlja3k9XCJzdGlja3lcIlxuICAgICAgICAgICAgc3R5bGU9XCJ0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3MubGVuZ3RoID09PSAxXCJcbiAgICAgICAgICAgICAgaWQ9XCJ0b2NUb2dnbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRvYy10b2dnbGVcIlxuICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6dmlldy1saXN0XCJcbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPHBiLXRvZ2dsZS1mZWF0dXJlXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzLmxlbmd0aCA9PT0gMVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJoaWdobGlnaHQxXCJcbiAgICAgICAgICAgICAgc2VsZWN0b3I9XCJ0ZWktYXBwLHBiLXBvcG92ZXIscGItaGlnaGxpZ2h0XCJcbiAgICAgICAgICAgICAgZGVmYXVsdD1cIm9mZlwiXG4gICAgICAgICAgICAgIGFjdGlvbj1cImRpc2FibGVcIlxuICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sYWJlbHMgJiYgZGF0YS5sYWJlbHMudmlld1wiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5sYWJlbHMudmlld319XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRhdGEubGFiZWxzIHx8ICFkYXRhLmxhYmVscy52aWV3XCI+XG4gICAgICAgICAgICAgICAgPHBiLWkxOG4ga2V5PVwiZG9jdW1lbnQucGxhaW5cIj5QbGFpbiBSZWFkaW5nIFZpZXc8L3BiLWkxOG4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9wYi10b2dnbGUtZmVhdHVyZT5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jcz8ubGVuZ3RoID09IDEgfHwgZGF0YS5kb2NzWzBdLnRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBiLXpvb21cbiAgICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwiaW5cIlxuICAgICAgICAgICAgICAgIGljb249XCJpY29uczp6b29tLWluXCJcbiAgICAgICAgICAgICAgPjwvcGItem9vbT5cbiAgICAgICAgICAgICAgPHBiLXpvb21cbiAgICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwib3V0XCJcbiAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6em9vbS1vdXRcIlxuICAgICAgICAgICAgICA+PC9wYi16b29tPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZGF0YS5kb2NzWzBdLnRyYW5zbGF0aW9uICYmIGRhdGEuZG9jcz8ubGVuZ3RoID09IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGItbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBrZXlib2FyZD1cImxlZnRcIlxuICAgICAgICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImJhY2t3YXJkXCJcbiAgICAgICAgICAgICAgICB1bml0PVwicGFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczpjaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9wYi1uYXZpZ2F0aW9uPlxuICAgICAgICAgICAgICA8cGItbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBrZXlib2FyZD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJmb3J3YXJkXCJcbiAgICAgICAgICAgICAgICB1bml0PVwicGFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczpjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvcGItbmF2aWdhdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5kb2NzPy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuNy10ZXh0LXZpZXdlcl9fdG9vbGJhci1jb250YWluZXItZmxleFwiPlxuICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3M/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJ0b2NUb2dnbGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2MtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczp2aWV3LWxpc3RcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cIiFkYXRhLmRvY3NbMF0udHJhbnNsYXRpb24gJiYgZGF0YS5kb2NzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm43LXRleHQtdmlld2VyX190b29sYmFyLWNvbnRhaW5lci1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBiLW5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGtleWJvYXJkPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImJhY2t3YXJkXCJcbiAgICAgICAgICAgICAgICAgIHVuaXQ9XCJwYWdlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb25zOmNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9wYi1uYXZpZ2F0aW9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGItbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAga2V5Ym9hcmQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImZvcndhcmRcIlxuICAgICAgICAgICAgICAgICAgdW5pdD1cInBhZ2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6Y2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9wYi1uYXZpZ2F0aW9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzPy5sZW5ndGggPiAxICYmICFkYXRhLmRvY3NbMF0udHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGItem9vbVxuICAgICAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwiaW5cIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cImljb25zOnpvb20taW5cIlxuICAgICAgICAgICAgICAgID48L3BiLXpvb20+XG5cbiAgICAgICAgICAgICAgICA8cGItem9vbVxuICAgICAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwib3V0XCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczp6b29tLW91dFwiXG4gICAgICAgICAgICAgICAgPjwvcGItem9vbT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jcy5sZW5ndGggPiAxICYmIGRhdGEubGFiZWxzICYmIGRhdGEubGFiZWxzLnNlbGVjdC5sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuNy10ZXh0LXZpZXdlcl9fdG9vbGJhci1jb250YWluZXItZmxleFwiPlxuICAgICAgICAgICAgICAgIDxwYi1zZWxlY3QtZmVhdHVyZVxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3QtdmlldzJcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInZpZXcyXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJkYXRhLmxhYmVscyAmJiBkYXRhLmxhYmVscy5zZWxlY3QubGFiZWwgPyBkYXRhLmxhYmVscy5zZWxlY3QubGFiZWwgOiAnTW9zdHJhIGVudGl0w6AnXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc109J1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJuYW1lXCI6IGRhdGEubGFiZWxzLnNlbGVjdC50eXBlLmFsbCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RvcnNcIjogW3tcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IGZhbHNlfSwge1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiBmYWxzZX1dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJuYW1lXCI6IGRhdGEubGFiZWxzLnNlbGVjdC50eXBlLnBlcnNvbiwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RvcnNcIjogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3tcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IGZhbHNlfSwge1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiB0cnVlfV19LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcIm5hbWVcIjogZGF0YS5sYWJlbHMuc2VsZWN0LnR5cGUucGxhY2UsIFwic2VsZWN0b3JzXCI6IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7XCJzZWxlY3RvclwiOiBcIi5wbGFjZVwiLCBcInN0YXRlXCI6IGZhbHNlfSwge1wic2VsZWN0b3JcIjogXCIucGVyc29uXCIsIFwic3RhdGVcIjogdHJ1ZX1dfVxuICAgICAgICAgICAgICAgIF0nXG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJhZGRDaGFubmVsXCJcbiAgICAgICAgICAgICAgICAgIGVtaXQ9XCJhZGRDaGFubmVsXCJcbiAgICAgICAgICAgICAgICA+PC9wYi1zZWxlY3QtZmVhdHVyZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jcy5sZW5ndGggPiAxICYmICghZGF0YS5sYWJlbHMgfHwgIWRhdGEubGFiZWxzLnNlbGVjdC5sYWJlbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGItc2VsZWN0LWZlYXR1cmVcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LXZpZXcyXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ2aWV3MlwiXG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIk1vc3RyYSBlbnRpdMOgXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc109J1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJuYW1lXCI6IFwiVHV0dG9cIiwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RvcnNcIjogW3tcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IGZhbHNlfSwge1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiBmYWxzZX1dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJuYW1lXCI6IFwiUGVyc29uYWdnaVwiLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdG9yc1wiOiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe1wic2VsZWN0b3JcIjogXCIucGVyc29uXCIsIFwic3RhdGVcIjogZmFsc2V9LCB7XCJzZWxlY3RvclwiOiBcIi5wbGFjZVwiLCBcInN0YXRlXCI6IHRydWV9XX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1wibmFtZVwiOiBcIkx1b2doaVwiLCBcInNlbGVjdG9yc1wiOiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiBmYWxzZX0sIHtcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IHRydWV9XX1cbiAgICAgICAgICAgICAgICBdJ1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwiYWRkQ2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgICBlbWl0PVwiYWRkQ2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgPjwvcGItc2VsZWN0LWZlYXR1cmU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3M/Lmxlbmd0aCA+IDEgJiYgZGF0YS5kb2NzWzFdLmNoYW5uZWwgJiYgZGF0YS5mYWNzaW1pbGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sYWJlbHMgJiYgZGF0YS5sYWJlbHMuaW5kZXguaGlkZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuNy10ZXh0LXZpZXdlcl9fdG9vbGJhci1jb250YWluZXItZmxleFwiPlxuICAgICAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiByYWlzZWQ9XCJcIiAoY2xpY2spPVwiZGlzcGxheUluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICA+e3sgIWlzRGlzcGxheWVkID8gZGF0YS5sYWJlbHMuaW5kZXguaGlkZSA6XG4gICAgICAgICAgICAgICAgICAgIGRhdGEubGFiZWxzLmluZGV4LnNob3cgfX08L3BhcGVyLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLmxhYmVscyB8fCAhZGF0YS5sYWJlbHMuaW5kZXguaGlkZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuNy10ZXh0LXZpZXdlcl9fdG9vbGJhci1jb250YWluZXItZmxleFwiPlxuICAgICAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiByYWlzZWQ9XCJcIiAoY2xpY2spPVwiZGlzcGxheUluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICA+e3sgIWlzRGlzcGxheWVkID8gJ0luZGljaScgOiAnUmlhc3N1bnRvJ1xuICAgICAgICAgICAgICAgICAgICB9fTwvcGFwZXItYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLmRvY3MgJiYgZGF0YS5kb3dubG9hZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGItZG93bmxvYWRcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImRhdGEuZG93bmxvYWQgJiYgZGF0YS5kb3dubG9hZC5mb3JtYXQgPyBkYXRhLmRvd25sb2FkLmZvcm1hdDogJydcIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJkYXRhLmRvY3NbMF0uaWRcIlxuICAgICAgICAgICAgICAgICAgW3VybF09XCJkYXRhLmRvd25sb2FkICYmIGRhdGEuZG93bmxvYWQuZmlsZSA/IGRhdGEuZG93bmxvYWQuZmlsZSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgIGRpYWxvZz1cImRvd25sb2FkRGlhbG9nXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJkYXRhLmRvd25sb2FkICYmIGRhdGEuZG93bmxvYWQuZm9ybWF0ICYmIGRhdGEuZG93bmxvYWQubGFiZWwgPyBkYXRhLmRvd25sb2FkLmxhYmVsICsgJyAnICsgZGF0YS5kb3dubG9hZC5mb3JtYXQ6ICcnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZD1cIlwiXG4gICAgICAgICAgICAgICAgICAgID57e2RhdGEuZG93bmxvYWQgJiYgZGF0YS5kb3dubG9hZC5mb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5kb3dubG9hZC5sYWJlbCA/IGRhdGEuZG93bmxvYWQubGFiZWwgKyAnICcgK1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmRvd25sb2FkLmZvcm1hdDogJyd9fTwvcGFwZXItYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wYi1kb3dubG9hZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPHBiLXByb2dyZXNzXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICBpbmRldGVybWluYXRlPVwiXCJcbiAgICAgICAgICAgICAgYm90dG9tLWl0ZW09XCJib3R0b20taXRlbVwiXG4gICAgICAgICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuXCJcbiAgICAgICAgICAgID48L3BiLXByb2dyZXNzPlxuICAgICAgICAgIDwvYXBwLXRvb2xiYXI+XG4gICAgICAgIDwvYXBwLWhlYWRlcj5cblxuICAgICAgICA8cGItZHJhd2VyXG4gICAgICAgICAgdG9nZ2xlPVwidG9jVG9nZ2xlXCJcbiAgICAgICAgICBjbGFzcz1cInRvY0RyYXdlclwiXG4gICAgICAgICAgZW1pdD1cInRvY1wiXG4gICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJhd2VyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxoMz5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubGFiZWxzICYmIGRhdGEubGFiZWxzLnRvY1wiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5sYWJlbHMudG9jfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0YS5sYWJlbHMgfHwgIWRhdGEubGFiZWxzLnRvY1wiPlxuICAgICAgICAgICAgICAgIDxwYi1pMThuIGtleT1cImRvY3VtZW50LmNvbnRlbnRzXCI+Q29udGVudHM8L3BiLWkxOG4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDxwYi1sb2FkXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzXCJcbiAgICAgICAgICAgICAgaWQ9XCJ0b2NcIlxuICAgICAgICAgICAgICB1cmw9XCJhcGkvZG9jdW1lbnQve2RvY30vY29udGVudHM/dGFyZ2V0PXRyYW5zY3JpcHRpb24mYW1wO2ljb25zPXRydWVcIlxuICAgICAgICAgICAgICBbc3JjXT1cImRhdGEuZG9jc1swXS5pZFwiXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInRvY1wiXG4gICAgICAgICAgICAgIGVtaXQ9XCJ0b2NcIlxuICAgICAgICAgICAgICBleHBhbmQ9XCJleHBhbmRcIlxuICAgICAgICAgICAgICBhdXRvPVwiYXV0b1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLmxhYmVscyAmJiBkYXRhLmxhYmVscy5sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmxhYmVscy5sb2FkaW5nfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0YS5sYWJlbHMgfHwgIWRhdGEubGFiZWxzLmxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8cGItaTE4biBrZXk9XCJkaWFsb2dzLmxvYWRpbmdcIj5Mb2FkaW5nPC9wYi1pMThuPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvcGItbG9hZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wYi1kcmF3ZXI+XG4gICAgICAgIDxtYWluIGNsYXNzPVwiY29udGVudC1ib2R5XCI+XG4gICAgICAgICAgPHBiLWZhY3NpbWlsZVxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmZhY3NpbWlsZVwiXG4gICAgICAgICAgICBpZD1cImZhY3NpbWlsZVwiXG4gICAgICAgICAgICBbYXR0ci5iYXNlLXVyaV09XCJkYXRhLmZhY3NpbWlsZS51cmlcIlxuICAgICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICBkZWZhdWx0LXpvb20tbGV2ZWw9XCIwXCJcbiAgICAgICAgICAgIHNob3ctbmF2aWdhdGlvbi1jb250cm9sPVwic2hvdy1uYXZpZ2F0aW9uLWNvbnRyb2xcIlxuICAgICAgICAgICAgc2hvdy1uYXZpZ2F0b3I9XCJzaG93LW5hdmlnYXRvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcGItZmFjc2ltaWxlPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvYyBvZiBkYXRhLmRvY3M7IGluZGV4IGFzICRpO1wiPlxuICAgICAgICAgICAgPCEtLSBOTyBDSEFOTkVMIC0tPlxuICAgICAgICAgICAgPHBiLXZpZXdcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZG9jLmNoYW5uZWxcIlxuICAgICAgICAgICAgICBpZD1cInZpZXd7eyAkaSB9fVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiZG9jLmlkXCJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2F0dHIud2FpdC1mb3JdPVwiZGF0YS5mYWNzaW1pbGUgPyAnI2ZhY3NpbWlsZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgY29sdW1uLXNlcGFyYXRvcj1cIi50ZWktY2JcIlxuICAgICAgICAgICAgICBhcHBlbmQtZm9vdG5vdGVzPVwiYXBwZW5kLWZvb3Rub3Rlc1wiXG4gICAgICAgICAgICAgIHZpZXc9XCJ7eyBkb2MudmlldyB9fVwiXG4gICAgICAgICAgICA+PC9wYi12aWV3PlxuICAgICAgICAgICAgPCEtLSBXSVRIIENIQU5ORUwgLyBNVVJVQ0EgREVNTyAtLT5cbiAgICAgICAgICAgIDxwYi12aWV3XG4gICAgICAgICAgICAgICpuZ0lmPVwiZG9jLmNoYW5uZWwgJiYgZG9jLnRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgICAgaWQ9XCJ2aWV3e3sgJGkgfX1cIlxuICAgICAgICAgICAgICBbc3JjXT1cImRvYy5pZFwiXG4gICAgICAgICAgICAgIHhwYXRoPVwiLy90ZXh0W0B0eXBlPSdzb3VyY2UnXVwiXG4gICAgICAgICAgICAgIGVtaXQ9XCJ7eyBkb2MuY2hhbm5lbCB9fVwiXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInt7IGRvYy5jaGFubmVsIH19XCJcbiAgICAgICAgICAgICAgdmlldz1cInt7IGRvYy52aWV3IH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcGItdmlldz5cbiAgICAgICAgICAgIDxwYi12aWV3XG4gICAgICAgICAgICAgICpuZ0lmPVwiZG9jLmNoYW5uZWwgJiYgZG9jLnRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgICAgaWQ9XCJ2aWV3e3sgJGkgfX1cIlxuICAgICAgICAgICAgICBbc3JjXT1cImRvYy5pZFwiXG4gICAgICAgICAgICAgIHhwYXRoPVwie3sgZG9jLnhwYXRoIH19XCJcbiAgICAgICAgICAgICAgZW1pdD1cInt7IGRvYy5jaGFubmVsIH19XCJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlPVwie3sgZG9jLmNoYW5uZWwgfX1cIlxuICAgICAgICAgICAgICB2aWV3PVwie3sgZG9jLnZpZXcgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGItcGFyYW0gbmFtZT1cIm1vZGVcIiB2YWx1ZT1cImNvbW1lbnRhcnlcIj48L3BiLXBhcmFtPlxuICAgICAgICAgICAgPC9wYi12aWV3PlxuICAgICAgICAgICAgPCEtLSBXSVRIIENIQU5ORUwgLyBhZGRDaGFubmVsIC0tPlxuICAgICAgICAgICAgPHBiLXZpZXdcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCJpc0Rpc3BsYXllZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRvYy5jaGFubmVsICYmICFkb2MudHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgICBpZD1cInZpZXd7eyAkaSB9fVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiZG9jLmlkXCJcbiAgICAgICAgICAgICAgW29kZF09XCJkb2Mub2RkXCJcbiAgICAgICAgICAgICAgZW1pdD1cImFkZENoYW5uZWxcIlxuICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJhZGRDaGFubmVsXCJcbiAgICAgICAgICAgICAgdmlldz1cInt7IGRvYy52aWV3IH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBiLXBhcmFtIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJjb21tZW50YXJ5XCI+PC9wYi1wYXJhbT5cbiAgICAgICAgICAgIDwvcGItdmlldz5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvYy5jaGFubmVsICYmICFkb2MudHJhbnNsYXRpb25cIj5cbiAgICAgICAgICAgICAgPCEtLSAgLS0+XG4gICAgICAgICAgICAgIDxwYi12aWV3XG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhaXNEaXNwbGF5ZWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZG9jLmNoYW5uZWwgJiYgIWRvYy50cmFuc2xhdGlvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJkb2MuaWRcIlxuICAgICAgICAgICAgICAgIFtvZGRdPVwiZG9jLm9kZFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJ0ZXh0LXZpZXdlci1pbmRleFwiXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgIGVtaXQ9XCJsZXR0ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBiLXBhcmFtIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJmYWNldHNcIj48L3BiLXBhcmFtPlxuICAgICAgICAgICAgICA8L3BiLXZpZXc+XG4gICAgICAgICAgICAgIDwhLS0gIC0tPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWFpbj5cbiAgICAgIDwvYXBwLWhlYWRlci1sYXlvdXQ+XG4gICAgPC9hcHAtZHJhd2VyLWxheW91dD5cbiAgPC9wYi1wYWdlPlxuPC9kaXY+XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC12aWV3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC12aWV3ZXIvdGV4dC12aWV3ZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC12aWV3ZXIvdGV4dC12aWV3ZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsaUJBQWlCO0FBQ2pCLDZCQUE2QjtBQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBbUV6RCxNQUFNLE9BQU8sbUJBQW1CO0lBTzlCO1FBcUJBLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBcEJsQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUM5QyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLFlBQVksQ0FDWixLQUFLLEVBQ0wsb0RBQW9ELENBQ3JELENBQUM7WUFDRixDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxj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QXNCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3JFO1NBQ0Y7O1lBQU0sSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQzs7QUE3Rk0sMkJBQU8sR0FBRyxLQUFLLENBQUM7Z0hBTFosbUJBQW1CO29HQUFuQixtQkFBbUIsOEZDdEVoQywydmRBa1lBOzJGRDVUYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQUlqQixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRFWFQtVklFV0VSLnRzXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBUZXh0Vmlld2VyQ29tcG9uZW50J3MgXCJkYXRhXCJcbiAqIEBwcm9wZXJ0eSBlbmRwb2ludCAocmVxdWlyZWQpXG4gKiBAcHJvcGVydHkgZG9jIChyZXF1aXJlZClcbiAqIEBwcm9wZXJ0eSBmYWNzaW1pbGUgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRWaWV3ZXJEYXRhIHtcbiAgLypcbiAgICogVEVJUHViIHNlcnZlciBlbmRwb2ludFxuICAgKi9cbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgLypcbiAgICogWE1MIGFuZCBPREQgcGF0aHNcbiAgICovXG4gIGRvY3M6IHtcbiAgICB4bWw6IHN0cmluZztcbiAgICBvZGQ6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHZpZXc6IHN0cmluZztcbiAgICBjaGFubmVsPzogc3RyaW5nO1xuICAgIHRyYW5zbGF0aW9uPzogYm9vbGVhbjtcbiAgICBkb3dubG9hZD86IHN0cmluZztcbiAgfVtdO1xuXG4gIC8qXG4gICAqIERPV05MT0FEIEZJTEVTXG4gICAqL1xuICBkb3dubG9hZD86IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBmaWxlPzogc3RyaW5nO1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgfTtcblxuICAvKlxuICAgKiBMQUJFTFMgZm9yIFRPT0xCQVJcbiAgICovXG4gIGxhYmVscz86IHtcbiAgICB2aWV3Pzogc3RyaW5nO1xuICAgIHNlbGVjdD86IHtcbiAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgdHlwZT86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIGluZGV4Pzoge1xuICAgICAgc2hvdz86IHN0cmluZztcbiAgICAgIGhpZGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0b2M/OiBzdHJpbmc7XG4gICAgbG9hZGluZz86IHN0cmluZztcbiAgfTtcbiAgLypcbiAgICogSUlJRiBzZXJ2ZXIgZW5kcG9pbnRcbiAgICovXG4gIGZhY3NpbWlsZT86IGFueTtcbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgaHRtbCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc2VzPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduNy10ZXh0LXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LXZpZXdlci5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRhdGE6IFRleHRWaWV3ZXJEYXRhO1xuXG4gIEBJbnB1dCgpIGVtaXQ6IGFueTtcblxuICBzdGF0aWMgX2xvYWRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLXBhZ2UtcmVhZHknLCAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgKGV2OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxFbGVtZW50c0ludG9WaWV3KGV2LmRldGFpbCwgJ2NoYXB0ZXInLCAnI3ZpZXcxJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghVGV4dFZpZXdlckNvbXBvbmVudC5fbG9hZGVkKSB7XG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgJ3NyYycsXG4gICAgICAgICcvYXNzZXRzL3BiLWNvbXBvbmVudHMvZGlzdC9wYi1jb21wb25lbnRzLWJ1bmRsZS5qcydcbiAgICAgICk7XG4gICAgICBzLnNldEF0dHJpYnV0ZSgndHlwZScsICdtb2R1bGUnKTtcbiAgICAgIHMub25sb2FkID0gdGhpcy5vblNjcmlwdExvYWRlZDtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XG4gICAgfVxuICB9XG5cbiAgaXNEaXNwbGF5ZWQgPSBmYWxzZTtcblxuICBzY3JvbGxFbGVtZW50c0ludG9WaWV3KHRhcmdldCwgdHlwZSwgdmlldykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGV0IGVsZW1lbnQ6IGFueTtcbiAgICAgIGlmICh0eXBlID09PSAnY2hhcHRlcicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLm43LXRleHQtdmlld2VyICN2aWV3MCcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdwYi1oaWdobGlnaHQnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBoaWdobGlnaHQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjdmlldzAnKVxuICAgICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgncGItaGlnaGxpZ2h0Jyk7XG5cbiAgICAgICAgICBjb25zdCBoaWdobGlnaHRJZCA9IGhpZ2hsaWdodFtoaWdobGlnaHQubGVuZ3RoIC0gMV0uaWQ7IC8vIHMueFxuXG4gICAgICAgICAgY29uc3QgZnJhZ21lbnROdW1iZXIgPSBoaWdobGlnaHRJZC5yZXBsYWNlKCcuJywgJ1xcXFwuJyk7XG5cbiAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKHZpZXcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAjJHtmcmFnbWVudE51bWJlcn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW50aXR5Jykge1xuICAgICAgICBjb25zdCBrZXkgPSB0YXJnZXQuX19rZXk7XG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGAubjctdGV4dC12aWV3ZXIgJHt2aWV3fWApXG4gICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgIyR7a2V5fWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAubjctdGV4dC12aWV3ZXIgJHt2aWV3fWApO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDMwMCk7XG4gIH1cblxuICBkaXNwbGF5SW5kZXgoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5ZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzRGlzcGxheWVkID0gdHJ1ZTtcbiAgICB9IGVsc2UgdGhpcy5pc0Rpc3BsYXllZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TY3JpcHRMb2FkZWQoKSB7XG4gICAgVGV4dFZpZXdlckNvbXBvbmVudC5fbG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2socGF5bG9hZCkge1xuICAgIC8vIEZJWE1FOiBtZXR0ZXJlIGxvZ2ljYSBvbkNsaWNrIHN1bCBib2lsZXJwbGF0ZSAvIHByb2dldHRvXG4gICAgLy8gaWYgKCF0aGlzLmVtaXQpIHJldHVybjtcbiAgICAvLyB0aGlzLmVtaXQoJ2NsaWNrJywgcGF5bG9hZCk7XG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5ZWQgPT09IGZhbHNlKSB7XG4gICAgICBsZXQgdGFyZ2V0O1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgd2hpbGUgKCF0YXJnZXQgJiYgaSA8IHBheWxvYWQucGF0aC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLnBhdGhbaV0udGFnTmFtZSA9PT0gJ1BCLUhJR0hMSUdIVCcpIHtcbiAgICAgICAgICB0YXJnZXQgPSBwYXlsb2FkLnBhdGhbaV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaSArPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRhcmdldC5fX2tleVxuICAgICAgICAmJiAodGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcygncGVyc29uJylcbiAgICAgICAgICB8fCB0YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKCdwbGFjZScpKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaXNEaXNwbGF5ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCAnZW50aXR5JywgJyN0ZXh0LXZpZXdlci1pbmRleCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLmlzRGlzcGxheWVkID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJuNy10ZXh0LXZpZXdlciB7e2RhdGEuY2xhc3NlcyB8fCAnJ319XCJcbiAgKm5nSWY9XCJkYXRhICYmIGRhdGEuZW5kcG9pbnRcIlxuPlxuXG4gIDxwYi1wYWdlIFthdHRyLmVuZHBvaW50XT1cImRhdGEuZW5kcG9pbnRcIiBhcGktdmVyc2lvbj1cIjEuMC4wXCI+XG4gICAgPHBiLWRvY3VtZW50XG4gICAgICAqbmdGb3I9XCJsZXQgZG9jIG9mIGRhdGEuZG9jc1wiXG4gICAgICBbcGF0aF09XCJkb2MueG1sXCJcbiAgICAgIFtvZGRdPVwiZG9jLm9kZFwiXG4gICAgICBbaWRdPVwiZG9jLmlkXCJcbiAgICA+XG4gICAgPC9wYi1kb2N1bWVudD5cblxuICAgIDxhcHAtZHJhd2VyLWxheW91dCBmb3JjZS1uYXJyb3c9XCJmb3JjZS1uYXJyb3dcIiBuYXJyb3c9XCJcIj5cbiAgICAgIDxhcHAtaGVhZGVyLWxheW91dD5cbiAgICAgICAgPGFwcC1oZWFkZXJcbiAgICAgICAgICBmaXhlZD1cImZpeGVkXCJcbiAgICAgICAgICBkYXRhLXRlbXBsYXRlPVwiYnJvd3NlOmZpeC1saW5rc1wiXG4gICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBtcztcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XG4gICAgICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgICAgICByaWdodDogMC4zOTk5OTRweDtcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC10b29sYmFyXG4gICAgICAgICAgICBjbGFzcz1cInRvb2xiYXJcIlxuICAgICAgICAgICAgc3RpY2t5PVwic3RpY2t5XCJcbiAgICAgICAgICAgIHN0eWxlPVwidHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDBweCwgMHB4KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzLmxlbmd0aCA9PT0gMVwiXG4gICAgICAgICAgICAgIGlkPVwidG9jVG9nZ2xlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0b2MtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgaWNvbj1cImljb25zOnZpZXctbGlzdFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxwYi10b2dnbGUtZmVhdHVyZVxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jcy5sZW5ndGggPT09IDFcIlxuICAgICAgICAgICAgICBuYW1lPVwiaGlnaGxpZ2h0MVwiXG4gICAgICAgICAgICAgIHNlbGVjdG9yPVwidGVpLWFwcCxwYi1wb3BvdmVyLHBiLWhpZ2hsaWdodFwiXG4gICAgICAgICAgICAgIGRlZmF1bHQ9XCJvZmZcIlxuICAgICAgICAgICAgICBhY3Rpb249XCJkaXNhYmxlXCJcbiAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubGFiZWxzICYmIGRhdGEubGFiZWxzLnZpZXdcIj5cbiAgICAgICAgICAgICAgICB7e2RhdGEubGFiZWxzLnZpZXd9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLmxhYmVscyB8fCAhZGF0YS5sYWJlbHMudmlld1wiPlxuICAgICAgICAgICAgICAgIDxwYi1pMThuIGtleT1cImRvY3VtZW50LnBsYWluXCI+UGxhaW4gUmVhZGluZyBWaWV3PC9wYi1pMThuPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvcGItdG9nZ2xlLWZlYXR1cmU+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3M/Lmxlbmd0aCA9PSAxIHx8IGRhdGEuZG9jc1swXS50cmFuc2xhdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwYi16b29tXG4gICAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImluXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6em9vbS1pblwiXG4gICAgICAgICAgICAgID48L3BiLXpvb20+XG4gICAgICAgICAgICAgIDxwYi16b29tXG4gICAgICAgICAgICAgICAgZW1pdD1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cIm91dFwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImljb25zOnpvb20tb3V0XCJcbiAgICAgICAgICAgICAgPjwvcGItem9vbT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWRhdGEuZG9jc1swXS50cmFuc2xhdGlvbiAmJiBkYXRhLmRvY3M/Lmxlbmd0aCA9PSAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBiLW5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAga2V5Ym9hcmQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJiYWNrd2FyZFwiXG4gICAgICAgICAgICAgICAgdW5pdD1cInBhZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6Y2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvcGItbmF2aWdhdGlvbj5cbiAgICAgICAgICAgICAgPHBiLW5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAga2V5Ym9hcmQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwiZm9yd2FyZFwiXG4gICAgICAgICAgICAgICAgdW5pdD1cInBhZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6Y2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPlxuICAgICAgICAgICAgICA8L3BiLW5hdmlnYXRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuZG9jcz8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwidG9jVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9jLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6dmlldy1saXN0XCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZGF0YS5kb2NzWzBdLnRyYW5zbGF0aW9uICYmIGRhdGEuZG9jcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuNy10ZXh0LXZpZXdlcl9fdG9vbGJhci1jb250YWluZXItZmxleFwiPlxuICAgICAgICAgICAgICAgIDxwYi1uYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBrZXlib2FyZD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJiYWNrd2FyZFwiXG4gICAgICAgICAgICAgICAgICB1bml0PVwicGFnZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczpjaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvcGItbmF2aWdhdGlvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm43LXRleHQtdmlld2VyX190b29sYmFyLWNvbnRhaW5lci1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBiLW5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGtleWJvYXJkPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJmb3J3YXJkXCJcbiAgICAgICAgICAgICAgICAgIHVuaXQ9XCJwYWdlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImljb25zOmNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvcGItbmF2aWdhdGlvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jcz8ubGVuZ3RoID4gMSAmJiAhZGF0YS5kb2NzWzBdLnRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm43LXRleHQtdmlld2VyX190b29sYmFyLWNvbnRhaW5lci1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBiLXpvb21cbiAgICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImluXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJpY29uczp6b29tLWluXCJcbiAgICAgICAgICAgICAgICA+PC9wYi16b29tPlxuXG4gICAgICAgICAgICAgICAgPHBiLXpvb21cbiAgICAgICAgICAgICAgICAgIGVtaXQ9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cIm91dFwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaWNvbnM6em9vbS1vdXRcIlxuICAgICAgICAgICAgICAgID48L3BiLXpvb20+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3MubGVuZ3RoID4gMSAmJiBkYXRhLmxhYmVscyAmJiBkYXRhLmxhYmVscy5zZWxlY3QubGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cGItc2VsZWN0LWZlYXR1cmVcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LXZpZXcyXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ2aWV3MlwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZGF0YS5sYWJlbHMgJiYgZGF0YS5sYWJlbHMuc2VsZWN0LmxhYmVsID8gZGF0YS5sYWJlbHMuc2VsZWN0LmxhYmVsIDogJ01vc3RyYSBlbnRpdMOgJ1wiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPSdbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1wibmFtZVwiOiBkYXRhLmxhYmVscy5zZWxlY3QudHlwZS5hbGwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0b3JzXCI6IFt7XCJzZWxlY3RvclwiOiBcIi5wZXJzb25cIiwgXCJzdGF0ZVwiOiBmYWxzZX0sIHtcInNlbGVjdG9yXCI6IFwiLnBsYWNlXCIsIFwic3RhdGVcIjogZmFsc2V9XX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1wibmFtZVwiOiBkYXRhLmxhYmVscy5zZWxlY3QudHlwZS5wZXJzb24sIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0b3JzXCI6IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7XCJzZWxlY3RvclwiOiBcIi5wZXJzb25cIiwgXCJzdGF0ZVwiOiBmYWxzZX0sIHtcInNlbGVjdG9yXCI6IFwiLnBsYWNlXCIsIFwic3RhdGVcIjogdHJ1ZX1dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJuYW1lXCI6IGRhdGEubGFiZWxzLnNlbGVjdC50eXBlLnBsYWNlLCBcInNlbGVjdG9yc1wiOiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbe1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiBmYWxzZX0sIHtcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IHRydWV9XX1cbiAgICAgICAgICAgICAgICBdJ1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlPVwiYWRkQ2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgICBlbWl0PVwiYWRkQ2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgPjwvcGItc2VsZWN0LWZlYXR1cmU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmRvY3MubGVuZ3RoID4gMSAmJiAoIWRhdGEubGFiZWxzIHx8ICFkYXRhLmxhYmVscy5zZWxlY3QubGFiZWwpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm43LXRleHQtdmlld2VyX190b29sYmFyLWNvbnRhaW5lci1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBiLXNlbGVjdC1mZWF0dXJlXG4gICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC12aWV3MlwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmlldzJcIlxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJNb3N0cmEgZW50aXTDoFwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPSdbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1wibmFtZVwiOiBcIlR1dHRvXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0b3JzXCI6IFt7XCJzZWxlY3RvclwiOiBcIi5wZXJzb25cIiwgXCJzdGF0ZVwiOiBmYWxzZX0sIHtcInNlbGVjdG9yXCI6IFwiLnBsYWNlXCIsIFwic3RhdGVcIjogZmFsc2V9XX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1wibmFtZVwiOiBcIlBlcnNvbmFnZ2lcIiwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3RvcnNcIjogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3tcInNlbGVjdG9yXCI6IFwiLnBlcnNvblwiLCBcInN0YXRlXCI6IGZhbHNlfSwge1wic2VsZWN0b3JcIjogXCIucGxhY2VcIiwgXCJzdGF0ZVwiOiB0cnVlfV19LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcIm5hbWVcIjogXCJMdW9naGlcIiwgXCJzZWxlY3RvcnNcIjogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3tcInNlbGVjdG9yXCI6IFwiLnBsYWNlXCIsIFwic3RhdGVcIjogZmFsc2V9LCB7XCJzZWxlY3RvclwiOiBcIi5wZXJzb25cIiwgXCJzdGF0ZVwiOiB0cnVlfV19XG4gICAgICAgICAgICAgICAgXSdcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZT1cImFkZENoYW5uZWxcIlxuICAgICAgICAgICAgICAgICAgZW1pdD1cImFkZENoYW5uZWxcIlxuICAgICAgICAgICAgICAgID48L3BiLXNlbGVjdC1mZWF0dXJlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5kb2NzPy5sZW5ndGggPiAxICYmIGRhdGEuZG9jc1sxXS5jaGFubmVsICYmIGRhdGEuZmFjc2ltaWxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubGFiZWxzICYmIGRhdGEubGFiZWxzLmluZGV4LmhpZGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkPVwiXCIgKGNsaWNrKT1cImRpc3BsYXlJbmRleCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7ICFpc0Rpc3BsYXllZCA/IGRhdGEubGFiZWxzLmluZGV4LmhpZGUgOlxuICAgICAgICAgICAgICAgICAgICBkYXRhLmxhYmVscy5pbmRleC5zaG93IH19PC9wYXBlci1idXR0b25cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0YS5sYWJlbHMgfHwgIWRhdGEubGFiZWxzLmluZGV4LmhpZGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibjctdGV4dC12aWV3ZXJfX3Rvb2xiYXItY29udGFpbmVyLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkPVwiXCIgKGNsaWNrKT1cImRpc3BsYXlJbmRleCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7ICFpc0Rpc3BsYXllZCA/ICdJbmRpY2knIDogJ1JpYXNzdW50bydcbiAgICAgICAgICAgICAgICAgICAgfX08L3BhcGVyLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5kb2NzICYmIGRhdGEuZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm43LXRleHQtdmlld2VyX190b29sYmFyLWNvbnRhaW5lci1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBiLWRvd25sb2FkXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJkYXRhLmRvd25sb2FkICYmIGRhdGEuZG93bmxvYWQuZm9ybWF0ID8gZGF0YS5kb3dubG9hZC5mb3JtYXQ6ICcnXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZGF0YS5kb2NzWzBdLmlkXCJcbiAgICAgICAgICAgICAgICAgIFt1cmxdPVwiZGF0YS5kb3dubG9hZCAmJiBkYXRhLmRvd25sb2FkLmZpbGUgPyBkYXRhLmRvd25sb2FkLmZpbGUgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICBkaWFsb2c9XCJkb3dubG9hZERpYWxvZ1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZGF0YS5kb3dubG9hZCAmJiBkYXRhLmRvd25sb2FkLmZvcm1hdCAmJiBkYXRhLmRvd25sb2FkLmxhYmVsID8gZGF0YS5kb3dubG9hZC5sYWJlbCArICcgJyArIGRhdGEuZG93bmxvYWQuZm9ybWF0OiAnJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiByYWlzZWQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICA+e3tkYXRhLmRvd25sb2FkICYmIGRhdGEuZG93bmxvYWQuZm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZG93bmxvYWQubGFiZWwgPyBkYXRhLmRvd25sb2FkLmxhYmVsICsgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5kb3dubG9hZC5mb3JtYXQ6ICcnfX08L3BhcGVyLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcGItZG93bmxvYWQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxwYi1wcm9ncmVzc1xuICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0cmFuc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT1cIlwiXG4gICAgICAgICAgICAgIGJvdHRvbS1pdGVtPVwiYm90dG9tLWl0ZW1cIlxuICAgICAgICAgICAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiXG4gICAgICAgICAgICA+PC9wYi1wcm9ncmVzcz5cbiAgICAgICAgICA8L2FwcC10b29sYmFyPlxuICAgICAgICA8L2FwcC1oZWFkZXI+XG5cbiAgICAgICAgPHBiLWRyYXdlclxuICAgICAgICAgIHRvZ2dsZT1cInRvY1RvZ2dsZVwiXG4gICAgICAgICAgY2xhc3M9XCJ0b2NEcmF3ZXJcIlxuICAgICAgICAgIGVtaXQ9XCJ0b2NcIlxuICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyYXdlci1jb250ZW50XCI+XG4gICAgICAgICAgICA8aDM+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLmxhYmVscyAmJiBkYXRhLmxhYmVscy50b2NcIj5cbiAgICAgICAgICAgICAgICB7e2RhdGEubGFiZWxzLnRvY319XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRhdGEubGFiZWxzIHx8ICFkYXRhLmxhYmVscy50b2NcIj5cbiAgICAgICAgICAgICAgICA8cGItaTE4biBrZXk9XCJkb2N1bWVudC5jb250ZW50c1wiPkNvbnRlbnRzPC9wYi1pMThuPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cGItbG9hZFxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuZG9jc1wiXG4gICAgICAgICAgICAgIGlkPVwidG9jXCJcbiAgICAgICAgICAgICAgdXJsPVwiYXBpL2RvY3VtZW50L3tkb2N9L2NvbnRlbnRzP3RhcmdldD10cmFuc2NyaXB0aW9uJmFtcDtpY29ucz10cnVlXCJcbiAgICAgICAgICAgICAgW3NyY109XCJkYXRhLmRvY3NbMF0uaWRcIlxuICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ0b2NcIlxuICAgICAgICAgICAgICBlbWl0PVwidG9jXCJcbiAgICAgICAgICAgICAgZXhwYW5kPVwiZXhwYW5kXCJcbiAgICAgICAgICAgICAgYXV0bz1cImF1dG9cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sYWJlbHMgJiYgZGF0YS5sYWJlbHMubG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5sYWJlbHMubG9hZGluZ319XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRhdGEubGFiZWxzIHx8ICFkYXRhLmxhYmVscy5sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHBiLWkxOG4ga2V5PVwiZGlhbG9ncy5sb2FkaW5nXCI+TG9hZGluZzwvcGItaTE4bj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3BiLWxvYWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcGItZHJhd2VyPlxuICAgICAgICA8bWFpbiBjbGFzcz1cImNvbnRlbnQtYm9keVwiPlxuICAgICAgICAgIDxwYi1mYWNzaW1pbGVcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5mYWNzaW1pbGVcIlxuICAgICAgICAgICAgaWQ9XCJmYWNzaW1pbGVcIlxuICAgICAgICAgICAgW2F0dHIuYmFzZS11cmldPVwiZGF0YS5mYWNzaW1pbGUudXJpXCJcbiAgICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgZGVmYXVsdC16b29tLWxldmVsPVwiMFwiXG4gICAgICAgICAgICBzaG93LW5hdmlnYXRpb24tY29udHJvbD1cInNob3ctbmF2aWdhdGlvbi1jb250cm9sXCJcbiAgICAgICAgICAgIHNob3ctbmF2aWdhdG9yPVwic2hvdy1uYXZpZ2F0b3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BiLWZhY3NpbWlsZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb2Mgb2YgZGF0YS5kb2NzOyBpbmRleCBhcyAkaTtcIj5cbiAgICAgICAgICAgIDwhLS0gTk8gQ0hBTk5FTCAtLT5cbiAgICAgICAgICAgIDxwYi12aWV3XG4gICAgICAgICAgICAgICpuZ0lmPVwiIWRvYy5jaGFubmVsXCJcbiAgICAgICAgICAgICAgaWQ9XCJ2aWV3e3sgJGkgfX1cIlxuICAgICAgICAgICAgICBbc3JjXT1cImRvYy5pZFwiXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInRyYW5zY3JpcHRpb25cIlxuICAgICAgICAgICAgICBlbWl0PVwidHJhbnNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFthdHRyLndhaXQtZm9yXT1cImRhdGEuZmFjc2ltaWxlID8gJyNmYWNzaW1pbGUnIDogbnVsbFwiXG4gICAgICAgICAgICAgIGNvbHVtbi1zZXBhcmF0b3I9XCIudGVpLWNiXCJcbiAgICAgICAgICAgICAgYXBwZW5kLWZvb3Rub3Rlcz1cImFwcGVuZC1mb290bm90ZXNcIlxuICAgICAgICAgICAgICB2aWV3PVwie3sgZG9jLnZpZXcgfX1cIlxuICAgICAgICAgICAgPjwvcGItdmlldz5cbiAgICAgICAgICAgIDwhLS0gV0lUSCBDSEFOTkVMIC8gTVVSVUNBIERFTU8gLS0+XG4gICAgICAgICAgICA8cGItdmlld1xuICAgICAgICAgICAgICAqbmdJZj1cImRvYy5jaGFubmVsICYmIGRvYy50cmFuc2xhdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwidmlld3t7ICRpIH19XCJcbiAgICAgICAgICAgICAgW3NyY109XCJkb2MuaWRcIlxuICAgICAgICAgICAgICB4cGF0aD1cIi8vdGV4dFtAdHlwZT0nc291cmNlJ11cIlxuICAgICAgICAgICAgICBlbWl0PVwie3sgZG9jLmNoYW5uZWwgfX1cIlxuICAgICAgICAgICAgICBzdWJzY3JpYmU9XCJ7eyBkb2MuY2hhbm5lbCB9fVwiXG4gICAgICAgICAgICAgIHZpZXc9XCJ7eyBkb2MudmlldyB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3BiLXZpZXc+XG4gICAgICAgICAgICA8cGItdmlld1xuICAgICAgICAgICAgICAqbmdJZj1cImRvYy5jaGFubmVsICYmIGRvYy50cmFuc2xhdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwidmlld3t7ICRpIH19XCJcbiAgICAgICAgICAgICAgW3NyY109XCJkb2MuaWRcIlxuICAgICAgICAgICAgICB4cGF0aD1cInt7IGRvYy54cGF0aCB9fVwiXG4gICAgICAgICAgICAgIGVtaXQ9XCJ7eyBkb2MuY2hhbm5lbCB9fVwiXG4gICAgICAgICAgICAgIHN1YnNjcmliZT1cInt7IGRvYy5jaGFubmVsIH19XCJcbiAgICAgICAgICAgICAgdmlldz1cInt7IGRvYy52aWV3IH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBiLXBhcmFtIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJjb21tZW50YXJ5XCI+PC9wYi1wYXJhbT5cbiAgICAgICAgICAgIDwvcGItdmlldz5cbiAgICAgICAgICAgIDwhLS0gV0lUSCBDSEFOTkVMIC8gYWRkQ2hhbm5lbCAtLT5cbiAgICAgICAgICAgIDxwYi12aWV3XG4gICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNEaXNwbGF5ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkb2MuY2hhbm5lbCAmJiAhZG9jLnRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgICAgaWQ9XCJ2aWV3e3sgJGkgfX1cIlxuICAgICAgICAgICAgICBbc3JjXT1cImRvYy5pZFwiXG4gICAgICAgICAgICAgIFtvZGRdPVwiZG9jLm9kZFwiXG4gICAgICAgICAgICAgIGVtaXQ9XCJhZGRDaGFubmVsXCJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlPVwiYWRkQ2hhbm5lbFwiXG4gICAgICAgICAgICAgIHZpZXc9XCJ7eyBkb2MudmlldyB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwYi1wYXJhbSBuYW1lPVwibW9kZVwiIHZhbHVlPVwiY29tbWVudGFyeVwiPjwvcGItcGFyYW0+XG4gICAgICAgICAgICA8L3BiLXZpZXc+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2MuY2hhbm5lbCAmJiAhZG9jLnRyYW5zbGF0aW9uXCI+XG4gICAgICAgICAgICAgIDwhLS0gIC0tPlxuICAgICAgICAgICAgICA8cGItdmlld1xuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWlzRGlzcGxheWVkXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRvYy5jaGFubmVsICYmICFkb2MudHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZG9jLmlkXCJcbiAgICAgICAgICAgICAgICBbb2RkXT1cImRvYy5vZGRcIlxuICAgICAgICAgICAgICAgIGlkPVwidGV4dC12aWV3ZXItaW5kZXhcIlxuICAgICAgICAgICAgICAgIHN1YnNjcmliZT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICBlbWl0PVwibGV0dGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYi1wYXJhbSBuYW1lPVwibW9kZVwiIHZhbHVlPVwiZmFjZXRzXCI+PC9wYi1wYXJhbT5cbiAgICAgICAgICAgICAgPC9wYi12aWV3PlxuICAgICAgICAgICAgICA8IS0tICAtLT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21haW4+XG4gICAgICA8L2FwcC1oZWFkZXItbGF5b3V0PlxuICAgIDwvYXBwLWRyYXdlci1sYXlvdXQ+XG4gIDwvcGItcGFnZT5cbjwvZGl2PlxuIl19
@@ -1670,6 +1670,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
1670
1670
  class TextViewerComponent {
1671
1671
  constructor() {
1672
1672
  this.isDisplayed = false;
1673
+ document.addEventListener('pb-page-ready', () => {
1674
+ document.addEventListener('pb-end-update', (ev) => {
1675
+ this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');
1676
+ });
1677
+ });
1673
1678
  }
1674
1679
  ngOnInit() {
1675
1680
  if (!TextViewerComponent._loaded) {
@@ -1678,20 +1683,9 @@ class TextViewerComponent {
1678
1683
  s.setAttribute('type', 'module');
1679
1684
  s.onload = this.onScriptLoaded;
1680
1685
  document.head.appendChild(s);
1681
- // this.listenToEvent();
1682
- // console.log("test");
1683
- window.addEventListener('load', () => {
1684
- // console.log('load event listener');
1685
- document.addEventListener('pb-end-update', (ev) => {
1686
- // console.log(ev);
1687
- this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');
1688
- });
1689
- });
1690
1686
  }
1691
1687
  }
1692
1688
  scrollElementsIntoView(target, type, view) {
1693
- // console.log(`${type} scroll activated on ${view}`);
1694
- // console.log(target);
1695
1689
  setTimeout(() => {
1696
1690
  let element;
1697
1691
  if (type === 'chapter') {
@@ -1703,7 +1697,6 @@ class TextViewerComponent {
1703
1697
  .shadowRoot.querySelectorAll('pb-highlight');
1704
1698
  const highlightId = highlight[highlight.length - 1].id; // s.x
1705
1699
  const fragmentNumber = highlightId.replace('.', '\\.');
1706
- // console.log(fragmentNumber);
1707
1700
  element = document
1708
1701
  .querySelector(view)
1709
1702
  .shadowRoot.querySelector(`#${fragmentNumber}`);
@@ -1715,7 +1708,6 @@ class TextViewerComponent {
1715
1708
  .querySelector(`.n7-text-viewer ${view}`)
1716
1709
  .shadowRoot.querySelector(`#${key}`);
1717
1710
  }
1718
- // console.log(`element to scroll: ${element}`)
1719
1711
  const container = document.querySelector(`.n7-text-viewer ${view}`);
1720
1712
  if (element) {
1721
1713
  container.scrollTop = element.offsetTop;
@@ -1733,9 +1725,9 @@ class TextViewerComponent {
1733
1725
  TextViewerComponent._loaded = true;
1734
1726
  }
1735
1727
  onClick(payload) {
1736
- if (!this.emit)
1737
- return;
1738
- this.emit('click', payload);
1728
+ // FIXME: mettere logica onClick sul boilerplate / progetto
1729
+ // if (!this.emit) return;
1730
+ // this.emit('click', payload);
1739
1731
  if (this.isDisplayed === false) {
1740
1732
  let target;
1741
1733
  let i = 0;
@@ -1764,7 +1756,7 @@ TextViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
1764
1756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TextViewerComponent, decorators: [{
1765
1757
  type: Component,
1766
1758
  args: [{ selector: 'n7-text-viewer', template: "<div\n class=\"n7-text-viewer {{data.classes || ''}}\"\n *ngIf=\"data && data.endpoint\"\n>\n\n <pb-page [attr.endpoint]=\"data.endpoint\" api-version=\"1.0.0\">\n <pb-document\n *ngFor=\"let doc of data.docs\"\n [path]=\"doc.xml\"\n [odd]=\"doc.odd\"\n [id]=\"doc.id\"\n >\n </pb-document>\n\n <app-drawer-layout force-narrow=\"force-narrow\" narrow=\"\">\n <app-header-layout>\n <app-header\n fixed=\"fixed\"\n data-template=\"browse:fix-links\"\n style=\"\n transition-duration: 0ms;\n transform: translate3d(0px, 0px, 0px);\n left: 0px;\n right: 0.399994px;\n \"\n >\n <app-toolbar\n class=\"toolbar\"\n sticky=\"sticky\"\n style=\"transform: translate3d(0px, 0px, 0px)\"\n >\n <paper-icon-button\n *ngIf=\"data.docs.length === 1\"\n id=\"tocToggle\"\n class=\"toc-toggle\"\n icon=\"icons:view-list\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n\n <pb-toggle-feature\n *ngIf=\"data.docs.length === 1\"\n name=\"highlight1\"\n selector=\"tei-app,pb-popover,pb-highlight\"\n default=\"off\"\n action=\"disable\"\n emit=\"transcription\"\n subscribe=\"transcription\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.view\">\n {{data.labels.view}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.view\">\n <pb-i18n key=\"document.plain\">Plain Reading View</pb-i18n>\n </ng-container>\n </pb-toggle-feature>\n\n <ng-container\n *ngIf=\"data.docs?.length == 1 || data.docs[0].translation\"\n >\n <pb-zoom\n emit=\"transcription\"\n direction=\"in\"\n icon=\"icons:zoom-in\"\n ></pb-zoom>\n <pb-zoom\n emit=\"transcription\"\n direction=\"out\"\n icon=\"icons:zoom-out\"\n ></pb-zoom>\n </ng-container>\n\n <ng-container\n *ngIf=\"!data.docs[0].translation && data.docs?.length == 1\"\n >\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"left\"\n subscribe=\"transcription\"\n direction=\"backward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-left\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"right\"\n subscribe=\"transcription\"\n direction=\"forward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-right\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </ng-container>\n\n <ng-container *ngIf=\"data.docs?.length > 1\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-icon-button\n *ngIf=\"data.docs?.length > 1\"\n id=\"tocToggle\"\n class=\"toc-toggle\"\n icon=\"icons:view-list\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"!data.docs[0].translation && data.docs?.length > 1\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"left\"\n subscribe=\"transcription\"\n direction=\"backward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-left\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </div>\n\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-navigation\n emit=\"transcription\"\n keyboard=\"right\"\n subscribe=\"transcription\"\n direction=\"forward\"\n unit=\"page\"\n >\n <paper-icon-button\n icon=\"icons:chevron-right\"\n role=\"button\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n ></paper-icon-button>\n </pb-navigation>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs?.length > 1 && !data.docs[0].translation\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-zoom\n emit=\"transcription\"\n direction=\"in\"\n icon=\"icons:zoom-in\"\n ></pb-zoom>\n\n <pb-zoom\n emit=\"transcription\"\n direction=\"out\"\n icon=\"icons:zoom-out\"\n ></pb-zoom>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs.length > 1 && data.labels && data.labels.select.label\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-select-feature\n id=\"select-view2\"\n name=\"view2\"\n [label]=\"data.labels && data.labels.select.label ? data.labels.select.label : 'Mostra entit\u00E0'\"\n [items]='[\n {\"name\": data.labels.select.type.all, \n \"selectors\": [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": false}]},\n {\"name\": data.labels.select.type.person, \n \"selectors\": \n [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": true}]},\n {\"name\": data.labels.select.type.place, \"selectors\": \n [{\"selector\": \".place\", \"state\": false}, {\"selector\": \".person\", \"state\": true}]}\n ]'\n subscribe=\"addChannel\"\n emit=\"addChannel\"\n ></pb-select-feature>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs.length > 1 && (!data.labels || !data.labels.select.label)\"\n >\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-select-feature\n id=\"select-view2\"\n name=\"view2\"\n label=\"Mostra entit\u00E0\"\n [items]='[\n {\"name\": \"Tutto\", \n \"selectors\": [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": false}]},\n {\"name\": \"Personaggi\", \n \"selectors\": \n [{\"selector\": \".person\", \"state\": false}, {\"selector\": \".place\", \"state\": true}]},\n {\"name\": \"Luoghi\", \"selectors\": \n [{\"selector\": \".place\", \"state\": false}, {\"selector\": \".person\", \"state\": true}]}\n ]'\n subscribe=\"addChannel\"\n emit=\"addChannel\"\n ></pb-select-feature>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.docs?.length > 1 && data.docs[1].channel && data.facsimile\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.index.hide\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-button raised=\"\" (click)=\"displayIndex()\"\n >{{ !isDisplayed ? data.labels.index.hide :\n data.labels.index.show }}</paper-button\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.index.hide\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <paper-button raised=\"\" (click)=\"displayIndex()\"\n >{{ !isDisplayed ? 'Indici' : 'Riassunto'\n }}</paper-button\n >\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.docs && data.download\">\n <div class=\"n7-text-viewer__toolbar-container-flex\">\n <pb-download\n [type]=\"data.download && data.download.format ? data.download.format: ''\"\n [src]=\"data.docs[0].id\"\n [url]=\"data.download && data.download.file ? data.download.file : ''\"\n dialog=\"downloadDialog\"\n [title]=\"data.download && data.download.format && data.download.label ? data.download.label + ' ' + data.download.format: ''\"\n >\n <paper-button raised=\"\"\n >{{data.download && data.download.format &&\n data.download.label ? data.download.label + ' ' +\n data.download.format: ''}}</paper-button\n >\n </pb-download>\n </div>\n </ng-container>\n\n <pb-progress\n subscribe=\"transcription\"\n indeterminate=\"\"\n bottom-item=\"bottom-item\"\n style=\"visibility: hidden\"\n ></pb-progress>\n </app-toolbar>\n </app-header>\n\n <pb-drawer\n toggle=\"tocToggle\"\n class=\"tocDrawer\"\n emit=\"toc\"\n subscribe=\"transcription\"\n >\n <div class=\"drawer-content\">\n <h3>\n <ng-container *ngIf=\"data.labels && data.labels.toc\">\n {{data.labels.toc}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.toc\">\n <pb-i18n key=\"document.contents\">Contents</pb-i18n>\n </ng-container>\n </h3>\n <pb-load\n *ngIf=\"data.docs\"\n id=\"toc\"\n url=\"api/document/{doc}/contents?target=transcription&amp;icons=true\"\n [src]=\"data.docs[0].id\"\n subscribe=\"toc\"\n emit=\"toc\"\n expand=\"expand\"\n auto=\"auto\"\n >\n <ng-container *ngIf=\"data.labels && data.labels.loading\">\n {{data.labels.loading}}\n </ng-container>\n <ng-container *ngIf=\"!data.labels || !data.labels.loading\">\n <pb-i18n key=\"dialogs.loading\">Loading</pb-i18n>\n </ng-container>\n </pb-load>\n </div>\n </pb-drawer>\n <main class=\"content-body\">\n <pb-facsimile\n *ngIf=\"data.facsimile\"\n id=\"facsimile\"\n [attr.base-uri]=\"data.facsimile.uri\"\n subscribe=\"transcription\"\n default-zoom-level=\"0\"\n show-navigation-control=\"show-navigation-control\"\n show-navigator=\"show-navigator\"\n >\n </pb-facsimile>\n <ng-container *ngFor=\"let doc of data.docs; index as $i;\">\n <!-- NO CHANNEL -->\n <pb-view\n *ngIf=\"!doc.channel\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n subscribe=\"transcription\"\n emit=\"transcription\"\n [attr.wait-for]=\"data.facsimile ? '#facsimile' : null\"\n column-separator=\".tei-cb\"\n append-footnotes=\"append-footnotes\"\n view=\"{{ doc.view }}\"\n ></pb-view>\n <!-- WITH CHANNEL / MURUCA DEMO -->\n <pb-view\n *ngIf=\"doc.channel && doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n xpath=\"//text[@type='source']\"\n emit=\"{{ doc.channel }}\"\n subscribe=\"{{ doc.channel }}\"\n view=\"{{ doc.view }}\"\n >\n </pb-view>\n <pb-view\n *ngIf=\"doc.channel && doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n xpath=\"{{ doc.xpath }}\"\n emit=\"{{ doc.channel }}\"\n subscribe=\"{{ doc.channel }}\"\n view=\"{{ doc.view }}\"\n >\n <pb-param name=\"mode\" value=\"commentary\"></pb-param>\n </pb-view>\n <!-- WITH CHANNEL / addChannel -->\n <pb-view\n [hidden]=\"isDisplayed\"\n (click)=\"onClick($event)\"\n *ngIf=\"doc.channel && !doc.translation\"\n id=\"view{{ $i }}\"\n [src]=\"doc.id\"\n [odd]=\"doc.odd\"\n emit=\"addChannel\"\n subscribe=\"addChannel\"\n view=\"{{ doc.view }}\"\n >\n <pb-param name=\"mode\" value=\"commentary\"></pb-param>\n </pb-view>\n\n <ng-container *ngIf=\"doc.channel && !doc.translation\">\n <!-- -->\n <pb-view\n [hidden]=\"!isDisplayed\"\n *ngIf=\"doc.channel && !doc.translation\"\n [src]=\"doc.id\"\n [odd]=\"doc.odd\"\n id=\"text-viewer-index\"\n subscribe=\"index\"\n emit=\"letter\"\n >\n <pb-param name=\"mode\" value=\"facets\"></pb-param>\n </pb-view>\n <!-- -->\n </ng-container>\n </ng-container>\n </main>\n </app-header-layout>\n </app-drawer-layout>\n </pb-page>\n</div>\n" }]
1767
- }], propDecorators: { data: [{
1759
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
1768
1760
  type: Input
1769
1761
  }], emit: [{
1770
1762
  type: Input