UNPKG

ng-cw-v12

Version:

Angular UI component library

156 lines 23.9 kB
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import Jessibuca from 'jessibuca-js'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class VideoFlvComponent { constructor() { this.playError = false; this.videoUrl = ''; this.ncLoaded = new EventEmitter(); //返回Jessibuca this.ncPlaying = new EventEmitter(); //返回播放状态 this.mutedMode = true; this.autoplayMode = false; this.fillMode = false; this.screenshotMode = false; this.recordMode = false; this.bandwidthMode = false; this.controlsMode = true; } set ncUrl(value) { this.videoUrl = value; setTimeout(() => { //加延迟,防止其他传入参数未获取到 this.init(); }); } ; //静音 set ncMuted(value) { this.mutedMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //自动播放 set ncAutoplay(value) { this.autoplayMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //铺满 set ncFill(value) { this.fillMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //截图 set ncScreenshot(value) { this.screenshotMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //录屏 set ncRecord(value) { this.recordMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //网速 set ncBandwidth(value) { this.bandwidthMode = value !== null && value !== undefined && value !== false && value !== 'false'; } //隐藏控制栏 set ncControls(value) { this.controlsMode = value !== null && value !== undefined && value !== false && value !== 'false'; } ngOnDestroy() { this.destroy(); } ngAfterViewInit() { } init() { this.destroy(); this.jessibuca = new Jessibuca({ url: this.videoUrl, decoder: 'assets/jessibuca-js/decoder.js', container: this.videoContainer.nativeElement, videoBuffer: 0.2, isResize: !this.fillMode, loadingText: '加载中', debug: false, timeout: 8, showBandwidth: this.bandwidthMode, operateBtns: { fullscreen: true, screenshot: this.screenshotMode, play: true, audio: true, record: this.recordMode //录制按钮 }, isNotMute: false, controlAutoHide: true //自动隐藏控制栏 }); if (!this.controlsMode) { const controls = this.videoContainer.nativeElement.querySelector('.jessibuca-controls'); controls === null || controls === void 0 ? void 0 : controls.remove(); } //错误监听 this.jessibuca.on("error", (error) => { console.error('error:', error); this.playError = true; }); //超时监听 this.jessibuca.on("timeout", (error) => { console.error('timeout:', error); this.playError = true; }); //播放监听 this.jessibuca.on("play", () => { this.ncPlaying.emit(true); }); //暂停监听 this.jessibuca.on("pause", () => { this.ncPlaying.emit(false); }); this.jessibuca.on("load", () => { //自动播放 if (this.autoplayMode) { this.jessibuca.play(); } //开启声音 if (!this.mutedMode) { this.jessibuca.cancelMute(); } //返回对象 this.ncLoaded.emit(this.jessibuca); }); } destroy() { if (this.jessibuca) { this.jessibuca.destroy(); } } } VideoFlvComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: VideoFlvComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); VideoFlvComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: VideoFlvComponent, selector: "nc-video-flv", inputs: { ncUrl: "ncUrl", ncMuted: "ncMuted", ncAutoplay: "ncAutoplay", ncFill: "ncFill", ncScreenshot: "ncScreenshot", ncRecord: "ncRecord", ncBandwidth: "ncBandwidth", ncControls: "ncControls" }, outputs: { ncLoaded: "ncLoaded", ncPlaying: "ncPlaying" }, viewQueries: [{ propertyName: "videoContainer", first: true, predicate: ["videoContainer"], descendants: true }], ngImport: i0, template: "<div class=\"video-container\">\r\n <div class=\"playError\" *ngIf=\"playError\">\r\n <svg t=\"1724830569178\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"10496\" width=\"64\" height=\"64\">\r\n <path\r\n d=\"M725.333333 469.333333c129.6 0 234.666667 105.066667 234.666667 234.666667s-105.066667 234.666667-234.666667 234.666667-234.666667-105.066667-234.666666-234.666667 105.066667-234.666667 234.666666-234.666667z m128-341.333333a128 128 0 0 1 128 128v294.101333a300.224 300.224 0 0 0-85.312-91.221333L896 426.666667h-59.605333c-34.346667-13.76-71.808-21.333333-111.061334-21.333334v-192H298.666667v597.333334h147.626666a298.453333 298.453333 0 0 0 50.282667 85.354666L170.666667 896a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128h682.666666z m-119.466666 661.333333h-17.066667a21.333333 21.333333 0 0 0-21.333333 21.333334v17.066666a21.333333 21.333333 0 0 0 21.333333 21.333334h17.066667a21.333333 21.333333 0 0 0 21.333333-21.333334V810.666667a21.333333 21.333333 0 0 0-21.333333-21.333334zM213.333333 682.666667H128v85.333333a42.666667 42.666667 0 0 0 39.466667 42.56L170.666667 810.666667h42.666666v-128z m520.533334-128h-17.066667a21.333333 21.333333 0 0 0-21.184 18.837333L695.466667 576v149.333333a21.333333 21.333333 0 0 0 18.837333 21.184L716.8 746.666667h17.066667a21.333333 21.333333 0 0 0 21.184-18.837334L755.2 725.333333v-149.333333a21.333333 21.333333 0 0 0-21.333333-21.333333z m-266.026667-187.114667l2.773333 1.6 114.090667 71.296a298.965333 298.965333 0 0 0-154.432 217.002667 42.24 42.24 0 0 1-24.832-35.584L405.333333 618.666667V405.333333c0-32.426667 34.517333-52.608 62.506667-37.781333zM213.333333 426.666667H128v170.666666h85.333333v-170.666666z m0-213.333334H170.666667a42.666667 42.666667 0 0 0-42.56 39.466667L128 256v85.333333h85.333333v-128z m640 0h-42.666666v128h85.333333v-85.333333a42.666667 42.666667 0 0 0-39.466667-42.56L853.333333 213.333333z\"\r\n fill=\"#cdcdcd\" p-id=\"10497\"></path>\r\n </svg>\r\n <div class=\"errorText\">\u64AD\u653E\u5931\u8D25</div>\r\n </div>\r\n <div id=\"video-container\" #videoContainer></div>\r\n</div>", styles: ["::ng-deep .video-container{width:100%;height:100%;position:relative;background-color:#0006}::ng-deep .video-container .playError{background-color:#000;width:100%;height:100%;position:absolute;left:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center}::ng-deep .video-container .playError .errorText{color:#cdcdcd;font-size:16px;margin-top:10px;letter-spacing:1px}::ng-deep .video-container .jessibuca-play-big{display:block}::ng-deep .video-container #video-container{width:100%;height:100%}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: VideoFlvComponent, decorators: [{ type: Component, args: [{ selector: 'nc-video-flv', templateUrl: './video-flv.component.html', styleUrls: ['./video-flv.component.less'] }] }], ctorParameters: function () { return []; }, propDecorators: { videoContainer: [{ type: ViewChild, args: ['videoContainer'] }], ncUrl: [{ type: Input }], ncLoaded: [{ type: Output }], ncPlaying: [{ type: Output }], ncMuted: [{ type: Input }], ncAutoplay: [{ type: Input }], ncFill: [{ type: Input }], ncScreenshot: [{ type: Input }], ncRecord: [{ type: Input }], ncBandwidth: [{ type: Input }], ncControls: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZmx2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvdmlkZW8tZmx2L3ZpZGVvLWZsdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3ZpZGVvLWZsdi92aWRlby1mbHYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQzs7O0FBT3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFvRDVCO1FBakRBLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQVFaLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDLENBQUEsYUFBYTtRQUN0RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQyxDQUFBLFFBQVE7UUErQjFELGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGlCQUFZLEdBQVksSUFBSSxDQUFDO0lBRWIsQ0FBQztJQS9DakIsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2Qsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFBLENBQUM7SUFJRixJQUFJO0lB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UyxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzdCO1lBQ0QsTUFBTTtZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs4R0FqSVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsdWFDUjlCLGlvRUFXTTsyRkRITyxpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFdBQVcsRUFBRSw0QkFBNEI7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2lCQUMxQzswRUFFOEIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSWQsS0FBSztzQkFBakIsS0FBSztnQkFPSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBR00sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgSmVzc2lidWNhIGZyb20gJ2plc3NpYnVjYS1qcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25jLXZpZGVvLWZsdicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZGVvLWZsdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmlkZW8tZmx2LmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZGVvRmx2Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCd2aWRlb0NvbnRhaW5lcicpIHZpZGVvQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBwcml2YXRlIGplc3NpYnVjYSE6IEplc3NpYnVjYTtcclxuICBwbGF5RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aWRlb1VybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2V0IG5jVXJsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmlkZW9VcmwgPSB2YWx1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvL+WKoOW7tui/n++8jOmYsuatouWFtuS7luS8oOWFpeWPguaVsOacquiOt+WPluWIsFxyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0pXHJcbiAgfTtcclxuICBAT3V0cHV0KCkgbmNMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEplc3NpYnVjYT4oKTsvL+i/lOWbnkplc3NpYnVjYVxyXG4gIEBPdXRwdXQoKSBuY1BsYXlpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7Ly/ov5Tlm57mkq3mlL7nirbmgIFcclxuXHJcbiAgLy/pnZnpn7NcclxuICBASW5wdXQoKSBzZXQgbmNNdXRlZCh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5tdXRlZE1vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgLy/oh6rliqjmkq3mlL5cclxuICBASW5wdXQoKSBzZXQgbmNBdXRvcGxheSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5hdXRvcGxheU1vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgLy/pk7rmu6FcclxuICBASW5wdXQoKSBzZXQgbmNGaWxsKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbGxNb2RlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIC8v5oiq5Zu+XHJcbiAgQElucHV0KCkgc2V0IG5jU2NyZWVuc2hvdCh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5zY3JlZW5zaG90TW9kZSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSAnZmFsc2UnO1xyXG4gIH1cclxuICAvL+W9leWxj1xyXG4gIEBJbnB1dCgpIHNldCBuY1JlY29yZCh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5yZWNvcmRNb2RlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIC8v572R6YCfXHJcbiAgQElucHV0KCkgc2V0IG5jQmFuZHdpZHRoKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLmJhbmR3aWR0aE1vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgLy/pmpDol4/mjqfliLbmoI9cclxuICBASW5wdXQoKSBzZXQgbmNDb250cm9scyh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jb250cm9sc01vZGUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIG11dGVkTW9kZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYXV0b3BsYXlNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsbE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzY3JlZW5zaG90TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlY29yZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBiYW5kd2lkdGhNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29udHJvbHNNb2RlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgIHRoaXMuamVzc2lidWNhID0gbmV3IEplc3NpYnVjYSh7XHJcbiAgICAgIHVybDogdGhpcy52aWRlb1VybCxcclxuICAgICAgZGVjb2RlcjogJ2Fzc2V0cy9qZXNzaWJ1Y2EtanMvZGVjb2Rlci5qcycsXHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy52aWRlb0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB2aWRlb0J1ZmZlcjogMC4yLC8v57yT5a2Y5pe26ZW/XHJcbiAgICAgIGlzUmVzaXplOiAhdGhpcy5maWxsTW9kZSwvL2ZhbHNlOuinhumikeeUu+mdouWujOWFqOWhq+WFhWNhbnZhc+WMuuWfnyznlLvpnaLkvJrooqvmi4nkvLg7dHJ1ZTrop4bpopHnlLvpnaLlgZrnrYnmr5TnvKnmlL7lkI4s6auY5oiW5a695a+56b2QY2FudmFz5Yy65Z+fLOeUu+mdouS4jeiiq+aLieS8uCzkvYbmnInpu5HovrlcclxuICAgICAgbG9hZGluZ1RleHQ6ICfliqDovb3kuK0nLC8v5Yqg6L296L+H56iL5Lit5paH5qGIXHJcbiAgICAgIGRlYnVnOiBmYWxzZSxcclxuICAgICAgdGltZW91dDogOCxcclxuICAgICAgc2hvd0JhbmR3aWR0aDogdGhpcy5iYW5kd2lkdGhNb2RlLC8v5pi+56S6572R6YCfXHJcbiAgICAgIG9wZXJhdGVCdG5zOiB7XHJcbiAgICAgICAgZnVsbHNjcmVlbjogdHJ1ZSwvL+WFqOWxj+aMiemSrlxyXG4gICAgICAgIHNjcmVlbnNob3Q6IHRoaXMuc2NyZWVuc2hvdE1vZGUsLy/miKrlm77mjInpkq5cclxuICAgICAgICBwbGF5OiB0cnVlLC8v5pKt5pS+5pqC5YGc5oyJ6ZKuXHJcbiAgICAgICAgYXVkaW86IHRydWUsLy/lo7Dpn7PmjInpkq5cclxuICAgICAgICByZWNvcmQ6IHRoaXMucmVjb3JkTW9kZS8v5b2V5Yi25oyJ6ZKuXHJcbiAgICAgIH0sXHJcbiAgICAgIGlzTm90TXV0ZTogZmFsc2UsLy/mmK/lkKblvIDlkK/lo7Dpn7NcclxuICAgICAgY29udHJvbEF1dG9IaWRlOiB0cnVlLy/oh6rliqjpmpDol4/mjqfliLbmoI9cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5jb250cm9sc01vZGUpIHtcclxuICAgICAgY29uc3QgY29udHJvbHMgPSB0aGlzLnZpZGVvQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmplc3NpYnVjYS1jb250cm9scycpO1xyXG4gICAgICBjb250cm9scz8ucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/plJnor6/nm5HlkKxcclxuICAgIHRoaXMuamVzc2lidWNhLm9uKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yOicsIGVycm9yKTtcclxuICAgICAgdGhpcy5wbGF5RXJyb3IgPSB0cnVlO1xyXG4gICAgfSlcclxuXHJcbiAgICAvL+i2heaXtuebkeWQrFxyXG4gICAgdGhpcy5qZXNzaWJ1Y2Eub24oXCJ0aW1lb3V0XCIsIChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd0aW1lb3V0OicsIGVycm9yKTtcclxuICAgICAgdGhpcy5wbGF5RXJyb3IgPSB0cnVlO1xyXG4gICAgfSlcclxuXHJcbiAgICAvL+aSreaUvuebkeWQrFxyXG4gICAgdGhpcy5qZXNzaWJ1Y2Eub24oXCJwbGF5XCIsICgpID0+IHtcclxuICAgICAgdGhpcy5uY1BsYXlpbmcuZW1pdCh0cnVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8v5pqC5YGc55uR5ZCsXHJcbiAgICB0aGlzLmplc3NpYnVjYS5vbihcInBhdXNlXCIsICgpID0+IHtcclxuICAgICAgdGhpcy5uY1BsYXlpbmcuZW1pdChmYWxzZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmplc3NpYnVjYS5vbihcImxvYWRcIiwgKCkgPT4ge1xyXG4gICAgICAvL+iHquWKqOaSreaUvlxyXG4gICAgICBpZiAodGhpcy5hdXRvcGxheU1vZGUpIHtcclxuICAgICAgICB0aGlzLmplc3NpYnVjYS5wbGF5KCk7XHJcbiAgICAgIH1cclxuICAgICAgLy/lvIDlkK/lo7Dpn7NcclxuICAgICAgaWYgKCF0aGlzLm11dGVkTW9kZSkge1xyXG4gICAgICAgIHRoaXMuamVzc2lidWNhLmNhbmNlbE11dGUoKTtcclxuICAgICAgfVxyXG4gICAgICAvL+i/lOWbnuWvueixoVxyXG4gICAgICB0aGlzLm5jTG9hZGVkLmVtaXQodGhpcy5qZXNzaWJ1Y2EpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuamVzc2lidWNhKSB7XHJcbiAgICAgIHRoaXMuamVzc2lidWNhLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZpZGVvLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwbGF5RXJyb3JcIiAqbmdJZj1cInBsYXlFcnJvclwiPlxyXG4gICAgPHN2ZyB0PVwiMTcyNDgzMDU2OTE3OFwiIGNsYXNzPVwiaWNvblwiIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCIgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICBwLWlkPVwiMTA0OTZcIiB3aWR0aD1cIjY0XCIgaGVpZ2h0PVwiNjRcIj5cclxuICAgICAgPHBhdGhcclxuICAgICAgICBkPVwiTTcyNS4zMzMzMzMgNDY5LjMzMzMzM2MxMjkuNiAwIDIzNC42NjY2NjcgMTA1LjA2NjY2NyAyMzQuNjY2NjY3IDIzNC42NjY2NjdzLTEwNS4wNjY2NjcgMjM0LjY2NjY2Ny0yMzQuNjY2NjY3IDIzNC42NjY2NjctMjM0LjY2NjY2Ny0xMDUuMDY2NjY3LTIzNC42NjY2NjYtMjM0LjY2NjY2NyAxMDUuMDY2NjY3LTIzNC42NjY2NjcgMjM0LjY2NjY2Ni0yMzQuNjY2NjY3eiBtMTI4LTM0MS4zMzMzMzNhMTI4IDEyOCAwIDAgMSAxMjggMTI4djI5NC4xMDEzMzNhMzAwLjIyNCAzMDAuMjI0IDAgMCAwLTg1LjMxMi05MS4yMjEzMzNMODk2IDQyNi42NjY2NjdoLTU5LjYwNTMzM2MtMzQuMzQ2NjY3LTEzLjc2LTcxLjgwOC0yMS4zMzMzMzMtMTExLjA2MTMzNC0yMS4zMzMzMzR2LTE5MkgyOTguNjY2NjY3djU5Ny4zMzMzMzRoMTQ3LjYyNjY2NmEyOTguNDUzMzMzIDI5OC40NTMzMzMgMCAwIDAgNTAuMjgyNjY3IDg1LjM1NDY2NkwxNzAuNjY2NjY3IDg5NmExMjggMTI4IDAgMCAxLTEyOC0xMjhWMjU2YTEyOCAxMjggMCAwIDEgMTI4LTEyOGg2ODIuNjY2NjY2eiBtLTExOS40NjY2NjYgNjYxLjMzMzMzM2gtMTcuMDY2NjY3YTIxLjMzMzMzMyAyMS4zMzMzMzMgMCAwIDAtMjEuMzMzMzMzIDIxLjMzMzMzNHYxNy4wNjY2NjZhMjEuMzMzMzMzIDIxLjMzMzMzMyAwIDAgMCAyMS4zMzMzMzMgMjEuMzMzMzM0aDE3LjA2NjY2N2EyMS4zMzMzMzMgMjEuMzMzMzMzIDAgMCAwIDIxLjMzMzMzMy0yMS4zMzMzMzRWODEwLjY2NjY2N2EyMS4zMzMzMzMgMjEuMzMzMzMzIDAgMCAwLTIxLjMzMzMzMy0yMS4zMzMzMzR6TTIxMy4zMzMzMzMgNjgyLjY2NjY2N0gxMjh2ODUuMzMzMzMzYTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzkuNDY2NjY3IDQyLjU2TDE3MC42NjY2NjcgODEwLjY2NjY2N2g0Mi42NjY2NjZ2LTEyOHogbTUyMC41MzMzMzQtMTI4aC0xNy4wNjY2NjdhMjEuMzMzMzMzIDIxLjMzMzMzMyAwIDAgMC0yMS4xODQgMTguODM3MzMzTDY5NS40NjY2NjcgNTc2djE0OS4zMzMzMzNhMjEuMzMzMzMzIDIxLjMzMzMzMyAwIDAgMCAxOC44MzczMzMgMjEuMTg0TDcxNi44IDc0Ni42NjY2NjdoMTcuMDY2NjY3YTIxLjMzMzMzMyAyMS4zMzMzMzMgMCAwIDAgMjEuMTg0LTE4LjgzNzMzNEw3NTUuMiA3MjUuMzMzMzMzdi0xNDkuMzMzMzMzYTIxLjMzMzMzMyAyMS4zMzMzMzMgMCAwIDAtMjEuMzMzMzMzLTIxLjMzMzMzM3ogbS0yNjYuMDI2NjY3LTE4Ny4xMTQ2NjdsMi43NzMzMzMgMS42IDExNC4wOTA2NjcgNzEuMjk2YTI5OC45NjUzMzMgMjk4Ljk2NTMzMyAwIDAgMC0xNTQuNDMyIDIxNy4wMDI2NjcgNDIuMjQgNDIuMjQgMCAwIDEtMjQuODMyLTM1LjU4NEw0MDUuMzMzMzMzIDYxOC42NjY2NjdWNDA1LjMzMzMzM2MwLTMyLjQyNjY2NyAzNC41MTczMzMtNTIuNjA4IDYyLjUwNjY2Ny0zNy43ODEzMzN6TTIxMy4zMzMzMzMgNDI2LjY2NjY2N0gxMjh2MTcwLjY2NjY2Nmg4NS4zMzMzMzN2LTE3MC42NjY2NjZ6IG0wLTIxMy4zMzMzMzRIMTcwLjY2NjY2N2E0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTQyLjU2IDM5LjQ2NjY2N0wxMjggMjU2djg1LjMzMzMzM2g4NS4zMzMzMzN2LTEyOHogbTY0MCAwaC00Mi42NjY2NjZ2MTI4aDg1LjMzMzMzM3YtODUuMzMzMzMzYTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzkuNDY2NjY3LTQyLjU2TDg1My4zMzMzMzMgMjEzLjMzMzMzM3pcIlxyXG4gICAgICAgIGZpbGw9XCIjY2RjZGNkXCIgcC1pZD1cIjEwNDk3XCI+PC9wYXRoPlxyXG4gICAgPC9zdmc+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JUZXh0XCI+5pKt5pS+5aSx6LSlPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBpZD1cInZpZGVvLWNvbnRhaW5lclwiICN2aWRlb0NvbnRhaW5lcj48L2Rpdj5cclxuPC9kaXY+Il19