@posiwise/resource-module 0.0.143 → 0.0.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/public/components/base/base-resource.component.mjs +7 -3
- package/esm2022/lib/public/components/base/base-top-banner.component.mjs +7 -4
- package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +14 -7
- package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +11 -4
- package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +16 -8
- package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +13 -6
- package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +11 -4
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes.component.mjs +14 -3
- package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +11 -4
- package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +12 -4
- package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +12 -4
- package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +13 -6
- package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +11 -3
- package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +25 -3
- package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +12 -5
- package/fesm2022/posiwise-resource-module.mjs +170 -55
- package/fesm2022/posiwise-resource-module.mjs.map +1 -1
- package/lib/public/components/base/base-resource.component.d.ts +1 -0
- package/lib/public/components/base/base-top-banner.component.d.ts +1 -0
- package/lib/public/components/reslease-note-card/release-note-card.component.d.ts +3 -0
- package/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.d.ts +3 -0
- package/lib/public/components/resource-integration/resource-integration.component.d.ts +3 -0
- package/lib/public/components/resource-post/related-resources/related-resources.component.d.ts +3 -0
- package/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.d.ts +3 -0
- package/lib/public/components/resource-release-notes/resource-release-notes.component.d.ts +5 -1
- package/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.d.ts +3 -0
- package/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.d.ts +3 -0
- package/lib/public/components/resource-webinars/resource-webinars.component.d.ts +3 -0
- package/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.d.ts +3 -0
- package/lib/public/components/resources/resource-tags/resource-tags.component.d.ts +3 -0
- package/lib/public/components/resources/vault-section/vault-section.component.d.ts +10 -3
- package/lib/public/components/resources-hub/resources-hub.component.d.ts +3 -0
- package/package.json +1 -1
package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { AdminService } from '@posiwise/admin-module-utils';
|
|
|
5
5
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
6
6
|
import { AuthService, TagService } from '@posiwise/common-services';
|
|
7
7
|
import { CompanyData } from '@posiwise/common-utilities';
|
|
8
|
+
import { HelperService } from '@posiwise/helper-service';
|
|
8
9
|
import { forkJoin } from 'rxjs';
|
|
9
10
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
10
11
|
import { ResourceService } from '../../../resource.service';
|
|
@@ -70,15 +71,18 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
70
71
|
});
|
|
71
72
|
this.userService.getUserInfo().subscribe(data => {
|
|
72
73
|
this.user = data;
|
|
74
|
+
this.getTags();
|
|
73
75
|
});
|
|
74
76
|
}
|
|
75
|
-
|
|
77
|
+
else {
|
|
78
|
+
this.getTags();
|
|
79
|
+
}
|
|
76
80
|
});
|
|
77
81
|
}
|
|
78
82
|
getTags() {
|
|
79
83
|
this.isLoaded = false;
|
|
80
84
|
this.tagService
|
|
81
|
-
.getAllTagCategories({ search: 'Integrations' }, this.
|
|
85
|
+
.getAllTagCategories({ search: 'Integrations' }, this.getEffectiveSubscriptionId())
|
|
82
86
|
.subscribe(response => {
|
|
83
87
|
this.tagCategory = response.tag_categories[0];
|
|
84
88
|
this.getPostTags();
|
|
@@ -107,7 +111,7 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
107
111
|
}
|
|
108
112
|
getPostTags() {
|
|
109
113
|
this.tagService
|
|
110
|
-
.getTagsByType('post_categories', {}, this.
|
|
114
|
+
.getTagsByType('post_categories', {}, this.getEffectiveSubscriptionId())
|
|
111
115
|
.subscribe(response => {
|
|
112
116
|
this.resourcePostTag = response.tags.find(tag => tag.name === 'Product Release Notes');
|
|
113
117
|
this.blogPostTag = response.tags.find(tag => tag.name === 'Integrated Distributors' &&
|
|
@@ -116,8 +120,8 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
116
120
|
tag.tag_category_id === this.tagCategory?.id);
|
|
117
121
|
// use forkJoin to fetch both sets of posts in parallel
|
|
118
122
|
forkJoin({
|
|
119
|
-
vendorResponse: this.resourceService.getPublicPosts(this.
|
|
120
|
-
distributorResponse: this.resourceService.getPublicPosts(this.
|
|
123
|
+
vendorResponse: this.resourceService.getPublicPosts(this.getEffectiveSubscriptionId(), 1, 100, '', '', this.blogPostVendorTag?.id),
|
|
124
|
+
distributorResponse: this.resourceService.getPublicPosts(this.getEffectiveSubscriptionId(), 1, 100, '', '', this.blogPostTag?.id)
|
|
121
125
|
}).subscribe(({ vendorResponse, distributorResponse }) => {
|
|
122
126
|
this.posts = vendorResponse.posts.sort((a, b) => new Date(b.published_at).getTime() - new Date(a.published_at).getTime());
|
|
123
127
|
this.distributerPosts = distributorResponse.posts.sort((a, b) => new Date(b.published_at).getTime() - new Date(a.published_at).getTime());
|
|
@@ -160,7 +164,7 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
160
164
|
this.adminService
|
|
161
165
|
.updateDomainConfig(this.domainId, {
|
|
162
166
|
integrations: updatedIntegrations,
|
|
163
|
-
subscription_id: this.
|
|
167
|
+
subscription_id: this.getEffectiveSubscriptionId()
|
|
164
168
|
})
|
|
165
169
|
.subscribe(() => {
|
|
166
170
|
this.integrations = updatedIntegrations;
|
|
@@ -175,7 +179,7 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
175
179
|
this.adminService
|
|
176
180
|
.updateDomainConfig(this.domainId, {
|
|
177
181
|
guides: updatedGuides,
|
|
178
|
-
subscription_id: this.
|
|
182
|
+
subscription_id: this.getEffectiveSubscriptionId()
|
|
179
183
|
})
|
|
180
184
|
.subscribe(() => {
|
|
181
185
|
this.guideData = updatedGuides;
|
|
@@ -202,6 +206,10 @@ export class ResourceIntegrationComponent extends AppBaseComponent {
|
|
|
202
206
|
dropGuides(event) {
|
|
203
207
|
moveItemInArray(this.editingGuides.items, event.previousIndex, event.currentIndex);
|
|
204
208
|
}
|
|
209
|
+
/** Helper method to get effective subscription ID */
|
|
210
|
+
getEffectiveSubscriptionId() {
|
|
211
|
+
return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
|
|
212
|
+
}
|
|
205
213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceIntegrationComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.ResourceService }, { token: i3.NgbModal }, { token: i4.TagService }, { token: i4.AuthService }, { token: i5.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
206
214
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceIntegrationComponent, selector: "pw-resource-integration", viewQueries: [{ propertyName: "editIntegrationsModal", first: true, predicate: ["editIntegrationsModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pw-resource-header></pw-resource-header>\n<pw-integration-top-banner></pw-integration-top-banner>\n<div class=\"bg-white\">\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container sec-container\">\n <div *ngIf=\"isLoaded && integrationCountDisplay > 0\">\n <h1 class=\"int-title mb-0\">{{ integrationCountDisplay }}+ integrations (& counting)</h1>\n <p class=\"int-text\"> Search the current list of {{companyName}} vendor and distributor integrations below. <br />\n </p>\n </div>\n <pw-resource-company-card *ngIf=\"isLoaded\" [header]=\"'integrated vendors'\"\n (getPosts)=\"getPostTags()\"\n [integrationCountDisplay]=\"integrationCountDisplay\"\n [data]=\"posts\"></pw-resource-company-card>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div *ngIf=\"integrationCountDisplay === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n <div class=\"text-center pt-3 mt-4\" *ngIf=\"isLoaded && integrationCountDisplay > 0\">\n <p class=\"see-span\"> Don\u2019t see what you\u2019re after? <a [href]=\"contactUsUrl\"\n target=\"_blank\"\n class=\"int-span team-span\">Speak with our team to request a connection >\n </a>\n </p>\n </div>\n </div>\n\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <pw-resource-company-card [header]=\"'integrated Distributors'\"\n [integrationCountDisplay]=\"integrationCountDisplay\"\n *ngIf=\"isLoaded\"\n [vendor]=\"true\"\n (getPosts)=\"getPostTags()\"\n [data]=\"distributerPosts\"></pw-resource-company-card>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div *ngIf=\"integrationCountDisplay === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n </div>\n\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\" *ngIf=\"integrations\">\n <div class=\"container\">\n\n <div class=\"how-it-works-wrapper\">\n <div class=\"d-flex\">\n <h1 class=\"it-works-title mb-0\">{{integrations?.title || 'How it works'}}</h1>\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon text-black ms-4 mt-3 cursor-pointer\"\n (click)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n (keydown.enter)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n (keydown.space)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n title=\"Edit Integrations Section\"></i>\n </div>\n <p class=\"pb-20\" [innerHTML]=\"integrations?.description || 'View short example videos to understand how these integrations can work for you:'\"></p>\n <div class=\"row section-row\" [ngClass]=\"{ 'justify-content-center': integrations?.items?.length === 1 }\">\n <ng-container *ngIf=\"integrations?.items?.length > 0; else noIntegrations\">\n <ng-container *ngFor=\"let integration of integrations?.items\">\n <div\n class=\"col-md-6\"\n *ngIf=\"integration?.image_url || integration?.title || integration?.description\"\n >\n <ng-container *ngIf=\"integration?.video_url && integration?.video_url.includes('https'); else noVideo\">\n <div class=\"d-flex justify-content-center cursor-pointer\">\n <img\n *ngIf=\"integration?.video_url\"\n [src]=\"integration?.image_url\"\n (click)=\"loadMicrosoftVideo(integration?.video_url)\"\n (keydown.enter)=\"loadMicrosoftVideo(integration?.video_url)\"\n class=\"how-it-works-img\"\n alt=\"Integration Video Thumbnail\"\n />\n </div>\n </ng-container>\n\n <ng-template #noVideo>\n <div class=\"d-flex justify-content-center\">\n <div class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'No video found' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #noIntegrations>\n <div class=\"w-100 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Integration.NoDataMessage' | transloco\"></pw-no-data>\n </div>\n </ng-template>\n\n </div>\n </div>\n </div>\n\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\" *ngIf=\"showIntegrations()\">\n <div class=\"container\">\n <div class=\"row align-items-start\">\n <div class=\"col-md-6 text-md-start text-center\">\n <div class=\"d-flex\">\n <h1 class=\"guide-title mb-3\">{{guideData?.items[0]?.title || '--UPDATE ME ON THE ADMIN/DOMAINS MODULE--'}}</h1>\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon text-black ms-4 mt-3 cursor-pointer\"\n (click)=\"openGuidesModal(guidesEditModal)\"\n (keydown.enter)=\"openGuidesModal(guidesEditModal)\"\n (keydown.space)=\"openGuidesModal(guidesEditModal)\"\n title=\"Edit Integrations Section\"></i>\n </div>\n <p class=\"guide-subtext\"\n [innerHTML]=\"guideData?.items[0]?.description || '--UPDATE ME ON THE ADMIN/DOMAINS MODULE--'\">\n </p>\n <a class=\"vault-btn\"\n [href]=\"guideData?.items[0]?.guide_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {{guideData?.items[0]?.button_text || 'View the guide'}}\n </a>\n\n </div>\n\n <div class=\"col-md-6 text-center\">\n <ng-container *ngIf=\"guideData?.items[0]?.image_url && !guideData?.items[0].image_url.includes('default-photo.jpg'); else noDataTemplate\">\n <img\n [src]=\"guideData?.items[0].image_url\"\n alt=\"Guide\"\n class=\"guide-img\" />\n </ng-container>\n\n <ng-template #noDataTemplate>\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'--ADD ME ON THE ADMIN/DOMAINS MODULE--' | transloco\" />\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </section>\n</div>\n\n<pw-resource-note-card *ngIf=\"resourcePostTag?.tag_category_id\" [categoryId]=\"resourcePostTag?.tag_category_id\" [tag]=\"resourcePostTag\" [releaseHeader]=\"true\" [resourceTitle]=\"resourcePostTag?.title\"></pw-resource-note-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n\n\n\n<ng-template #editIntegrationsModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Integrations Section</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"integration-title\">Title</label>\n <input class=\"form-control\" id=\"integration-title\" [(ngModel)]=\"editingIntegrations.title\" />\n </div>\n\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"integration-description\">Description</label>\n <textarea class=\"form-control\" id=\"integration-description\" rows=\"3\" [(ngModel)]=\"editingIntegrations.description\"></textarea>\n </div>\n\n <div cdkDropList (cdkDropListDropped)=\"dropIntegrationItems($event)\">\n <div *ngFor=\"let integration of editingIntegrations.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <label class=\"form-label mb-0\" for=\"integration-item\">Integration Item</label>\n <i class=\"fa fa-bars cursor-move in-page-bars-icon\" cdkDragHandle></i>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-title-' + i\">Title</label>\n <input class=\"form-control\" [id]=\"'integration-item-title-' + i\" [(ngModel)]=\"integration.title\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-description-' + i\">Description</label>\n <input class=\"form-control\" [id]=\"'integration-item-description-' + i\" [(ngModel)]=\"integration.description\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-blog-url-' + i\">Blog URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-blog-url-' + i\" [(ngModel)]=\"integration.blog_url\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-image-url-' + i\">Image URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-image-url-' + i\" [(ngModel)]=\"integration.image_url\" />\n </div>\n <div class=\"col-md-12 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-video-url-' + i\">Video URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-video-url-' + i\" [(ngModel)]=\"integration.video_url\" />\n </div>\n </div>\n\n <div class=\"d-flex justify-content-end\">\n <i class=\"fa fa-trash text-danger cursor-pointer\" (click)=\"removeIntegrationItem(i)\" (keydown.enter)=\"removeIntegrationItem(i)\"\n (keydown.space)=\"removeIntegrationItem(i)\"></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm\" (click)=\"addIntegrationItem()\">+ Add Integration</button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveIntegrations(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #guidesEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Guides</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Guides Section</h4>\n\n <div cdkDropList (cdkDropListDropped)=\"dropGuides($event)\">\n <div *ngFor=\"let guide of editingGuides.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-title-' + i\">Title</label>\n <input class=\"form-control\" [id]=\"'guide-title-' + i\" [(ngModel)]=\"guide.title\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-button-text-' + i\">Button Text</label>\n <input class=\"form-control\" [id]=\"'guide-button-text-' + i\" [(ngModel)]=\"guide.button_text\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-image-url-' + i\">Image URL</label>\n <input class=\"form-control\" [id]=\"'guide-image-url-' + i\" [(ngModel)]=\"guide.image_url\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-url-' + i\">Guide URL</label>\n <input class=\"form-control\" [id]=\"'guide-url-' + i\" [(ngModel)]=\"guide.guide_url\" />\n </div>\n <div class=\"col-12 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-description-' + i\">Description</label>\n <textarea class=\"form-control\" [id]=\"'guide-description-' + i\" rows=\"3\" [(ngModel)]=\"guide.description\"></textarea>\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <i class=\"fa fa-trash text-danger cursor-pointer\" (click)=\"removeGuide(i)\" (keydown.enter)=\"removeGuide(i)\" (keydown.space)=\"removeGuide(i)\"></i>\n <i class=\"fa fa-bars cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-2\" (click)=\"addGuide()\">+ Add Guide</button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveGuides(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".int-span{font-size:3rem;color:#3d8fbe}.team-span{font-size:2rem;color:#3d8fbe;font-weight:100}.see-span{font-size:2rem;font-weight:100}::ng-deep .edit-card .in-page-edit-icon{margin-left:1rem!important;margin-top:.5rem!important}::ng-deep .modal-content{margin-top:5rem!important}.how-it-works-wrapper .it-works-title{font-size:3rem;margin-bottom:2rem;color:var(--text-color, black);font-weight:200!important;padding-bottom:12px!important}.how-it-works-wrapper .how-it-works-img{width:85%!important;margin:0 auto!important}.how-it-works-wrapper p{padding-top:1rem;font-size:2rem;color:#000;font-weight:100;margin-bottom:4rem}.guide-wrapper{padding:55px 47px 220px}.guide-wrapper .horizontal{position:absolute;left:0;bottom:24%;width:100%}.guide-wrapper .pb-20{padding-bottom:20px}.guide-wrapper .flex{display:flex}.guide-wrapper .guideimg{margin:0 auto}.guide-wrapper .guide-title{font: 500 28px Montserrat-Regular,sans-serif}.guide-wrapper p{font: 400 17px Montserrat-Regular,sans-serif;color:#182527}.cloudolive-guide-section{box-shadow:0 4px 32px -14px #40576d4d!important;position:relative}.cloudolive-guide-section .integration-fadeout{position:absolute;bottom:0;left:0;width:100%;height:80px;background:linear-gradient(to bottom,#fff0,#f8f9fa);pointer-events:none}@media (width >= 768px){.cloudolive-guide-section .container-section{padding:20px 190px 20px 120px!important}}@media (width <= 768px){.cloudolive-guide-section .container-section{padding:3rem!important}.cloudolive-guide-section .guide-img{max-width:236px!important}.cloudolive-guide-section .guide-title{font-size:3.25rem!important}.cloudolive-guide-section .vault-btn{width:90%!important;margin-bottom:3rem!important}.cloudolive-guide-section .guide-subtext{padding:2rem;line-height:2rem!important}}.cloudolive-guide-section .guide-title{font-size:3rem;font-weight:200}.cloudolive-guide-section .guide-subtext{font-size:1.7rem;line-height:3rem;color:var(--text-color, black);font-weight:200;margin-bottom:2rem}.cloudolive-guide-section .guide-note{font-size:1.7rem;color:#000;font-weight:100}.cloudolive-guide-section .vault-btn{display:inline-block;background:var(--text-color, black);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;margin-top:1rem!important;font-size:1.4rem;border:1px solid;box-shadow:none!important;border-color:var(--text-color, textColor)}.cloudolive-guide-section .vault-btn:hover{background:#fff;color:var(--text-color, black)!important}.cloudolive-guide-section .guide-img{max-width:536px;max-height:536px!important;height:auto}.int-title{color:var(--text-color, black);font-size:4rem!important;font-weight:400}.int-text{font-size:1.3rem;font-weight:300}@media (width >= 991px){.section-outer{padding-top:7rem!important}}\n", ".bold{font-weight:700}.nce-heading{margin-bottom:2rem}.nce-note{margin-top:1rem;font-size:.85rem;color:#555}.nce-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.msp-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.msp-vault-section .vault-heading{font-size:3rem;font-weight:300}.msp-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.msp-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.msp-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.msp-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.msp-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.msp-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.msp-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.msp-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.msp-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media (width <= 1200px){.msp-vault-section .vault-heading{font-size:3.5rem}.msp-vault-section .vault-description{margin-top:1.35rem}.msp-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media (width >= 991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 768px){.video-row{gap:3rem!important}}@media (width <= 768px){.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media (width <= 1200px){.container{padding:7rem 3rem 1rem!important}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.Trial4ContactUsComponent, selector: "pw-trial-4-contact-us", inputs: ["subscriptionId", "sourceId", "masterSubscriptionId", "experimentName", "microserviceName", "shardName"] }, { kind: "component", type: i9.ResourceHeaderComponent, selector: "pw-resource-header" }, { kind: "component", type: i10.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i11.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i11.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i12.LazyImgDirective, selector: "img" }, { kind: "component", type: i13.IntegrationTopBannerComponent, selector: "pw-integration-top-banner" }, { kind: "component", type: i14.ResourceNoteCardComponent, selector: "pw-resource-note-card", inputs: ["releaseHeader", "categoryId", "isReleasePress", "postSlice", "resourceTitle", "tag"] }, { kind: "component", type: i15.ResourceCompanyCardComponent, selector: "pw-resource-company-card", inputs: ["header", "data", "integrationCountDisplay", "vendor"], outputs: ["getPosts"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }] }); }
|
|
207
215
|
}
|
|
@@ -212,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
212
220
|
type: ViewChild,
|
|
213
221
|
args: ['editIntegrationsModal']
|
|
214
222
|
}] } });
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtaW50ZWdyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1pbnRlZ3JhdGlvbi9yZXNvdXJjZS1pbnRlZ3JhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWludGVncmF0aW9uL3Jlc291cmNlLWludGVncmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVU1RCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsZ0JBQWdCO0lBMEM5RCxZQUNxQixT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YSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUMxQixLQUFLLEVBQUUsRUFBRTtZQUNULFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsRUFBRTtZQUNiLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBNEI7UUFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7K0dBalFRLDRCQUE0QjttR0FBNUIsNEJBQTRCLHNOQ3hCekMsMjNaQTRRQTs7NEZEcFBhLDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDSSx5QkFBeUI7Mk9BUUMscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVGFnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tcGFueURhdGEsIFJlc291cmNlLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2UtaW50ZWdyYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1pbnRlZ3JhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL3Jlc291cmNlLWludGVncmF0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uL3Jlc291cmNlcy9yZXNvdXJjZXMtc2hhcmVkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJbnRlZ3JhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2VkaXRJbnRlZ3JhdGlvbnNNb2RhbCcpIGVkaXRJbnRlZ3JhdGlvbnNNb2RhbDogVGVtcGxhdGVSZWY8Q3VzdG9tVXBsb2FkZXJDb21wb25lbnQ+O1xuICAgIGVkaXRpbmdJbnRlZ3JhdGlvbnM7XG4gICAgZGlzdHJpYnV0b3JzRGF0YSA9IENvbXBhbnlEYXRhPy5kaXN0cmlidXRvcnNEYXRhO1xuICAgIHZlbmRvcnNEYXRhID0gQ29tcGFueURhdGE/LnZlbmRvcnNEYXRhO1xuXG4gICAgdGV4dENvbG9yID0gdGhpcy5hcHBDb25maWc/LmNvbG9yX2NvZGVzPy50ZXh0O1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgZGlzdHJpYnV0ZXJQb3N0cyA9IFtdO1xuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBibG9nUG9zdFRhZztcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIHJlc291cmNlUG9zdFRhZztcbiAgICBibG9nUG9zdFZlbmRvclRhZztcblxuICAgIGludGVncmF0aW9ucyA9IHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmludGVncmF0aW9ucztcblxuICAgIHJlbGVhc2VOb3Rlc0xpbmsgPSAnL3Jlc291cmNlcy9wcm9kdWN0LXJlbGVhc2Utbm90ZXMnO1xuICAgIHExTm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXExLTIwMjUnO1xuICAgIHEzTm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXEzLTIwMjQnO1xuICAgIHE0Tm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXE0LTIwMjQnO1xuICAgIGNvbXBhbnlOYW1lO1xuXG4gICAgdmlkZW9XZWJpbmFyTG9hZGVkID0gZmFsc2U7XG4gICAgdmlkZW9EZW1vTG9hZGVkID0gZmFsc2U7XG4gICAgeW91dHViZVZpZGVvSWQgPSAnUjdWazIxOXpiaEEnO1xuICAgIHZpZGVvVGl0bGUgPSAnQ2xvdWRPbGl2ZSBPdmVydmlldyc7XG4gICAgc2FuaXRpemVkTWljcm9zb2Z0VmlkZW9Vcmw6IFNhZmVSZXNvdXJjZVVybDtcbiAgICBzYW5pdGl6ZWRLZXN5YVZpZGVvVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG4gICAgaW50ZWdyYXRpb25Db3VudERpc3BsYXk6IG51bWJlcjtcbiAgICBjb250YWN0VXNVcmwgPSB0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5jb250YWN0X3VzPy51cmw7XG4gICAgdGFnQ2F0ZWdvcnk7XG4gICAgdG90YWxQb3N0czogbnVtYmVyO1xuXG4gICAgZ3VpZGVEYXRhID0gdGhpcy5hcHBDb25maWc/LnBhZ2VzX2NvbmZpZz8uZ3VpZGVzO1xuICAgIGVkaXRpbmdHdWlkZXMgPSB7IGl0ZW1zOiBbXSB9O1xuICAgIHVzZXI6IFVzZXI7XG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZy5kb21haW5faWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBhbnlOYW1lID0gdGhpcy5hcHBDb25maWcuY29tcGFueS5uYW1lO1xuXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10ZXh0LWNvbG9yJywgdGhpcy50ZXh0Q29sb3IpO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuJCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0VGFncygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhZ3MoKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YWdTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QWxsVGFnQ2F0ZWdvcmllcyhcbiAgICAgICAgICAgICAgICB7IHNlYXJjaDogJ0ludGVncmF0aW9ucycgfSxcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkIHx8IHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFnQ2F0ZWdvcnkgPSByZXNwb25zZS50YWdfY2F0ZWdvcmllc1swXTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuRWRpdEludGVncmF0aW9uc01vZGFsKG1vZGFsUmVmKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0ludGVncmF0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5pbnRlZ3JhdGlvbnMpKTtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFJlZiwge1xuICAgICAgICAgICAgc2l6ZTogJ2xnJyxcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3dJbnRlZ3JhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmd1aWRlRGF0YT8uaXRlbXMpICYmIHRoaXMuZ3VpZGVEYXRhLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZ3VpZGVEYXRhLml0ZW1zWzBdO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAhIWl0ZW0/LnRpdGxlIHx8XG4gICAgICAgICAgICAgICAgISFpdGVtPy5kZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAgICEhaXRlbT8uZ3VpZGVfdXJsIHx8XG4gICAgICAgICAgICAgICAgKCEhaXRlbT8uaW1hZ2VfdXJsICYmICFpdGVtLmltYWdlX3VybC5pbmNsdWRlcygnZGVmYXVsdC1pbWFnZS5wbmcnKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0VGFncygpIHtcbiAgICAgICAgdGhpcy50YWdTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VGFnc0J5VHlwZSgncG9zdF9jYXRlZ29yaWVzJywge30sIHRoaXMuc3Vic2NyaXB0aW9uSWQgfHwgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb3VyY2VQb3N0VGFnID0gcmVzcG9uc2UudGFncy5maW5kKFxuICAgICAgICAgICAgICAgICAgICB0YWcgPT4gdGFnLm5hbWUgPT09ICdQcm9kdWN0IFJlbGVhc2UgTm90ZXMnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2dQb3N0VGFnID0gcmVzcG9uc2UudGFncy5maW5kKFxuICAgICAgICAgICAgICAgICAgICB0YWcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZy5uYW1lID09PSAnSW50ZWdyYXRlZCBEaXN0cmlidXRvcnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWcudGFnX2NhdGVnb3J5X2lkID09PSB0aGlzLnRhZ0NhdGVnb3J5Py5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ibG9nUG9zdFZlbmRvclRhZyA9IHJlc3BvbnNlLnRhZ3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgdGFnID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWcubmFtZSA9PT0gJ0ludGVncmF0ZWQgVmVuZG9ycycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZy50YWdfY2F0ZWdvcnlfaWQgPT09IHRoaXMudGFnQ2F0ZWdvcnk/LmlkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIHVzZSBmb3JrSm9pbiB0byBmZXRjaCBib3RoIHNldHMgb2YgcG9zdHMgaW4gcGFyYWxsZWxcbiAgICAgICAgICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICAgICAgICAgIHZlbmRvclJlc3BvbnNlOiB0aGlzLnJlc291cmNlU2VydmljZS5nZXRQdWJsaWNQb3N0cyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgfHwgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9nUG9zdFZlbmRvclRhZz8uaWRcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0b3JSZXNwb25zZTogdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkIHx8IHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RUYWc/LmlkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoKHsgdmVuZG9yUmVzcG9uc2UsIGRpc3RyaWJ1dG9yUmVzcG9uc2UgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gdmVuZG9yUmVzcG9uc2UucG9zdHMuc29ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGIucHVibGlzaGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLnB1Ymxpc2hlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXN0cmlidXRlclBvc3RzID0gZGlzdHJpYnV0b3JSZXNwb25zZS5wb3N0cy5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYi5wdWJsaXNoZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEucHVibGlzaGVkX2F0KS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZW5kb3JDb3VudCA9IHZlbmRvclJlc3BvbnNlPy5vYmplY3RfY291bnQgPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzdHJpYnV0b3JDb3VudCA9IGRpc3RyaWJ1dG9yUmVzcG9uc2U/Lm9iamVjdF9jb3VudCA/PyAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IHZlbmRvckNvdW50ICsgZGlzdHJpYnV0b3JDb3VudDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVncmF0aW9uQ291bnREaXNwbGF5ID0gdG90YWwgPT09IDAgPyAwIDogTWF0aC5jZWlsKHRvdGFsIC8gMTApICogMTA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZE1pY3Jvc29mdFZpZGVvKHZpZGVvVXJsKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHZpZGVvVXJsLCAnX2JsYW5rJywgJ25vb3BlbmVyLG5vcmVmZXJyZXInKTtcbiAgICB9XG5cbiAgICBsb2FkS2VzZXlhVmlkZW8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBgaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHt0aGlzLnlvdXR1YmVWaWRlb0lkfT9hdXRvcGxheT0xYDtcbiAgICAgICAgLy8gYmFzZVVybCBpcyBhIHRydXN0ZWQgaW50ZXJuYWwgc291cmNlIChlLmcuIFlvdVR1YmUgZW1iZWQgVVJMKVxuICAgICAgICB0aGlzLnNhbml0aXplZEtlc3lhVmlkZW9VcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoYmFzZVVybCk7IC8vIE5PU09OQVJcbiAgICAgICAgdGhpcy52aWRlb1dlYmluYXJMb2FkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGFkZEludGVncmF0aW9uSXRlbSgpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nSW50ZWdyYXRpb25zLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgYmxvZ191cmw6ICcnLFxuICAgICAgICAgICAgaW1hZ2VfdXJsOiAnJyxcbiAgICAgICAgICAgIHZpZGVvX3VybDogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSW50ZWdyYXRpb25JdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nSW50ZWdyYXRpb25zLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgZHJvcEludGVncmF0aW9uSXRlbXMoZXZlbnQpIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZWRpdGluZ0ludGVncmF0aW9ucy5pdGVtcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9XG5cbiAgICBzYXZlSW50ZWdyYXRpb25zKG1vZGFsUmVmKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRJbnRlZ3JhdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmVkaXRpbmdJbnRlZ3JhdGlvbnNcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZURvbWFpbkNvbmZpZyh0aGlzLmRvbWFpbklkLCB7XG4gICAgICAgICAgICAgICAgaW50ZWdyYXRpb25zOiB1cGRhdGVkSW50ZWdyYXRpb25zLFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25zID0gdXBkYXRlZEludGVncmF0aW9ucztcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ0ludGVncmF0aW9ucyB1cGRhdGVkJyk7XG4gICAgICAgICAgICAgICAgbW9kYWxSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmVHdWlkZXMobW9kYWxSZWYpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEd1aWRlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZWRpdGluZ0d1aWRlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlRG9tYWluQ29uZmlnKHRoaXMuZG9tYWluSWQsIHtcbiAgICAgICAgICAgICAgICBndWlkZXM6IHVwZGF0ZWRHdWlkZXMsXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ndWlkZURhdGEgPSB1cGRhdGVkR3VpZGVzO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnR3VpZGVzIHVwZGF0ZWQnKTtcbiAgICAgICAgICAgICAgICBtb2RhbFJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3Blbkd1aWRlc01vZGFsKHRlbXBsYXRlKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0d1aWRlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ndWlkZURhdGEgPz8geyBpdGVtczogW10gfSkpO1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRlbXBsYXRlLCB7IHNpemU6ICd4bCcgfSk7XG4gICAgfVxuXG4gICAgYWRkR3VpZGUoKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0d1aWRlcy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGJ1dHRvbl90ZXh0OiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICBndWlkZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUd1aWRlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nR3VpZGVzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgZHJvcEd1aWRlcyhldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdHdWlkZXMuaXRlbXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxufVxuIiwiPHB3LXJlc291cmNlLWhlYWRlcj48L3B3LXJlc291cmNlLWhlYWRlcj5cbjxwdy1pbnRlZ3JhdGlvbi10b3AtYmFubmVyPjwvcHctaW50ZWdyYXRpb24tdG9wLWJhbm5lcj5cbjxkaXYgY2xhc3M9XCJiZy13aGl0ZVwiPlxuICA8c2VjdGlvbiBjbGFzcz1cImNsb3Vkb2xpdmUtZ3VpZGUtc2VjdGlvbiBiZy13aGl0ZSBweS01IHNlY3Rpb24tb3V0ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHNlYy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgICpuZ0lmPVwiaXNMb2FkZWQgJiYgaW50ZWdyYXRpb25Db3VudERpc3BsYXkgPiAwXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImludC10aXRsZSBtYi0wXCI+e3sgaW50ZWdyYXRpb25Db3VudERpc3BsYXkgfX0rIGludGVncmF0aW9ucyAoJiBjb3VudGluZyk8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cImludC10ZXh0XCI+IFNlYXJjaCB0aGUgY3VycmVudCBsaXN0IG9mIHt7Y29tcGFueU5hbWV9fSB2ZW5kb3IgYW5kIGRpc3RyaWJ1dG9yIGludGVncmF0aW9ucyBiZWxvdy4gPGJyIC8+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHB3LXJlc291cmNlLWNvbXBhbnktY2FyZCAqbmdJZj1cImlzTG9hZGVkXCIgW2hlYWRlcl09XCInaW50ZWdyYXRlZCB2ZW5kb3JzJ1wiXG4gICAgICAgIChnZXRQb3N0cyk9XCJnZXRQb3N0VGFncygpXCJcbiAgICAgICAgW2ludGVncmF0aW9uQ291bnREaXNwbGF5XT1cImludGVncmF0aW9uQ291bnREaXNwbGF5XCJcbiAgICAgICAgW2RhdGFdPVwicG9zdHNcIj48L3B3LXJlc291cmNlLWNvbXBhbnktY2FyZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIlxuICAgICAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInUmVzb3VyY2UuTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIi8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC0zIG10LTRcIiAqbmdJZj1cImlzTG9hZGVkICYmIGludGVncmF0aW9uQ291bnREaXNwbGF5ID4gMFwiPlxuICAgICAgICA8cCBjbGFzcz1cInNlZS1zcGFuXCI+IERvbuKAmXQgc2VlIHdoYXQgeW914oCZcmUgYWZ0ZXI/IDxhIFtocmVmXT1cImNvbnRhY3RVc1VybFwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbnQtc3BhbiB0ZWFtLXNwYW5cIj5TcGVhayB3aXRoIG91ciB0ZWFtIHRvIHJlcXVlc3QgYSBjb25uZWN0aW9uID5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvc2VjdGlvbj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJjbG91ZG9saXZlLWd1aWRlLXNlY3Rpb24gYmctd2hpdGUgcHktNSBzZWN0aW9uLW91dGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPHB3LXJlc291cmNlLWNvbXBhbnktY2FyZCBbaGVhZGVyXT1cIidpbnRlZ3JhdGVkIERpc3RyaWJ1dG9ycydcIlxuICAgICAgW2ludGVncmF0aW9uQ291bnREaXNwbGF5XT1cImludGVncmF0aW9uQ291bnREaXNwbGF5XCJcbiAgICAgICpuZ0lmPVwiaXNMb2FkZWRcIlxuICAgICAgICBbdmVuZG9yXT1cInRydWVcIlxuICAgICAgICAoZ2V0UG9zdHMpPVwiZ2V0UG9zdFRhZ3MoKVwiXG4gICAgICAgIFtkYXRhXT1cImRpc3RyaWJ1dGVyUG9zdHNcIj48L3B3LXJlc291cmNlLWNvbXBhbnktY2FyZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIlxuICAgICAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImludGVncmF0aW9uQ291bnREaXNwbGF5ID09PSAwICYmIGlzTG9hZGVkXCI+XG4gICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1Jlc291cmNlLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L3NlY3Rpb24+XG4gIDxzZWN0aW9uIGNsYXNzPVwiY2xvdWRvbGl2ZS1ndWlkZS1zZWN0aW9uIGJnLXdoaXRlIHB5LTUgc2VjdGlvbi1vdXRlclwiICpuZ0lmPVwiaW50ZWdyYXRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaG93LWl0LXdvcmtzLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cIml0LXdvcmtzLXRpdGxlIG1iLTBcIj57e2ludGVncmF0aW9ucz8udGl0bGUgfHwgJ0hvdyBpdCB3b3Jrcyd9fTwvaDE+XG4gICAgICAgICAgPGkgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuQWRtaW4nXVwiXG4gICAgICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGluLXBhZ2UtZWRpdC1pY29uIHRleHQtYmxhY2sgbXMtNCBtdC0zIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkVkaXRJbnRlZ3JhdGlvbnNNb2RhbChlZGl0SW50ZWdyYXRpb25zTW9kYWwpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuRWRpdEludGVncmF0aW9uc01vZGFsKGVkaXRJbnRlZ3JhdGlvbnNNb2RhbClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9wZW5FZGl0SW50ZWdyYXRpb25zTW9kYWwoZWRpdEludGVncmF0aW9uc01vZGFsKVwiXG4gICAgICAgICAgdGl0bGU9XCJFZGl0IEludGVncmF0aW9ucyBTZWN0aW9uXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwYi0yMFwiIFtpbm5lckhUTUxdPVwiaW50ZWdyYXRpb25zPy5kZXNjcmlwdGlvbiB8fCAnVmlldyBzaG9ydCBleGFtcGxlIHZpZGVvcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBpbnRlZ3JhdGlvbnMgY2FuIHdvcmsgZm9yIHlvdTonXCI+PC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tcm93XCIgIFtuZ0NsYXNzXT1cInsgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBpbnRlZ3JhdGlvbnM/Lml0ZW1zPy5sZW5ndGggPT09IDEgfVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlZ3JhdGlvbnM/Lml0ZW1zPy5sZW5ndGggPiAwOyBlbHNlIG5vSW50ZWdyYXRpb25zXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbnRlZ3JhdGlvbiBvZiBpbnRlZ3JhdGlvbnM/Lml0ZW1zXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC02XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImludGVncmF0aW9uPy5pbWFnZV91cmwgfHwgaW50ZWdyYXRpb24/LnRpdGxlIHx8IGludGVncmF0aW9uPy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVncmF0aW9uPy52aWRlb191cmwgJiYgaW50ZWdyYXRpb24/LnZpZGVvX3VybC5pbmNsdWRlcygnaHR0cHMnKTsgZWxzZSBub1ZpZGVvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW50ZWdyYXRpb24/LnZpZGVvX3VybFwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW50ZWdyYXRpb24/LmltYWdlX3VybFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkTWljcm9zb2Z0VmlkZW8oaW50ZWdyYXRpb24/LnZpZGVvX3VybClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJsb2FkTWljcm9zb2Z0VmlkZW8oaW50ZWdyYXRpb24/LnZpZGVvX3VybClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhvdy1pdC13b3Jrcy1pbWdcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJJbnRlZ3JhdGlvbiBWaWRlbyBUaHVtYm5haWxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZpZGVvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidObyB2aWRlbyBmb3VuZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wdy1uby1kYXRhPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ludGVncmF0aW9ucz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInSW50ZWdyYXRpb24uTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj48L3B3LW5vLWRhdGE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9zZWN0aW9uPlxuIDxzZWN0aW9uIGNsYXNzPVwiY2xvdWRvbGl2ZS1ndWlkZS1zZWN0aW9uIGJnLXdoaXRlIHB5LTUgc2VjdGlvbi1vdXRlclwiICpuZ0lmPVwic2hvd0ludGVncmF0aW9ucygpXCI+XG4gICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRleHQtbWQtc3RhcnQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cImd1aWRlLXRpdGxlIG1iLTNcIj57e2d1aWRlRGF0YT8uaXRlbXNbMF0/LnRpdGxlIHx8ICctLVVQREFURSBNRSBPTiBUSEUgQURNSU4vRE9NQUlOUyBNT0RVTEUtLSd9fTwvaDE+XG4gICAgICAgICAgPGkgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuQWRtaW4nXVwiXG4gICAgICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGluLXBhZ2UtZWRpdC1pY29uIHRleHQtYmxhY2sgbXMtNCBtdC0zIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwib3Blbkd1aWRlc01vZGFsKGd1aWRlc0VkaXRNb2RhbClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5HdWlkZXNNb2RhbChndWlkZXNFZGl0TW9kYWwpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvcGVuR3VpZGVzTW9kYWwoZ3VpZGVzRWRpdE1vZGFsKVwiXG4gICAgICAgICAgdGl0bGU9XCJFZGl0IEludGVncmF0aW9ucyBTZWN0aW9uXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImd1aWRlLXN1YnRleHRcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ3VpZGVEYXRhPy5pdGVtc1swXT8uZGVzY3JpcHRpb24gfHwgJy0tVVBEQVRFIE1FIE9OIFRIRSBBRE1JTi9ET01BSU5TIE1PRFVMRS0tJ1wiPlxuICAgICAgIDwvcD5cbiAgICAgICAgICA8YSBjbGFzcz1cInZhdWx0LWJ0blwiXG4gICAgICAgICAgICBbaHJlZl09XCJndWlkZURhdGE/Lml0ZW1zWzBdPy5ndWlkZV91cmxcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgIHt7Z3VpZGVEYXRhPy5pdGVtc1swXT8uYnV0dG9uX3RleHQgfHwgJ1ZpZXcgdGhlIGd1aWRlJ319XG4gICAgICAgICAgPC9hPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJndWlkZURhdGE/Lml0ZW1zWzBdPy5pbWFnZV91cmwgJiYgIWd1aWRlRGF0YT8uaXRlbXNbMF0uaW1hZ2VfdXJsLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpOyBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgW3NyY109XCJndWlkZURhdGE/Lml0ZW1zWzBdLmltYWdlX3VybFwiXG4gICAgICAgICAgICBhbHQ9XCJHdWlkZVwiXG4gICAgICAgICAgICBjbGFzcz1cImd1aWRlLWltZ1wiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhVGVtcGxhdGU+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIictLUFERCBNRSBPTiBUSEUgQURNSU4vRE9NQUlOUyBNT0RVTEUtLScgfCB0cmFuc2xvY29cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiA8L2Rpdj5cbiA8L3NlY3Rpb24+XG48L2Rpdj5cblxuPHB3LXJlc291cmNlLW5vdGUtY2FyZCAqbmdJZj1cInJlc291cmNlUG9zdFRhZz8udGFnX2NhdGVnb3J5X2lkXCIgW2NhdGVnb3J5SWRdPVwicmVzb3VyY2VQb3N0VGFnPy50YWdfY2F0ZWdvcnlfaWRcIiBbdGFnXT1cInJlc291cmNlUG9zdFRhZ1wiIFtyZWxlYXNlSGVhZGVyXT1cInRydWVcIiBbcmVzb3VyY2VUaXRsZV09XCJyZXNvdXJjZVBvc3RUYWc/LnRpdGxlXCI+PC9wdy1yZXNvdXJjZS1ub3RlLWNhcmQ+XG5cbjxwdy10cmlhbC00LWNvbnRhY3QtdXM+PC9wdy10cmlhbC00LWNvbnRhY3QtdXM+XG5cblxuXG48bmctdGVtcGxhdGUgI2VkaXRJbnRlZ3JhdGlvbnNNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgSW50ZWdyYXRpb25zIFNlY3Rpb248L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW50ZWdyYXRpb24tdGl0bGVcIj5UaXRsZTwvbGFiZWw+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImludGVncmF0aW9uLXRpdGxlXCIgWyhuZ01vZGVsKV09XCJlZGl0aW5nSW50ZWdyYXRpb25zLnRpdGxlXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW50ZWdyYXRpb24tZGVzY3JpcHRpb25cIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImludGVncmF0aW9uLWRlc2NyaXB0aW9uXCIgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImVkaXRpbmdJbnRlZ3JhdGlvbnMuZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRlZ3JhdGlvbkl0ZW1zKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGludGVncmF0aW9uIG9mIGVkaXRpbmdJbnRlZ3JhdGlvbnMuaXRlbXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJvcmRlciBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIiBmb3I9XCJpbnRlZ3JhdGlvbi1pdGVtXCI+SW50ZWdyYXRpb24gSXRlbTwvbGFiZWw+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzIGN1cnNvci1tb3ZlIGluLXBhZ2UtYmFycy1pY29uXCIgY2RrRHJhZ0hhbmRsZT48L2k+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2ludGVncmF0aW9uLWl0ZW0tdGl0bGUtJyArIGlcIj5UaXRsZTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2ludGVncmF0aW9uLWl0ZW0tdGl0bGUtJyArIGlcIiBbKG5nTW9kZWwpXT1cImludGVncmF0aW9uLnRpdGxlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2ludGVncmF0aW9uLWl0ZW0tZGVzY3JpcHRpb24tJyArIGlcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2ludGVncmF0aW9uLWl0ZW0tZGVzY3JpcHRpb24tJyArIGlcIiBbKG5nTW9kZWwpXT1cImludGVncmF0aW9uLmRlc2NyaXB0aW9uXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2ludGVncmF0aW9uLWl0ZW0tYmxvZy11cmwtJyArIGlcIj5CbG9nIFVSTDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2ludGVncmF0aW9uLWl0ZW0tYmxvZy11cmwtJyArIGlcIiBbKG5nTW9kZWwpXT1cImludGVncmF0aW9uLmJsb2dfdXJsXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2ludGVncmF0aW9uLWl0ZW0taW1hZ2UtdXJsLScgKyBpXCI+SW1hZ2UgVVJMPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtpZF09XCInaW50ZWdyYXRpb24taXRlbS1pbWFnZS11cmwtJyArIGlcIiBbKG5nTW9kZWwpXT1cImludGVncmF0aW9uLmltYWdlX3VybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCInaW50ZWdyYXRpb24taXRlbS12aWRlby11cmwtJyArIGlcIj5WaWRlbyBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidpbnRlZ3JhdGlvbi1pdGVtLXZpZGVvLXVybC0nICsgaVwiIFsobmdNb2RlbCldPVwiaW50ZWdyYXRpb24udmlkZW9fdXJsXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhbmdlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVJbnRlZ3JhdGlvbkl0ZW0oaSlcIiAgIChrZXlkb3duLmVudGVyKT1cInJlbW92ZUludGVncmF0aW9uSXRlbShpKVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlSW50ZWdyYXRpb25JdGVtKGkpXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJhZGRJbnRlZ3JhdGlvbkl0ZW0oKVwiPisgQWRkIEludGVncmF0aW9uPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzYXZlSW50ZWdyYXRpb25zKG1vZGFsKVwiPlNhdmU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cblxuPG5nLXRlbXBsYXRlICNndWlkZXNFZGl0TW9kYWwgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IEd1aWRlczwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGg0IGNsYXNzPVwibWItM1wiPkd1aWRlcyBTZWN0aW9uPC9oND5cblxuICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wR3VpZGVzKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGd1aWRlIG9mIGVkaXRpbmdHdWlkZXMuaXRlbXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJvcmRlciBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2d1aWRlLXRpdGxlLScgKyBpXCI+VGl0bGU8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidndWlkZS10aXRsZS0nICsgaVwiIFsobmdNb2RlbCldPVwiZ3VpZGUudGl0bGVcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCInZ3VpZGUtYnV0dG9uLXRleHQtJyArIGlcIj5CdXR0b24gVGV4dDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2d1aWRlLWJ1dHRvbi10ZXh0LScgKyBpXCIgWyhuZ01vZGVsKV09XCJndWlkZS5idXR0b25fdGV4dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidndWlkZS1pbWFnZS11cmwtJyArIGlcIj5JbWFnZSBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidndWlkZS1pbWFnZS11cmwtJyArIGlcIiBbKG5nTW9kZWwpXT1cImd1aWRlLmltYWdlX3VybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidndWlkZS11cmwtJyArIGlcIj5HdWlkZSBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidndWlkZS11cmwtJyArIGlcIiBbKG5nTW9kZWwpXT1cImd1aWRlLmd1aWRlX3VybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCInZ3VpZGUtZGVzY3JpcHRpb24tJyArIGlcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2d1aWRlLWRlc2NyaXB0aW9uLScgKyBpXCIgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImd1aWRlLmRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoIHRleHQtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZUd1aWRlKGkpXCIgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlR3VpZGUoaSlcIiAoa2V5ZG93bi5zcGFjZSk9XCJyZW1vdmVHdWlkZShpKVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFycyBjdXJzb3ItbW92ZVwiIGNka0RyYWdIYW5kbGU+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC0yXCIgKGNsaWNrKT1cImFkZEd1aWRlKClcIj4rIEFkZCBHdWlkZTwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUd1aWRlcyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtaW50ZWdyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1pbnRlZ3JhdGlvbi9yZXNvdXJjZS1pbnRlZ3JhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWludGVncmF0aW9uL3Jlc291cmNlLWludGVncmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVNUQs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Uzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IENvbXBhbnlEYXRhLCBSZXNvdXJjZSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2UtaW50ZWdyYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1pbnRlZ3JhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL3Jlc291cmNlLWludGVncmF0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uL3Jlc291cmNlcy9yZXNvdXJjZXMtc2hhcmVkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJbnRlZ3JhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2VkaXRJbnRlZ3JhdGlvbnNNb2RhbCcpIGVkaXRJbnRlZ3JhdGlvbnNNb2RhbDogVGVtcGxhdGVSZWY8Q3VzdG9tVXBsb2FkZXJDb21wb25lbnQ+O1xuICAgIGVkaXRpbmdJbnRlZ3JhdGlvbnM7XG4gICAgZGlzdHJpYnV0b3JzRGF0YSA9IENvbXBhbnlEYXRhPy5kaXN0cmlidXRvcnNEYXRhO1xuICAgIHZlbmRvcnNEYXRhID0gQ29tcGFueURhdGE/LnZlbmRvcnNEYXRhO1xuXG4gICAgdGV4dENvbG9yID0gdGhpcy5hcHBDb25maWc/LmNvbG9yX2NvZGVzPy50ZXh0O1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgZGlzdHJpYnV0ZXJQb3N0cyA9IFtdO1xuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBibG9nUG9zdFRhZztcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIHJlc291cmNlUG9zdFRhZztcbiAgICBibG9nUG9zdFZlbmRvclRhZztcbiAgICBpc01hc3RlclN1YnNjcmlwdGlvbjtcblxuICAgIGludGVncmF0aW9ucyA9IHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmludGVncmF0aW9ucztcblxuICAgIHJlbGVhc2VOb3Rlc0xpbmsgPSAnL3Jlc291cmNlcy9wcm9kdWN0LXJlbGVhc2Utbm90ZXMnO1xuICAgIHExTm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXExLTIwMjUnO1xuICAgIHEzTm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXEzLTIwMjQnO1xuICAgIHE0Tm90ZXNMaW5rID0gJy9yZXNvdXJjZXMvcHJvZHVjdC1yZWxlYXNlLXE0LTIwMjQnO1xuICAgIGNvbXBhbnlOYW1lO1xuXG4gICAgdmlkZW9XZWJpbmFyTG9hZGVkID0gZmFsc2U7XG4gICAgdmlkZW9EZW1vTG9hZGVkID0gZmFsc2U7XG4gICAgeW91dHViZVZpZGVvSWQgPSAnUjdWazIxOXpiaEEnO1xuICAgIHZpZGVvVGl0bGUgPSAnQ2xvdWRPbGl2ZSBPdmVydmlldyc7XG4gICAgc2FuaXRpemVkTWljcm9zb2Z0VmlkZW9Vcmw6IFNhZmVSZXNvdXJjZVVybDtcbiAgICBzYW5pdGl6ZWRLZXN5YVZpZGVvVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG4gICAgaW50ZWdyYXRpb25Db3VudERpc3BsYXk6IG51bWJlcjtcbiAgICBjb250YWN0VXNVcmwgPSB0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5jb250YWN0X3VzPy51cmw7XG4gICAgdGFnQ2F0ZWdvcnk7XG4gICAgdG90YWxQb3N0czogbnVtYmVyO1xuXG4gICAgZ3VpZGVEYXRhID0gdGhpcy5hcHBDb25maWc/LnBhZ2VzX2NvbmZpZz8uZ3VpZGVzO1xuICAgIGVkaXRpbmdHdWlkZXMgPSB7IGl0ZW1zOiBbXSB9O1xuICAgIHVzZXI6IFVzZXI7XG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZy5kb21haW5faWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBhbnlOYW1lID0gdGhpcy5hcHBDb25maWcuY29tcGFueS5uYW1lO1xuXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10ZXh0LWNvbG9yJywgdGhpcy50ZXh0Q29sb3IpO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuJCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRhZ3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUYWdzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFncygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRhZ1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBbGxUYWdDYXRlZ29yaWVzKHsgc2VhcmNoOiAnSW50ZWdyYXRpb25zJyB9LCB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0NhdGVnb3J5ID0gcmVzcG9uc2UudGFnX2NhdGVnb3JpZXNbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0VGFncygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkVkaXRJbnRlZ3JhdGlvbnNNb2RhbChtb2RhbFJlZikge1xuICAgICAgICB0aGlzLmVkaXRpbmdJbnRlZ3JhdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaW50ZWdyYXRpb25zKSk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWxSZWYsIHtcbiAgICAgICAgICAgIHNpemU6ICdsZycsXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHdpbmRvd0NsYXNzOiAnbW9kYWwtaG9sZGVyJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93SW50ZWdyYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ndWlkZURhdGE/Lml0ZW1zKSAmJiB0aGlzLmd1aWRlRGF0YS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmd1aWRlRGF0YS5pdGVtc1swXTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgISFpdGVtPy50aXRsZSB8fFxuICAgICAgICAgICAgICAgICEhaXRlbT8uZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgICAhIWl0ZW0/Lmd1aWRlX3VybCB8fFxuICAgICAgICAgICAgICAgICghIWl0ZW0/LmltYWdlX3VybCAmJiAhaXRlbS5pbWFnZV91cmwuaW5jbHVkZXMoJ2RlZmF1bHQtaW1hZ2UucG5nJykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdFRhZ3MoKSB7XG4gICAgICAgIHRoaXMudGFnU2VydmljZVxuICAgICAgICAgICAgLmdldFRhZ3NCeVR5cGUoJ3Bvc3RfY2F0ZWdvcmllcycsIHt9LCB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlUG9zdFRhZyA9IHJlc3BvbnNlLnRhZ3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgdGFnID0+IHRhZy5uYW1lID09PSAnUHJvZHVjdCBSZWxlYXNlIE5vdGVzJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ibG9nUG9zdFRhZyA9IHJlc3BvbnNlLnRhZ3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgdGFnID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWcubmFtZSA9PT0gJ0ludGVncmF0ZWQgRGlzdHJpYnV0b3JzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLnRhZ19jYXRlZ29yeV9pZCA9PT0gdGhpcy50YWdDYXRlZ29yeT8uaWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RWZW5kb3JUYWcgPSByZXNwb25zZS50YWdzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIHRhZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLm5hbWUgPT09ICdJbnRlZ3JhdGVkIFZlbmRvcnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWcudGFnX2NhdGVnb3J5X2lkID09PSB0aGlzLnRhZ0NhdGVnb3J5Py5pZFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyB1c2UgZm9ya0pvaW4gdG8gZmV0Y2ggYm90aCBzZXRzIG9mIHBvc3RzIGluIHBhcmFsbGVsXG4gICAgICAgICAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgICAgICAgICAgICB2ZW5kb3JSZXNwb25zZTogdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RWZW5kb3JUYWc/LmlkXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dG9yUmVzcG9uc2U6IHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFB1YmxpY1Bvc3RzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2dQb3N0VGFnPy5pZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSkuc3Vic2NyaWJlKCh7IHZlbmRvclJlc3BvbnNlLCBkaXN0cmlidXRvclJlc3BvbnNlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N0cyA9IHZlbmRvclJlc3BvbnNlLnBvc3RzLnNvcnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZShiLnB1Ymxpc2hlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5wdWJsaXNoZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzdHJpYnV0ZXJQb3N0cyA9IGRpc3RyaWJ1dG9yUmVzcG9uc2UucG9zdHMuc29ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGIucHVibGlzaGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLnB1Ymxpc2hlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVuZG9yQ291bnQgPSB2ZW5kb3JSZXNwb25zZT8ub2JqZWN0X2NvdW50ID8/IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RyaWJ1dG9yQ291bnQgPSBkaXN0cmlidXRvclJlc3BvbnNlPy5vYmplY3RfY291bnQgPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB2ZW5kb3JDb3VudCArIGRpc3RyaWJ1dG9yQ291bnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA9IHRvdGFsID09PSAwID8gMCA6IE1hdGguY2VpbCh0b3RhbCAvIDEwKSAqIDEwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNaWNyb3NvZnRWaWRlbyh2aWRlb1VybCkge1xuICAgICAgICB3aW5kb3cub3Blbih2aWRlb1VybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG4gICAgfVxuXG4gICAgbG9hZEtlc2V5YVZpZGVvKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBiYXNlVXJsID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7dGhpcy55b3V0dWJlVmlkZW9JZH0/YXV0b3BsYXk9MWA7XG4gICAgICAgIC8vIGJhc2VVcmwgaXMgYSB0cnVzdGVkIGludGVybmFsIHNvdXJjZSAoZS5nLiBZb3VUdWJlIGVtYmVkIFVSTClcbiAgICAgICAgdGhpcy5zYW5pdGl6ZWRLZXN5YVZpZGVvVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGJhc2VVcmwpOyAvLyBOT1NPTkFSXG4gICAgICAgIHRoaXMudmlkZW9XZWJpbmFyTG9hZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBhZGRJbnRlZ3JhdGlvbkl0ZW0oKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0ludGVncmF0aW9ucy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIGJsb2dfdXJsOiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICB2aWRlb191cmw6ICcnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUludGVncmF0aW9uSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0ludGVncmF0aW9ucy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIGRyb3BJbnRlZ3JhdGlvbkl0ZW1zKGV2ZW50KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdJbnRlZ3JhdGlvbnMuaXRlbXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuXG4gICAgc2F2ZUludGVncmF0aW9ucyhtb2RhbFJlZikge1xuICAgICAgICBjb25zdCB1cGRhdGVkSW50ZWdyYXRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5lZGl0aW5nSW50ZWdyYXRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVEb21haW5Db25maWcodGhpcy5kb21haW5JZCwge1xuICAgICAgICAgICAgICAgIGludGVncmF0aW9uczogdXBkYXRlZEludGVncmF0aW9ucyxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25zID0gdXBkYXRlZEludGVncmF0aW9ucztcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ0ludGVncmF0aW9ucyB1cGRhdGVkJyk7XG4gICAgICAgICAgICAgICAgbW9kYWxSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmVHdWlkZXMobW9kYWxSZWYpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEd1aWRlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZWRpdGluZ0d1aWRlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlRG9tYWluQ29uZmlnKHRoaXMuZG9tYWluSWQsIHtcbiAgICAgICAgICAgICAgICBndWlkZXM6IHVwZGF0ZWRHdWlkZXMsXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmd1aWRlRGF0YSA9IHVwZGF0ZWRHdWlkZXM7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdHdWlkZXMgdXBkYXRlZCcpO1xuICAgICAgICAgICAgICAgIG1vZGFsUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuR3VpZGVzTW9kYWwodGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nR3VpZGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmd1aWRlRGF0YSA/PyB7IGl0ZW1zOiBbXSB9KSk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGVtcGxhdGUsIHsgc2l6ZTogJ3hsJyB9KTtcbiAgICB9XG5cbiAgICBhZGRHdWlkZSgpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nR3VpZGVzLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgYnV0dG9uX3RleHQ6ICcnLFxuICAgICAgICAgICAgaW1hZ2VfdXJsOiAnJyxcbiAgICAgICAgICAgIGd1aWRlX3VybDogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlR3VpZGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdHdWlkZXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBkcm9wR3VpZGVzKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZWRpdGluZ0d1aWRlcy5pdGVtcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9XG5cbiAgICAvKiogSGVscGVyIG1ldGhvZCB0byBnZXQgZWZmZWN0aXZlIHN1YnNjcmlwdGlvbiBJRCAqL1xuICAgIHByaXZhdGUgZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEhlbHBlclNlcnZpY2UuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoXG4gICAgICAgICAgICB0aGlzLnVzZXIsXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxwdy1yZXNvdXJjZS1oZWFkZXI+PC9wdy1yZXNvdXJjZS1oZWFkZXI+XG48cHctaW50ZWdyYXRpb24tdG9wLWJhbm5lcj48L3B3LWludGVncmF0aW9uLXRvcC1iYW5uZXI+XG48ZGl2IGNsYXNzPVwiYmctd2hpdGVcIj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJjbG91ZG9saXZlLWd1aWRlLXNlY3Rpb24gYmctd2hpdGUgcHktNSBzZWN0aW9uLW91dGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBzZWMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2ICAqbmdJZj1cImlzTG9hZGVkICYmIGludGVncmF0aW9uQ291bnREaXNwbGF5ID4gMFwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJpbnQtdGl0bGUgbWItMFwiPnt7IGludGVncmF0aW9uQ291bnREaXNwbGF5IH19KyBpbnRlZ3JhdGlvbnMgKCYgY291bnRpbmcpPC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJpbnQtdGV4dFwiPiBTZWFyY2ggdGhlIGN1cnJlbnQgbGlzdCBvZiB7e2NvbXBhbnlOYW1lfX0gdmVuZG9yIGFuZCBkaXN0cmlidXRvciBpbnRlZ3JhdGlvbnMgYmVsb3cuIDxiciAvPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwdy1yZXNvdXJjZS1jb21wYW55LWNhcmQgKm5nSWY9XCJpc0xvYWRlZFwiIFtoZWFkZXJdPVwiJ2ludGVncmF0ZWQgdmVuZG9ycydcIlxuICAgICAgICAoZ2V0UG9zdHMpPVwiZ2V0UG9zdFRhZ3MoKVwiXG4gICAgICAgIFtpbnRlZ3JhdGlvbkNvdW50RGlzcGxheV09XCJpbnRlZ3JhdGlvbkNvdW50RGlzcGxheVwiXG4gICAgICAgIFtkYXRhXT1cInBvc3RzXCI+PC9wdy1yZXNvdXJjZS1jb21wYW55LWNhcmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAgICAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgICAgICAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW50ZWdyYXRpb25Db3VudERpc3BsYXkgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1Jlc291cmNlLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtMyBtdC00XCIgKm5nSWY9XCJpc0xvYWRlZCAmJiBpbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA+IDBcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzZWUtc3BhblwiPiBEb27igJl0IHNlZSB3aGF0IHlvdeKAmXJlIGFmdGVyPyA8YSBbaHJlZl09XCJjb250YWN0VXNVcmxcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW50LXNwYW4gdGVhbS1zcGFuXCI+U3BlYWsgd2l0aCBvdXIgdGVhbSB0byByZXF1ZXN0IGEgY29ubmVjdGlvbiA+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L3NlY3Rpb24+XG4gIDxzZWN0aW9uIGNsYXNzPVwiY2xvdWRvbGl2ZS1ndWlkZS1zZWN0aW9uIGJnLXdoaXRlIHB5LTUgc2VjdGlvbi1vdXRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxwdy1yZXNvdXJjZS1jb21wYW55LWNhcmQgW2hlYWRlcl09XCInaW50ZWdyYXRlZCBEaXN0cmlidXRvcnMnXCJcbiAgICAgIFtpbnRlZ3JhdGlvbkNvdW50RGlzcGxheV09XCJpbnRlZ3JhdGlvbkNvdW50RGlzcGxheVwiXG4gICAgICAqbmdJZj1cImlzTG9hZGVkXCJcbiAgICAgICAgW3ZlbmRvcl09XCJ0cnVlXCJcbiAgICAgICAgKGdldFBvc3RzKT1cImdldFBvc3RUYWdzKClcIlxuICAgICAgICBbZGF0YV09XCJkaXN0cmlidXRlclBvc3RzXCI+PC9wdy1yZXNvdXJjZS1jb21wYW55LWNhcmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAgICpuZ0lmPVwiIWlzTG9hZGVkXCI+XG4gICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidSZXNvdXJjZS5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbiBjbGFzcz1cImNsb3Vkb2xpdmUtZ3VpZGUtc2VjdGlvbiBiZy13aGl0ZSBweS01IHNlY3Rpb24tb3V0ZXJcIiAqbmdJZj1cImludGVncmF0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImhvdy1pdC13b3Jrcy13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJpdC13b3Jrcy10aXRsZSBtYi0wXCI+e3tpbnRlZ3JhdGlvbnM/LnRpdGxlIHx8ICdIb3cgaXQgd29ya3MnfX08L2gxPlxuICAgICAgICAgIDxpICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCBpbi1wYWdlLWVkaXQtaWNvbiB0ZXh0LWJsYWNrIG1zLTQgbXQtMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5FZGl0SW50ZWdyYXRpb25zTW9kYWwoZWRpdEludGVncmF0aW9uc01vZGFsKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlbkVkaXRJbnRlZ3JhdGlvbnNNb2RhbChlZGl0SW50ZWdyYXRpb25zTW9kYWwpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvcGVuRWRpdEludGVncmF0aW9uc01vZGFsKGVkaXRJbnRlZ3JhdGlvbnNNb2RhbClcIlxuICAgICAgICAgIHRpdGxlPVwiRWRpdCBJbnRlZ3JhdGlvbnMgU2VjdGlvblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwicGItMjBcIiBbaW5uZXJIVE1MXT1cImludGVncmF0aW9ucz8uZGVzY3JpcHRpb24gfHwgJ1ZpZXcgc2hvcnQgZXhhbXBsZSB2aWRlb3MgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZWdyYXRpb25zIGNhbiB3b3JrIGZvciB5b3U6J1wiPjwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzZWN0aW9uLXJvd1wiICBbbmdDbGFzc109XCJ7ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogaW50ZWdyYXRpb25zPy5pdGVtcz8ubGVuZ3RoID09PSAxIH1cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW50ZWdyYXRpb25zPy5pdGVtcz8ubGVuZ3RoID4gMDsgZWxzZSBub0ludGVncmF0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW50ZWdyYXRpb24gb2YgaW50ZWdyYXRpb25zPy5pdGVtc1wiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbnRlZ3JhdGlvbj8uaW1hZ2VfdXJsIHx8IGludGVncmF0aW9uPy50aXRsZSB8fCBpbnRlZ3JhdGlvbj8uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlZ3JhdGlvbj8udmlkZW9fdXJsICYmIGludGVncmF0aW9uPy52aWRlb191cmwuaW5jbHVkZXMoJ2h0dHBzJyk7IGVsc2Ugbm9WaWRlb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImludGVncmF0aW9uPy52aWRlb191cmxcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImludGVncmF0aW9uPy5pbWFnZV91cmxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZE1pY3Jvc29mdFZpZGVvKGludGVncmF0aW9uPy52aWRlb191cmwpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwibG9hZE1pY3Jvc29mdFZpZGVvKGludGVncmF0aW9uPy52aWRlb191cmwpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3ctaXQtd29ya3MtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiSW50ZWdyYXRpb24gVmlkZW8gVGh1bWJuYWlsXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9WaWRlbz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInTm8gdmlkZW8gZm91bmQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcHctbm8tZGF0YT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbnRlZ3JhdGlvbnM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0ludGVncmF0aW9uLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+PC9wdy1uby1kYXRhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvc2VjdGlvbj5cbiA8c2VjdGlvbiBjbGFzcz1cImNsb3Vkb2xpdmUtZ3VpZGUtc2VjdGlvbiBiZy13aGl0ZSBweS01IHNlY3Rpb24tb3V0ZXJcIiAqbmdJZj1cInNob3dJbnRlZ3JhdGlvbnMoKVwiPlxuICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LW1kLXN0YXJ0IHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJndWlkZS10aXRsZSBtYi0zXCI+e3tndWlkZURhdGE/Lml0ZW1zWzBdPy50aXRsZSB8fCAnLS1VUERBVEUgTUUgT04gVEhFIEFETUlOL0RPTUFJTlMgTU9EVUxFLS0nfX08L2gxPlxuICAgICAgICAgIDxpICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCBpbi1wYWdlLWVkaXQtaWNvbiB0ZXh0LWJsYWNrIG1zLTQgbXQtMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5HdWlkZXNNb2RhbChndWlkZXNFZGl0TW9kYWwpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuR3VpZGVzTW9kYWwoZ3VpZGVzRWRpdE1vZGFsKVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib3Blbkd1aWRlc01vZGFsKGd1aWRlc0VkaXRNb2RhbClcIlxuICAgICAgICAgIHRpdGxlPVwiRWRpdCBJbnRlZ3JhdGlvbnMgU2VjdGlvblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJndWlkZS1zdWJ0ZXh0XCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImd1aWRlRGF0YT8uaXRlbXNbMF0/LmRlc2NyaXB0aW9uIHx8ICctLVVQREFURSBNRSBPTiBUSEUgQURNSU4vRE9NQUlOUyBNT0RVTEUtLSdcIj5cbiAgICAgICA8L3A+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ2YXVsdC1idG5cIlxuICAgICAgICAgICAgW2hyZWZdPVwiZ3VpZGVEYXRhPy5pdGVtc1swXT8uZ3VpZGVfdXJsXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICB7e2d1aWRlRGF0YT8uaXRlbXNbMF0/LmJ1dHRvbl90ZXh0IHx8ICdWaWV3IHRoZSBndWlkZSd9fVxuICAgICAgICAgIDwvYT5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3VpZGVEYXRhPy5pdGVtc1swXT8uaW1hZ2VfdXJsICYmICFndWlkZURhdGE/Lml0ZW1zWzBdLmltYWdlX3VybC5pbmNsdWRlcygnZGVmYXVsdC1waG90by5qcGcnKTsgZWxzZSBub0RhdGFUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwiZ3VpZGVEYXRhPy5pdGVtc1swXS5pbWFnZV91cmxcIlxuICAgICAgICAgICAgYWx0PVwiR3VpZGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJndWlkZS1pbWdcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInLS1BREQgTUUgT04gVEhFIEFETUlOL0RPTUFJTlMgTU9EVUxFLS0nIHwgdHJhbnNsb2NvXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG4gPC9kaXY+XG4gPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxwdy1yZXNvdXJjZS1ub3RlLWNhcmQgKm5nSWY9XCJyZXNvdXJjZVBvc3RUYWc/LnRhZ19jYXRlZ29yeV9pZFwiIFtjYXRlZ29yeUlkXT1cInJlc291cmNlUG9zdFRhZz8udGFnX2NhdGVnb3J5X2lkXCIgW3RhZ109XCJyZXNvdXJjZVBvc3RUYWdcIiBbcmVsZWFzZUhlYWRlcl09XCJ0cnVlXCIgW3Jlc291cmNlVGl0bGVdPVwicmVzb3VyY2VQb3N0VGFnPy50aXRsZVwiPjwvcHctcmVzb3VyY2Utbm90ZS1jYXJkPlxuXG48cHctdHJpYWwtNC1jb250YWN0LXVzPjwvcHctdHJpYWwtNC1jb250YWN0LXVzPlxuXG5cblxuPG5nLXRlbXBsYXRlICNlZGl0SW50ZWdyYXRpb25zTW9kYWwgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IEludGVncmF0aW9ucyBTZWN0aW9uPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludGVncmF0aW9uLXRpdGxlXCI+VGl0bGU8L2xhYmVsPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJpbnRlZ3JhdGlvbi10aXRsZVwiIFsobmdNb2RlbCldPVwiZWRpdGluZ0ludGVncmF0aW9ucy50aXRsZVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImludGVncmF0aW9uLWRlc2NyaXB0aW9uXCI+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJpbnRlZ3JhdGlvbi1kZXNjcmlwdGlvblwiIHJvd3M9XCIzXCIgWyhuZ01vZGVsKV09XCJlZGl0aW5nSW50ZWdyYXRpb25zLmRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wSW50ZWdyYXRpb25JdGVtcygkZXZlbnQpXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbnRlZ3JhdGlvbiBvZiBlZGl0aW5nSW50ZWdyYXRpb25zLml0ZW1zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCIgZm9yPVwiaW50ZWdyYXRpb24taXRlbVwiPkludGVncmF0aW9uIEl0ZW08L2xhYmVsPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFycyBjdXJzb3ItbW92ZSBpbi1wYWdlLWJhcnMtaWNvblwiIGNka0RyYWdIYW5kbGU+PC9pPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidpbnRlZ3JhdGlvbi1pdGVtLXRpdGxlLScgKyBpXCI+VGl0bGU8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidpbnRlZ3JhdGlvbi1pdGVtLXRpdGxlLScgKyBpXCIgWyhuZ01vZGVsKV09XCJpbnRlZ3JhdGlvbi50aXRsZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidpbnRlZ3JhdGlvbi1pdGVtLWRlc2NyaXB0aW9uLScgKyBpXCI+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidpbnRlZ3JhdGlvbi1pdGVtLWRlc2NyaXB0aW9uLScgKyBpXCIgWyhuZ01vZGVsKV09XCJpbnRlZ3JhdGlvbi5kZXNjcmlwdGlvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidpbnRlZ3JhdGlvbi1pdGVtLWJsb2ctdXJsLScgKyBpXCI+QmxvZyBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidpbnRlZ3JhdGlvbi1pdGVtLWJsb2ctdXJsLScgKyBpXCIgWyhuZ01vZGVsKV09XCJpbnRlZ3JhdGlvbi5ibG9nX3VybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidpbnRlZ3JhdGlvbi1pdGVtLWltYWdlLXVybC0nICsgaVwiPkltYWdlIFVSTDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbaWRdPVwiJ2ludGVncmF0aW9uLWl0ZW0taW1hZ2UtdXJsLScgKyBpXCIgWyhuZ01vZGVsKV09XCJpbnRlZ3JhdGlvbi5pbWFnZV91cmxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2ludGVncmF0aW9uLWl0ZW0tdmlkZW8tdXJsLScgKyBpXCI+VmlkZW8gVVJMPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtpZF09XCInaW50ZWdyYXRpb24taXRlbS12aWRlby11cmwtJyArIGlcIiBbKG5nTW9kZWwpXT1cImludGVncmF0aW9uLnZpZGVvX3VybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggdGV4dC1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVtb3ZlSW50ZWdyYXRpb25JdGVtKGkpXCIgICAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVJbnRlZ3JhdGlvbkl0ZW0oaSlcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInJlbW92ZUludGVncmF0aW9uSXRlbShpKVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwiYWRkSW50ZWdyYXRpb25JdGVtKClcIj4rIEFkZCBJbnRlZ3JhdGlvbjwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUludGVncmF0aW9ucyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG5cbjxuZy10ZW1wbGF0ZSAjZ3VpZGVzRWRpdE1vZGFsIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+RWRpdCBHdWlkZXM8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxoNCBjbGFzcz1cIm1iLTNcIj5HdWlkZXMgU2VjdGlvbjwvaDQ+XG5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEd1aWRlcygkZXZlbnQpXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBndWlkZSBvZiBlZGl0aW5nR3VpZGVzLml0ZW1zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIidndWlkZS10aXRsZS0nICsgaVwiPlRpdGxlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtpZF09XCInZ3VpZGUtdGl0bGUtJyArIGlcIiBbKG5nTW9kZWwpXT1cImd1aWRlLnRpdGxlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2d1aWRlLWJ1dHRvbi10ZXh0LScgKyBpXCI+QnV0dG9uIFRleHQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidndWlkZS1idXR0b24tdGV4dC0nICsgaVwiIFsobmdNb2RlbCldPVwiZ3VpZGUuYnV0dG9uX3RleHRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCInZ3VpZGUtaW1hZ2UtdXJsLScgKyBpXCI+SW1hZ2UgVVJMPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtpZF09XCInZ3VpZGUtaW1hZ2UtdXJsLScgKyBpXCIgWyhuZ01vZGVsKV09XCJndWlkZS5pbWFnZV91cmxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCInZ3VpZGUtdXJsLScgKyBpXCI+R3VpZGUgVVJMPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtpZF09XCInZ3VpZGUtdXJsLScgKyBpXCIgWyhuZ01vZGVsKV09XCJndWlkZS5ndWlkZV91cmxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiJ2d1aWRlLWRlc2NyaXB0aW9uLScgKyBpXCI+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2lkXT1cIidndWlkZS1kZXNjcmlwdGlvbi0nICsgaVwiIHJvd3M9XCIzXCIgWyhuZ01vZGVsKV09XCJndWlkZS5kZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhbmdlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVHdWlkZShpKVwiIChrZXlkb3duLmVudGVyKT1cInJlbW92ZUd1aWRlKGkpXCIgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlR3VpZGUoaSlcIj48L2k+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnMgY3Vyc29yLW1vdmVcIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXQtMlwiIChjbGljayk9XCJhZGRHdWlkZSgpXCI+KyBBZGQgR3VpZGU8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVHdWlkZXMobW9kYWwpXCI+U2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -59,15 +59,18 @@ export class RelatedResourcesComponent extends AppBaseComponent {
|
|
|
59
59
|
this.authService.getToken$().subscribe(res => {
|
|
60
60
|
this.userLoggedIn = !!res;
|
|
61
61
|
if (this.userLoggedIn) {
|
|
62
|
-
this.userService.getUserInfo().subscribe(data => {
|
|
63
|
-
this.user = data;
|
|
64
|
-
});
|
|
65
62
|
this.localStorage.getItem$('product').subscribe(res => {
|
|
66
63
|
const data = res ? JSON.parse(res) : null;
|
|
67
64
|
this.subscriptionId = data?.subscriptionId;
|
|
68
65
|
});
|
|
66
|
+
this.userService.getUserInfo().subscribe(data => {
|
|
67
|
+
this.user = data;
|
|
68
|
+
this.getPostTags();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.getPostTags();
|
|
69
73
|
}
|
|
70
|
-
this.getPostTags();
|
|
71
74
|
});
|
|
72
75
|
}
|
|
73
76
|
get hasValidDemoLinks() {
|
|
@@ -75,7 +78,7 @@ export class RelatedResourcesComponent extends AppBaseComponent {
|
|
|
75
78
|
}
|
|
76
79
|
getPostTags() {
|
|
77
80
|
this.tagService
|
|
78
|
-
.getTagsByType('post_categories', {}, this.
|
|
81
|
+
.getTagsByType('post_categories', {}, this.getEffectiveSubscriptionId())
|
|
79
82
|
.subscribe(response => {
|
|
80
83
|
this.blogPostTag = response.tags.find(tag => tag.name === 'Blog Posts');
|
|
81
84
|
});
|
|
@@ -106,6 +109,10 @@ export class RelatedResourcesComponent extends AppBaseComponent {
|
|
|
106
109
|
trackByComment(_index, item) {
|
|
107
110
|
return item.id;
|
|
108
111
|
}
|
|
112
|
+
/** Helper method to get effective subscription ID */
|
|
113
|
+
getEffectiveSubscriptionId() {
|
|
114
|
+
return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
|
|
115
|
+
}
|
|
109
116
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RelatedResourcesComponent, deps: [{ token: i1.ResourceService }, { token: i0.Injector }, { token: i2.DomSanitizer }, { token: i3.TagService }, { token: i3.AuthService }, { token: i3.CustomToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
117
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: RelatedResourcesComponent, selector: "pw-related-resources", usesInheritance: true, ngImport: i0, template: "\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n <section class=\"nce-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm no-border p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">\uD83D\uDCAC Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card no-border shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"nce-book-section\" *ngIf=\"hasValidDemoLinks\">\n <div class=\"container\">\n\n <p class=\"nce-contact\">\n Any questions, get in touch <a href=\"mailto:{{ company_email }}\">here</a>,\n <a [href]=\"linkedInUrl\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\"></pw-book-a-demo>\n <hr class=\"nce-divider\" />\n</section>\n\n\n<pw-resource-cards *ngIf=\"blogPostTag?.tag_category_id\" [tag]=\"blogPostTag\" [categoryId]=\"blogPostTag?.tag_category_id\" [resourceTitle]=\"blogPostTag?.title\" [isHeaderVisible]=\"true\" resourceLink=\"/resources/blogs\" [isRelated]=\"true\" [resourceTitle]=\"'Other resources you may be interested in:'\"></pw-resource-cards>\n", styles: [".video-row{gap:5.5rem!important;margin-top:3rem!important}::ng-deep .resource-section{box-shadow:0 4px 32px -14px #40576d4d!important}.release-icon{height:auto;margin:0 11px 1.9rem;display:block;align-self:center}@media (width >= 768px) and (width <= 1200px){.resource-title{font-size:1.4rem!important}}textarea{font-size:1.4rem!important}@media (width <= 768px){.resource-title{font-size:1.2rem!important}.container{padding:7rem 3rem 1rem!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.msp-vault-section .vault-heading{font-size:3.5rem}.msp-vault-section .vault-description{margin-top:1.35rem}.msp-vault-section .vault-card{width:100%!important}.msp-vault-section .vault-btn{margin-left:0!important;width:100%!important}}@media (width >= 991px){::ng-deep .trial-meeting-section:before{top:600px!important}::ng-deep .dashboard{margin-bottom:1rem!important}section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}section.bg-white.text-center.extra-top-padding:before,section.bg-white.text-center.extra-top-padding:after{content:\"\";position:absolute;background:url(/assets/img/logos/background-banner.png) no-repeat;background-size:contain;width:160px;height:450px;z-index:0;opacity:.8}section.bg-white.text-center.extra-top-padding:before{top:500px;left:0}section.bg-white.text-center.extra-top-padding:after{top:90px;right:0}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 1200px){.resource-card{width:100%!important}.release-notes-section{padding:7rem 0!important}}@media (width >= 768px) and (width <= 1200px){.nce-hero-section{padding:0 6rem!important}.cards-row{justify-content:center}}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:0 1.5rem;padding-bottom:4rem!important;padding-top:7rem!important;max-width:850px;margin:0 auto;text-align:left}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:var(--first)!important;text-decoration:none;font-weight:500}.nce-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.nce-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-book-section .nce-contact{line-height:1.6;font-size:1.5rem}.nce-book-section .nce-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.nce-book-section .nce-contact a:hover{color:var(--first)!important}.nce-offer-section{background:#fff;padding-top:2rem}.nce-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-offer-section .nce-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.nce-offer-section .nce-title strong{font-weight:700}.nce-offer-section .nce-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.nce-offer-section .nce-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.nce-offer-section .nce-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.nce-offer-section .nce-signup{margin-bottom:2.5rem}.nce-offer-section .nce-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.nce-offer-section .nce-book-section{padding-top:5rem!important}.nce-offer-section .container{text-align:left}.nce-offer-section .nce-title{font-size:1.5rem}.nce-offer-section .nce-description,.nce-offer-section .nce-offer-list,.nce-offer-section .nce-signup,.nce-offer-section .signup-link,.nce-offer-section .nce-contact,.nce-offer-section .nce-offer-list p{font-size:1.2rem!important}}.nce-offer-intro{font-size:1.5rem;font-weight:400}.outer-section-fadeout{position:absolute;top:139rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.body-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}@media (width <= 768px){.nce-book-section{padding-top:5rem!important}.nce-contact{font-size:1.2rem!important}}::ng-deep .body-quill{border-width:0!important;max-width:900px;display:block;margin-left:auto;margin-right:auto}::ng-deep .p-inputtextarea{border-radius:.5rem;border-color:#ced4da;font-size:1rem}.card{background-color:#fff;border-radius:12px}.comment-row{gap:2rem;padding-bottom:5rem;max-width:1000px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:1.5rem!important}.response-row{max-width:1000px;display:block;margin-left:auto;margin-right:auto;margin-top:6rem!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i6.HubSpotMeetingsComponent, selector: "pw-book-a-demo", inputs: ["isBlog"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "component", type: i9.ResourceCardComponent, selector: "pw-resource-cards", inputs: ["categoryId", "isHeaderVisible", "isRelated", "resourceTitle", "postSlice", "header", "tag", "resourceLink"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i10.TranslocoPipe, name: "transloco" }] }); }
|
|
111
118
|
}
|
|
@@ -113,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
113
120
|
type: Component,
|
|
114
121
|
args: [{ selector: 'pw-related-resources', template: "\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n <section class=\"nce-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm no-border p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">\uD83D\uDCAC Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card no-border shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"nce-book-section\" *ngIf=\"hasValidDemoLinks\">\n <div class=\"container\">\n\n <p class=\"nce-contact\">\n Any questions, get in touch <a href=\"mailto:{{ company_email }}\">here</a>,\n <a [href]=\"linkedInUrl\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\"></pw-book-a-demo>\n <hr class=\"nce-divider\" />\n</section>\n\n\n<pw-resource-cards *ngIf=\"blogPostTag?.tag_category_id\" [tag]=\"blogPostTag\" [categoryId]=\"blogPostTag?.tag_category_id\" [resourceTitle]=\"blogPostTag?.title\" [isHeaderVisible]=\"true\" resourceLink=\"/resources/blogs\" [isRelated]=\"true\" [resourceTitle]=\"'Other resources you may be interested in:'\"></pw-resource-cards>\n", styles: [".video-row{gap:5.5rem!important;margin-top:3rem!important}::ng-deep .resource-section{box-shadow:0 4px 32px -14px #40576d4d!important}.release-icon{height:auto;margin:0 11px 1.9rem;display:block;align-self:center}@media (width >= 768px) and (width <= 1200px){.resource-title{font-size:1.4rem!important}}textarea{font-size:1.4rem!important}@media (width <= 768px){.resource-title{font-size:1.2rem!important}.container{padding:7rem 3rem 1rem!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.msp-vault-section .vault-heading{font-size:3.5rem}.msp-vault-section .vault-description{margin-top:1.35rem}.msp-vault-section .vault-card{width:100%!important}.msp-vault-section .vault-btn{margin-left:0!important;width:100%!important}}@media (width >= 991px){::ng-deep .trial-meeting-section:before{top:600px!important}::ng-deep .dashboard{margin-bottom:1rem!important}section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}section.bg-white.text-center.extra-top-padding:before,section.bg-white.text-center.extra-top-padding:after{content:\"\";position:absolute;background:url(/assets/img/logos/background-banner.png) no-repeat;background-size:contain;width:160px;height:450px;z-index:0;opacity:.8}section.bg-white.text-center.extra-top-padding:before{top:500px;left:0}section.bg-white.text-center.extra-top-padding:after{top:90px;right:0}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 1200px){.resource-card{width:100%!important}.release-notes-section{padding:7rem 0!important}}@media (width >= 768px) and (width <= 1200px){.nce-hero-section{padding:0 6rem!important}.cards-row{justify-content:center}}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:0 1.5rem;padding-bottom:4rem!important;padding-top:7rem!important;max-width:850px;margin:0 auto;text-align:left}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:var(--first)!important;text-decoration:none;font-weight:500}.nce-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.nce-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-book-section .nce-contact{line-height:1.6;font-size:1.5rem}.nce-book-section .nce-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.nce-book-section .nce-contact a:hover{color:var(--first)!important}.nce-offer-section{background:#fff;padding-top:2rem}.nce-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-offer-section .nce-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.nce-offer-section .nce-title strong{font-weight:700}.nce-offer-section .nce-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.nce-offer-section .nce-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.nce-offer-section .nce-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.nce-offer-section .nce-signup{margin-bottom:2.5rem}.nce-offer-section .nce-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.nce-offer-section .nce-book-section{padding-top:5rem!important}.nce-offer-section .container{text-align:left}.nce-offer-section .nce-title{font-size:1.5rem}.nce-offer-section .nce-description,.nce-offer-section .nce-offer-list,.nce-offer-section .nce-signup,.nce-offer-section .signup-link,.nce-offer-section .nce-contact,.nce-offer-section .nce-offer-list p{font-size:1.2rem!important}}.nce-offer-intro{font-size:1.5rem;font-weight:400}.outer-section-fadeout{position:absolute;top:139rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.body-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}@media (width <= 768px){.nce-book-section{padding-top:5rem!important}.nce-contact{font-size:1.2rem!important}}::ng-deep .body-quill{border-width:0!important;max-width:900px;display:block;margin-left:auto;margin-right:auto}::ng-deep .p-inputtextarea{border-radius:.5rem;border-color:#ced4da;font-size:1rem}.card{background-color:#fff;border-radius:12px}.comment-row{gap:2rem;padding-bottom:5rem;max-width:1000px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:1.5rem!important}.response-row{max-width:1000px;display:block;margin-left:auto;margin-right:auto;margin-top:6rem!important}\n"] }]
|
|
115
122
|
}], ctorParameters: () => [{ type: i1.ResourceService }, { type: i0.Injector }, { type: i2.DomSanitizer }, { type: i3.TagService }, { type: i3.AuthService }, { type: i3.CustomToastService }] });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1wb3N0L3JlbGF0ZWQtcmVzb3VyY2VzL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZWxhdGVkLXJlc291cmNlcy9yZWxhdGVkLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUF1QzNELFlBQ3FCLGVBQWdDLEVBQ2pELFFBQWtCLEVBQ0QsU0FBdUIsRUFDdkIsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsTUFBMEI7UUFFM0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBUEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FB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QyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLElBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDOytHQWpIUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixtRkNoQnRDLDY0SEFvR0E7OzRGRHBGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEN1c3RvbVRvYXN0U2VydmljZSwgVGFnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc291cmNlQmxvZyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcmVzb3VyY2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXJlbGF0ZWQtcmVzb3VyY2VzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRlZC1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZFJlc291cmNlc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHJlc291cmNlQ2FyZHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQkxPRzogSGVyZeKAmXMgd2h5IHlvdSBzaG91bGQgUUEgeW91ciBkaXN0cmlidXRvciBpbnZvaWNlcycsXG4gICAgICAgICAgICBpbWFnZTogJy9hc3NldHMvaW1nL3Jlc291cmNlL3Jlc291cmNlLXFhLnBuZycsXG4gICAgICAgICAgICBhbHQ6ICdRQSBkaXN0cmlidXRvciBpbnZvaWNlcycsXG4gICAgICAgICAgICB1cmw6ICcvcmVzb3VyY2VzL3ZpZXcvaGVyZS1zLXdoeS15b3Utc2hvdWxkLWJlLXNlZWtpbmctaW5kZXBlbmRlbnQtcWEtb2YtYWxsLWRpc3RyaWJ1dG9yLWludidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdCTE9HOiA0IGluc3RhbnQgaGFja3MgdG8gdXBsaWZ0IHlvdXIgTVNQ4oCZcyBtb250aGx5IGJpbGxpbmcnLFxuICAgICAgICAgICAgaW1hZ2U6ICcvYXNzZXRzL2ltZy9yZXNvdXJjZS9yZXNvdXJjZS1oYWNrcy5wbmcnLFxuICAgICAgICAgICAgYWx0OiAnTW9udGhseSBiaWxsaW5nIGhhY2tzJyxcbiAgICAgICAgICAgIHVybDogJy9yZXNvdXJjZXMvdmlldy80LWluc3RhbnQtaGFja3MtdG8tdXBsaWZ0LXlvdXItbXNwLXMtbW9udGhseS1iaWxsaW5nJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0JMT0c6IFRoZSB0cml2aWFsIGRldGFpbCB0aGF0IHdpbGwgZWl0aGVyIGZ1dHVyZS1wcm9vZiBvciBzYWJvdGFnZSB5b3VyIFBTQS4nLFxuICAgICAgICAgICAgaW1hZ2U6ICcvYXNzZXRzL2ltZy9yZXNvdXJjZS9yZXNvdXJjZS1wc2EucG5nJyxcbiAgICAgICAgICAgIGFsdDogJ1BTQSBmdXR1cmUtcHJvb2YnLFxuICAgICAgICAgICAgdXJsOiAnL3Jlc291cmNlcy92aWV3L3RoZS10cml2aWFsLWRldGFpbC10aGF0LXdpbGwtZWl0aGVyLWZ1dHVyZS1wcm9vZi1vci1zYWJvdGFnZS15b3VyLXBzYSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwb3N0O1xuICAgIG1hc3RlclN1YnNjcmlwdGlvbklkO1xuICAgIHNsdWc7XG5cbiAgICBwb3N0Q29tbWVudHMgPSBbXTtcbiAgICBjb21tZW50Rm9ybTtcblxuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcblxuICAgIGRlbW9MaW5rcyA9IHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXM7XG5cbiAgICB1c2VyOiBVc2VyO1xuICAgIGJsb2dQb3N0VGFnO1xuICAgIHN1YnNjcmlwdGlvbklkO1xuICAgIGxpbmtlZEluVXJsID0gdGhpcy5hcHBDb25maWc/LnNvY2lhbD8ubGlua2VkaW5fdXJsO1xuICAgIGNvbXBhbnlfZW1haWwgPSB0aGlzLmFwcENvbmZpZy5jb21wYW55LmVtYWlsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IEN1c3RvbVRvYXN0U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tbWVudEZvcm0gPSBSZXNvdXJjZUJsb2cuZ2V0UmVzb3VyY2VQb3N0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2x1ZyA9IHBhcmFtc1snc2x1ZyddID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5nZXRCbG9nSXRlbSh0aGlzLnNsdWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBoYXNWYWxpZERlbW9MaW5rcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5kZW1vTGlua3MpICYmIHRoaXMuZGVtb0xpbmtzLnNvbWUobGluayA9PiBsaW5rPy50aXRsZSA/PyBsaW5rPy51cmwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0VGFncygpIHtcbiAgICAgICAgdGhpcy50YWdTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VGFnc0J5VHlwZSgncG9zdF9jYXRlZ29yaWVzJywge30sIHRoaXMuc3Vic2NyaXB0aW9uSWQgPz8gdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RUYWcgPSByZXNwb25zZS50YWdzLmZpbmQodGFnID0+IHRhZy5uYW1lID09PSAnQmxvZyBQb3N0cycpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9nSXRlbShzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UG9zdEJ5U2x1ZyhzbHVnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgbGV0IGJsb2dCb2R5O1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5ib2R5KSB7XG4gICAgICAgICAgICAgICAgYmxvZ0JvZHkgPSBIZWxwZXJTZXJ2aWNlLnNhbml0aXplUXVpbGxCb2R5KHJlc3BvbnNlLmJvZHksIHRoaXMuc2FuaXRpemVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShyZXNwb25zZT8ud2hlbik7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgICAgICAgIHRoaXMucG9zdENvbW1lbnRzID0gcmVzcG9uc2UuZW50aXR5X2NvbW1lbnRzO1xuICAgICAgICAgICAgdGhpcy5wb3N0ID0geyAuLi5yZXNwb25zZSwgYm9keTogYmxvZ0JvZHksIHdoZW46IGZvcm1hdHRlZCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IC4uLnRoaXMuY29tbWVudEZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5yZWxhdGVkX2VudGl0eV9pZCA9IHRoaXMucG9zdD8uaWQ7XG4gICAgICAgIGRhdGEucmVsYXRlZF9lbnRpdHlfdHlwZSA9ICdQb3N0JztcbiAgICAgICAgZGF0YS51c2VyX2lkID0gdGhpcy51c2VyPy5pZDtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UucG9zdENvbW1lbnRzKGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldEJsb2dJdGVtKHRoaXMuc2x1Zyk7XG4gICAgICAgICAgICB0aGlzLmNvbW1lbnRGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdSZXNvdXJjZS5Qb3N0cy5Db21tZW50QWRkZWQnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnlDb21tZW50KF9pbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBudW1iZXIgfSkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG59XG4iLCJcblxuPHNlY3Rpb24gY2xhc3M9XCJyZXNvdXJjZS1ib2R5LXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJxbC1zbm93IGJvZHktcXVpbGxcIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwicWwtZWRpdG9yIGJvZHkgcG9zdC1ib2R5LXRleHRcIlxuICAgICAgW2lubmVySFRNTF09XCJwb3N0Py5ib2R5XCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8c2VjdGlvbiBjbGFzcz1cIm5jZS1vZmZlci1zZWN0aW9uXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNSBtYi00IHJlc3BvbnNlLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGNsYXNzPVwicC1mbHVpZCBtYi01XCJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiY29tbWVudEZvcm1cIlxuICAgICAgICAgICAgKG5nU3VibWl0KT1cIm9uQ29tbWVudCgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluOyBlbHNlIHVzZXJMb2dnZWRPdXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHNoYWRvdy1zbSBuby1ib3JkZXIgcC00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb21tZW50XCIgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZyBtYi00IGNvbW1lbnQtbGFiZWxcIj7wn5KsIExlYXZlIGEgY29tbWVudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiNlwiXG4gICAgICAgICAgICAgICAgICBhdXRvUmVzaXplPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtaW5wdXR0ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQncyBvbiB5b3VyIG1pbmQ/XCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Rm9ybS5nZXQoJ2NvbW1lbnQnKT8uaW52YWxpZCAmJiBjb21tZW50Rm9ybS5nZXQoJ2NvbW1lbnQnKT8udG91Y2hlZFwiXG4gICAgICAgICAgICAgICAgICA+UGxlYXNlIGVudGVyIGNvbW1lbnQ8L3NtYWxsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2lnbi1idG4gc2lnbi1oZWFkZXItYnRuXCI+XG4gICAgICAgICAgICAgICAge3sgJ0J1dHRvbi5TdWJtaXQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3VzZXJMb2dnZWRPdXQ+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHB0LTMgcGItMyB1c2VyLW5vdC1sb2dnZWQtaW4gdGV4dC1tdXRlZCBzaGFkb3ctc20gbWItNVwiPlxuICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9sb2dpbiddXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZnctYm9sZFwiPkxvZyBpbjwvYT4gdG8gbGVhdmUgYSBjb21tZW50IVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNSBjb21tZW50LXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgcG9zdENvbW1lbnRzOyB0cmFja0J5OiB0cmFja0J5Q29tbWVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG5vLWJvcmRlciBzaGFkb3ctc20gcC0zIG1iLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tbWVudD8uYXV0aG9yPy5hdmF0YXI/LlswXT8udXJsIHx8ICdhc3NldHMvaW1nL2ljb25zL21hbGUucG5nJ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIG1lLTNcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQsICdhc3NldHMvaW1nL2ljb25zL21hbGUucG5nJylcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWRhcmtcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQudXNlcj8uZmlyc3RfbmFtZSB8fCAnJyB9fSB7eyBjb21tZW50LnVzZXI/Lmxhc3RfbmFtZSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTJcIj57eyBjb21tZW50LmNyZWF0ZWRfYXQgfCBkYXRlOiAnZGQgTU1NIHl5eXksIGg6bW0gYScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb21tZW50LmNvbW1lbnQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuXG4gIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxociBjbGFzcz1cIm5jZS1kaXZpZGVyXCIgLz5cbjwvc2VjdGlvbj5cblxuPHNlY3Rpb24gY2xhc3M9XCJuY2UtYm9vay1zZWN0aW9uXCIgKm5nSWY9XCJoYXNWYWxpZERlbW9MaW5rc1wiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG5cbiAgICA8cCBjbGFzcz1cIm5jZS1jb250YWN0XCI+XG4gICAgICBBbnkgcXVlc3Rpb25zLCBnZXQgaW4gdG91Y2ggPGEgaHJlZj1cIm1haWx0bzp7eyBjb21wYW55X2VtYWlsIH19XCI+aGVyZTwvYT4sXG4gICAgICA8YSBbaHJlZl09XCJsaW5rZWRJblVybFwiIHRhcmdldD1cIl9ibGFua1wiPmNvbm5lY3Qgb24gTGlua2VkSW48L2E+LCBvciBib29rIGEgbWVldGluZyBiZWxvdzpcbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8cHctYm9vay1hLWRlbW8gW2lzQmxvZ109XCJ0cnVlXCI+PC9wdy1ib29rLWEtZGVtbz5cbiAgPGhyIGNsYXNzPVwibmNlLWRpdmlkZXJcIiAvPlxuPC9zZWN0aW9uPlxuXG5cbjxwdy1yZXNvdXJjZS1jYXJkcyAqbmdJZj1cImJsb2dQb3N0VGFnPy50YWdfY2F0ZWdvcnlfaWRcIiBbdGFnXT1cImJsb2dQb3N0VGFnXCIgW2NhdGVnb3J5SWRdPVwiYmxvZ1Bvc3RUYWc/LnRhZ19jYXRlZ29yeV9pZFwiIFtyZXNvdXJjZVRpdGxlXT1cImJsb2dQb3N0VGFnPy50aXRsZVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiIHJlc291cmNlTGluaz1cIi9yZXNvdXJjZXMvYmxvZ3NcIiBbaXNSZWxhdGVkXT1cInRydWVcIiBbcmVzb3VyY2VUaXRsZV09XCInT3RoZXIgcmVzb3VyY2VzIHlvdSBtYXkgYmUgaW50ZXJlc3RlZCBpbjonXCI+PC9wdy1yZXNvdXJjZS1jYXJkcz5cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1wb3N0L3JlbGF0ZWQtcmVzb3VyY2VzL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZWxhdGVkLXJlc291cmNlcy9yZWxhdGVkLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUF3QzNELFlBQ3FCLGVBQWdDLEVBQ2pELFFBQWtCLEVBQ0QsU0FBdUIsRUFDdkIsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsTUFBMEI7UUFFM0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBUEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FB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V0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLElBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQscURBQXFEO0lBQzdDLDBCQUEwQjtRQUM5QixPQUFPLGFBQWEsQ0FBQywwQkFBMEIsQ0FDM0MsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDTixDQUFDOytHQTlIUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixtRkNoQnRDLDY0SEFvR0E7OzRGRHBGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEN1c3RvbVRvYXN0U2VydmljZSwgVGFnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc291cmNlQmxvZyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcmVzb3VyY2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXJlbGF0ZWQtcmVzb3VyY2VzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRlZC1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZFJlc291cmNlc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHJlc291cmNlQ2FyZHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQkxPRzogSGVyZeKAmXMgd2h5IHlvdSBzaG91bGQgUUEgeW91ciBkaXN0cmlidXRvciBpbnZvaWNlcycsXG4gICAgICAgICAgICBpbWFnZTogJy9hc3NldHMvaW1nL3Jlc291cmNlL3Jlc291cmNlLXFhLnBuZycsXG4gICAgICAgICAgICBhbHQ6ICdRQSBkaXN0cmlidXRvciBpbnZvaWNlcycsXG4gICAgICAgICAgICB1cmw6ICcvcmVzb3VyY2VzL3ZpZXcvaGVyZS1zLXdoeS15b3Utc2hvdWxkLWJlLXNlZWtpbmctaW5kZXBlbmRlbnQtcWEtb2YtYWxsLWRpc3RyaWJ1dG9yLWludidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdCTE9HOiA0IGluc3RhbnQgaGFja3MgdG8gdXBsaWZ0IHlvdXIgTVNQ4oCZcyBtb250aGx5IGJpbGxpbmcnLFxuICAgICAgICAgICAgaW1hZ2U6ICcvYXNzZXRzL2ltZy9yZXNvdXJjZS9yZXNvdXJjZS1oYWNrcy5wbmcnLFxuICAgICAgICAgICAgYWx0OiAnTW9udGhseSBiaWxsaW5nIGhhY2tzJyxcbiAgICAgICAgICAgIHVybDogJy9yZXNvdXJjZXMvdmlldy80LWluc3RhbnQtaGFja3MtdG8tdXBsaWZ0LXlvdXItbXNwLXMtbW9udGhseS1iaWxsaW5nJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0JMT0c6IFRoZSB0cml2aWFsIGRldGFpbCB0aGF0IHdpbGwgZWl0aGVyIGZ1dHVyZS1wcm9vZiBvciBzYWJvdGFnZSB5b3VyIFBTQS4nLFxuICAgICAgICAgICAgaW1hZ2U6ICcvYXNzZXRzL2ltZy9yZXNvdXJjZS9yZXNvdXJjZS1wc2EucG5nJyxcbiAgICAgICAgICAgIGFsdDogJ1BTQSBmdXR1cmUtcHJvb2YnLFxuICAgICAgICAgICAgdXJsOiAnL3Jlc291cmNlcy92aWV3L3RoZS10cml2aWFsLWRldGFpbC10aGF0LXdpbGwtZWl0aGVyLWZ1dHVyZS1wcm9vZi1vci1zYWJvdGFnZS15b3VyLXBzYSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwb3N0O1xuICAgIG1hc3RlclN1YnNjcmlwdGlvbklkO1xuICAgIHNsdWc7XG5cbiAgICBwb3N0Q29tbWVudHMgPSBbXTtcbiAgICBjb21tZW50Rm9ybTtcblxuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcblxuICAgIGRlbW9MaW5rcyA9IHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXM7XG5cbiAgICB1c2VyOiBVc2VyO1xuICAgIGJsb2dQb3N0VGFnO1xuICAgIHN1YnNjcmlwdGlvbklkO1xuICAgIGlzTWFzdGVyU3Vic2NyaXB0aW9uO1xuICAgIGxpbmtlZEluVXJsID0gdGhpcy5hcHBDb25maWc/LnNvY2lhbD8ubGlua2VkaW5fdXJsO1xuICAgIGNvbXBhbnlfZW1haWwgPSB0aGlzLmFwcENvbmZpZy5jb21wYW55LmVtYWlsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IEN1c3RvbVRvYXN0U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tbWVudEZvcm0gPSBSZXNvdXJjZUJsb2cuZ2V0UmVzb3VyY2VQb3N0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2x1ZyA9IHBhcmFtc1snc2x1ZyddID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5nZXRCbG9nSXRlbSh0aGlzLnNsdWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0VGFncygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBoYXNWYWxpZERlbW9MaW5rcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5kZW1vTGlua3MpICYmIHRoaXMuZGVtb0xpbmtzLnNvbWUobGluayA9PiBsaW5rPy50aXRsZSA/PyBsaW5rPy51cmwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0VGFncygpIHtcbiAgICAgICAgdGhpcy50YWdTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VGFnc0J5VHlwZSgncG9zdF9jYXRlZ29yaWVzJywge30sIHRoaXMuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RUYWcgPSByZXNwb25zZS50YWdzLmZpbmQodGFnID0+IHRhZy5uYW1lID09PSAnQmxvZyBQb3N0cycpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9nSXRlbShzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UG9zdEJ5U2x1ZyhzbHVnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgbGV0IGJsb2dCb2R5O1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5ib2R5KSB7XG4gICAgICAgICAgICAgICAgYmxvZ0JvZHkgPSBIZWxwZXJTZXJ2aWNlLnNhbml0aXplUXVpbGxCb2R5KHJlc3BvbnNlLmJvZHksIHRoaXMuc2FuaXRpemVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShyZXNwb25zZT8ud2hlbik7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgICAgICAgIHRoaXMucG9zdENvbW1lbnRzID0gcmVzcG9uc2UuZW50aXR5X2NvbW1lbnRzO1xuICAgICAgICAgICAgdGhpcy5wb3N0ID0geyAuLi5yZXNwb25zZSwgYm9keTogYmxvZ0JvZHksIHdoZW46IGZvcm1hdHRlZCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IC4uLnRoaXMuY29tbWVudEZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5yZWxhdGVkX2VudGl0eV9pZCA9IHRoaXMucG9zdD8uaWQ7XG4gICAgICAgIGRhdGEucmVsYXRlZF9lbnRpdHlfdHlwZSA9ICdQb3N0JztcbiAgICAgICAgZGF0YS51c2VyX2lkID0gdGhpcy51c2VyPy5pZDtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UucG9zdENvbW1lbnRzKGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldEJsb2dJdGVtKHRoaXMuc2x1Zyk7XG4gICAgICAgICAgICB0aGlzLmNvbW1lbnRGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdSZXNvdXJjZS5Qb3N0cy5Db21tZW50QWRkZWQnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnlDb21tZW50KF9pbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBudW1iZXIgfSkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogSGVscGVyIG1ldGhvZCB0byBnZXQgZWZmZWN0aXZlIHN1YnNjcmlwdGlvbiBJRCAqL1xuICAgIHByaXZhdGUgZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEhlbHBlclNlcnZpY2UuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoXG4gICAgICAgICAgICB0aGlzLnVzZXIsXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIlxuXG48c2VjdGlvbiBjbGFzcz1cInJlc291cmNlLWJvZHktc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInFsLXNub3cgYm9keS1xdWlsbFwiXG4gICAgPlxuICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3IgYm9keSBwb3N0LWJvZHktdGV4dFwiXG4gICAgICBbaW5uZXJIVE1MXT1cInBvc3Q/LmJvZHlcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxzZWN0aW9uIGNsYXNzPVwibmNlLW9mZmVyLXNlY3Rpb25cIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC01IG1iLTQgcmVzcG9uc2Utcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgY2xhc3M9XCJwLWZsdWlkIG1iLTVcIlxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJjb21tZW50Rm9ybVwiXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwib25Db21tZW50KClcIlxuICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTG9nZ2VkSW47IGVsc2UgdXNlckxvZ2dlZE91dFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgc2hhZG93LXNtIG5vLWJvcmRlciBwLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbW1lbnRcIiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnIG1iLTQgY29tbWVudC1sYWJlbFwiPvCfkqwgTGVhdmUgYSBjb21tZW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCI2XCJcbiAgICAgICAgICAgICAgICAgIGF1dG9SZXNpemU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1pbnB1dHRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCdzIG9uIHlvdXIgbWluZD9cIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnRGb3JtLmdldCgnY29tbWVudCcpPy5pbnZhbGlkICYmIGNvbW1lbnRGb3JtLmdldCgnY29tbWVudCcpPy50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICAgID5QbGVhc2UgZW50ZXIgY29tbWVudDwvc21hbGxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtM1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaWduLWJ0biBzaWduLWhlYWRlci1idG5cIj5cbiAgICAgICAgICAgICAgICB7eyAnQnV0dG9uLlN1Ym1pdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlckxvZ2dlZE91dD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtMyBwYi0zIHVzZXItbm90LWxvZ2dlZC1pbiB0ZXh0LW11dGVkIHNoYWRvdy1zbSBtYi01XCI+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2xvZ2luJ11cIiBjbGFzcz1cInRleHQtcHJpbWFyeSBmdy1ib2xkXCI+TG9nIGluPC9hPiB0byBsZWF2ZSBhIGNvbW1lbnQhXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC01IGNvbW1lbnQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBwb3N0Q29tbWVudHM7IHRyYWNrQnk6IHRyYWNrQnlDb21tZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbm8tYm9yZGVyIHNoYWRvdy1zbSBwLTMgbWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCJjb21tZW50Py5hdXRob3I/LmF2YXRhcj8uWzBdPy51cmwgfHwgJ2Fzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmcnXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJhdmF0YXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgbWUtM1wiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI1MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKCRldmVudCwgJ2Fzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmcnKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIHRleHQtZGFya1wiPlxuICAgICAgICAgICAgICAgICAge3sgY29tbWVudC51c2VyPy5maXJzdF9uYW1lIHx8ICcnIH19IHt7IGNvbW1lbnQudXNlcj8ubGFzdF9uYW1lIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbWItMlwiPnt7IGNvbW1lbnQuY3JlYXRlZF9hdCB8IGRhdGU6ICdkZCBNTU0geXl5eSwgaDptbSBhJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQuY29tbWVudCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG5cbiAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgPGhyIGNsYXNzPVwibmNlLWRpdmlkZXJcIiAvPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiBjbGFzcz1cIm5jZS1ib29rLXNlY3Rpb25cIiAqbmdJZj1cImhhc1ZhbGlkRGVtb0xpbmtzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cblxuICAgIDxwIGNsYXNzPVwibmNlLWNvbnRhY3RcIj5cbiAgICAgIEFueSBxdWVzdGlvbnMsIGdldCBpbiB0b3VjaCA8YSBocmVmPVwibWFpbHRvOnt7IGNvbXBhbnlfZW1haWwgfX1cIj5oZXJlPC9hPixcbiAgICAgIDxhIFtocmVmXT1cImxpbmtlZEluVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Y29ubmVjdCBvbiBMaW5rZWRJbjwvYT4sIG9yIGJvb2sgYSBtZWV0aW5nIGJlbG93OlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxwdy1ib29rLWEtZGVtbyBbaXNCbG9nXT1cInRydWVcIj48L3B3LWJvb2stYS1kZW1vPlxuICA8aHIgY2xhc3M9XCJuY2UtZGl2aWRlclwiIC8+XG48L3NlY3Rpb24+XG5cblxuPHB3LXJlc291cmNlLWNhcmRzICpuZ0lmPVwiYmxvZ1Bvc3RUYWc/LnRhZ19jYXRlZ29yeV9pZFwiIFt0YWddPVwiYmxvZ1Bvc3RUYWdcIiBbY2F0ZWdvcnlJZF09XCJibG9nUG9zdFRhZz8udGFnX2NhdGVnb3J5X2lkXCIgW3Jlc291cmNlVGl0bGVdPVwiYmxvZ1Bvc3RUYWc/LnRpdGxlXCIgW2lzSGVhZGVyVmlzaWJsZV09XCJ0cnVlXCIgcmVzb3VyY2VMaW5rPVwiL3Jlc291cmNlcy9ibG9nc1wiIFtpc1JlbGF0ZWRdPVwidHJ1ZVwiIFtyZXNvdXJjZVRpdGxlXT1cIidPdGhlciByZXNvdXJjZXMgeW91IG1heSBiZSBpbnRlcmVzdGVkIGluOidcIj48L3B3LXJlc291cmNlLWNhcmRzPlxuIl19
|