asap-feed-beta 12.7.3 → 12.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/asap-feed-beta.metadata.json +1 -1
- package/bundles/asap-feed-beta.umd.js +32 -15
- package/bundles/asap-feed-beta.umd.js.map +1 -1
- package/bundles/asap-feed-beta.umd.min.js +1 -1
- package/bundles/asap-feed-beta.umd.min.js.map +1 -1
- package/esm2015/lib/asap-feed-beta.component.js +2 -2
- package/esm2015/lib/feed-item/feed-item.component.js +21 -5
- package/esm2015/lib/feed-publication/feed-publication.component.js +3 -4
- package/esm2015/lib/services/user.service.js +8 -8
- package/esm5/lib/asap-feed-beta.component.js +2 -2
- package/esm5/lib/feed-item/feed-item.component.js +24 -5
- package/esm5/lib/feed-publication/feed-publication.component.js +3 -4
- package/esm5/lib/services/user.service.js +8 -8
- package/fesm2015/asap-feed-beta.js +29 -15
- package/fesm2015/asap-feed-beta.js.map +1 -1
- package/fesm5/asap-feed-beta.js +32 -15
- package/fesm5/asap-feed-beta.js.map +1 -1
- package/lib/feed-item/feed-item.component.d.ts +4 -1
- package/package.json +1 -1
|
@@ -14,15 +14,17 @@ import { UtilsService } from '../services/utils.service';
|
|
|
14
14
|
import { MatDialog } from '@angular/material/dialog';
|
|
15
15
|
import SwiperCore, { Navigation, Pagination } from 'swiper';
|
|
16
16
|
import { TranslateService } from '@ngx-translate/core';
|
|
17
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
17
18
|
SwiperCore.use([Navigation, Pagination]);
|
|
18
19
|
var FeedItemComponent = /** @class */ (function () {
|
|
19
|
-
function FeedItemComponent(streamService, db, global, dialog, service, translate) {
|
|
20
|
+
function FeedItemComponent(streamService, db, global, dialog, service, translate, sanitizer) {
|
|
20
21
|
this.streamService = streamService;
|
|
21
22
|
this.db = db;
|
|
22
23
|
this.global = global;
|
|
23
24
|
this.dialog = dialog;
|
|
24
25
|
this.service = service;
|
|
25
26
|
this.translate = translate;
|
|
27
|
+
this.sanitizer = sanitizer;
|
|
26
28
|
this.isVisible = new EventEmitter();
|
|
27
29
|
this.imageLoaded = false;
|
|
28
30
|
this.imageDataLoaded = false;
|
|
@@ -150,6 +152,20 @@ var FeedItemComponent = /** @class */ (function () {
|
|
|
150
152
|
this.videoplayer.nativeElement.play();
|
|
151
153
|
}
|
|
152
154
|
};
|
|
155
|
+
/**
|
|
156
|
+
* @param {?} str
|
|
157
|
+
* @return {?}
|
|
158
|
+
*/
|
|
159
|
+
FeedItemComponent.prototype.sanitizedLinkify = /**
|
|
160
|
+
* @param {?} str
|
|
161
|
+
* @return {?}
|
|
162
|
+
*/
|
|
163
|
+
function (str) {
|
|
164
|
+
// return str;
|
|
165
|
+
/** @type {?} */
|
|
166
|
+
var sanitized = this.sanitizer.bypassSecurityTrustHtml(this.linkify(str));
|
|
167
|
+
return sanitized;
|
|
168
|
+
};
|
|
153
169
|
/**
|
|
154
170
|
* @param {?} str
|
|
155
171
|
* @return {?}
|
|
@@ -183,7 +199,7 @@ var FeedItemComponent = /** @class */ (function () {
|
|
|
183
199
|
if (www)
|
|
184
200
|
return "<a class='text-primary' href=\"http://" + www + "\">" + www + "</a>";
|
|
185
201
|
if (mail)
|
|
186
|
-
return "<a class='text-primary' href=\"
|
|
202
|
+
return "<a class='text-primary' href=\"mailto://" + mail + "\">" + mail + "</a>";
|
|
187
203
|
if (twitler)
|
|
188
204
|
return "<a class='text-primary' href=\"portal/search/" + encodeURIComponent('#' + twitler) + "\">#" + twitler + "</a>";
|
|
189
205
|
// return "<a class='text-primary' href=\"#\">#" + twitler + "</a>";
|
|
@@ -374,7 +390,7 @@ var FeedItemComponent = /** @class */ (function () {
|
|
|
374
390
|
FeedItemComponent.decorators = [
|
|
375
391
|
{ type: Component, args: [{
|
|
376
392
|
selector: 'app-feed-item',
|
|
377
|
-
template: "<ng-container *ngIf=\"item && item.status && !item.deleted\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <popover-content #myPopover placement=\"auto right\" [closeOnClickOutside]=\"false\" [closeOnMouseOutside]=\"false\"\n [animation]=\"true\">\n <div class='minibio'>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\" alt=\"{{ item?.user_info?.name }}\">\n <div class=\"info\"><b>{{ item?.user_info?.name }}</b><br />\n <!-- <span class=\"location\"><i class=\"icon fa fa-globe\" aria-hidden=\"true\"></i> Fortaleza/CE</span> -->\n </div>\n </div>\n </popover-content>\n <div mat-card-avatar>\n <a [routerLink]=\"['/profile',item.user_info?.id]\"><img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar mr-1\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\" [popover]=\"myPopover\" [popoverOnHover]=\"true\"></a>\n </div>\n\n <mat-card-title>\n <h4 class=\"ml-2\"><b><a [routerLink]=\"['/profile',item.user_info?.id]\">{{ item?.user_info?.name }}</a> <i\n *ngIf=\"item?.channel_id\" class=\"material-icons text-primary\" matTooltip=\"Este \u00E9 um post Institucional\"\n matTooltipClass=\"tooltip-primary\">done_all</i></b>\n </h4>\n <p class=\"ml-2\"> {{ 'SharedPublication' | translate }} <a [routerLink]=\"['/start',item.id]\">{{\n item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <ng-container *ngIf=\"global.loggedUser()\">\n <div class=\"feed-buttom-option\" *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [disabled]=\"!item.status\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditItem()\" [disabled]=\"!item.status\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"onRemoveItem(item)\" [disabled]=\"!item.status\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n <div *ngIf=\"item.isHighlighted\" matTooltip=\"Post destacado\" class=\"feed-buttom-option pinned-feed\">\n <i class=\"fa fa-thumb-tack fa-lg\"></i>\n </div>\n </ng-container>\n\n </mat-card-header>\n\n <ng-container *ngIf=\"item.type != 'announce'\">\n <ng-container *ngIf=\"!(item.files && item.files.length > 0)\">\n <div class=\"card card-file mt-0 pointer\">\n <!-- <div class=\"card-cover\"> -->\n <ng-container *ngIf=\"item.additional_data && item.additional_data.image\">\n <img style=\"display: none;\" [src]=\"item.additional_data.image\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"item.additional_data.image\">\n <img mat-card-image [src]=\"item.additional_data.image\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n </ng-container>\n <!-- </div> -->\n <a *ngIf=\"item.additional_data && item.additional_data.file_id\"\n [routerLink]=\"['/channel/files/' + item.channel_id +'/'+ item.additional_data.file_id]\" class=\"circle\">\n <i class=\"fa fa-file-text-o\"></i>\n </a>\n <div *ngIf=\"item.additional_data && item.additional_data.description\" class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"description m-3\" [innerHTML]=\"linkify(item.additional_data.description)\"></p>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.files && item.files.length > 0\">\n\n <ng-container *ngIf=\"item.files.length === 1\">\n <ng-container *ngFor=\"let file of item.files\">\n <ng-container *ngIf=\"file.type == 'image'\">\n\n <img style=\"display: none;\" [src]=\"file.name || file.url\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"file.name || file.url\">\n <img mat-card-image [src]=\"file.name || file.url\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'video'\">\n <div class=\"carousel custom-carrousel\">\n <div class=\"content\">\n <div class=\"item\">\n <div class=\"video-overlay cloudinary-true\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\"></div>\n\n <div class=\"video-overlay youtube-true\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <div class=\"video-overlay not-cloudinary-youtube\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video not-cloudinary-youtube\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video cloudinary-true\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'pdf' || file.type == 'txt'\">\n <div class=\"container-mat-card px-3\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id + '/' + file.file_id]\" class=\"w-100\">\n\n <div class=\"card card-file mt-0 pointer\">\n <div class=\"card-cover\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\">\n <ng-container *ngIf=\"file.image\">\n <img [src]=\"file.image\" alt=\"\">\n </ng-container>\n\n <ng-container *ngIf=\"!file.image || file.image == null\">\n <h4 class=\"title\" [innerHTML]=\"linkify(file.title)\"></h4>\n </ng-container>\n </a>\n </div>\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\" class=\"circle\">\n <i *ngIf=\"file.type == 'pdf'\" class=\"fa fa-file-pdf-o\"></i>\n <i *ngIf=\"file.type == 'txt'\" class=\"fa fa-file-text-o\"></i>\n </a>\n <div class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"title mb-1\" style=\"color: #414141 !important; text-shadow: none !important; font-weight: 500 !important;\" [innerHTML]=\"linkify(file.title)\"></p>\n <p class=\"description mb-3\" [innerHTML]=\"linkify(file.description)\"></p>\n </div>\n </div>\n\n </a>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'embed'\">\n <iframe class=\"video\" style=\"height: 280px; width: 100%;margin-top: 15px;\"\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\" allowfullscreen></iframe>\n </ng-container>\n\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"item.files.length > 1\">\n\n <!-- Carrosel de Imavens e v\u00EDdeos -->\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n\n <!-- Imagem -->\n\n <ng-container *ngIf=\"file.type === 'image'\">\n <ng-container *ngIf=\"file.url\">\n <div class=\"swiper-container-img\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.url+')'\">\n </div>\n <img class=\"img\" [src]=\"file.url\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.name\">\n <div class=\"swiper-container-img\" [style.backgroundImage]=\"'url('+file.name+')'\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.name+')'\">\n </div>\n <img class=\"img\" [src]=\"file.name\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Video -->\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container>\n\n <!-- Verifica se o V\u00EDdeo \u00E9 a primeira posi\u00E7\u00E3o do Slide -->\n <!-- <ng-container *ngIf=\" i === 0\">\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer\n *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer\n *ngIf=\"file.isCloudinary === true\" (click)=\"playVideo($event)\"\n (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\" width=\"100%\"\n controls=\"false\" preload=\"metadata\" poster=\"{{file.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube === true\">\n <iframe attr.type='youtube' #videoPlayer\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container> -->\n\n </ng-container>\n\n <ng-template #infiniteContainer></ng-template>\n </div>\n </div>\n </swiper>\n </div>\n\n <!-- Fim Carrosel de Imagens e V\u00EDdeos -->\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"item.type == 'announce'\">\n <div class=\"ribbon ribbon-top-right\"><span>An\u00FAncio</span></div>\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n <ng-container *ngIf=\"file.type === 'image'\">\n <div class=\"img\" [style.backgroundImage]=\"'url('+file.name+')'\" *ngIf=\"file.name\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" [style.background-image]=\"file.url | stream:'styleThumbUrl'\">\n </div>\n\n <video class=\"video\" width=\"100%\" preload=\"metadata\" poster=\"{{ file?.url | stream:'thumb' }}\">\n <source [src]=\"file?.url | stream:'link'\" />\n </video>\n\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n <ng-template #infiniteContainer></ng-template>\n </swiper>\n </div>\n\n <div class=\"pull-right mt-3\" [routerLink]=\"['/market/product/', item.product.id]\">\n <button class=\"btn btn-primary\">\n <i class=\"fa fa-shopping-cart\"></i>\n {{ preConvertNumber(item?.product?.valorDe) | currency:'BRL':true}} -\n {{ preConvertNumber(item?.product?.valorAte) | currency:'BRL':true}}\n </button>\n </div>\n <p *ngIf=\"item?.product?.data?.descr\" [innerHTML]=\"item.product.descr\"></p>\n </ng-container>\n\n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" *ngIf=\"item.additional_data?.type != 'video'\" [innerHTML]=\"linkify(item.additional_data?.description)\"></span>\n \n <feed-actions [settings]=\"settings\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n\n </mat-card>\n</ng-container>\n\n<ng-container *ngIf=\"item && !item.status\">\n <ng-container *ngIf=\"global.loggedUser()\">\n <ng-container *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <ng-container *ngIf=\"item\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <div mat-card-avatar>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\">\n </div>\n <mat-card-title>\n <h4><b>{{ item?.user_info?.name }}</b></h4>\n <p> {{ 'SharedPublication' | translate }} <a>{{ item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <div class=\"feed-buttom-option\" *ngIf=\"false\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"false\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"false\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n\n </mat-card-header>\n\n <ng-container>\n <div class=\"col-sm-12 mx-auto text-center post-processing-section\">\n <img src=\"https://image.flaticon.com/icons/svg/2654/2654464.svg\" width=\"30%\">\n <h4>Estamos processando os dados do seu Post!</h4>\n <p>No momento ele est\u00E1 vis\u00EDvel apenas para voc\u00EA, mas logo estar\u00E1 dispon\u00EDvel para todos!</p>\n </div>\n </ng-container>\n \n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <feed-actions [settings]=\"settings\" prefix=\"prefix\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" prefix=\"prefix\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n </mat-card>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n",
|
|
393
|
+
template: "<ng-container *ngIf=\"item && item.status && !item.deleted\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <popover-content #myPopover placement=\"auto right\" [closeOnClickOutside]=\"false\" [closeOnMouseOutside]=\"false\"\n [animation]=\"true\">\n <div class='minibio'>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\" alt=\"{{ item?.user_info?.name }}\">\n <div class=\"info\"><b>{{ item?.user_info?.name }}</b><br />\n <!-- <span class=\"location\"><i class=\"icon fa fa-globe\" aria-hidden=\"true\"></i> Fortaleza/CE</span> -->\n </div>\n </div>\n </popover-content>\n <div mat-card-avatar>\n <a [routerLink]=\"['/profile',item.user_info?.id]\"><img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar mr-1\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\" [popover]=\"myPopover\" [popoverOnHover]=\"true\"></a>\n </div>\n\n <mat-card-title>\n <h4 class=\"ml-2\"><b><a [routerLink]=\"['/profile',item.user_info?.id]\">{{ item?.user_info?.name }}</a> <i\n *ngIf=\"item?.channel_id\" class=\"material-icons text-primary\" matTooltip=\"Este \u00E9 um post Institucional\"\n matTooltipClass=\"tooltip-primary\">done_all</i></b>\n </h4>\n <p class=\"ml-2\"> {{ 'SharedPublication' | translate }} <a [routerLink]=\"['/start',item.id]\">{{\n item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <ng-container *ngIf=\"global.loggedUser()\">\n <div class=\"feed-buttom-option\" *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [disabled]=\"!item.status\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditItem()\" [disabled]=\"!item.status\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"onRemoveItem(item)\" [disabled]=\"!item.status\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n <div *ngIf=\"item.isHighlighted\" matTooltip=\"Post destacado\" class=\"feed-buttom-option pinned-feed\">\n <i class=\"fa fa-thumb-tack fa-lg\"></i>\n </div>\n </ng-container>\n\n </mat-card-header>\n\n <ng-container *ngIf=\"item.type != 'announce'\">\n <ng-container *ngIf=\"!(item.files && item.files.length > 0)\">\n <div class=\"card card-file mt-0 pointer\">\n <!-- <div class=\"card-cover\"> -->\n <ng-container *ngIf=\"item.additional_data && item.additional_data.image\">\n <img style=\"display: none;\" [src]=\"item.additional_data.image\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"item.additional_data.image\">\n <img mat-card-image [src]=\"item.additional_data.image\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n </ng-container>\n <!-- </div> -->\n <a *ngIf=\"item.additional_data && item.additional_data.file_id\"\n [routerLink]=\"['/channel/files/' + item.channel_id +'/'+ item.additional_data.file_id]\" class=\"circle\">\n <i class=\"fa fa-file-text-o\"></i>\n </a>\n <div *ngIf=\"item.additional_data && item.additional_data.description\" class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"description m-3\" [innerHTML]=\"linkify(item.additional_data.description)\"></p>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.files && item.files.length > 0\">\n\n <ng-container *ngIf=\"item.files.length === 1\">\n <ng-container *ngFor=\"let file of item.files\">\n <ng-container *ngIf=\"file.type == 'image'\">\n\n <img style=\"display: none;\" [src]=\"file.name || file.url\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"file.name || file.url\">\n <img mat-card-image [src]=\"file.name || file.url\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'video'\">\n <div class=\"carousel custom-carrousel\">\n <div class=\"content\">\n <div class=\"item\">\n <div class=\"video-overlay cloudinary-true\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\"></div>\n\n <div class=\"video-overlay youtube-true\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <div class=\"video-overlay not-cloudinary-youtube\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video not-cloudinary-youtube\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video cloudinary-true\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'pdf' || file.type == 'txt'\">\n <div class=\"container-mat-card px-3\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id + '/' + file.file_id]\" class=\"w-100\">\n\n <div class=\"card card-file mt-0 pointer\">\n <div class=\"card-cover\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\">\n <ng-container *ngIf=\"file.image\">\n <img [src]=\"file.image\" alt=\"\">\n </ng-container>\n\n <ng-container *ngIf=\"!file.image || file.image == null\">\n <h4 class=\"title\" [innerHTML]=\"linkify(file.title)\"></h4>\n </ng-container>\n </a>\n </div>\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\" class=\"circle\">\n <i *ngIf=\"file.type == 'pdf'\" class=\"fa fa-file-pdf-o\"></i>\n <i *ngIf=\"file.type == 'txt'\" class=\"fa fa-file-text-o\"></i>\n </a>\n <div class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"title mb-1\" style=\"color: #414141 !important; text-shadow: none !important; font-weight: 500 !important;\" [innerHTML]=\"linkify(file.title)\"></p>\n <p class=\"description mb-3\" [innerHTML]=\"linkify(file.description)\"></p>\n </div>\n </div>\n\n </a>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'embed'\">\n <iframe class=\"video\" style=\"height: 280px; width: 100%;margin-top: 15px;\"\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\" allowfullscreen></iframe>\n </ng-container>\n\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"item.files.length > 1\">\n\n <!-- Carrosel de Imavens e v\u00EDdeos -->\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n\n <!-- Imagem -->\n\n <ng-container *ngIf=\"file.type === 'image'\">\n <ng-container *ngIf=\"file.url\">\n <div class=\"swiper-container-img\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.url+')'\">\n </div>\n <img class=\"img\" [src]=\"file.url\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.name\">\n <div class=\"swiper-container-img\" [style.backgroundImage]=\"'url('+file.name+')'\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.name+')'\">\n </div>\n <img class=\"img\" [src]=\"file.name\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Video -->\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container>\n\n <!-- Verifica se o V\u00EDdeo \u00E9 a primeira posi\u00E7\u00E3o do Slide -->\n <!-- <ng-container *ngIf=\" i === 0\">\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer\n *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer\n *ngIf=\"file.isCloudinary === true\" (click)=\"playVideo($event)\"\n (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\" width=\"100%\"\n controls=\"false\" preload=\"metadata\" poster=\"{{file.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube === true\">\n <iframe attr.type='youtube' #videoPlayer\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container> -->\n\n </ng-container>\n\n <ng-template #infiniteContainer></ng-template>\n </div>\n </div>\n </swiper>\n </div>\n\n <!-- Fim Carrosel de Imagens e V\u00EDdeos -->\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"item.type == 'announce'\">\n <div class=\"ribbon ribbon-top-right\"><span>An\u00FAncio</span></div>\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n <ng-container *ngIf=\"file.type === 'image'\">\n <div class=\"img\" [style.backgroundImage]=\"'url('+file.name+')'\" *ngIf=\"file.name\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" [style.background-image]=\"file.url | stream:'styleThumbUrl'\">\n </div>\n\n <video class=\"video\" width=\"100%\" preload=\"metadata\" poster=\"{{ file?.url | stream:'thumb' }}\">\n <source [src]=\"file?.url | stream:'link'\" />\n </video>\n\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n <ng-template #infiniteContainer></ng-template>\n </swiper>\n </div>\n\n <div class=\"pull-right mt-3\" [routerLink]=\"['/market/product/', item.product.id]\">\n <button class=\"btn btn-primary\">\n <i class=\"fa fa-shopping-cart\"></i>\n {{ preConvertNumber(item?.product?.valorDe) | currency:'BRL':true}} -\n {{ preConvertNumber(item?.product?.valorAte) | currency:'BRL':true}}\n </button>\n </div>\n <p *ngIf=\"item?.product?.data?.descr\" [innerHTML]=\"item.product.descr\"></p>\n </ng-container>\n\n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"sanitizedLinkify(item.title)\"></span>\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" *ngIf=\"item.additional_data?.type != 'video'\" [innerHTML]=\"linkify(item.additional_data?.description)\"></span>\n \n <feed-actions [settings]=\"settings\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n\n </mat-card>\n</ng-container>\n\n<ng-container *ngIf=\"item && !item.status\">\n <ng-container *ngIf=\"global.loggedUser()\">\n <ng-container *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <ng-container *ngIf=\"item\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <div mat-card-avatar>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\">\n </div>\n <mat-card-title>\n <h4><b>{{ item?.user_info?.name }}</b></h4>\n <p> {{ 'SharedPublication' | translate }} <a>{{ item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <div class=\"feed-buttom-option\" *ngIf=\"false\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"false\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"false\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n\n </mat-card-header>\n\n <ng-container>\n <div class=\"col-sm-12 mx-auto text-center post-processing-section\">\n <img src=\"https://image.flaticon.com/icons/svg/2654/2654464.svg\" width=\"30%\">\n <h4>Estamos processando os dados do seu Post!</h4>\n <p>No momento ele est\u00E1 vis\u00EDvel apenas para voc\u00EA, mas logo estar\u00E1 dispon\u00EDvel para todos!</p>\n </div>\n </ng-container>\n \n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <feed-actions [settings]=\"settings\" prefix=\"prefix\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" prefix=\"prefix\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n </mat-card>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n",
|
|
378
394
|
providers: [StreamService],
|
|
379
395
|
styles: ["li,ul{list-style:none!important}a,a:hover{text-decoration:none}.text-primary{color:var(--main-color)}.card{border-radius:6px;box-shadow:1px 1px 10px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 10px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 10px rgba(201,191,187,.7);border:none;margin-bottom:30px;margin-top:0}.card .card-content{flex:1 1 auto;padding:1.25rem}.comments{margin:30px -15px}.comments h4{font-size:16px;color:#414141;margin-bottom:0;font-weight:600}.comments p{margin:5px 15px 5px 65px;font-size:14px;word-break:break-all}.post-text{white-space:pre-wrap!important;font-size:14px}.form-feed{width:100%;margin:0 0 25px!important;padding:10px 15px!important;border-radius:8px;box-shadow:1px 1px 15px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7);background-color:#fff!important}.form-feed .title{font-size:16px;margin-bottom:10px;border-bottom:1px solid #eee;padding-bottom:10px}.form-feed textarea{float:left;width:calc(100% - 50px);border-bottom:1px solid #eee;border-top:transparent;border-left:transparent;border-right:transparent;box-shadow:none;padding:5px 10px;outline:0!important}.form-input-btn a{float:right;border:none!important;box-shadow:none!important;background:0 0;padding:0;margin-top:12px;position:relative;right:0;left:0;margin-bottom:0;color:#8e8994}.form-input-btn a .material-icons{font-size:18px}.mat-dialog-container{padding:0!important}.form-comment{width:100%;margin:0!important;padding:15px 0 0!important;border-top:1px solid #eee}.form-comment input[type=text]{float:left;width:calc(100% - 50px);border:1px solid #eee;box-shadow:none;border-radius:30px;padding:5px 10px;outline:0}input::-webkit-input-placeholder{color:#ccc}input::-moz-placeholder{color:#ccc}input:-ms-input-placeholder{color:#ccc}input::-ms-input-placeholder{color:#ccc}input::placeholder{color:#ccc}.avatar-30{float:left;width:30px;height:30px;margin-right:10px;border-radius:50%}.avatar-30-null{display:flex;align-items:center;justify-content:center;float:left;width:30px;height:30px;margin-right:10px;border-radius:50%;background:#fafafa;color:#bbb}.comment-time{position:absolute;right:15px}.avatar-45{float:left;width:40px;height:40px;margin-right:10px;border-radius:50%}.avatar-45-null{display:flex;align-items:center;justify-content:center;float:left;width:40px;height:40px;margin-right:10px;border-radius:50%;background:#fafafa;color:#bbb;border:1.3px solid var(--main-color)}.super-post{position:absolute;right:15px;top:10px;font-size:1.8em;color:#888}.icons-comments{margin:10px 0 0;padding:10px 20px;border-top:1px solid #eee;border-bottom:1px solid #eee}.icons-comments li{display:inline-block;margin-right:30px;font-size:14px}.icons-comments li:last-child{margin-right:0;position:absolute;right:20px}.icons-comments li a{color:#4a4a4a;cursor:pointer}.icons-comments li a.active,.icons-comments li a:hover{color:var(--main-color)}.icons-comments .fa{font-size:16px}.card-file{width:100%;margin:0 auto 30px;box-shadow:0 0 30px rgba(204,204,204,.4);border:none;border-radius:12px;transition:.5s}.card-file:hover{box-shadow:0 0 30px rgba(204,204,204,.8)}.card-file .card-cover{display:flex;align-items:center;justify-content:center;padding:15px;position:relative;width:100%;height:160px;border-top-left-radius:16px;border-top-right-radius:12px;-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:1;background:var(--main-color);color:#fff!important}.card-file .card-content{height:auto;padding:0 15px}.card-file .card-content .description{color:#888}.card-file .title{color:#fff;margin-bottom:0;font-size:18px;text-shadow:2px 2px 2px #101010}.btn-feed{width:auto;font-size:12px;padding:2px 10px;border-radius:30px;font-weight:600;text-transform:capitalize}.btn-group-xs>.btn,.btn-xs{padding:2px 15px 3px;font-size:13px;line-height:1;border-radius:30px}.btn-primary,.btn-primary:hover{color:var(--text-btn)!important;background-color:var(--bg-btn);border-color:var(--bg-btn)}.btn-primary.focus,.btn-primary:focus{background-color:var(--bg-btn);border-color:var(--bg-btn);box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-primary.disabled,.btn-primary:disabled,.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:var(--text-btn)!important;background-color:var(--bg-btn);border-color:var(--bg-btn)}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-secondary{color:#fff;background-color:#111;border-color:#111}.btn-secondary:hover{color:#fff;background-color:#333;border-color:#333}.btn-secondary.focus,.btn-secondary:focus{background-color:#333;border-color:#333;box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#111;border-color:#111}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#333;border-color:#333}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.ribbon{width:150px;height:150px;overflow:hidden;position:absolute;z-index:1}.ribbon::after,.ribbon::before{position:absolute;z-index:-1;content:\"\";display:block;border:5px solid var(--bg-btn)}.ribbon span{position:absolute;display:block;width:225px;padding:15px 0;background-color:var(--bg-btn);box-shadow:0 5px 10px rgba(0,0,0,.1);color:#fff;font:700 18px/1 Lato,sans-serif;text-shadow:0 1px 1px rgba(0,0,0,.2);text-transform:uppercase;text-align:center}.ribbon-top-left{top:-10px;left:-10px;background:0 0}.ribbon-top-left::after,.ribbon-top-left::before{border-top-color:transparent;border-left-color:transparent}.ribbon-top-left::before{top:0;right:0}.ribbon-top-left::after{bottom:0;left:0}.ribbon-top-left span{right:-25px;top:30px;transform:rotate(-45deg)}.ribbon-top-right{top:-10px;right:-10px;background:0 0!important}.ribbon-top-right::after,.ribbon-top-right::before{border-top-color:transparent;border-right-color:transparent}.ribbon-top-right::before{top:0;left:0}.ribbon-top-right::after{bottom:0;right:0}.ribbon-top-right span{left:-25px;top:30px;transform:rotate(45deg)}.ribbon-bottom-left{bottom:-10px;left:-10px}.ribbon-bottom-left::after,.ribbon-bottom-left::before{border-bottom-color:transparent;border-left-color:transparent}.ribbon-bottom-left::before{bottom:0;right:0}.ribbon-bottom-left::after{top:0;left:0}.ribbon-bottom-left span{right:-25px;bottom:30px;transform:rotate(225deg)}.ribbon-bottom-right{bottom:-10px;right:-10px}.ribbon-bottom-right::after,.ribbon-bottom-right::before{border-bottom-color:transparent;border-right-color:transparent}.ribbon-bottom-right::before{bottom:0;left:0}.ribbon-bottom-right::after{top:0;right:0}.ribbon-bottom-right span{left:-25px;bottom:30px;transform:rotate(-225deg)}.video-container{min-height:200px}.video-container img{width:100%;-o-object-fit:cover;object-fit:cover;-webkit-filter:blur(10px);filter:blur(10px)}.video-player{top:0;left:1px;width:calc(100% - 2px)}.tmp-file-buttons-overlay{opacity:1}.overlayed{opacity:1!important;visibility:visible}.tmp-file-status-overlay{position:absolute;background:rgba(0,0,0,.5);text-align:center;z-index:999;color:#fff;width:156px;height:120px;padding:20px}.tmp-file-status-overlay p{color:#fff}.tmp-file-buttons-overlay{background:rgba(0,0,0,.5);width:156px;height:120px;position:absolute;z-index:999;visibility:visible;opacity:1;transition:opacity .5s ease-out}.tmp-file-remove-button{position:absolute;right:5px;text-align:right;width:10px;color:#fff;padding:0 1px;border-radius:0}.tmp-file-content{width:156px;height:120px;overflow:hidden}.tmp-upload-video{-o-object-fit:contain;object-fit:contain}.tmp-file-wrapper{position:relative}.tmp-upload{-o-object-fit:cover;object-fit:cover;width:156px;height:120px}.tmp-file-wrapper-container{padding:20px 0 0;margin:20px -15px;border-width:1px 0;border-color:#ccc;border-style:solid}.hide{display:none}.masonry{display:flex;flex-flow:row wrap;margin:20px 0 -2px}.masonry-brick{flex:auto;height:250px;min-width:150px;margin:2px;position:relative;cursor:pointer}.masonry-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.masonry-brick:nth-child(4n+1){width:50%}.masonry-brick:nth-child(4n+2){width:40%}.masonry-brick:nth-child(4n+3){width:20%}.masonry-brick:nth-child(4n+4){width:30%}.masonry-brick-full{width:100%!important;height:291px!important;overflow:hidden;outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.card-body{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.card .circle{float:left;position:relative;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;margin:-30px 10px 15px 15px;background:#eee;z-index:1;font-size:1.5em;color:#414141!important}.card-team .card-content{width:100%;height:160px;margin-bottom:10px}.card-classroom{padding:15px;box-shadow:1px 1px 5px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 5px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 5px rgba(201,191,187,.7);margin-bottom:20px}.play-overlay{position:absolute;top:0;left:0;width:100%;text-align:center;height:291px;line-height:291px;background:rgba(0,0,0,.05)}.play-overlay img{width:80px;height:80px}.preview-wrapper{position:relative;margin-top:30px}.preview-image img{outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.preview-button{position:absolute;top:0;right:0;color:#fff}.preview-text{position:relative;background:#f9f9f9;border:1px solid #ccc;padding:11px;margin-top:-7px}.img-with-outline{outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.mt-5{margin-top:2em}.feed-card{width:100%;margin-bottom:30px;box-shadow:1px 1px 15px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7)}.feed-card .feed-header{margin-bottom:10px}.feed-card .feed-header .feed-avatar{float:left;width:40px;height:40px;margin-right:5px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:2px solid #e6e5e5}.feed-card .feed-header .feed-buttom-option{position:absolute;top:5px;right:0;z-index:21}.mat-card{padding:15px 0 10px!important}.mat-card .mat-card-header .mat-card-title h4{font-size:16px;margin-bottom:0}.mat-card .mat-card-header .mat-card-title p{font-size:13px;color:#aaa}.container-mat-card{display:flex;align-items:flex-end;justify-content:flex-end;position:relative;overflow:hidden;margin:0 0 10px}.bg-mat-card{display:block;position:absolute;z-index:15;width:100%;height:calc(100% - 30px);-webkit-filter:blur(40px) brightness(80%);filter:blur(40px) brightness(80%);background-size:cover;background-repeat:no-repeat;background-position:center}.mat-card-image{position:relative;z-index:20;margin:0!important;-o-object-fit:contain;object-fit:contain;height:auto;max-height:540px;display:block;width:100%}.feed-comment-option{float:right;margin-top:-10px;margin-left:0}.clickable{cursor:pointer;color:var(--main-color)}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:.2s ease-in-out}.show-scroll{opacity:1;transition:.2s ease-in-out}.feed-actions{color:#ccc;font-size:16px;margin-right:10px;margin-bottom:5px;margin-left:10px}.feed-actions span{margin-left:5px}.feed-actions .btn{background:0 0!important;border:none!important}.feed-likes{font-size:13px;margin-top:10px}a.is-liked{color:var(--main-color)!important}a.disabled-like{color:#ccc!important;cursor:not-allowed;text-decoration:none;pointer-events:none}.carousel{margin-bottom:10px;margin-left:0;margin-right:0}.carousel-item{-o-object-fit:cover!important;object-fit:cover!important;max-height:400px;-o-object-position:center;object-position:center}.video-player{position:initial!important}::ng-deep .ws-pre-wrap h4{font-size:18px!important}::ng-deep .ws-pre-wrap a{color:var(--main-color)}.SeeMore{display:block;color:var(--main-color)!important;text-align:center;cursor:pointer}.carousel-stage{position:relative;z-index:0;min-height:100px}.carousel-stage .progress{height:8px;border-radius:30px}.carousel-stage .progress .progress-bar{background:var(--main-color)}.carousel-stage .courses-image-item{border-radius:5%;-o-object-fit:cover;object-fit:cover}.carousel-stage .courses-item{padding:15px}.carousel-stage .courses-title{text-align:center}.carousel-stage .courses-title a{color:#000!important;font-weight:400!important}.customNavigation a{display:flex;justify-content:center;align-items:center;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.8);color:var(--main-color)!important;text-align:center}.customNavigation a:hover{background:#fff;color:var(--main-color)}.prev{position:absolute;width:100%;top:50%;left:-15px;margin-top:-15px;z-index:10}.next{position:absolute;width:100%;top:50%;right:-15px;margin-top:-15px;z-index:10}.owl-dots{position:absolute;top:-40px;right:15px;outline:0!important}.owl-dots .owl-dot{background:#ccc!important;border-radius:50%;height:10px;width:10px;padding:0!important;border:none;margin:0 2px;outline:0!important}.owl-dots .owl-dot.active{background:var(--main-color)!important;outline:0!important}::ng-deep .owl-carousel-o-stories .owl-next,::ng-deep .owl-carousel-o-stories .owl-prev{position:absolute!important;top:50%!important;transform:translateY(-50%)!important;display:block!important;border-radius:50%!important;margin-top:-5px!important}::ng-deep .owl-carousel-o-stories .owl-prev{left:5px!important}::ng-deep .owl-carousel-o-stories .owl-next{right:5px!important}::ng-deep .swiper-stage .swiper-container{padding:0}::ng-deep .swiper-stage .swiper-slide{width:100%}::ng-deep .swiper-stage .swiper-button-next,::ng-deep .swiper-stage .swiper-button-prev{display:flex;align-items:center;justify-content:center;margin-top:0!important;width:25px;height:25px;border-radius:50%;background-color:var(--main-color)!important;opacity:.7!important}::ng-deep .swiper-stage .swiper-button-prev{left:10px;right:auto!important}::ng-deep .swiper-stage .swiper-button-next{right:10px;left:auto!important}::ng-deep .swiper-stage .swiper-button-next:after,::ng-deep .swiper-stage .swiper-button-prev:after{font-size:13px!important;color:#fff}::ng-deep .swiper-stage .swiper-button-disabled{opacity:0!important}.carousel-stories{display:inline-block;width:100%;height:145px;margin:0;border-radius:6px;text-transform:uppercase;font-size:1em;font-weight:500;background-repeat:no-repeat;background-size:cover;cursor:pointer;background-position:center!important}.carousel-stories .item:focus{outline:0}.carousel-stories .stories-body{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;height:100%;padding:0}.carousel-stories .stories-body a{font-size:12px;color:#fff;margin-bottom:10px;text-shadow:0 1px 1px rgba(0,0,0,.6)}.carousel-stories .stories-body a:hover{color:#ccc}.mat-button,.mat-flat-button,.mat-icon-button,.mat-stroked-button{outline:0!important}::ng-deep .mat-menu-panel{border-radius:6px!important;outline:0!important}::ng-deep .mat-menu-panel .mat-menu-content:not(:empty){padding-top:0!important;padding-bottom:0!important}::ng-deep .mat-menu-panel .mat-menu-item{color:#414141;font-size:15px;font-style:normal;font-weight:400;letter-spacing:1px;outline:0!important}.progress-bar-custom span{display:inline-block;height:100%;border-radius:3px;box-shadow:0 1px 0 rgba(37,21,21,.5) inset;transition:width .4s ease-in-out}.green-progress span{background-image:linear-gradient(to bottom,#fff,var(--main-color))}.stripes span{background-size:30px 30px;background-image:linear-gradient(135deg,#ff4e4ef3 25%,transparent 25%,transparent 50%,rgba(236,47,47,.972) 50%,rgba(240,0,0,.15) 75%,transparent 75%,transparent);-webkit-animation:3s linear infinite animate-stripes;animation:3s linear infinite animate-stripes}.container-stipes{width:100%;padding:0 10px;font-weight:700}.keep-logged{position:relative;height:150px;background:var(--main-color);top:0;color:#fff!important;z-index:99;opacity:.9;width:100%;border:0;left:0;right:0}.keep-logged button{background:#fff!important;color:var(--main-color)!important}.scrollable{overflow-y:scroll;height:100vh}.alert-primary{color:#fff;background-color:var(--main-color)!important;background:var(--main-color)!important}.mat-progress-bar{height:17px;border-radius:5px}@-webkit-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}.p-channel{color:#3c4858;font-weight:500;margin-bottom:0!important}@media (max-width:767px){.form-feed textarea{font-size:12px}.btn-feed{width:auto;font-size:11px;padding:2px 5px;border-radius:30px;font-weight:600;text-transform:capitalize}.carousel-stories{width:120px;height:120px}.keep-logged{height:175px}.keep-logged h3{font-size:1.1rem}.keep-logged button{font-size:1rem}.btn-group-xs>.btn,.btn-xs{padding:2px 5px;font-size:11px;line-height:1;border-radius:30px}}::ng-deep .mat-card-header-text{width:100%!important;margin:0}::ng-deep .popover{background:#fff!important;border:0!important;box-shadow:1px 1px 15px rgba(201,191,187,.7)!important;-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7)!important;-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7)!important}.minibio{padding:10px;border-radius:10px}.minibio img{width:30%;max-width:100px;display:inline-block;padding-right:10px}.minibio .info{display:inline-block;vertical-align:top}.minibio .info .icon{color:#d4d4d4}.minibio .info ul{list-style:none}.minibio .info li{display:inline-block}::ng-deep .feed .box-input-feed{width:100%;background-color:transparent}::ng-deep .feed .feed-actions{margin-top:25px}::ng-deep .feed .feed-actions .icons{position:relative;display:inline-flex;align-items:flex-end;margin-right:15px}::ng-deep .feed .feed-actions .icons .fa{font-size:20px;margin-right:10px}::ng-deep .feed .feed-actions .icons .number{position:absolute;bottom:-1px;right:0;font-size:13px}::ng-deep .new-feed .feed-card,::ng-deep .new-feed .form-feed{border-radius:4px!important;box-shadow:0 4px 12px 0 rgba(0,0,0,.1)!important;background:#fff!important}::ng-deep .new-feed .box-publication{display:flex;align-items:center;justify-content:space-between}::ng-deep .new-feed .box-publication .box-input-feed{width:84%}::ng-deep .new-feed .box-publication .send{width:16%;text-align:center;margin-top:5px}::ng-deep .new-feed .box-publication .send i{font-size:24px}::ng-deep .new-feed .box-publication .send p{font-size:12px}::ng-deep .new-feed .box-input-feed{display:flex;align-items:center;width:100%;border-radius:30px;padding:5px;background-color:#eaeaea}::ng-deep .new-feed .box-input-feed input{width:calc(100% - 80px);border:none;background-color:transparent}::ng-deep .new-feed .box-input-feed input:focus{outline:0}::ng-deep .new-feed .box-input-feed input::-webkit-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::-moz-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input:-ms-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::-ms-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::placeholder{color:#999}::ng-deep .new-feed .box-input-feed i{font-size:18px;margin-top:5px;cursor:pointer;color:#495057}::ng-deep .new-feed .feed-actions{margin-top:25px}::ng-deep .new-feed .feed-actions .icons{position:relative;display:inline-flex;align-items:flex-end;margin-right:15px}::ng-deep .new-feed .feed-actions .icons .ph{font-size:20px;margin-right:8px}::ng-deep .new-feed .feed-actions .icons .number{position:absolute;bottom:-1px;right:-8px;font-size:13px}", "@charset \"UTF-8\";.pinned-feed{background-color:var(--bg-btn);color:var(--text-btn);padding:5px;height:40px;width:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;position:absolute;margin-top:60px;margin-right:5px;opacity:1}.mat-card-video{-o-object-fit:cover;object-fit:cover;width:calc(100% + 31px);margin:0 0 10px}.mat-card-content{word-break:break-word;padding:0 15px}::ng-deep .tooltip-primary{background:var(--main-color);opacity:.85;font-size:13px}.no-click{pointer-events:none}.modal-feed-publication{border-radius:24px!important}.share-social{max-width:185px}.mat-card-actions{min-height:40px}.post-processing-section{padding:12px;border:3px dotted gray;border-radius:8px;background-color:#f4f4f4}.carousel{color:#fff}.carousel .content{display:flex}.carousel .content .item{width:100%;display:block;transition:opacity 295ms linear .2s}.carousel .content .item.visible{opacity:1}.carousel .content .item .img{width:100%;height:500px;display:block;-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center}.carousel .content .item .video{width:100%;height:500px!important;display:block;background-size:cover;background-position:center}.carousel .content .item .video-overlay{background:rgba(0,0,0,.5);width:100%;height:500px!important;position:absolute;z-index:-1;transition:opacity .5s ease-out;filter:blur(8px);-webkit-filter:blur(8px)}.carousel .content .wraper-video{background-color:#000}.carousel .ball{width:10px;height:10px;border-radius:50%;background:#000;border:2px solid;opacity:.5}.carousel .ball.visible{opacity:1}.carousel .click-area{width:50px;text-align:center}.carousel .click-area i{font-size:2em;background:rgba(255,255,255,.8);color:#000;border-radius:100%}.custom-carrousel{z-index:1;overflow:hidden}::ng-deep .card-file{box-shadow:0 0 30px rgba(204,204,204,.4);border:none;border-radius:16px;transition:.5s;margin-bottom:30px;cursor:pointer}::ng-deep .card-file .card-cover{display:flex;align-items:center;justify-content:center;text-align:center;padding:0;width:100%;height:250px;border-top-left-radius:10px;border-top-right-radius:10px;background:var(--main-color);color:#fff!important;overflow:hidden}::ng-deep .card-file .card-cover img{position:absolute;z-index:0;top:0;left:0;width:100%;height:inherit;-o-object-fit:cover;object-fit:cover;border-top-left-radius:10px;border-top-right-radius:10px}::ng-deep .card-file .card-cover .title{position:relative;z-index:3;text-shadow:none!important;color:#414141;margin-bottom:0;height:60px;padding:0 15px;font-size:18px}::ng-deep .card-file .circle{float:left;position:relative;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;margin:-30px 10px 15px 15px;background:#eee;z-index:20;font-size:1.5em;color:#3c4858!important}::ng-deep .card-file .card-body{height:125px;border-bottom-left-radius:16px;border-bottom-right-radius:16px}::ng-deep .card-file .card-body .edit-file{float:right!important;margin-top:-60px;margin-right:-15px}::ng-deep .card-file .card-body h5{height:60px}::ng-deep .card-file .card-body .description{color:#888;height:65px;overflow:hidden}::ng-deep owl-carousel-o .owl-theme .owl-next,::ng-deep owl-carousel-o .owl-theme .owl-prev{position:absolute;top:50%;transform:translateY(-50%);display:flex!important;align-items:center!important;justify-content:center!important;width:30px!important;height:30px!important;border-radius:50%!important;margin:20px 0;background:rgba(255,255,255,.8)!important;color:#414141!important;border:none!important;font-size:20px!important;font-weight:600!important}::ng-deep owl-carousel-o .owl-theme .owl-prev{left:5px;transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-prev:hover{transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-next{right:5px;transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-next:hover{transition:.3s}::ng-deep owl-carousel-o .owl-carousel .owl-dot,::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-next,::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-prev{font-family:fontAwesome}::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-prev:before{content:\"\uF104\"}::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-next:after{content:\"\uF105\"}.swiper-carousel-custom .swiper-container-img{display:flex;align-items:center;justify-content:center;width:100%;height:500px}.swiper-carousel-custom .swiper-bg-blur{position:absolute;z-index:10;width:100%;height:500px;-webkit-filter:blur(30px) brightness(80%);filter:blur(30px) brightness(80%);background-size:cover;background-repeat:no-repeat;background-position:center}.swiper-carousel-custom .img{position:relative;z-index:20;max-width:100%;max-height:500px!important;display:block;-o-object-fit:contain;object-fit:contain;background-size:cover;background-position:center}.swiper-carousel-custom .video{width:100%;height:500px!important;display:block;background-size:cover;background-position:center}.swiper-carousel-custom .video-overlay{background:rgba(0,0,0,.5);width:100%;height:500px!important;position:absolute;z-index:-1;transition:opacity .5s ease-out;filter:blur(8px);-webkit-filter:blur(8px)}"]
|
|
380
396
|
}] }
|
|
@@ -386,7 +402,8 @@ var FeedItemComponent = /** @class */ (function () {
|
|
|
386
402
|
{ type: Global },
|
|
387
403
|
{ type: MatDialog },
|
|
388
404
|
{ type: UtilsService },
|
|
389
|
-
{ type: TranslateService }
|
|
405
|
+
{ type: TranslateService },
|
|
406
|
+
{ type: DomSanitizer }
|
|
390
407
|
]; };
|
|
391
408
|
FeedItemComponent.propDecorators = {
|
|
392
409
|
item: [{ type: Input }],
|
|
@@ -440,5 +457,7 @@ if (false) {
|
|
|
440
457
|
FeedItemComponent.prototype.service;
|
|
441
458
|
/** @type {?} */
|
|
442
459
|
FeedItemComponent.prototype.translate;
|
|
460
|
+
/** @type {?} */
|
|
461
|
+
FeedItemComponent.prototype.sanitizer;
|
|
443
462
|
}
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FzYXAtZmVlZC1iZXRhLyIsInNvdXJjZXMiOlsibGliL2ZlZWQtaXRlbS9mZWVkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDckgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUV6QztJQXdCRSwyQkFDUyxhQUE0QixFQUM1QixFQUFvQixFQUNwQixNQUFjLEVBQ2QsTUFBaUIsRUFDakIsT0FBcUIsRUFDckIsU0FBMkI7UUFMM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixN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QUlOLFNBQVM7Z0JBRFQsWUFBWTtnQkFJWixnQkFBZ0I7Ozt1QkFXdEIsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLEtBQUs7NEJBQ0wsTUFBTTs4QkFDTixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FDekMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztJQTJNbEUsd0JBQUM7Q0FBQSxBQXhORCxJQXdOQztTQWxOWSxpQkFBaUI7OztJQUU1QixpQ0FBYzs7SUFDZCxxQ0FBa0I7O0lBQ2xCLGtDQUFlOztJQUNmLHNDQUF5Qzs7SUFDekMsd0NBQW1FOztJQUNuRSwyQ0FBaUY7O0lBRWpGLHlDQUFvQjs7SUFDcEIsd0NBQTJCOztJQUMzQiw0Q0FBK0I7O0lBQy9CLGtEQUE2Qjs7SUFDN0IsZ0RBQWlFOztJQUNqRSxxQ0FBZ0I7O0lBQ2hCLHlDQUFvQjs7SUFDcEIsc0NBQWlCOztJQUdmLDBDQUFtQzs7SUFDbkMsK0JBQTJCOztJQUMzQixtQ0FBcUI7O0lBQ3JCLG1DQUF3Qjs7SUFDeEIsb0NBQTRCOztJQUM1QixzQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RyZWFtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0cmVhbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICdhc2FwLWNydWQnO1xuaW1wb3J0IHsgRmVlZE1vZGFsSXRlbUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtbW9kYWwtaXRlbS1lZGl0L2ZlZWQtbW9kYWwtaXRlbS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwYXRoIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCBTd2lwZXJDb3JlLCB7IE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuU3dpcGVyQ29yZS51c2UoW05hdmlnYXRpb24sIFBhZ2luYXRpb25dKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZlZWQtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vYXNhcC1mZWVkLmJldGEuY29tcG9uZW50ZS5zY3NzJywgJy4vZmVlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1N0cmVhbVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGl0ZW07XG4gIEBJbnB1dCgpIHNldHRpbmdzO1xuICBASW5wdXQoKSBvd25lcjtcbiAgQE91dHB1dCgpIGlzVmlzaWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgndmlkZW9QbGF5ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB2aWRlb3BsYXllcjogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCd2aXNpYmxlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSB2aXNpYmxlQ29udHJvbDtcblxuICBwdWJsaWMgY3VycmVudEluZGV4O1xuICBwdWJsaWMgaW1hZ2VMb2FkZWQgPSBmYWxzZTtcbiAgcHVibGljIGltYWdlRGF0YUxvYWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudENhcnJvdXNlbEluZGV4O1xuICBwdWJsaWMgYmx1ckJhY2tncm91bmRJbmRleCA9IE1hdGguZmxvb3IoKE1hdGgucmFuZG9tKCkgKiA1KSArIDEpO1xuICBwdWJsaWMgb2JzZXJ2ZXI7XG4gIHB1YmxpYyB2aXNpYmxlVGltZXI7XG4gIHB1YmxpYyBzaG90VGltZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0cmVhbVNlcnZpY2U6IFN0cmVhbVNlcnZpY2UsXG4gICAgcHVibGljIGRiOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHNlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkVmlzaWJpbGl0eUNvbnRyb2xzKCk7XG5cbiAgICBpZiAodGhpcy5pdGVtLmZpbGVzICYmIHRoaXMuaXRlbS5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW0uZmlsZXMubWFwKGZlZWQgPT4ge1xuICAgICAgICBpZiAoZmVlZC51cmwgJiYgZmVlZC51cmwuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgIGZlZWQuaXNZb3V0dWJlID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgeW91dHViZUlEID0gdGhpcy5nZXRZb3V0dWJlSUQoZmVlZC51cmwpO1xuICAgICAgICAgIGZlZWQudXJsID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7eW91dHViZUlEfWA7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0lURU0gLT4nLCB0aGlzLml0ZW0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpc2libGVDb250cm9sLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnZpc2libGVUaW1lcik7XG4gIH1cblxuICBwdWJsaWMgbG9hZFZpc2liaWxpdHlDb250cm9scygpIHtcbiAgICB0aGlzLnZpc2libGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdFRpbWVyLS07XG4gICAgICBpZiAodGhpcy5zaG90VGltZXIgPT0gMCkge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZS5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy52aXNpYmxlVGltZXIpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogWzAsIDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAwLjksIDEuMF1cbiAgICB9O1xuXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIHRoaXMuc2hvdFRpbWVyID0gLTE7XG4gICAgICAgIHRoaXMuaXRlbS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVudHJ5LmludGVyc2VjdGlvblJhdGlvID09IDEpIHtcbiAgICAgICAgICB0aGlzLnNob3RUaW1lciA9IDU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIG9ubG9hZEltYWdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5pbWFnZURhdGFMb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG9uRXJyb3JJbWFnZShldmVudCkge1xuICB9XG5cbiAgcHVibGljIHBsYXlWaWRlbyhldmVudCkge1xuICAgIGlmICh0aGlzLnZpZGVvcGxheWVyKSB7XG4gICAgICB0aGlzLnZpZGVvcGxheWVyLm5hdGl2ZUVsZW1lbnQucGxheSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsaW5raWZ5KHN0cikge1xuICAgIHZhciByZTogYW55O1xuICAgIHJlID0gW1xuICAgICAgXCJcXFxcYigoPzpodHRwcz98ZnRwKTovL1teXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIod3d3XFxcXC5bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKFxcXFx3W1xcXFx3ListXSpAW1xcXFx3Li1dK1xcXFwuW2Etel17Miw2fSlcXFxcYlwiLFxuICAgICAgXCIjKFthLXowLTldKylcIl07XG4gICAgcmUgPSBuZXcgUmVnRXhwKHJlLmpvaW4oJ3wnKSwgXCJnaVwiKTtcblxuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoLCB1cmwsIHd3dywgbWFpbCwgdHdpdGxlcikge1xuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIHRhcmdldD0nX2JsYW5rJyAoY2xpY2spPSdyZWRpcmVjdE5ld0xpbmsodXJsKScgaHJlZj1cXFwiXCIgKyB1cmwgKyBcIlxcXCI+XCIgKyB1cmwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHd3dylcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJodHRwOi8vXCIgKyB3d3cgKyBcIlxcXCI+XCIgKyB3d3cgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKG1haWwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiIzwvYT5cIjtcbiAgICAgICAgaWYgKHR3aXRsZXIpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwicG9ydGFsL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudCgnIycgKyB0d2l0bGVyKSArIFwiXFxcIj4jXCIgKyB0d2l0bGVyICsgXCI8L2E+XCI7XG4gICAgICAgIC8vIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIiNcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcblxuICAgICAgICAvLyBzaG91bGRudCBnZXQgaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaWRlb1JlbmRlcihpdGVtKSB7XG5cbiAgICBjb25zb2xlLmxvZygndmlkZW9SZW5kZXIgLT4nLCBpdGVtKTtcbiAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdjaGVja1ZpZGVvUmVuZGVyJywgcmVzKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIG9uRWRpdEl0ZW0oKSB7XG4gICAgY29uc29sZS5sb2coXCJbb25FZGl0SXRlbV1cIiwgdGhpcy5pdGVtKTtcbiAgICBpZiAodGhpcy5pdGVtLmNoYW5uZWxfaWQpIHtcbiAgICAgIHRoaXMuZ2xvYmFsLnN3YWwoe1xuICAgICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1RoaXNGZWVkQ2FuT25seUJlRWRpdGVkT25DaGFubmVsJylcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vICBQcmVwYXJhciBmZWVkIHBhcmEgZWRpdGFyXG4gICAgICBsZXQgZmVlZDtcbiAgICAgIGZlZWQgPSB0aGlzLml0ZW07XG4gICAgICBkZWxldGUgZmVlZC5jb21tZW50cztcbiAgICAgIGRlbGV0ZSBmZWVkLmxpa2VzO1xuICBcbiAgICAgIGZlZWQuZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICBmaWxlLm5ldyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIFxuICAgICAgdGhpcy5kaWFsb2cub3BlbihGZWVkTW9kYWxJdGVtRWRpdENvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgZGF0YTogZmVlZCxcbiAgICAgICAgcGFuZWxDbGFzczogJ21vZGFsLWZlZWQtcHVibGljYXRpb24nXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByZUNvbnZlcnROdW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25SZW1vdmVJdGVtKGl0ZW0pIHtcbiAgICB0aGlzLmdsb2JhbC5zd2FsKHtcbiAgICAgIHRpdGxlOiAnVm9jw6ogcmVhbG1lbnRlIGRlc2VqYSByZW1vdmVyIGVzdGUgUG9zdD8nLFxuICAgICAgdGV4dDogJ1ZvY8OqIG7Do28gcG9kZXLDoSByZXZlcnRlciBlc3NhIGHDp8OjbyBkZXBvaXMgZGUgY29uZmlybWFkbycsXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiTsOjb1wiXG4gICAgfSkudGhlbihhc3luYyBjb25maXJtID0+IHtcbiAgICAgIGlmIChjb25maXJtLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhpdGVtLmlkKTtcblxuICAgICAgICBpZiAoaXRlbS5maWxlcyAmJiBpdGVtLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaXRlbS5maWxlcykge1xuICAgICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICBpZiAoZmlsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5kZWxldGVGaXJlU3RvcmFnZShgJHtwYXRoKCkuaW1hZ2VzfS8ke2ZpbGUubmFtZX1gKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlbW92ZW5kbyB1bSBwb3N0IGNvbSBpbWFnZW0gbsOjbyByZWZlcmVuY2lhZGEnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgICAgICAgaXRlbS5kZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3QoJ1Bvc3QgcmVtb3ZpZG8gY29tIFN1Y2Vzc28nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrRmlsZU9yaWdpbihmaWxlKSB7XG5cbiAgfVxuXG4gIGlzWW91dHViZShmaWxlKSB7XG4gICAgY29uc29sZS5sb2coJ0lzWW91dHViZSAtPicsIGZpbGUpO1xuICAgIGlmIChmaWxlLmluY2x1ZGVzKCd5b3V0dWJlJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRZb3V0dWJlSUQodXJsKSB7XG4gICAgdmFyIHJlZ0V4cCA9IC9eLiooKHlvdXR1LmJlXFwvKXwodlxcLyl8KFxcL3VcXC9cXHdcXC8pfChlbWJlZFxcLyl8KHdhdGNoXFw/KSlcXD8/dj89PyhbXiMmP10qKS4qLztcbiAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXhwKTtcbiAgICByZXR1cm4gKG1hdGNoICYmIG1hdGNoWzddLmxlbmd0aCA9PSAxMSkgPyBtYXRjaFs3XSA6IGZhbHNlO1xuICB9XG5cblxufVxuIl19
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FzYXAtZmVlZC1iZXRhLyIsInNvdXJjZXMiOlsibGliL2ZlZWQtaXRlbS9mZWVkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDckgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFFekM7SUF3QkUsMkJBQ1MsYUFBNEIsRUFDNUIsRUFBb0IsRUFDcEIsTUFBYyxFQUNkLE1BQWlCLEVBQ2pCLE9BQXFCLEVBQ3JCLFNBQTJCLEVBQzNCLFNBQXVCO1FBTnZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLE9BQUUsR0FB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LE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0QsQ0FBQzs7Z0JBNU5GLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsd3dwQkFBeUM7b0JBRXpDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQzs7aUJBQzNCOzs7O2dCQWxCUSxhQUFhO2dCQUNiLGdCQUFnQjtnQkFDaEIsTUFBTTtnQkFJTixTQUFTO2dCQURULFlBQVk7Z0JBSVosZ0JBQWdCO2dCQUNoQixZQUFZOzs7dUJBV2xCLEtBQUs7MkJBQ0wsS0FBSzt3QkFDTCxLQUFLOzRCQUNMLE1BQU07OEJBQ04sU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7aUNBQ3pDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7SUFrTmxFLHdCQUFDO0NBQUEsQUEvTkQsSUErTkM7U0F6TlksaUJBQWlCOzs7SUFFNUIsaUNBQWM7O0lBQ2QscUNBQWtCOztJQUNsQixrQ0FBZTs7SUFDZixzQ0FBeUM7O0lBQ3pDLHdDQUFtRTs7SUFDbkUsMkNBQWlGOztJQUVqRix5Q0FBb0I7O0lBQ3BCLHdDQUEyQjs7SUFDM0IsNENBQStCOztJQUMvQixrREFBNkI7O0lBQzdCLGdEQUFpRTs7SUFDakUscUNBQWdCOztJQUNoQix5Q0FBb0I7O0lBQ3BCLHNDQUFpQjs7SUFHZiwwQ0FBbUM7O0lBQ25DLCtCQUEyQjs7SUFDM0IsbUNBQXFCOztJQUNyQixtQ0FBd0I7O0lBQ3hCLG9DQUE0Qjs7SUFDNUIsc0NBQWtDOztJQUNsQyxzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RyZWFtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0cmVhbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICdhc2FwLWNydWQnO1xuaW1wb3J0IHsgRmVlZE1vZGFsSXRlbUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtbW9kYWwtaXRlbS1lZGl0L2ZlZWQtbW9kYWwtaXRlbS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwYXRoIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCBTd2lwZXJDb3JlLCB7IE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5Td2lwZXJDb3JlLnVzZShbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbl0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmVlZC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnLCAnLi9mZWVkLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU3RyZWFtU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRmVlZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgaXRlbTtcbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBJbnB1dCgpIG93bmVyO1xuICBAT3V0cHV0KCkgaXNWaXNpYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCd2aWRlb1BsYXllcicsIHsgc3RhdGljOiB0cnVlIH0pIHZpZGVvcGxheWVyOiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoJ3Zpc2libGVDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIHZpc2libGVDb250cm9sO1xuXG4gIHB1YmxpYyBjdXJyZW50SW5kZXg7XG4gIHB1YmxpYyBpbWFnZUxvYWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgaW1hZ2VEYXRhTG9hZGVkID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50Q2Fycm91c2VsSW5kZXg7XG4gIHB1YmxpYyBibHVyQmFja2dyb3VuZEluZGV4ID0gTWF0aC5mbG9vcigoTWF0aC5yYW5kb20oKSAqIDUpICsgMSk7XG4gIHB1YmxpYyBvYnNlcnZlcjtcbiAgcHVibGljIHZpc2libGVUaW1lcjtcbiAgcHVibGljIHNob3RUaW1lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RyZWFtU2VydmljZTogU3RyZWFtU2VydmljZSxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGdsb2JhbDogR2xvYmFsLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgc2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkVmlzaWJpbGl0eUNvbnRyb2xzKCk7XG5cbiAgICBpZiAodGhpcy5pdGVtLmZpbGVzICYmIHRoaXMuaXRlbS5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW0uZmlsZXMubWFwKGZlZWQgPT4ge1xuICAgICAgICBpZiAoZmVlZC51cmwgJiYgZmVlZC51cmwuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgIGZlZWQuaXNZb3V0dWJlID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgeW91dHViZUlEID0gdGhpcy5nZXRZb3V0dWJlSUQoZmVlZC51cmwpO1xuICAgICAgICAgIGZlZWQudXJsID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7eW91dHViZUlEfWA7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0lURU0gLT4nLCB0aGlzLml0ZW0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpc2libGVDb250cm9sLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnZpc2libGVUaW1lcik7XG4gIH1cblxuICBwdWJsaWMgbG9hZFZpc2liaWxpdHlDb250cm9scygpIHtcbiAgICB0aGlzLnZpc2libGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdFRpbWVyLS07XG4gICAgICBpZiAodGhpcy5zaG90VGltZXIgPT0gMCkge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZS5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy52aXNpYmxlVGltZXIpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogWzAsIDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAwLjksIDEuMF1cbiAgICB9O1xuXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIHRoaXMuc2hvdFRpbWVyID0gLTE7XG4gICAgICAgIHRoaXMuaXRlbS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVudHJ5LmludGVyc2VjdGlvblJhdGlvID09IDEpIHtcbiAgICAgICAgICB0aGlzLnNob3RUaW1lciA9IDU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIG9ubG9hZEltYWdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5pbWFnZURhdGFMb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG9uRXJyb3JJbWFnZShldmVudCkge1xuICB9XG5cbiAgcHVibGljIHBsYXlWaWRlbyhldmVudCkge1xuICAgIGlmICh0aGlzLnZpZGVvcGxheWVyKSB7XG4gICAgICB0aGlzLnZpZGVvcGxheWVyLm5hdGl2ZUVsZW1lbnQucGxheSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZWRMaW5raWZ5KHN0cikge1xuICAgIC8vIHJldHVybiBzdHI7XG4gICAgY29uc3Qgc2FuaXRpemVkID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5saW5raWZ5KHN0cikpO1xuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgbGlua2lmeShzdHIpIHtcbiAgICB2YXIgcmU6IGFueTtcbiAgICByZSA9IFtcbiAgICAgIFwiXFxcXGIoKD86aHR0cHM/fGZ0cCk6Ly9bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKHd3d1xcXFwuW15cXFxcc1xcXCInPD5dKylcXFxcYlwiLFxuICAgICAgXCJcXFxcYihcXFxcd1tcXFxcdy4rLV0qQFtcXFxcdy4tXStcXFxcLlthLXpdezIsNn0pXFxcXGJcIixcbiAgICAgIFwiIyhbYS16MC05XSspXCJdO1xuICAgIHJlID0gbmV3IFJlZ0V4cChyZS5qb2luKCd8JyksIFwiZ2lcIik7XG5cbiAgICBpZiAoc3RyKSB7XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCwgdXJsLCB3d3csIG1haWwsIHR3aXRsZXIpIHtcbiAgICAgICAgaWYgKHVybClcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyB0YXJnZXQ9J19ibGFuaycgKGNsaWNrKT0ncmVkaXJlY3ROZXdMaW5rKHVybCknIGhyZWY9XFxcIlwiICsgdXJsICsgXCJcXFwiPlwiICsgdXJsICsgXCI8L2E+XCI7XG4gICAgICAgIGlmICh3d3cpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiaHR0cDovL1wiICsgd3d3ICsgXCJcXFwiPlwiICsgd3d3ICsgXCI8L2E+XCI7XG4gICAgICAgIGlmIChtYWlsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIm1haWx0bzovL1wiICsgbWFpbCArIFwiXFxcIj5cIiArIG1haWwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHR3aXRsZXIpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwicG9ydGFsL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudCgnIycgKyB0d2l0bGVyKSArIFwiXFxcIj4jXCIgKyB0d2l0bGVyICsgXCI8L2E+XCI7XG4gICAgICAgIC8vIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIiNcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcblxuICAgICAgICAvLyBzaG91bGRudCBnZXQgaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaWRlb1JlbmRlcihpdGVtKSB7XG5cbiAgICBjb25zb2xlLmxvZygndmlkZW9SZW5kZXIgLT4nLCBpdGVtKTtcbiAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdjaGVja1ZpZGVvUmVuZGVyJywgcmVzKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIG9uRWRpdEl0ZW0oKSB7XG4gICAgY29uc29sZS5sb2coXCJbb25FZGl0SXRlbV1cIiwgdGhpcy5pdGVtKTtcbiAgICBpZiAodGhpcy5pdGVtLmNoYW5uZWxfaWQpIHtcbiAgICAgIHRoaXMuZ2xvYmFsLnN3YWwoe1xuICAgICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1RoaXNGZWVkQ2FuT25seUJlRWRpdGVkT25DaGFubmVsJylcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vICBQcmVwYXJhciBmZWVkIHBhcmEgZWRpdGFyXG4gICAgICBsZXQgZmVlZDtcbiAgICAgIGZlZWQgPSB0aGlzLml0ZW07XG4gICAgICBkZWxldGUgZmVlZC5jb21tZW50cztcbiAgICAgIGRlbGV0ZSBmZWVkLmxpa2VzO1xuICBcbiAgICAgIGZlZWQuZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICBmaWxlLm5ldyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIFxuICAgICAgdGhpcy5kaWFsb2cub3BlbihGZWVkTW9kYWxJdGVtRWRpdENvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgZGF0YTogZmVlZCxcbiAgICAgICAgcGFuZWxDbGFzczogJ21vZGFsLWZlZWQtcHVibGljYXRpb24nXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByZUNvbnZlcnROdW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25SZW1vdmVJdGVtKGl0ZW0pIHtcbiAgICB0aGlzLmdsb2JhbC5zd2FsKHtcbiAgICAgIHRpdGxlOiAnVm9jw6ogcmVhbG1lbnRlIGRlc2VqYSByZW1vdmVyIGVzdGUgUG9zdD8nLFxuICAgICAgdGV4dDogJ1ZvY8OqIG7Do28gcG9kZXLDoSByZXZlcnRlciBlc3NhIGHDp8OjbyBkZXBvaXMgZGUgY29uZmlybWFkbycsXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiTsOjb1wiXG4gICAgfSkudGhlbihhc3luYyBjb25maXJtID0+IHtcbiAgICAgIGlmIChjb25maXJtLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhpdGVtLmlkKTtcblxuICAgICAgICBpZiAoaXRlbS5maWxlcyAmJiBpdGVtLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaXRlbS5maWxlcykge1xuICAgICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICBpZiAoZmlsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5kZWxldGVGaXJlU3RvcmFnZShgJHtwYXRoKCkuaW1hZ2VzfS8ke2ZpbGUubmFtZX1gKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlbW92ZW5kbyB1bSBwb3N0IGNvbSBpbWFnZW0gbsOjbyByZWZlcmVuY2lhZGEnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgICAgICAgaXRlbS5kZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3QoJ1Bvc3QgcmVtb3ZpZG8gY29tIFN1Y2Vzc28nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrRmlsZU9yaWdpbihmaWxlKSB7XG5cbiAgfVxuXG4gIGlzWW91dHViZShmaWxlKSB7XG4gICAgY29uc29sZS5sb2coJ0lzWW91dHViZSAtPicsIGZpbGUpO1xuICAgIGlmIChmaWxlLmluY2x1ZGVzKCd5b3V0dWJlJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRZb3V0dWJlSUQodXJsKSB7XG4gICAgdmFyIHJlZ0V4cCA9IC9eLiooKHlvdXR1LmJlXFwvKXwodlxcLyl8KFxcL3VcXC9cXHdcXC8pfChlbWJlZFxcLyl8KHdhdGNoXFw/KSlcXD8/dj89PyhbXiMmP10qKS4qLztcbiAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXhwKTtcbiAgICByZXR1cm4gKG1hdGNoICYmIG1hdGNoWzddLmxlbmd0aCA9PSAxMSkgPyBtYXRjaFs3XSA6IGZhbHNlO1xuICB9XG5cblxufVxuIl19
|
|
@@ -390,14 +390,13 @@ var FeedPublicationComponent = /** @class */ (function () {
|
|
|
390
390
|
}
|
|
391
391
|
}));
|
|
392
392
|
}
|
|
393
|
+
console.log("share", data);
|
|
393
394
|
this.publish(data).then((/**
|
|
394
395
|
* @param {?} id
|
|
395
396
|
* @return {?}
|
|
396
397
|
*/
|
|
397
398
|
function (id) {
|
|
398
|
-
|
|
399
|
-
_this.userService.usersChecked({ post_id: id, user_id: data.selected_users }).subscribe();
|
|
400
|
-
}
|
|
399
|
+
_this.userService.usersChecked({ post_id: id, user_id: data.selected_users, comment: data.title, type: 'post' }, { comments: true }).subscribe();
|
|
401
400
|
}));
|
|
402
401
|
this.selectedUsers = [];
|
|
403
402
|
};
|
|
@@ -922,4 +921,4 @@ if (false) {
|
|
|
922
921
|
/** @type {?} */
|
|
923
922
|
FeedPublicationComponent.prototype.dialog;
|
|
924
923
|
}
|
|
925
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtcHVibGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFJL0I7SUFvQ0Usa0NBQ1MsTUFBYyxFQUNkLFdBQTRCLEVB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SUFDckIsNENBQXdCOztJQUN4QiwyQ0FBb0I7O0lBRXBCLDJDQUFpRzs7SUFDakcsaURBQStCOztJQUMvQiw0Q0FBaUQ7O0lBRWpELDhDQUEwQjs7SUFHeEIsMENBQXFCOztJQUNyQiwrQ0FBbUM7O0lBQ25DLCtDQUErQjs7SUFDL0IsK0NBQStCOztJQUMvQiw2Q0FBOEI7O0lBQzlCLGlEQUFtQzs7SUFDbkMsZ0RBQWlDOztJQUNqQyxzQ0FBMkI7O0lBQzNCLHdDQUF1Qjs7SUFDdkIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNhcFNlcnZpY2UsIEdsb2JhbCB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWxlc01vZGVsLCBGZWVkTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kYWxBbm5vdW5jZUNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYW5ub3VuY2UvbW9kYWwtYW5ub3VuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmVlZC1wdWJsaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLXB1YmxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuc2NzcycsICcuLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFN0cmVhbVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBBc2FwU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRQdWJsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYW5ub3VuY2UgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUZpbHRlckJ5TWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBPdXRwdXQoKSBmZWVkQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgdXNlcnMgPSBbXTtcblxuICBwdWJsaWMgdG1wRmlsZUFycmF5OiBBcnJheTxGaWxlc01vZGVsPjtcbiAgcHVibGljIHVwbG9hZGluZztcbiAgcHVibGljIHRpdGxlID0gbnVsbDtcbiAgcHVibGljIHByb2dyZXNzO1xuICBwdWJsaWMgbm90QW5ub3VuY2U7XG4gIHB1YmxpYyBuZXdQcm9kdWN0O1xuICBwdWJsaWMgRXhwYW5kSW1nO1xuICBwdWJsaWMgdHlwZSA9ICdwb3N0JztcbiAgcHVibGljIGVtYmVkRmlsZTtcbiAgcHVibGljIHRtcEVtYmVkRmlsZTtcbiAgcHVibGljIHZpZGVvU2VuZGVkSUQ7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgbmV3ZmVlZDogYW55O1xuXG4gIHB1YmxpYyBtZXNzYWdlID0gXCJEaWdpdGUgYWNpbWEgbyBub21lIGRhIHBlc3NvYSBxdWUgZGVzZWphIG1hcmNhciwgZW0gc2VndWlkYSBwcmVzc2lvbmUgW0VOVEVSXVwiO1xuICBwdWJsaWMgc2VsZWN0ZWRVc2VyczogYW55ID0ge307XG4gIHB1YmxpYyBsaXN0VHlwZTogJ2NoZWNrZWQnIHwgJ3NlYXJjaCcgPSAnc2VhcmNoJztcblxuICBwdWJsaWMgZmlsdGVyQnlNZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZmVlZFNlcnZpY2U6IEFzYXBGZWVkU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBzdHJlYW1TZXJ2aWNlOiBTdHJlYW1TZXJ2aWNlLFxuICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgY29uc29sZS5sb2coJ1ByZWZpeCBQdWJsaWNhdGlvbiAtPicsIHBhdGgoKS5mZWVkKTtcbiAgICB0aGlzLmdldE5ld0ZlZWQoKTtcbiAgfVxuXG4gIGxvYWRVc2Vycyh2YWx1ZTogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdmFsdWU7XG4gICAgdGhpcy51c2VycyA9IG51bGw7XG4gICAgdGhpcy5saXN0VHlwZSA9ICdzZWFyY2gnO1xuICAgIGlmIChzZWFyY2ggIT0gJycpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IFwiTmVuaHVtIHVzdcOhcmlvIGVuY29udHJhZG8hXCI7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldEFsbFVzZXJzKHNlYXJjaCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJzID0gcmVzcG9uc2UuZGF0YS5tYXAoKHVzZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHVzZXIudXNlcl9pbmZvLnVzZXJfaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyLnVzZXJfaW5mby51c2VyX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgICAgIHBpY3R1cmU6IHVzZXIucGljdHVyZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC50YXJnZXQuZmlsZXMpIHtcblxuICAgICAgY29uc3QgdG1wRmlsZTogRmlsZXNNb2RlbCA9IG5ldyBGaWxlc01vZGVsKCk7XG4gICAgICB0bXBGaWxlLnR5cGUgPSB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSk7XG4gICAgICAvLyB0bXBGaWxlLnN0YXR1cyA9IDA7XG4gICAgICB0bXBGaWxlLnRodW1iX3JlbmRlcmluZyA9IGZhbHNlO1xuICAgICAgdG1wRmlsZS52aWRlb19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgIHRtcEZpbGUudmlkZW9fbG93X3JlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICd2aWRlbycgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICd2aWRlbycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHPDsyBwb2RlIGVudmlhciB1bSB2w61kZW8gcG9yIFBvc3QnXG4gICAgICAgIH0pO1xuICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICdpbWFnZScgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZScpLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHBvZGUgdXRpbGl6YXIgYXTDqSBubyBtw6F4aW1vIDUgaW1hZ2VucyBubyBzZXUgUG9zdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT0gJ2ltYWdlL2dpZicpIHtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uZ2lmYDtcbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZWFkR0lGKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaCh0bXBGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEV4dG5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBnZXRFeHRuYW1lW2dldEV4dG5hbWUubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZXNpemVJbWFnZXMoZmlsZSwgODAwKTtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uJHtleHRuYW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVhbGl6YXIgVXBsb2FkIGRlIFZpZGVvJywgdG1wRmlsZSk7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gZmlsZTtcbiAgICAgICAgICBpZiAocmVhZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZWFkZXIpO1xuICAgICAgICAgICAgdG1wRmlsZS5uYW1lID0gYmxvYlVSTCBhcyBhbnk7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1t1cGxvYWRGaWxlXSBpZiByZWFkZXInLCBibG9iVVJMKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1TZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3VwbG9hZEZpbGVdIFJlc3BvbnNlJywgdG1wRmlsZSk7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZVsndG90YWwnXSkge1xuICAgICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAoKHJlc3BvbnNlWydsb2FkZWQnXSAqIDEwMCkgLyByZXNwb25zZVsndG90YWwnXSkudG9GaXhlZCgwKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0bXBGaWxlLnN0YXR1cztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkuZmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXBsb2FkRmlsZV0gUmVzcG9uc2UgVXBsb2FkZWQnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAxMDE7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS51cmwgPSByZXNwb25zZS5ib2R5LmZpbGUuc2VjdXJlX3VybDtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvU2VuZGVkSUQgPSB0bXBGaWxlLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0bXBGaWxlJywgdG1wRmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNpemVJbWFnZXMoZmlsZTogYW55LCB3aWR0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBjb25zdCBNQVhfV0lEVEggPSB3aWR0aDtcbiAgICAgIGNvbnN0IE1BWF9IRUlHSFQ6IGFueSA9IDEzMzQ7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTUFYX1dJRFRIIC8gaW1nLndpZHRoO1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzY2FsZSAqIGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICBjYW52YXMud2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ0lNRycsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgICBjb25zdCBkYXRhdXJsID0gY2FudmFzLnRvRGF0YVVSTChmaWxlLnR5cGUsIDAuNjUpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdDQU5WQVMgLT4nLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGF1cmwpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlYWRHSUYoZmlsZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0VHlwZUJ5TWltZVR5cGUobWltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IG1pbWUuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRbMF07XG4gIH1cblxuICBzaGFyZSgpOiBhbnkge1xuICAgIGNvbnN0IGRhdGE6IEZlZWRNb2RlbCA9IG5ldyBGZWVkTW9kZWwoKTtcbiAgICBkYXRhLnVwZGF0ZWRfYXQgPSBEYXRlLm5vdygpO1xuICAgIGRhdGEudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgIGRhdGEudHlwZSA9IHRoaXMudHlwZTtcbiAgICBkYXRhLnNlbGVjdGVkX3VzZXJzID0gW107XG4gICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pIHtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vycy5wdXNoKGlkKTtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhLnB1c2goe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0ubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLnNlbGVjdGVkVXNlcnNbaWRdLnBpY3R1cmUsXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0uZW1haWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG1wRmlsZUFycmF5IHx8IHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgIC8vIGNvbnN0IHZpZGVvRmlsdGVyID0gZGF0YS5maWxlcy5maWx0ZXIodG1wID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAndmlkZW8nKTtcbiAgICAgIC8vIGlmICh2aWRlb0ZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB9XG4gICAgICBkYXRhLmZpbGVzLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGlzdGUgdW0gdmlkZW8gbm8gRmVlZCcsIGl0ZW0pO1xuICAgICAgICAgIGlmICghaXRlbS5pc0Nsb3VkaW5hcnkpIHtcbiAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW0udGh1bWJfcmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFNldGFuZG8gbyBJRCBkbyBGZWVkIGlndWFsIGFvIElEIGRvIHbDrWRlb1xuICAgICAgICAgICAgZGF0YS5yZWYgPSBpdGVtLnVybDtcbiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0udXJsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gIXJlcy5wNDgwO1xuICAgICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSAhcmVzLnA0ODBfbG93O1xuICAgICAgICAgICAgICBpdGVtLnRodW1iX3JlbmRlcmluZyA9ICFyZXMudGh1bWI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHVibGlzaChkYXRhKS50aGVuKChpZCkgPT4ge1xuICAgICAgaWYgKGRhdGEuc2VsZWN0ZWRfdXNlcnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlcnNDaGVja2VkKHtwb3N0X2lkOiBpZCwgdXNlcl9pZDogZGF0YS5zZWxlY3RlZF91c2Vyc30pLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XG4gIH1cblxuICBjb25maXJtU2hhcmUoKSB7XG4gICAgY29uc3Qgc3dhbGwgPSBTd2FsLmZpcmUoe1xuICAgICAgICB0aXRsZTogXCJQb2RlbW9zIGNvbXBhcnRpbGhhciBzZXUgcG9zdD9cIixcbiAgICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNpbVwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIk7Do29cIlxuICAgIH0pO1xuXG4gICAgc3dhbGwudGhlbigoY29uZmlybWVkKSA9PiB7XG4gICAgICBpZiAoY29uZmlybWVkLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2hhcmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1Ymxpc2goZGF0YTogRmVlZE1vZGVsKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cbiAgICAgIGxldCBpbWFnZTtcbiAgICAgIGxldCBpZDtcbiAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAxLCBkYXRhKTtcbiAgXG4gICAgICBpZiAoIWRhdGEudGl0bGUgfHwgZGF0YS50aXRsZSA9PT0gJycpIHtcbiAgICAgICAgLy8gdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgLy8gICB0aXRsZTogJ09wcycsXG4gICAgICAgIC8vICAgbWVzc2FnZTogJ1ZvY8OqIHByZWNpc2EgYWRpY2lvbmFyIHVtIHRleHRvIMOgIHN1YSBpbWFnZW0vdsOtZGVvLicsXG4gICAgICAgIC8vIH0pO1xuICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICB0aXRsZTogXCJQb2RlbW9zIGNvbXBhcnRpbGhhciBzZXUgcG9zdD8/XCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJOw6NvXCJcbiAgICAgICAgICB9KVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgXG4gIFxuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGRhdGEudXNlcl9pbmZvID0ge1xuICAgICAgICBpZDogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLmlkLFxuICAgICAgICBuYW1lOiB0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkubmFtZSxcbiAgICAgICAgcGljdHVyZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLnBpY3R1cmUsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUubm93KClcbiAgICAgIH07XG4gIFxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnZW1iZWQnKSB7XG4gICAgICAgIGNvbnN0IGZpbGVFbWJlZDogYW55ID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuZW1iZWRGaWxlLFxuICAgICAgICAgIHVybDogdGhpcy5lbWJlZEZpbGUsXG4gICAgICAgICAgdHlwZTogJ2VtYmVkJ1xuICAgICAgICB9O1xuICBcbiAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaChmaWxlRW1iZWQpO1xuICAgICAgfVxuICBcbiAgICAgIGlmICh0aGlzLnR5cGUgIT0gJ2VtYmVkJykge1xuICAgICAgICBpZiAodGhpcy50bXBGaWxlQXJyYXkgJiYgdGhpcy50bXBGaWxlQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnRtcEZpbGVBcnJheScsIHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodGhpcy50bXBGaWxlQXJyYXlbMF0udHlwZSkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAyKTtcbiAgICAgICAgICBjb25zdCBpbWFnZXNGaWxlcyA9IHRoaXMudG1wRmlsZUFycmF5LmZpbHRlcihcbiAgICAgICAgICAgICh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZSdcbiAgICAgICAgICApO1xuICBcbiAgXG4gICAgICAgICAgY29uc3Qgc3RlcCA9IDk4IC8gaW1hZ2VzRmlsZXMubGVuZ3RoO1xuICBcbiAgICAgICAgICBpZiAoKGltYWdlc0ZpbGVzLmxlbmd0aCAmJiBkYXRhLnRpdGxlID09PSAnJykpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5lcnJvcih7XG4gICAgICAgICAgICAgIHRpdGxlOiAnT3BzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHByZWNpc2EgYWRpY2lvbmFyIHVtIHRleHRvIGp1bnRvIMOgIHN1YSBpbWFnZW0vdsOtZGVvLicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGlmIChpbWFnZXNGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaW1hZ2VzRmlsZXMpIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UudXBsb2FkRmlsZShgaW1hZ2VzLyR7ZmlsZS5uYW1lfWAsIGZpbGUudXJsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWxzU2VydmljZS5wZXJjZW50YWdlLnN1YnNjcmliZShwZXJjZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzID0gcGVyY2VudDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UudGFzay5zbmFwc2hvdENoYW5nZXMoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICBhc3luYyBzbmFwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXAuYnl0ZXNUcmFuc2ZlcnJlZCA9PT0gc25hcC50b3RhbEJ5dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzICs9IHN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1BST0dSRVNTJywgdGhpcy5wcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbGVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubmFtZSA9PT0gZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFpbWFnZSkgJiYgKGRhdGEuZmlsZXNbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UuZ2V0RmlyZVN0b3JhZ2VVUkwoYGltYWdlcy8ke2RhdGEuZmlsZXNbaW5kZXhdLm5hbWV9YCkuc3Vic2NyaWJlKChpbWFnZVVSTCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA9IGltYWdlVVJMO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5maWxlc1tpbmRleF0udXJsO1xuICBcbiAgXG4gIFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSBpbWFnZXNGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmlhbmRvIEZlZWQnKTtcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCkuZG9jKHJlc3BvbnNlLmlkKS51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheSA9IFtdO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA0KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA1KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEsIHRoaXMudG1wRmlsZUFycmF5KTtcbiAgXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCkuZG9jKHJlc3BvbnNlLmlkKS51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICB9KTtcbiAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCA1KTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRtcEZpbGVBcnJheSk7XG4gIFxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpO1xuICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgdGhpcy5mZWVkQ3JlYXRlZC5lbWl0KHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZGF0YS5maWxlcyA9IHRoaXMudG1wRmlsZUFycmF5O1xuICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaChFbWJlZCknLCA2KTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSwgdGhpcy50bXBGaWxlQXJyYXkpO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgY29sbGVjdGlvbi5hZGQoY2xhc3NUb1BsYWluKGRhdGEpKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBjb25zdCBkb2MgPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCk7XG4gICAgICAgICAgZG9jLnVwZGF0ZSh7IGlkOiByZXNwb25zZS5pZCB9KTtcbiAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmVtYmVkRmlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ3Bvc3QnO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgXG4gIFxuICAgICAgY29uc29sZS5sb2coJ1B1Ymxpc2goKScsIDAsIHBhdGgoKS5mZWVkKTtcbiAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgICAgIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgdGl0bGU6ICdGZWl0byEnLFxuICAgICAgICBtZXNzYWdlOiAnU2V1IHBvc3QgZm9pIGNyaWFkbyBjb20gc3VjZXNzbycsXG4gICAgICAgIGxheW91dDogMlxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVUbXBGaWxlKHRtcEZpbGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50bXBGaWxlQXJyYXkuaW5kZXhPZih0bXBGaWxlKTtcbiAgICB0aGlzLnRtcEZpbGVBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgY2hlY2tQdWJsaWNhdGlvblR5cGUodGl0bGUpIHtcbiAgICBjb25zb2xlLmxvZygnRXZlbnQgLT4nLCBldmVudCk7XG4gICAgaWYgKHRpdGxlLmxlbmd0aCAmJiB0aXRsZS5sZW5ndGggPiAzNSkge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZFVybCh0aXRsZSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2NoZWNrUHVibGljYXRpb25UeXBlJywgdGl0bGUpO1xuICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMoJ3lvdXR1JykgfHwgdGl0bGUuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1iZWQnO1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lbWJlZEZpbGUgPSB0aXRsZS5yZXBsYWNlKCd3YXRjaD92PScsICdlbWJlZC8nKTtcbiAgICAgICAgICB0aGlzLnRtcEVtYmVkRmlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmVtYmVkRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGl0bGUuaW5jbHVkZXMoJ3Nwb3RpZnknKSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1iZWQnO1xuICAgICAgICAgIHRoaXMuZW1iZWRGaWxlID0gdGl0bGUucmVwbGFjZSgnL2VwaXNvZGUnLCAnL2VtYmVkLXBvZGNhc3QvZXBpc29kZScpO1xuICAgICAgICAgIHRoaXMudG1wRW1iZWRGaWxlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZW1iZWRGaWxlKTtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRW1iZWRGaWxlcygpIHtcbiAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgdGhpcy5lbWJlZEZpbGUgPSAnJztcbiAgICB0aGlzLnR5cGUgPSAncG9zdCc7XG4gIH1cblxuICBpc1ZhbGlkVXJsKHN0cikge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKCdeKGh0dHBzPzpcXFxcL1xcXFwvKT8nICsgLy8gcHJvdG9jb2xcbiAgICAgICcoKChbYS16XFxcXGRdKFthLXpcXFxcZC1dKlthLXpcXFxcZF0pKilcXFxcLikrW2Etel17Mix9fCcgKyAvLyBkb21haW4gbmFtZVxuICAgICAgJygoXFxcXGR7MSwzfVxcXFwuKXszfVxcXFxkezEsM30pKScgKyAvLyBPUiBpcCAodjQpIGFkZHJlc3NcbiAgICAgICcoXFxcXDpcXFxcZCspPyhcXFxcL1stYS16XFxcXGQlXy5+K10qKSonICsgLy8gcG9ydCBhbmQgcGF0aFxuICAgICAgJyhcXFxcP1s7JmEtelxcXFxkJV8ufis9LV0qKT8nICsgLy8gcXVlcnkgc3RyaW5nXG4gICAgICAnKFxcXFwjWy1hLXpcXFxcZF9dKik/JCcsICdpJyk7IC8vIGZyYWdtZW50IGxvY2F0b3JcbiAgICByZXR1cm4gISFwYXR0ZXJuLnRlc3Qoc3RyKTtcbiAgfVxuXG4gIG9wZW5Bbm5vdW5jZU1vZGFsKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTW9kYWxBbm5vdW5jZUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc1NSUnLFxuICAgICAgbWluSGVpZ2h0OiAnOTUlJyxcbiAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgZGF0YTogeyBvd25lcjogdGhpcywgdG1wRmlsZUFycmF5OiB0aGlzLnRtcEZpbGVBcnJheSB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHRoaXMuZmlsdGVyQnlNZSk7XG4gIH1cblxuICBzZWxlY3RVc2VyKGV2dDogYW55LCB1c2VyOiBhbnkpIHtcbiAgICBpZiAoZXZ0LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnNbdXNlci5pZF0gPSB1c2VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGVkVXNlcnNbdXNlci5pZF07XG4gICAgfVxuICB9XG5cbiAgc2hvd1NlbGVjdGVkKCkge1xuICAgIHRoaXMubGlzdFR5cGUgPSAnY2hlY2tlZCc7XG4gICAgdGhpcy51c2VycyA9IFtdO1xuICAgIGZvciAoY29uc3QgaWQgaW4gdGhpcy5zZWxlY3RlZFVzZXJzKSB7XG4gICAgICB0aGlzLnVzZXJzLnB1c2godGhpcy5zZWxlY3RlZFVzZXJzW2lkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbCgpIHtcbiAgICBpZiAodGhpcy5uZXdmZWVkKSB7XG4gICAgICAkKCcjcHVibGljYXRpb25Nb2RhbCcpLm1vZGFsKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmNvbmZpcm1TaGFyZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXROZXdGZWVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgIHRoaXMuYXNhcFNlcnZpY2UuYmFzZVBhdGggPSBcImFwaS92Mi9hZG1pblwiO1xuICAgIHRoaXMuYXNhcFNlcnZpY2UuZW50aXR5TmFtZSA9IFwiY29sb3JcIjtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmdldFJlc291cmNlKHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5jbGllbnRfaWQpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICB0aGlzLm5ld2ZlZWQgPSByZXNwb25zZS5kYXRhLm5ld2ZlZWQ7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
924
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hc2FwLWZlZWQtYmV0YS8iLCJzb3VyY2VzIjpbImxpYi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtcHVibGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFJL0I7SUFvQ0Usa0NBQ1MsTUFBYyxFQUNkLFdBQTRCLEVB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SUFDbkIsOENBQWtCOztJQUNsQiw2Q0FBaUI7O0lBQ2pCLHdDQUFxQjs7SUFDckIsNkNBQWlCOztJQUNqQixnREFBb0I7O0lBQ3BCLGlEQUFxQjs7SUFDckIsNENBQXdCOztJQUN4QiwyQ0FBb0I7O0lBRXBCLDJDQUFpRzs7SUFDakcsaURBQStCOztJQUMvQiw0Q0FBaUQ7O0lBRWpELDhDQUEwQjs7SUFHeEIsMENBQXFCOztJQUNyQiwrQ0FBbUM7O0lBQ25DLCtDQUErQjs7SUFDL0IsK0NBQStCOztJQUMvQiw2Q0FBOEI7O0lBQzlCLGlEQUFtQzs7SUFDbkMsZ0RBQWlDOztJQUNqQyxzQ0FBMkI7O0lBQzNCLHdDQUF1Qjs7SUFDdkIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNhcFNlcnZpY2UsIEdsb2JhbCB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBBc2FwRmVlZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hc2FwLWZlZWQuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWxlc01vZGVsLCBGZWVkTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kYWxBbm5vdW5jZUNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYW5ub3VuY2UvbW9kYWwtYW5ub3VuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmVlZC1wdWJsaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLXB1YmxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC1wdWJsaWNhdGlvbi5jb21wb25lbnQuc2NzcycsICcuLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFN0cmVhbVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBBc2FwU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRQdWJsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYW5ub3VuY2UgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUZpbHRlckJ5TWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0dGluZ3M7XG4gIEBPdXRwdXQoKSBmZWVkQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgdXNlcnMgPSBbXTtcblxuICBwdWJsaWMgdG1wRmlsZUFycmF5OiBBcnJheTxGaWxlc01vZGVsPjtcbiAgcHVibGljIHVwbG9hZGluZztcbiAgcHVibGljIHRpdGxlID0gbnVsbDtcbiAgcHVibGljIHByb2dyZXNzO1xuICBwdWJsaWMgbm90QW5ub3VuY2U7XG4gIHB1YmxpYyBuZXdQcm9kdWN0O1xuICBwdWJsaWMgRXhwYW5kSW1nO1xuICBwdWJsaWMgdHlwZSA9ICdwb3N0JztcbiAgcHVibGljIGVtYmVkRmlsZTtcbiAgcHVibGljIHRtcEVtYmVkRmlsZTtcbiAgcHVibGljIHZpZGVvU2VuZGVkSUQ7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgbmV3ZmVlZDogYW55O1xuXG4gIHB1YmxpYyBtZXNzYWdlID0gXCJEaWdpdGUgYWNpbWEgbyBub21lIGRhIHBlc3NvYSBxdWUgZGVzZWphIG1hcmNhciwgZW0gc2VndWlkYSBwcmVzc2lvbmUgW0VOVEVSXVwiO1xuICBwdWJsaWMgc2VsZWN0ZWRVc2VyczogYW55ID0ge307XG4gIHB1YmxpYyBsaXN0VHlwZTogJ2NoZWNrZWQnIHwgJ3NlYXJjaCcgPSAnc2VhcmNoJztcblxuICBwdWJsaWMgZmlsdGVyQnlNZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZmVlZFNlcnZpY2U6IEFzYXBGZWVkU2VydmljZSxcbiAgICBwdWJsaWMgYXNhcFNlcnZpY2U6IEFzYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBzdHJlYW1TZXJ2aWNlOiBTdHJlYW1TZXJ2aWNlLFxuICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgY29uc29sZS5sb2coJ1ByZWZpeCBQdWJsaWNhdGlvbiAtPicsIHBhdGgoKS5mZWVkKTtcbiAgICB0aGlzLmdldE5ld0ZlZWQoKTtcbiAgfVxuXG4gIGxvYWRVc2Vycyh2YWx1ZTogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdmFsdWU7XG4gICAgdGhpcy51c2VycyA9IG51bGw7XG4gICAgdGhpcy5saXN0VHlwZSA9ICdzZWFyY2gnO1xuICAgIGlmIChzZWFyY2ggIT0gJycpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IFwiTmVuaHVtIHVzdcOhcmlvIGVuY29udHJhZG8hXCI7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldEFsbFVzZXJzKHNlYXJjaCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJzID0gcmVzcG9uc2UuZGF0YS5tYXAoKHVzZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHVzZXIudXNlcl9pbmZvLnVzZXJfaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyLnVzZXJfaW5mby51c2VyX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgICAgIHBpY3R1cmU6IHVzZXIucGljdHVyZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC50YXJnZXQuZmlsZXMpIHtcblxuICAgICAgY29uc3QgdG1wRmlsZTogRmlsZXNNb2RlbCA9IG5ldyBGaWxlc01vZGVsKCk7XG4gICAgICB0bXBGaWxlLnR5cGUgPSB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSk7XG4gICAgICAvLyB0bXBGaWxlLnN0YXR1cyA9IDA7XG4gICAgICB0bXBGaWxlLnRodW1iX3JlbmRlcmluZyA9IGZhbHNlO1xuICAgICAgdG1wRmlsZS52aWRlb19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgIHRtcEZpbGUudmlkZW9fbG93X3JlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICd2aWRlbycgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICd2aWRlbycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHPDsyBwb2RlIGVudmlhciB1bSB2w61kZW8gcG9yIFBvc3QnXG4gICAgICAgIH0pO1xuICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldFR5cGVCeU1pbWVUeXBlKGZpbGUudHlwZSkgPT09ICdpbWFnZScgJiYgdGhpcy50bXBGaWxlQXJyYXkuZmlsdGVyKCh0bXA6IGFueSkgPT4gdGhpcy5nZXRUeXBlQnlNaW1lVHlwZSh0bXAudHlwZSkgPT09ICdpbWFnZScpLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3RTZXJ2aWNlLmVycm9yKHtcbiAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgbWVzc2FnZTogJ1ZvY8OqIHBvZGUgdXRpbGl6YXIgYXTDqSBubyBtw6F4aW1vIDUgaW1hZ2VucyBubyBzZXUgUG9zdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT0gJ2ltYWdlL2dpZicpIHtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uZ2lmYDtcbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZWFkR0lGKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkucHVzaCh0bXBGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEV4dG5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBnZXRFeHRuYW1lW2dldEV4dG5hbWUubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIHRtcEZpbGUudXJsID0gYXdhaXQgdGhpcy5yZXNpemVJbWFnZXMoZmlsZSwgODAwKTtcbiAgICAgICAgICAgIHRtcEZpbGUubmFtZSA9IGAke3RoaXMuc3RyZWFtU2VydmljZS51aWQoKX0uJHtleHRuYW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUoZmlsZS50eXBlKSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVhbGl6YXIgVXBsb2FkIGRlIFZpZGVvJywgdG1wRmlsZSk7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gZmlsZTtcbiAgICAgICAgICBpZiAocmVhZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZWFkZXIpO1xuICAgICAgICAgICAgdG1wRmlsZS5uYW1lID0gYmxvYlVSTCBhcyBhbnk7XG4gICAgICAgICAgICB0aGlzLnRtcEZpbGVBcnJheS5wdXNoKHRtcEZpbGUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1t1cGxvYWRGaWxlXSBpZiByZWFkZXInLCBibG9iVVJMKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1TZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3VwbG9hZEZpbGVdIFJlc3BvbnNlJywgdG1wRmlsZSk7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZVsndG90YWwnXSkge1xuICAgICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAoKHJlc3BvbnNlWydsb2FkZWQnXSAqIDEwMCkgLyByZXNwb25zZVsndG90YWwnXSkudG9GaXhlZCgwKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0bXBGaWxlLnN0YXR1cztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkuZmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXBsb2FkRmlsZV0gUmVzcG9uc2UgVXBsb2FkZWQnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS5zdGF0dXMgPSAxMDE7XG4gICAgICAgICAgICAgICAgdG1wRmlsZS51cmwgPSByZXNwb25zZS5ib2R5LmZpbGUuc2VjdXJlX3VybDtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZGVvU2VuZGVkSUQgPSB0bXBGaWxlLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCd0bXBGaWxlJywgdG1wRmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNpemVJbWFnZXMoZmlsZTogYW55LCB3aWR0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBjb25zdCBNQVhfV0lEVEggPSB3aWR0aDtcbiAgICAgIGNvbnN0IE1BWF9IRUlHSFQ6IGFueSA9IDEzMzQ7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTUFYX1dJRFRIIC8gaW1nLndpZHRoO1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzY2FsZSAqIGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICBjYW52YXMud2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ0lNRycsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgICBjb25zdCBkYXRhdXJsID0gY2FudmFzLnRvRGF0YVVSTChmaWxlLnR5cGUsIDAuNjUpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdDQU5WQVMgLT4nLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGF1cmwpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlYWRHSUYoZmlsZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0VHlwZUJ5TWltZVR5cGUobWltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IG1pbWUuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gc3BsaXRbMF07XG4gIH1cblxuICBzaGFyZSgpOiBhbnkge1xuICAgIGNvbnN0IGRhdGE6IEZlZWRNb2RlbCA9IG5ldyBGZWVkTW9kZWwoKTtcbiAgICBkYXRhLnVwZGF0ZWRfYXQgPSBEYXRlLm5vdygpO1xuICAgIGRhdGEudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgIGRhdGEudHlwZSA9IHRoaXMudHlwZTtcbiAgICBkYXRhLnNlbGVjdGVkX3VzZXJzID0gW107XG4gICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pIHtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vycy5wdXNoKGlkKTtcbiAgICAgICAgZGF0YS5zZWxlY3RlZF91c2Vyc19kYXRhLnB1c2goe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0ubmFtZSxcbiAgICAgICAgICBwaWN0dXJlOiB0aGlzLnNlbGVjdGVkVXNlcnNbaWRdLnBpY3R1cmUsXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0uZW1haWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG1wRmlsZUFycmF5IHx8IHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgIC8vIGNvbnN0IHZpZGVvRmlsdGVyID0gZGF0YS5maWxlcy5maWx0ZXIodG1wID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAndmlkZW8nKTtcbiAgICAgIC8vIGlmICh2aWRlb0ZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB9XG4gICAgICBkYXRhLmZpbGVzLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGlzdGUgdW0gdmlkZW8gbm8gRmVlZCcsIGl0ZW0pO1xuICAgICAgICAgIGlmICghaXRlbS5pc0Nsb3VkaW5hcnkpIHtcbiAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW0udGh1bWJfcmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFNldGFuZG8gbyBJRCBkbyBGZWVkIGlndWFsIGFvIElEIGRvIHbDrWRlb1xuICAgICAgICAgICAgZGF0YS5yZWYgPSBpdGVtLnVybDtcbiAgICAgICAgICAgIGRhdGEuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0udXJsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0udmlkZW9fcmVuZGVyaW5nID0gIXJlcy5wNDgwO1xuICAgICAgICAgICAgICBpdGVtLnZpZGVvX2xvd19yZW5kZXJpbmcgPSAhcmVzLnA0ODBfbG93O1xuICAgICAgICAgICAgICBpdGVtLnRodW1iX3JlbmRlcmluZyA9ICFyZXMudGh1bWI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcInNoYXJlXCIsIGRhdGEpO1xuICAgIFxuICAgIHRoaXMucHVibGlzaChkYXRhKS50aGVuKChpZCkgPT4ge1xuICAgICAgdGhpcy51c2VyU2VydmljZS51c2Vyc0NoZWNrZWQoe3Bvc3RfaWQ6IGlkLCB1c2VyX2lkOiBkYXRhLnNlbGVjdGVkX3VzZXJzLCBjb21tZW50OiBkYXRhLnRpdGxlLCB0eXBlOiAncG9zdCd9LCB7Y29tbWVudHM6IHRydWV9KS5zdWJzY3JpYmUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICB9XG5cbiAgY29uZmlybVNoYXJlKCkge1xuICAgIGNvbnN0IHN3YWxsID0gU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6IFwiUG9kZW1vcyBjb21wYXJ0aWxoYXIgc2V1IHBvc3Q/XCIsXG4gICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJOw6NvXCJcbiAgICB9KTtcblxuICAgIHN3YWxsLnRoZW4oKGNvbmZpcm1lZCkgPT4ge1xuICAgICAgaWYgKGNvbmZpcm1lZC52YWx1ZSkge1xuICAgICAgICB0aGlzLnNoYXJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaXNoKGRhdGE6IEZlZWRNb2RlbCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXG4gICAgICBsZXQgaW1hZ2U7XG4gICAgICBsZXQgaWQ7XG4gICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgMSwgZGF0YSk7XG4gIFxuICAgICAgaWYgKCFkYXRhLnRpdGxlIHx8IGRhdGEudGl0bGUgPT09ICcnKSB7XG4gICAgICAgIC8vIHRoaXMuZ2xvYmFsLnRvYXN0U2VydmljZS5lcnJvcih7XG4gICAgICAgIC8vICAgdGl0bGU6ICdPcHMnLFxuICAgICAgICAvLyAgIG1lc3NhZ2U6ICdWb2PDqiBwcmVjaXNhIGFkaWNpb25hciB1bSB0ZXh0byDDoCBzdWEgaW1hZ2VtL3bDrWRlby4nLFxuICAgICAgICAvLyB9KTtcbiAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiUG9kZW1vcyBjb21wYXJ0aWxoYXIgc2V1IHBvc3Q/P1wiLFxuICAgICAgICAgICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU2ltXCIsXG4gICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiTsOjb1wiXG4gICAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7XG4gIFxuICBcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICBkYXRhLnVzZXJfaW5mbyA9IHtcbiAgICAgICAgaWQ6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLm5hbWUsXG4gICAgICAgIHBpY3R1cmU6IHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKS5waWN0dXJlLFxuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpXG4gICAgICB9O1xuICBcbiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ2VtYmVkJykge1xuICAgICAgICBjb25zdCBmaWxlRW1iZWQ6IGFueSA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmVtYmVkRmlsZSxcbiAgICAgICAgICB1cmw6IHRoaXMuZW1iZWRGaWxlLFxuICAgICAgICAgIHR5cGU6ICdlbWJlZCdcbiAgICAgICAgfTtcbiAgXG4gICAgICAgIHRoaXMudG1wRmlsZUFycmF5LnB1c2goZmlsZUVtYmVkKTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAodGhpcy50eXBlICE9ICdlbWJlZCcpIHtcbiAgICAgICAgaWYgKHRoaXMudG1wRmlsZUFycmF5ICYmIHRoaXMudG1wRmlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50bXBGaWxlQXJyYXknLCB0aGlzLmdldFR5cGVCeU1pbWVUeXBlKHRoaXMudG1wRmlsZUFycmF5WzBdLnR5cGUpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgMik7XG4gICAgICAgICAgY29uc3QgaW1hZ2VzRmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheS5maWx0ZXIoXG4gICAgICAgICAgICAodG1wOiBhbnkpID0+IHRoaXMuZ2V0VHlwZUJ5TWltZVR5cGUodG1wLnR5cGUpID09PSAnaW1hZ2UnXG4gICAgICAgICAgKTtcbiAgXG4gIFxuICAgICAgICAgIGNvbnN0IHN0ZXAgPSA5OCAvIGltYWdlc0ZpbGVzLmxlbmd0aDtcbiAgXG4gICAgICAgICAgaWYgKChpbWFnZXNGaWxlcy5sZW5ndGggJiYgZGF0YS50aXRsZSA9PT0gJycpKSB7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbC50b2FzdFNlcnZpY2UuZXJyb3Ioe1xuICAgICAgICAgICAgICB0aXRsZTogJ09wcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdWb2PDqiBwcmVjaXNhIGFkaWNpb25hciB1bSB0ZXh0byBqdW50byDDoCBzdWEgaW1hZ2VtL3bDrWRlby4nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBpZiAoaW1hZ2VzRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGltYWdlc0ZpbGVzKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnVwbG9hZEZpbGUoYGltYWdlcy8ke2ZpbGUubmFtZX1gLCBmaWxlLnVybCk7XG4gICAgICAgICAgICAgICAgdGhpcy51dGlsc1NlcnZpY2UucGVyY2VudGFnZS5zdWJzY3JpYmUocGVyY2VudCA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9IHBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnRhc2suc25hcHNob3RDaGFuZ2VzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgYXN5bmMgc25hcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbmFwLmJ5dGVzVHJhbnNmZXJyZWQgPT09IHNuYXAudG90YWxCeXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyArPSBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQUk9HUkVTUycsIHRoaXMucHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5maWxlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCghaW1hZ2UpICYmIChkYXRhLmZpbGVzW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLmdldEZpcmVTdG9yYWdlVVJMKGBpbWFnZXMvJHtkYXRhLmZpbGVzW2luZGV4XS5uYW1lfWApLnN1YnNjcmliZSgoaW1hZ2VVUkwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPSBpbWFnZVVSTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuZmlsZXNbaW5kZXhdLnVybDtcbiAgXG4gIFxuICBcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gaW1hZ2VzRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ3JpYW5kbyBGZWVkJyk7XG4gIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50bXBGaWxlQXJyYXkgPSBbXTtcbiAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRtcEZpbGVBcnJheSk7XG4gIFxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhyZXNwb25zZS5pZCkudXBkYXRlKHsgaWQ6IHJlc3BvbnNlLmlkIH0pO1xuICAgICAgICAgICAgICB0aGlzLmZlZWRDcmVhdGVkLmVtaXQocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuaWQpO1xuICAgICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUHVibGlzaCgpJywgNSk7XG4gICAgICAgICAgY29uc29sZS5sb2coZGF0YSwgdGhpcy50bXBGaWxlQXJyYXkpO1xuICBcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKTtcbiAgICAgICAgICBjb2xsZWN0aW9uLmFkZChjbGFzc1RvUGxhaW4oZGF0YSkpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKS5kb2MocmVzcG9uc2UuaWQpLnVwZGF0ZSh7IGlkOiByZXNwb25zZS5pZCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmVlZENyZWF0ZWQuZW1pdChyZXNwb25zZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRhdGEuZmlsZXMgPSB0aGlzLnRtcEZpbGVBcnJheTtcbiAgICAgICAgY29uc29sZS5sb2coJ1B1Ymxpc2goRW1iZWQpJywgNik7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEsIHRoaXMudG1wRmlsZUFycmF5KTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCk7XG4gICAgICAgIGNvbGxlY3Rpb24uYWRkKGNsYXNzVG9QbGFpbihkYXRhKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jID0gdGhpcy5kYi5jb2xsZWN0aW9uKHBhdGgoKS5mZWVkKS5kb2MocmVzcG9uc2UuaWQpO1xuICAgICAgICAgIGRvYy51cGRhdGUoeyBpZDogcmVzcG9uc2UuaWQgfSk7XG4gICAgICAgICAgdGhpcy5mZWVkQ3JlYXRlZC5lbWl0KHJlc3BvbnNlLmlkKTtcbiAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBudWxsO1xuICAgICAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICAgICAgdGhpcy5lbWJlZEZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHlwZSA9ICdwb3N0JztcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gIFxuICBcbiAgICAgIGNvbnNvbGUubG9nKCdQdWJsaXNoKCknLCAwLCBwYXRoKCkuZmVlZCk7XG4gICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICB0aGlzLnByb2dyZXNzID0gbnVsbDtcbiAgICAgIHRoaXMudXBsb2FkaW5nID0gbnVsbDtcbiAgICAgIHRoaXMudG1wRmlsZUFycmF5ID0gW107XG4gICAgICB0aGlzLmdsb2JhbC50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIHRpdGxlOiAnRmVpdG8hJyxcbiAgICAgICAgbWVzc2FnZTogJ1NldSBwb3N0IGZvaSBjcmlhZG8gY29tIHN1Y2Vzc28nLFxuICAgICAgICBsYXlvdXQ6IDJcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlVG1wRmlsZSh0bXBGaWxlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudG1wRmlsZUFycmF5LmluZGV4T2YodG1wRmlsZSk7XG4gICAgdGhpcy50bXBGaWxlQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNoZWNrUHVibGljYXRpb25UeXBlKHRpdGxlKSB7XG4gICAgY29uc29sZS5sb2coJ0V2ZW50IC0+JywgZXZlbnQpO1xuICAgIGlmICh0aXRsZS5sZW5ndGggJiYgdGl0bGUubGVuZ3RoID4gMzUpIHtcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRVcmwodGl0bGUpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGVja1B1YmxpY2F0aW9uVHlwZScsIHRpdGxlKTtcbiAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKCd5b3V0dScpIHx8IHRpdGxlLmluY2x1ZGVzKCd5b3V0dWJlJykpIHtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ2VtYmVkJztcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZW1iZWRGaWxlID0gdGl0bGUucmVwbGFjZSgnd2F0Y2g/dj0nLCAnZW1iZWQvJyk7XG4gICAgICAgICAgdGhpcy50bXBFbWJlZEZpbGUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5lbWJlZEZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRpdGxlLmluY2x1ZGVzKCdzcG90aWZ5JykpIHtcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy50eXBlID0gJ2VtYmVkJztcbiAgICAgICAgICB0aGlzLmVtYmVkRmlsZSA9IHRpdGxlLnJlcGxhY2UoJy9lcGlzb2RlJywgJy9lbWJlZC1wb2RjYXN0L2VwaXNvZGUnKTtcbiAgICAgICAgICB0aGlzLnRtcEVtYmVkRmlsZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmVtYmVkRmlsZSk7XG4gICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUVtYmVkRmlsZXMoKSB7XG4gICAgdGhpcy50aXRsZSA9ICcnO1xuICAgIHRoaXMuZW1iZWRGaWxlID0gJyc7XG4gICAgdGhpcy50eXBlID0gJ3Bvc3QnO1xuICB9XG5cbiAgaXNWYWxpZFVybChzdHIpIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgnXihodHRwcz86XFxcXC9cXFxcLyk/JyArIC8vIHByb3RvY29sXG4gICAgICAnKCgoW2EtelxcXFxkXShbYS16XFxcXGQtXSpbYS16XFxcXGRdKSopXFxcXC4pK1thLXpdezIsfXwnICsgLy8gZG9tYWluIG5hbWVcbiAgICAgICcoKFxcXFxkezEsM31cXFxcLil7M31cXFxcZHsxLDN9KSknICsgLy8gT1IgaXAgKHY0KSBhZGRyZXNzXG4gICAgICAnKFxcXFw6XFxcXGQrKT8oXFxcXC9bLWEtelxcXFxkJV8ufitdKikqJyArIC8vIHBvcnQgYW5kIHBhdGhcbiAgICAgICcoXFxcXD9bOyZhLXpcXFxcZCVfLn4rPS1dKik/JyArIC8vIHF1ZXJ5IHN0cmluZ1xuICAgICAgJyhcXFxcI1stYS16XFxcXGRfXSopPyQnLCAnaScpOyAvLyBmcmFnbWVudCBsb2NhdG9yXG4gICAgcmV0dXJuICEhcGF0dGVybi50ZXN0KHN0cik7XG4gIH1cblxuICBvcGVuQW5ub3VuY2VNb2RhbCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1vZGFsQW5ub3VuY2VDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNTUlJyxcbiAgICAgIG1pbkhlaWdodDogJzk1JScsXG4gICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGRhdGE6IHsgb3duZXI6IHRoaXMsIHRtcEZpbGVBcnJheTogdGhpcy50bXBGaWxlQXJyYXkgfVxuICAgIH0pO1xuXG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5maWx0ZXIuZW1pdCh0aGlzLmZpbHRlckJ5TWUpO1xuICB9XG5cbiAgc2VsZWN0VXNlcihldnQ6IGFueSwgdXNlcjogYW55KSB7XG4gICAgaWYgKGV2dC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzW3VzZXIuaWRdID0gdXNlcjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZFVzZXJzW3VzZXIuaWRdO1xuICAgIH1cbiAgfVxuXG4gIHNob3dTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmxpc3RUeXBlID0gJ2NoZWNrZWQnO1xuICAgIHRoaXMudXNlcnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuc2VsZWN0ZWRVc2Vycykge1xuICAgICAgdGhpcy51c2Vycy5wdXNoKHRoaXMuc2VsZWN0ZWRVc2Vyc1tpZF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuTW9kYWwoKSB7XG4gICAgaWYgKHRoaXMubmV3ZmVlZCkge1xuICAgICAgJCgnI3B1YmxpY2F0aW9uTW9kYWwnKS5tb2RhbCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maXJtU2hhcmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TmV3RmVlZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmJhc2VQYXRoID0gXCJhcGkvdjIvYWRtaW5cIjtcbiAgICB0aGlzLmFzYXBTZXJ2aWNlLmVudGl0eU5hbWUgPSBcImNvbG9yXCI7XG4gICAgdGhpcy5hc2FwU2VydmljZS5nZXRSZXNvdXJjZSh0aGlzLmdsb2JhbC5sb2dnZWRVc2VyKCkuY2xpZW50X2lkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgdGhpcy5uZXdmZWVkID0gcmVzcG9uc2UuZGF0YS5uZXdmZWVkO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|