ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
312 lines • 18.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-bezier-curve/amap-bezier-curve.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable, NgZone } from '@angular/core';
import { ReplaySubject, zip } from 'rxjs';
import { map, switchMapTo } from 'rxjs/operators';
import { AMapService } from '../../shared/amap.service';
import { LoggerService } from '../../shared/logger/logger.service';
import { PluginLoaderService } from '../../shared/plugin-loader.service';
/** @type {?} */
var TAG = 'AmapBezierCurve';
var AmapBezierCurveService = /** @class */ (function () {
function AmapBezierCurveService(amaps, logger, ngZone, plugins) {
this.amaps = amaps;
this.logger = logger;
this.ngZone = ngZone;
this.plugins = plugins;
this.bezierCurve$ = new ReplaySubject(1);
this.editor$ = new ReplaySubject(1);
this.polyEditor$ = new ReplaySubject(1);
}
/**
* 获取贝瑟尔曲线
*/
/**
* 获取贝瑟尔曲线
* @return {?}
*/
AmapBezierCurveService.prototype.get = /**
* 获取贝瑟尔曲线
* @return {?}
*/
function () {
return this.bezierCurve$.asObservable();
};
/**
* 创建贝瑟尔曲线 AMap.BezierCurve
* @param options 选项
*/
/**
* 创建贝瑟尔曲线 AMap.BezierCurve
* @param {?} options 选项
* @return {?}
*/
AmapBezierCurveService.prototype.create = /**
* 创建贝瑟尔曲线 AMap.BezierCurve
* @param {?} options 选项
* @return {?}
*/
function (options) {
var _this = this;
return this.amaps.get().pipe(map((/**
* @param {?} m
* @return {?}
*/
function (m) {
options.map = m;
_this.bezierCurve = _this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () { return new AMap.BezierCurve(options); }));
_this.logger.d(TAG, 'new BezierCurve created.');
_this.bezierCurve$.next(_this.bezierCurve);
_this.bezierCurve$.complete();
return _this.bezierCurve;
})));
};
/**
* 销毁贝瑟尔曲线
*/
/**
* 销毁贝瑟尔曲线
* @return {?}
*/
AmapBezierCurveService.prototype.destroy = /**
* 销毁贝瑟尔曲线
* @return {?}
*/
function () {
var _this = this;
this.get().subscribe((/**
* @param {?} m
* @return {?}
*/
function (m) {
m.setMap(null);
_this.logger.d(TAG, 'BezierCurve destroyed.');
_this.bezierCurve = null;
}));
};
/**
* @return {?}
*/
AmapBezierCurveService.prototype.getEditor = /**
* @return {?}
*/
function () {
// plugin is loading:
return this.editor$.asObservable();
};
/**
* @return {?}
*/
AmapBezierCurveService.prototype.getPolyEditor = /**
* @return {?}
*/
function () {
return this.polyEditor$.asObservable();
};
/**
* 加载编辑插件
*/
/**
* 加载编辑插件
* @return {?}
*/
AmapBezierCurveService.prototype.loadEditor = /**
* 加载编辑插件
* @return {?}
*/
function () {
return this.plugins.load('AMap.BezierCurveEditor');
};
/**
* @return {?}
*/
AmapBezierCurveService.prototype.loadPolyEditor = /**
* @return {?}
*/
function () {
return this.plugins.load('AMap.PolyEditor');
};
/**
* 创建编辑器
*/
/**
* 创建编辑器
* @return {?}
*/
AmapBezierCurveService.prototype.createEditor = /**
* 创建编辑器
* @return {?}
*/
function () {
var _this = this;
return this.loadEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), m = _b[0], p = _b[1];
_this.editor = _this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () { return new AMap.BezierCurveEditor(m, p); }));
_this.logger.d(TAG, 'new BezierCurveEditor created.');
_this.editor$.next(_this.editor);
_this.editor$.complete();
return _this.editor;
})));
};
/**
* @return {?}
*/
AmapBezierCurveService.prototype.createPolyEditor = /**
* @return {?}
*/
function () {
var _this = this;
return this.loadPolyEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), m = _b[0], p = _b[1];
_this.polyEditor = _this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () { return new AMap.PolyEditor(m, p); }));
_this.logger.d(TAG, 'new PolyEditor created.');
_this.polyEditor$.next(_this.polyEditor);
_this.polyEditor$.complete();
return _this.polyEditor;
})));
};
/**
* 开关编辑器
* @param v 开关选项
*/
/**
* 开关编辑器
* @param {?} v 开关选项
* @return {?}
*/
AmapBezierCurveService.prototype.toggleEditor = /**
* 开关编辑器
* @param {?} v 开关选项
* @return {?}
*/
function (v) {
if (v && !this.editor) {
this.createEditor().subscribe((/**
* @param {?} editor
* @return {?}
*/
function (editor) { return editor.open(); }));
return;
}
if (this.editor) {
if (v) {
this.editor.open();
}
else {
this.editor.close();
}
}
};
/**
* @param {?} v
* @return {?}
*/
AmapBezierCurveService.prototype.togglePolyEditor = /**
* @param {?} v
* @return {?}
*/
function (v) {
if (v && !this.polyEditor) {
this.createPolyEditor().subscribe((/**
* @param {?} editor
* @return {?}
*/
function (editor) { return editor.open(); }));
return;
}
if (this.polyEditor) {
if (v) {
this.polyEditor.open();
}
else {
this.polyEditor.close();
}
}
};
AmapBezierCurveService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AmapBezierCurveService.ctorParameters = function () { return [
{ type: AMapService },
{ type: LoggerService },
{ type: NgZone },
{ type: PluginLoaderService }
]; };
return AmapBezierCurveService;
}());
export { AmapBezierCurveService };
if (false) {
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.bezierCurve;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.bezierCurve$;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.editor;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.editor$;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.polyEditor;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.polyEditor$;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.logger;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.ngZone;
/**
* @type {?}
* @private
*/
AmapBezierCurveService.prototype.plugins;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1iZXppZXItY3VydmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9hbWFwLWJlemllci1jdXJ2ZS9hbWFwLWJlemllci1jdXJ2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7SUFJbkUsR0FBRyxHQUFHLGlCQUFpQjtBQUU3QjtJQVNFLGdDQUNVLEtBQWtCLEVBQ2xCLE1BQXFCLEVBQ3JCLE1BQWMsRUFDZCxPQUE0QjtRQUg1QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBVjlCLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7SUFPN0MsQ0FBQztJQUVKOztPQUVHOzs7OztJQUNILG9DQUFHOzs7O0lBQUg7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsdUNBQU07Ozs7O0lBQU4sVUFBTyxPQUFpQztRQUF4QyxpQkFXQztRQVZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQzFCLEdBQUc7Ozs7UUFBQyxVQUFBLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLENBQUMsV0FBVyxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCOzs7WUFBQyxjQUFNLE9BQUEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUE3QixDQUE2QixFQUFDLENBQUM7WUFDdEYsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLENBQUM7WUFDL0MsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pDLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFCLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsd0NBQU87Ozs7SUFBUDtRQUFBLGlCQU1DO1FBTEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLENBQUM7WUFDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQzdDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELDBDQUFTOzs7SUFBVDtRQUNFLHFCQUFxQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELDhDQUFhOzs7SUFBYjtRQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsMkNBQVU7Ozs7SUFBVjtRQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7O0lBRUQsK0NBQWM7OztJQUFkO1FBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCw2Q0FBWTs7OztJQUFaO1FBQUEsaUJBV0M7UUFWQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQzNCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUM5QyxHQUFHOzs7O1FBQUMsVUFBQyxFQUFNO2dCQUFOLDBCQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7WUFDUixLQUFJLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCOzs7WUFBQyxjQUFNLE9BQUEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFoQyxDQUFnQyxFQUFDLENBQUM7WUFDcEYsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFDckQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLEtBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsT0FBTyxLQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7O0lBRUQsaURBQWdCOzs7SUFBaEI7UUFBQSxpQkFXQztRQVZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQzlDLEdBQUc7Ozs7UUFBQyxVQUFDLEVBQU07Z0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztZQUNSLEtBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUI7OztZQUFDLGNBQU0sT0FBQSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUF6QixDQUF5QixFQUFDLENBQUM7WUFDakYsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFDOUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLEtBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7SUFDSCw2Q0FBWTs7Ozs7SUFBWixVQUFhLENBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQWIsQ0FBYSxFQUFDLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNwQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVELGlEQUFnQjs7OztJQUFoQixVQUFpQixDQUFVO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQWIsQ0FBYSxFQUFDLENBQUM7WUFDM0QsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN6QjtTQUNGO0lBQ0gsQ0FBQzs7Z0JBcElGLFVBQVU7Ozs7Z0JBUkYsV0FBVztnQkFDWCxhQUFhO2dCQUpELE1BQU07Z0JBS2xCLG1CQUFtQjs7SUEySTVCLDZCQUFDO0NBQUEsQUFySUQsSUFxSUM7U0FwSVksc0JBQXNCOzs7Ozs7SUFDakMsNkNBQXlCOzs7OztJQUN6Qiw4Q0FBaUQ7Ozs7O0lBQ2pELHdDQUFvQjs7Ozs7SUFDcEIseUNBQTRDOzs7OztJQUM1Qyw0Q0FBd0I7Ozs7O0lBQ3hCLDZDQUFnRDs7Ozs7SUFHOUMsdUNBQTBCOzs7OztJQUMxQix3Q0FBNkI7Ozs7O0lBQzdCLHdDQUFzQjs7Ozs7SUFDdEIseUNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcEJlemllckN1cnZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBCZXppZXJDdXJ2ZVNlcnZpY2UgaW1wbGVtZW50cyBHZXR0ZXI8QU1hcC5CZXppZXJDdXJ2ZT4ge1xuICBwcml2YXRlIGJlemllckN1cnZlOiBhbnk7XG4gIHByaXZhdGUgYmV6aWVyQ3VydmUkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBlZGl0b3IkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBwb2x5RWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgcG9seUVkaXRvciQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zOiBQbHVnaW5Mb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPlui0neeRn+WwlOabsue6v1xuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rotJ3nkZ/lsJTmm7Lnur8gQU1hcC5CZXppZXJDdXJ2ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcbiAgICovXG4gIGNyZWF0ZShvcHRpb25zOiBBTWFwLkJlemllckN1cnZlLk9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5hbWFwcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKG0gPT4ge1xuICAgICAgICBvcHRpb25zLm1hcCA9IG07XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgQU1hcC5CZXppZXJDdXJ2ZShvcHRpb25zKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbmV3IEJlemllckN1cnZlIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLm5leHQodGhpcy5iZXppZXJDdXJ2ZSk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDplIDmr4HotJ3nkZ/lsJTmm7Lnur9cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5nZXQoKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICBtLnNldE1hcChudWxsKTtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnQmV6aWVyQ3VydmUgZGVzdHJveWVkLicpO1xuICAgICAgdGhpcy5iZXppZXJDdXJ2ZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0b3IoKSB7XG4gICAgLy8gcGx1Z2luIGlzIGxvYWRpbmc6XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9seUVkaXRvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L2957yW6L6R5o+S5Lu2XG4gICAqL1xuICBsb2FkRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbnMubG9hZCgnQU1hcC5CZXppZXJDdXJ2ZUVkaXRvcicpO1xuICB9XG5cbiAgbG9hZFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5sb2FkKCdBTWFwLlBvbHlFZGl0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rnvJbovpHlmahcbiAgICovXG4gIGNyZWF0ZUVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRWRpdG9yKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcFRvKHppcCh0aGlzLmFtYXBzLmdldCgpLCB0aGlzLmdldCgpKSksXG4gICAgICBtYXAoKFttLCBwXSkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLkJlemllckN1cnZlRWRpdG9yKG0sIHApKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgQmV6aWVyQ3VydmVFZGl0b3IgY3JlYXRlZC4nKTtcbiAgICAgICAgdGhpcy5lZGl0b3IkLm5leHQodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLmVkaXRvciQuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFBvbHlFZGl0b3IoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwVG8oemlwKHRoaXMuYW1hcHMuZ2V0KCksIHRoaXMuZ2V0KCkpKSxcbiAgICAgIG1hcCgoW20sIHBdKSA9PiB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLlBvbHlFZGl0b3IobSwgcCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ25ldyBQb2x5RWRpdG9yIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciQubmV4dCh0aGlzLnBvbHlFZGl0b3IpO1xuICAgICAgICB0aGlzLnBvbHlFZGl0b3IkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnBvbHlFZGl0b3I7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOW8gOWFs+e8lui+keWZqFxuICAgKiBAcGFyYW0gdiDlvIDlhbPpgInpoblcbiAgICovXG4gIHRvZ2dsZUVkaXRvcih2OiBib29sZWFuKSB7XG4gICAgaWYgKHYgJiYgIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICBpZiAodikge1xuICAgICAgICB0aGlzLmVkaXRvci5vcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVBvbHlFZGl0b3IodjogYm9vbGVhbikge1xuICAgIGlmICh2ICYmICF0aGlzLnBvbHlFZGl0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlUG9seUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9seUVkaXRvcikge1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgdGhpcy5wb2x5RWRpdG9yLm9wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19