atr-components 0.2.300 → 0.2.302

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.
@@ -57,6 +57,7 @@ export declare class ToolsUtil {
57
57
  static notEmpty(...arr: any[]): boolean;
58
58
  static hasEmpty(...arr: any[]): boolean;
59
59
  static allEmpty(...arr: any[]): boolean;
60
+ static isEmpty(obj: any): boolean;
60
61
  static encodeValue(params: any): any;
61
62
  static windowHeight(): number;
62
63
  static windowWidth(): number;
@@ -64,4 +65,24 @@ export declare class ToolsUtil {
64
65
  maxHeight: string;
65
66
  'overflow-y': string;
66
67
  };
68
+ static getRotateNum(pointB: {
69
+ x1: any;
70
+ y1: any;
71
+ }, pointC: {
72
+ x1: any;
73
+ y1: any;
74
+ }, pointA: {
75
+ x1: any;
76
+ y1: any;
77
+ }): number;
78
+ static getRotatePoint(p: {
79
+ x1: any;
80
+ y1: any;
81
+ }, center: {
82
+ x1: any;
83
+ y1: any;
84
+ }, rotate: any): {
85
+ x1: number;
86
+ y1: number;
87
+ };
67
88
  }
@@ -367,6 +367,24 @@ export class ToolsUtil {
367
367
  static allEmpty(...arr) {
368
368
  return arr.every(item => !item);
369
369
  }
370
+ static isEmpty(obj) {
371
+ if (obj === undefined) {
372
+ return true;
373
+ }
374
+ if (obj === null) {
375
+ return true;
376
+ }
377
+ if (typeof obj == 'boolean') {
378
+ return false;
379
+ }
380
+ if (obj === 0) {
381
+ return false;
382
+ }
383
+ if (obj.trim() === '') {
384
+ return true;
385
+ }
386
+ return false;
387
+ }
370
388
  static encodeValue(params) {
371
389
  Object.keys(params).forEach(key => params[key] = encodeURIComponent(params[key]));
372
390
  return params;
@@ -380,6 +398,44 @@ export class ToolsUtil {
380
398
  static modaleStyle() {
381
399
  return { 'maxHeight': ToolsUtil.windowHeight() - 200 + 'px', 'overflow-y': 'auto' };
382
400
  }
401
+ static getRotateNum(pointB, pointC, pointA) {
402
+ //ABC中心点,起始点,终点
403
+ let AB = {};
404
+ let AC = {};
405
+ AB.x1 = pointB.x1 - pointA.x1;
406
+ AB.y1 = pointB.y1 - pointA.y1;
407
+ AC.x1 = pointC.x1 - pointA.x1;
408
+ AC.y1 = pointC.y1 - pointA.y1;
409
+ var direct = AB.x1 * AC.y1 - AB.y1 * AC.y1;
410
+ var lengthAB = Math.sqrt(Math.pow(pointA.x1 - pointB.x1, 2) +
411
+ Math.pow(pointA.y1 - pointB.y1, 2));
412
+ var lengthAC = Math.sqrt(Math.pow(pointA.x1 - pointC.x1, 2) +
413
+ Math.pow(pointA.y1 - pointC.y1, 2));
414
+ var lengthBC = Math.sqrt(Math.pow(pointB.x1 - pointC.x1, 2) +
415
+ Math.pow(pointB.y1 - pointC.y1, 2));
416
+ var cosA = (Math.pow(lengthAB, 2) + Math.pow(lengthAC, 2) -
417
+ Math.pow(lengthBC, 2)) / (2 * lengthAB * lengthAC);
418
+ var angleA = Math.round(Math.acos(cosA) * 180 / Math.PI);
419
+ if (direct < 0) {
420
+ return -angleA;
421
+ }
422
+ else {
423
+ return angleA;
424
+ }
425
+ }
426
+ //绕center点旋转rotate角度
427
+ static getRotatePoint(p, center, rotate) {
428
+ let startX = p.x1;
429
+ let startY = p.y1;
430
+ let a = center.x1;
431
+ let b = center.y1;
432
+ let x1 = a - Math.cos(rotate * Math.PI / 180) * (a - startX) + Math.sin(rotate * Math.PI / 180) * (b - startY);
433
+ let y1 = b - Math.cos(rotate * Math.PI / 180) * (b - startY) - Math.sin(rotate * Math.PI / 180) * (a - startX);
434
+ return {
435
+ x1: x1,
436
+ y1: y1
437
+ };
438
+ }
383
439
  }
384
440
  ToolsUtil.getOrgCode = function () {
385
441
  // var orgCode = '';
@@ -416,4 +472,4 @@ ToolsUtil.allEqual = (...array) => array.every(item => item === array[0]);
416
472
  * @param array
417
473
  */
418
474
  ToolsUtil.satisfiedFn = (callback, ...array) => array.every(callback);
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbHNVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS91dGlscy9Ub29sc1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sU0FBUztJQWlCcEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFHLDRHQUE0RyxDQUFDO1FBQ3ZILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNsQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztT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QUUsQ0FBQztJQUNsQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFO1FBQzFCLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoRDtJQUNELE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFBO0FBRU0sb0JBQVUsR0FBRyxVQUFVLFFBQWdCO0lBQzVDLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFBO0FBNE9NLGtCQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU5RTs7Ozs7R0FLRztBQUNJLHFCQUFXLEdBQUcsQ0FBQyxRQUFxQyxFQUFFLEdBQUcsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtqc29uLCBBdHJGb3JtT3B0LCBhdHJfc3RhdGljX2RhdGFzfSBmcm9tICcuLi9iYXNlL2F0ci1jb21tb24nO1xyXG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7SHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1NpbXBsZUNoYW5nZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7U2Vzc2lvblN0b3JhZ2VVdGlsfSBmcm9tICcuL3Nlc3Npb25zdG9yYWdlLnV0aWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2xzVXRpbCB7XHJcbiAgc3RhdGljIGdldE9yZ0NvZGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyB2YXIgb3JnQ29kZSA9ICcnO1xyXG4gICAgLy8gdmFyIGhyZWZzID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVxyXG4gICAgLy8gaWYgKGhyZWZzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAvLyAgIHZhciBwYXJhbVN0ciA9IGhyZWZzWzFdO1xyXG4gICAgLy8gICAvL+WPguaVsOWtl+espuS4sumHjOacieayoeW4piA9Py8jXHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBwYXJhbVN0ci5zcGxpdCgnPScpWzBdO1xyXG4gICAgLy8gICBvcmdDb2RlID0gb3JnQ29kZS5zcGxpdCgnPycpWzBdO1xyXG4gICAgLy8gICBvcmdDb2RlID0gb3JnQ29kZS5zcGxpdCgnLycpWzBdO1xyXG4gICAgLy8gICBvcmdDb2RlID0gb3JnQ29kZS5zcGxpdCgnIycpWzBdO1xyXG4gICAgLy8gICBvcmdDb2RlID0gb3JnQ29kZS5zcGxpdCgnLycpWzBdO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0Jhc2U2NChzdHJpbmc6IGFueSkge1xyXG4gICAgbGV0IHJlZyA9IC9eXFxzKmRhdGE6KFthLXpdK1xcL1thLXowLTktKy5dKyg7W2Etei1dKz1bYS16MC05LV0rKT8pPyg7YmFzZTY0KT8sKFthLXowLTkhJCYnLCgpKis7PVxcLS5ffjpAXFwvPyVcXHNdKj8pXFxzKiQvaTtcclxuICAgIHJldHVybiByZWcudGVzdChzdHJpbmcpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0YVVSSXRvQmxvYihjb2RlOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhcnRzID0gY29kZS5zcGxpdCgnO2Jhc2U2NCwnKTtcclxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcGFydHNbMF0uc3BsaXQoJzonKVsxXTtcclxuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5hdG9iKHBhcnRzWzFdKTtcclxuICAgIGNvbnN0IHJhd0xlbmd0aCA9IHJhdy5sZW5ndGg7XHJcbiAgICBjb25zdCB1SW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkocmF3TGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3TGVuZ3RoOyArK2kpIHtcclxuICAgICAgdUludDhBcnJheVtpXSA9IHJhdy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBCbG9iKFt1SW50OEFycmF5XSwge3R5cGU6IGNvbnRlbnRUeXBlfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdWxsKHZhbDogYW55KSB7XHJcbiAgICBpZiAodmFsIHx8IFsnYm9vbGVhbicsICdzdHJpbmcnLCAnbnVtYmVyJ10uc29tZSh2ID0+IHR5cGVvZiB2YWwgPT0gdikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldENvbnRyb2xzQ29uZmlnKGRhdGFGcm9tOiBhbnksIHJlcXVpcmVkUnVsZTogc3RyaW5nW10pIHtcclxuICAgIGxldCBjb250cm9sc0NvbmZpZzogYW55ID0ge31cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGFGcm9tKSB7XHJcbiAgICAgIGlmIChyZXF1aXJlZFJ1bGUuc29tZShpdGVtID0+IGl0ZW0gPT0ga2V5KSkge1xyXG4gICAgICAgIGNvbnRyb2xzQ29uZmlnW2tleV0gPSBbZGF0YUZyb21ba2V5XSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRyb2xzQ29uZmlnW2tleV0gPSBbZGF0YUZyb21ba2V5XV1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRyb2xzQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGh0dHBTdWNjZXMocmVzOiBhbnkpIHtcclxuICAgIHJldHVybiBbJzIwMCcsICcyMDEnXS5zb21lKHYgPT4gcmVzLnN0YXR1cyA9PSB2KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICrliKTmlq3ngrnmmK/lkKblnKjlnZDmoIfljLrln5/lhoVcclxuICAgKiBAcGFyYW0gcCDliKTlrprnmoTngrlcclxuICAgKiBAcGFyYW0gcG9pbnRzQXJyXHJcbiAgICovXHJcbiAgc3RhdGljIGp1ZGdlSW5SZWMocDogeyB4MTogYW55LCB5MTogYW55IH0sIHBvaW50c0FycjogeyB4MTogYW55LCB5MTogYW55IH1bXSkge1xyXG4gICAgbGV0IHB4ID0gTnVtYmVyKHAueDEpLCBweSA9IE51bWJlcihwLnkxKSxcclxuICAgICAgZmxhZyA9IGZhbHNlLC8v56m/6LaK6L655qGGXHJcbiAgICAgIGluUmVjdCA9IGZhbHNlOy8v5piv5ZCm5Zyo5aSa6L655b2i55qE6L655oiW6ICF56uv54K55LiKXHJcbiAgICBsZXQgc3RhcnQgPSBwb2ludHNBcnJbMF07XHJcbiAgICBsZXQgZW5kID0gcG9pbnRzQXJyW3BvaW50c0Fyci5sZW5ndGggLSAxXTtcclxuICAgIC8v5aaC5p6c5pWw57uE6aaW5bC+5rKh5pyJ55u46L+eLOaJi+WKqOa3u+WKoFxyXG4gICAgcG9pbnRzQXJyID0gc3RhcnQueDEgIT0gZW5kLngxIHx8IHN0YXJ0LnkxICE9IGVuZC55MSA/IHBvaW50c0Fyci5jb25jYXQoc3RhcnQpIDogcG9pbnRzQXJyO1xyXG4gICAgLy/lsITnur/pgInlj5ZZ5Z2Q5qCH5LiN5Y+YLHjmraPmlrnlkJFcclxuICAgIHBvaW50c0Fyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT0gcG9pbnRzQXJyLmxlbmd0aCAtIDFcclxuICAgICAgICB8fCBpblJlY3QvL+WcqOWkmui+ueW9oueahOi+ueaIluiAheerr+eCueS4iuinhuS4uuWcqOWMuuWfn+WGhVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgZW5kUG9pbnQgPSBwb2ludHNBcnJbaW5kZXggKyAxXVxyXG4gICAgICBjb25zdCBzdGFydFggPSBOdW1iZXIoaXRlbS54MSksIHN0YXJ0WSA9IE51bWJlcihpdGVtLnkxKSxcclxuICAgICAgICBlbmRYID0gTnVtYmVyKGVuZFBvaW50LngxKSwgZW5kWSA9IE51bWJlcihlbmRQb2ludC55MSk7XHJcbiAgICAgIC8v5Yik5pat54K55piv5ZCm5Zyo56uv54K55LiKXHJcbiAgICAgIGlmICgocHggPT0gc3RhcnRYICYmIHB5ID09IHN0YXJ0WSlcclxuICAgICAgICB8fCAocHggPT0gZW5kWCAmJiBweCA9PSBlbmRZKSkge1xyXG4gICAgICAgIGluUmVjdCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+WIpOaWreWwhOe6v+mHjeWQiOW5tuS4lOeCueWcqOi+ueS4ilxyXG4gICAgICBpZiAoKHN0YXJ0WSA9PSBlbmRZICYmIGVuZFkgPT0gcHkpXHJcbiAgICAgICAgJiYgKChweCA+IGVuZFggJiYgcHggPCBzdGFydFhcclxuICAgICAgICAgIHx8IChweCA8IGVuZFggJiYgcHggPiBzdGFydFgpKSkpIHtcclxuICAgICAgICBpblJlY3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKChzdGFydFkgPCBweSAmJiBlbmRZID49IHB5KVxyXG4gICAgICAgIHx8IChzdGFydFkgPj0gcHkgJiYgZW5kWSA8IHB5KSkge1xyXG5cclxuICAgICAgICAvL+axguWwhOe6v+S4jue6v+auteS6pOeCueeahHjlnZDmoIcseeWdkOagh+i/mOaYr3B5XHJcbiAgICAgICAgbGV0IHggPSBzdGFydFggKyAocHkgLSBzdGFydFkpICogKGVuZFggLSBzdGFydFgpIC8gKGVuZFkgLSBzdGFydFkpO1xyXG4gICAgICAgIC8v54K55Zyo6L655LiKXHJcbiAgICAgICAgaWYgKHggPT0gcHgpIHtcclxuICAgICAgICAgIGluUmVjdCA9IHRydWVcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy945aSn5LqOcHjmnaXkv53or4HlsITnur/mnJ3lj7NcclxuICAgICAgICBpZiAoeCA+IHB4KSB7XHJcbiAgICAgICAgICBmbGFnID0gIWZsYWdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gaW5SZWN0IHx8IGZsYWc7XHJcblxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpZmZJbnB1dChjaG5nOiBTaW1wbGVDaGFuZ2UsIGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgaWYgKGNobmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjdXIgPSBKU09OLnN0cmluZ2lmeShjaG5nLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICBsZXQgcHJldiA9IEpTT04uc3RyaW5naWZ5KGNobmcucHJldmlvdXNWYWx1ZSk7XHJcbiAgICBpZiAoY3VyICE9PSBwcmV2KSB7XHJcbiAgICAgIGFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpZmZJbnB1dHMoY2huZzogU2ltcGxlQ2hhbmdlW10sIGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgaWYgKGNobmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgaWYgKGNobmcubGVuZ3RoID09IDApIHJldHVybjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2huZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGNobmdbaV07XHJcbiAgICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgY3VyID0gSlNPTi5zdHJpbmdpZnkoaXRlbS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICBsZXQgcHJldiA9IEpTT04uc3RyaW5naWZ5KGl0ZW0ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIGlmIChjdXIgIT09IHByZXYpIHtcclxuICAgICAgICBhY3Rpb24oKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRhdGFVUkx0b0Jsb2IoZGF0YXVybDogYW55KSB7XHJcbiAgICB2YXIgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpLCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcbiAgICAgIGJzdHIgPSBhdG9iKGFyclsxXSksIG4gPSBic3RyLmxlbmd0aCwgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcclxuICAgIHdoaWxlIChuLS0pIHtcclxuICAgICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW3U4YXJyXSwge3R5cGU6IG1pbWV9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkYXRhVVJMdG9GaWxlKGRhdGF1cmw6IGFueSwgZmlsZW5hbWU/OiBzdHJpbmcpIHtcclxuICAgIHZhciBhcnIgPSBkYXRhdXJsLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgbiA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG4gICAgd2hpbGUgKG4tLSkge1xyXG4gICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRmlsZShbdThhcnJdLCAoZmlsZW5hbWUgfHwgVG9vbHNVdGlsLmdldFJhbmRvbUZpbGVOYW1lKCkpLCB7dHlwZTogbWltZX0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFllc3RlcmRheShkYXk6IERhdGUpOiBEYXRlIHtcclxuXHJcbiAgICBsZXQgdGltZSA9IGRheS5nZXRUaW1lKCkgLSAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG4gICAgZGF5ID0gbmV3IERhdGUodGltZSk7XHJcblxyXG4gICAgcmV0dXJuIGRheTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRUb21vcnJvd2RheShkYXk6IERhdGUpOiBEYXRlIHtcclxuICAgIGxldCB0aW1lID0gZGF5LmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQ7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRpbWUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE5leHRNb250aChkYXk6IERhdGUpIHtcclxuICAgIGxldCBkcyA9IG5ldyBEYXRlKGRheSkuc2V0TW9udGgoZGF5LmdldE1vbnRoKCkgKyAxKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VmlkZW9Db3Zlcih1cmw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIFRvb2xzVXRpbC5nZXRPc3NVcmwodXJsKSArIFwiP3gtb3NzLXByb2Nlc3M9dmlkZW8vc25hcHNob3QsdF8xMDAwMCxtX2Zhc3RcIjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmaXN0RGF5T2ZNb250aChkYXk6IERhdGUpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZShkYXkpLnNldERhdGUoMSkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxhc3REYXlPZk1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKFRvb2xzVXRpbC5nZXROZXh0TW9udGgoZGF5KS5zZXREYXRlKDApKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRSYW5kb21GaWxlTmFtZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGNvbnN0IGV4cGVjdCA9IDE2O1xyXG4gICAgbGV0IHN0ciA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcclxuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgZXhwZWN0KSB7XHJcbiAgICAgIHN0ciArPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBleHBlY3QpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZpbGVFeHQgPSBmdW5jdGlvbiAoZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgdmFyIGluZGV4ID0gZmlsZU5hbWUubGFzdEluZGV4T2YoXCIuXCIpO1xyXG4gICAgdmFyIHN1ZmZpeCA9IGZpbGVOYW1lLnN1YnN0cihpbmRleCArIDEpO1xyXG4gICAgcmV0dXJuIHN1ZmZpeDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRIdHRwT3B0aW9ucygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtpc0NvbW1vbkh0dHBIZWFkZXI6IHRydWV9XHJcbiAgfVxyXG5cclxuXHJcbiAgc3RhdGljIHJlc2V0Rm9ybVZhbHVlKG9wdDogQXRyRm9ybU9wdCwganNvbjoganNvbik6IEF0ckZvcm1PcHQge1xyXG4gICAgZm9yIChsZXQgaXRlbSBvZiBvcHQuaXRlbXMpIHtcclxuICAgICAgaXRlbS52YWx1ZSA9IFwiXCI7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGpzb24pKSB7XHJcbiAgICAgICAgaWYgKGpzb24uaGFzT3duUHJvcGVydHkoa2V5KSAmJiBqc29uW2tleV0gIT0gbnVsbCAmJiBqc29uW2tleV0gIT0gdW5kZWZpbmVkICYmIGtleSA9PSBpdGVtLmtleSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZScpXHJcbiAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBuZXcgRGF0ZShqc29uW2tleV0pO1xyXG4gICAgICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IG5ldyBEYXRlKGpzb25ba2V5XSk7XHJcbiAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGpzb25ba2V5XVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1vbnRoOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IHN0ckRhdGU6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG5cclxuICAgIGlmIChtb250aCA8PSA5KSB7XHJcbiAgICAgIG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RyRGF0ZSA8PSA5KSB7XHJcbiAgICAgIHN0ckRhdGUgPSBcIjBcIiArIHN0ckRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSArIFwiLVwiICsgbW9udGggKyBcIi1cIiArIHN0ckRhdGVcclxuICAgIC8vICsgXCIgXCJcclxuICAgIC8vICsgZGF0ZS5nZXRIb3VycygpICsgXCI6XCIgKyBkYXRlLmdldE1pbnV0ZXMoKSArIFwiOlwiICsgZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Rm9ybWF0RGF0ZUZ1bGwoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBtb250aCArIFwiLVwiICsgc3RyRGF0ZSArIFwiIFwiICsgKGRhdGUuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRIb3VycygpIDogZGF0ZS5nZXRIb3VycygpKSArIFwiOlwiICsgKGRhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldE1pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpKSArIFwiOlwiICsgKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlV2l0aG91dFMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgICBsZXQgaG91cnM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgIGxldCBzZWNvbmRzOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgIGlmIChtb250aCA8PSA5KSB7XHJcbiAgICAgIG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RyRGF0ZSA8PSA5KSB7XHJcbiAgICAgIHN0ckRhdGUgPSBcIjBcIiArIHN0ckRhdGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaG91cnMgPD0gOSkge1xyXG4gICAgICBob3VycyA9IFwiMFwiICsgaG91cnM7XHJcbiAgICB9XHJcbiAgICBpZiAoc2Vjb25kcyA8PSA5KSB7XHJcbiAgICAgIHNlY29uZHMgPSBcIjBcIiArIHNlY29uZHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBtb250aCArIFwiLVwiICsgc3RyRGF0ZSArIFwiIFwiICsgaG91cnMgKyBcIjpcIiArIHNlY29uZHM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Rm9ybWF0RGF0ZUhvdXIoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgICBsZXQgaG91cnM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgIGxldCBzZWNvbmRzOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgIGlmIChtb250aCA8PSA5KSB7XHJcbiAgICAgIG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RyRGF0ZSA8PSA5KSB7XHJcbiAgICAgIHN0ckRhdGUgPSBcIjBcIiArIHN0ckRhdGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaG91cnMgPD0gOSkge1xyXG4gICAgICBob3VycyA9IFwiMFwiICsgaG91cnM7XHJcbiAgICB9XHJcbiAgICBpZiAoc2Vjb25kcyA8PSA5KSB7XHJcbiAgICAgIHNlY29uZHMgPSBcIjBcIiArIHNlY29uZHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCJcIiArIG1vbnRoICsgc3RyRGF0ZSArIGhvdXJzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE9zc1VybCh1cmw6IHN0cmluZywgbmVlZFRpbWUgPSBmYWxzZSkge1xyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBpZiAobmVlZFRpbWUpIHtcclxuICAgICAgLy8gdXJsID0gdXJsICsgXCI/dj1cIiArIFRvb2xzVXRpbC5nZXRGb3JtYXREYXRlSG91cihuZXcgRGF0ZSgpKTtcclxuICAgICAgdXJsID0gdXJsICsgXCI/dj1cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcbiAgICB9XHJcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgIHJldHVybiB1cmxcclxuICAgIH1cclxuICAgIGxldCByZXN1bHQgPSBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkwgKyB1cmxcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0U3RhdGljT3NzVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF0cl9zdGF0aWNfZGF0YXMuU1RBVElDX09TU19VUkwgKyB1cmw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmVtb3ZlSHRtbCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC88W148Pl0rPi9nLCAnJykucmVwbGFjZSgvJm5ic3A7L2lnLCAnJylcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtdWwoLi4ubnVtYmVyczogYW55KSB7XHJcbiAgICBpZiAobnVtYmVycy5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBtID0gdGhpcy5nZXREaWdpdChudW1iZXJzKTtcclxuICAgIGxldCByZXN1bHQgPSAxO1xyXG4gICAgbnVtYmVycy5mb3JFYWNoKFxyXG4gICAgICAobnVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgcyA9IG51bS50b1N0cmluZygpO1xyXG4gICAgICAgIHJlc3VsdCAqPSBOdW1iZXIocy5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gcmVzdWx0IC8gTWF0aC5wb3coMTAsIG0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERpZ2l0KC4uLm51bWJlcnM6IGFueVtdKSB7XHJcbiAgICBsZXQgbSA9IDA7XHJcbiAgICBudW1iZXJzLmZvckVhY2goXHJcbiAgICAgIG51bSA9PiB7XHJcbiAgICAgICAgbGV0IHMgPSBudW0udG9TdHJpbmcoKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbSArPSBzLnNwbGl0KFwiLlwiKVsxXS5sZW5ndGhcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIG07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZG93bmxvYWRJbWcoZGF0YTogYW55LCBmaWxlTmFtZT86IHN0cmluZywgZW5kcG9pbnQ/OiBzdHJpbmcpIHtcclxuICAgIC8vIC8vIOS4i+i9veexu+WeiyB4bHNcclxuICAgIC8vIGNvbnN0IGNvbnRlbnRUeXBlID0gJ2ltYWdlL2pwZWcnO1xyXG4gICAgLy8gLy8gY29uc3QgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnO1xyXG4gICAgLy8gLy8g5LiL6L2957G75Z6L77yaY3N2XHJcbiAgICAvLyBjb25zdCBkZWJ1ZyA9IHtoZWxsbzogXCJ3b3JsZFwifTtcclxuICAgIC8vIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbXSx7dHlwZSA6ICdpbWFnZS9qcGVnJ30pO1xyXG4gICAgLy8gY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAvL1xyXG4gICAgLy8gLy8g5omT5byA5paw56qX5Y+j5pa55byP6L+b6KGM5LiL6L29XHJcbiAgICAvLyAvLyB3aW5kb3cub3Blbih1cmwpO1xyXG4gICAgLy9cclxuICAgIC8vIC8vIOS7peWKqOaAgeWIm+W7umHmoIfnrb7ov5vooYzkuIvovb1cclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLmhyZWYgPSBkYXRhO1xyXG4gICAgLy8gYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lID8gZmlsZU5hbWUgOiBcIlwiICsgZW5kcG9pbnQ7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZG93bmxvYWRYbHModXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwpIHtcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgdXJsICs9IFwiP1wiO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICAgICAgaWYgKHBhcmFtc1trZXldKSB7XHJcbiAgICAgICAgICB1cmwgKz0ga2V5ICsgXCI9XCIgKyBwYXJhbXNba2V5XSArIFwiJiZcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gd2luZG93Lm9wZW4odXJsKTtcclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAvLyAvLyBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAvLyBhLmRvd25sb2FkID0gXCIzMzIxLnhsc1wiO1xyXG4gICAgYS5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEltZyh1cmw6IHN0cmluZywgcGFyYW06IGFueSA9IHtcclxuICAgIGltZ1c6IDAsIGltZ0g6IDAsXHJcbiAgICBuZWVkVGltZTogZmFsc2UsIGlzRnVsbFVybDogZmFsc2VcclxuICB9KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgZGF0YVVybDogYW55ID0gU2Vzc2lvblN0b3JhZ2VVdGlsLmdldEltZyh1cmwpXHJcbiAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKVxyXG4gICAgICBpbWcuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKVxyXG4gICAgICBpZiAoIWRhdGFVcmwpIHtcclxuICAgICAgICBpbWcuc3JjID0gcGFyYW0uaXNGdWxsVXJsID8gdXJsIDogVG9vbHNVdGlsLmdldE9zc1VybCh1cmwsIHBhcmFtLm5lZWRUaW1lKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBpbmRleCA9IGRhdGFVcmwuaW5kZXhPZihcIn1cIikgKyAxXHJcbiAgICAgICAgaW1nLnNyYyA9IGRhdGFVcmwuc2xpY2UoMCwgNTApICsgZGF0YVVybC5zbGljZShpbmRleCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgICAgIGxldCBjb250ZXh0MjogYW55ID0gYy5nZXRDb250ZXh0KFwiMmRcIilcclxuICAgICAgICBjLndpZHRoID0gcGFyYW0uaW1nVyB8fCBpbWcud2lkdGg7XHJcbiAgICAgICAgYy5oZWlnaHQgPSBwYXJhbS5pbWdIIHx8IGltZy5oZWlnaHRcclxuICAgICAgICBjb250ZXh0Mi5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjLndpZHRoLCBjLmhlaWdodClcclxuICAgICAgICBsZXQgZGF0YVVybCA9IGMudG9EYXRhVVJMKClcclxuICAgICAgICBsZXQgc3RyID0gYy53aWR0aCArIFwiLFwiICsgYy5oZWlnaHQgKyBcIn1cIlxyXG4gICAgICAgIGRhdGFVcmwgPSBkYXRhVXJsLnNsaWNlKDAsIDUwKSArIHN0ciArIGRhdGFVcmwuc2xpY2UoNTApXHJcbi8v5LiN5L+d5a2YXHJcbi8vICAgICAgICAgU2Vzc2lvblN0b3JhZ2VVdGlsLnNldEltZyh1cmwsIGRhdGFVcmwpXHJcblxyXG4gICAgICAgIHJlc29sdmUoaW1nKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwaXhlbFRvTnVtKHdpZHRoOiBhbnkpIHtcclxuICAgIGNvbnN0IHJlID0gL3B4L2dpO1xyXG4gICAgbGV0IHdpZHRoU3RyID0gd2lkdGgucmVwbGFjZShyZSwgXCJcIik7XHJcbiAgICByZXR1cm4gTnVtYmVyKHdpZHRoU3RyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhbGxFcXVhbCA9ICguLi5hcnJheTogYW55W10pID0+IGFycmF5LmV2ZXJ5KGl0ZW0gPT4gaXRlbSA9PT0gYXJyYXlbMF0pO1xyXG5cclxuICAvKipcclxuICAgKiBhcnJheeaJgOacieWPguaVsOa7oei2s2Zu5Ye95pWw6L+U5ZuedHJ1ZVxyXG4gICAqIGFsbCh4ID0+IHggPiAxLDEsMiwzKTsgLy8gdHJ1ZVxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqL1xyXG4gIHN0YXRpYyBzYXRpc2ZpZWRGbiA9IChjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuLCAuLi5hcnJheTogYW55W10pID0+IGFycmF5LmV2ZXJ5KGNhbGxiYWNrKTtcclxuXHJcbiAgLy/lhajpg6jkuI3nqbrkuLp0cnVlXHJcbiAgc3RhdGljIG5vdEVtcHR5KC4uLmFycjogYW55W10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhcnIuZXZlcnkoaXRlbSA9PiAhIWl0ZW0pXHJcbiAgfVxyXG5cclxuICAvL+WMheWQq+epuuS4unRydWVcclxuICBzdGF0aWMgaGFzRW1wdHkoLi4uYXJyOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGFyci5zb21lKGl0ZW0gPT4gIWl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFsbEVtcHR5KC4uLmFycjogYW55W10pIHtcclxuICAgIHJldHVybiBhcnIuZXZlcnkoaXRlbSA9PiAhaXRlbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5jb2RlVmFsdWUocGFyYW1zOiBhbnkpIHtcclxuICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4gcGFyYW1zW2tleV0gPSBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tleV0pKTtcclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgd2luZG93SGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgd2luZG93V2lkdGgoKSB7XHJcblxyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtb2RhbGVTdHlsZSgpIHtcclxuICAgIHJldHVybiB7J21heEhlaWdodCc6IFRvb2xzVXRpbC53aW5kb3dIZWlnaHQoKSAtIDIwMCArICdweCcsICdvdmVyZmxvdy15JzogJ2F1dG8nfTtcclxuICB9XHJcbn1cclxuIl19
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbHNVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS91dGlscy9Ub29sc1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sU0FBUztJQWlCcEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFHLDRHQUE0RyxDQUFDO1FBQ3ZILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNsQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztT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RUQsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBNEIsRUFBRSxNQUE0QixFQUFFLE1BQTRCO1FBQzFHLGVBQWU7UUFDZixJQUFJLEVBQUUsR0FBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxFQUFFLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUE7UUFDMUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENB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QyxDQUFDO0lBQ2xELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7UUFDMUIsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hEO0lBQ0QsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUE7QUFFTSxvQkFBVSxHQUFHLFVBQVUsUUFBZ0I7SUFDNUMsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUE7QUE0T00sa0JBQVEsR0FBRyxDQUFDLEdBQUcsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7OztHQUtHO0FBQ0kscUJBQVcsR0FBRyxDQUFDLFFBQXFDLEVBQUUsR0FBRyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2pzb24sIEF0ckZvcm1PcHQsIGF0cl9zdGF0aWNfZGF0YXN9IGZyb20gJy4uL2Jhc2UvYXRyLWNvbW1vbic7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7U2ltcGxlQ2hhbmdlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTZXNzaW9uU3RvcmFnZVV0aWx9IGZyb20gJy4vc2Vzc2lvbnN0b3JhZ2UudXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVG9vbHNVdGlsIHtcclxuICBzdGF0aWMgZ2V0T3JnQ29kZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIHZhciBvcmdDb2RlID0gJyc7XHJcbiAgICAvLyB2YXIgaHJlZnMgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpXHJcbiAgICAvLyBpZiAoaHJlZnMubGVuZ3RoID49IDIpIHtcclxuICAgIC8vICAgdmFyIHBhcmFtU3RyID0gaHJlZnNbMV07XHJcbiAgICAvLyAgIC8v5Y+C5pWw5a2X56ym5Liy6YeM5pyJ5rKh5bimID0/LyNcclxuICAgIC8vICAgb3JnQ29kZSA9IHBhcmFtU3RyLnNwbGl0KCc9JylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCc/JylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcvJylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcjJylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcvJylbMF07XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmFzZTY0KHN0cmluZzogYW55KSB7XHJcbiAgICBsZXQgcmVnID0gL15cXHMqZGF0YTooW2Etel0rXFwvW2EtejAtOS0rLl0rKDtbYS16LV0rPVthLXowLTktXSspPyk/KDtiYXNlNjQpPywoW2EtejAtOSEkJicsKCkqKzs9XFwtLl9+OkBcXC8/JVxcc10qPylcXHMqJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZylcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkYXRhVVJJdG9CbG9iKGNvZGU6IGFueSkge1xyXG4gICAgY29uc3QgcGFydHMgPSBjb2RlLnNwbGl0KCc7YmFzZTY0LCcpO1xyXG4gICAgY29uc3QgY29udGVudFR5cGUgPSBwYXJ0c1swXS5zcGxpdCgnOicpWzFdO1xyXG4gICAgY29uc3QgcmF3ID0gd2luZG93LmF0b2IocGFydHNbMV0pO1xyXG4gICAgY29uc3QgcmF3TGVuZ3RoID0gcmF3Lmxlbmd0aDtcclxuICAgIGNvbnN0IHVJbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdMZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXdMZW5ndGg7ICsraSkge1xyXG4gICAgICB1SW50OEFycmF5W2ldID0gcmF3LmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW3VJbnQ4QXJyYXldLCB7dHlwZTogY29udGVudFR5cGV9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc051bGwodmFsOiBhbnkpIHtcclxuICAgIGlmICh2YWwgfHwgWydib29sZWFuJywgJ3N0cmluZycsICdudW1iZXInXS5zb21lKHYgPT4gdHlwZW9mIHZhbCA9PSB2KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Q29udHJvbHNDb25maWcoZGF0YUZyb206IGFueSwgcmVxdWlyZWRSdWxlOiBzdHJpbmdbXSkge1xyXG4gICAgbGV0IGNvbnRyb2xzQ29uZmlnOiBhbnkgPSB7fVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YUZyb20pIHtcclxuICAgICAgaWYgKHJlcXVpcmVkUnVsZS5zb21lKGl0ZW0gPT4gaXRlbSA9PSBrZXkpKSB7XHJcbiAgICAgICAgY29udHJvbHNDb25maWdba2V5XSA9IFtkYXRhRnJvbVtrZXldLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udHJvbHNDb25maWdba2V5XSA9IFtkYXRhRnJvbVtrZXldXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udHJvbHNDb25maWc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaHR0cFN1Y2NlcyhyZXM6IGFueSkge1xyXG4gICAgcmV0dXJuIFsnMjAwJywgJzIwMSddLnNvbWUodiA9PiByZXMuc3RhdHVzID09IHYpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKuWIpOaWreeCueaYr+WQpuWcqOWdkOagh+WMuuWfn+WGhVxyXG4gICAqIEBwYXJhbSBwIOWIpOWumueahOeCuVxyXG4gICAqIEBwYXJhbSBwb2ludHNBcnJcclxuICAgKi9cclxuICBzdGF0aWMganVkZ2VJblJlYyhwOiB7IHgxOiBhbnksIHkxOiBhbnkgfSwgcG9pbnRzQXJyOiB7IHgxOiBhbnksIHkxOiBhbnkgfVtdKSB7XHJcbiAgICBsZXQgcHggPSBOdW1iZXIocC54MSksIHB5ID0gTnVtYmVyKHAueTEpLFxyXG4gICAgICBmbGFnID0gZmFsc2UsLy/nqb/otorovrnmoYZcclxuICAgICAgaW5SZWN0ID0gZmFsc2U7Ly/mmK/lkKblnKjlpJrovrnlvaLnmoTovrnmiJbogIXnq6/ngrnkuIpcclxuICAgIGxldCBzdGFydCA9IHBvaW50c0FyclswXTtcclxuICAgIGxldCBlbmQgPSBwb2ludHNBcnJbcG9pbnRzQXJyLmxlbmd0aCAtIDFdO1xyXG4gICAgLy/lpoLmnpzmlbDnu4TpppblsL7msqHmnInnm7jov54s5omL5Yqo5re75YqgXHJcbiAgICBwb2ludHNBcnIgPSBzdGFydC54MSAhPSBlbmQueDEgfHwgc3RhcnQueTEgIT0gZW5kLnkxID8gcG9pbnRzQXJyLmNvbmNhdChzdGFydCkgOiBwb2ludHNBcnI7XHJcbiAgICAvL+WwhOe6v+mAieWPllnlnZDmoIfkuI3lj5gseOato+aWueWQkVxyXG4gICAgcG9pbnRzQXJyLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PSBwb2ludHNBcnIubGVuZ3RoIC0gMVxyXG4gICAgICAgIHx8IGluUmVjdC8v5Zyo5aSa6L655b2i55qE6L655oiW6ICF56uv54K55LiK6KeG5Li65Zyo5Yy65Z+f5YaFXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBlbmRQb2ludCA9IHBvaW50c0FycltpbmRleCArIDFdXHJcbiAgICAgIGNvbnN0IHN0YXJ0WCA9IE51bWJlcihpdGVtLngxKSwgc3RhcnRZID0gTnVtYmVyKGl0ZW0ueTEpLFxyXG4gICAgICAgIGVuZFggPSBOdW1iZXIoZW5kUG9pbnQueDEpLCBlbmRZID0gTnVtYmVyKGVuZFBvaW50LnkxKTtcclxuICAgICAgLy/liKTmlq3ngrnmmK/lkKblnKjnq6/ngrnkuIpcclxuICAgICAgaWYgKChweCA9PSBzdGFydFggJiYgcHkgPT0gc3RhcnRZKVxyXG4gICAgICAgIHx8IChweCA9PSBlbmRYICYmIHB4ID09IGVuZFkpKSB7XHJcbiAgICAgICAgaW5SZWN0ID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v5Yik5pat5bCE57q/6YeN5ZCI5bm25LiU54K55Zyo6L655LiKXHJcbiAgICAgIGlmICgoc3RhcnRZID09IGVuZFkgJiYgZW5kWSA9PSBweSlcclxuICAgICAgICAmJiAoKHB4ID4gZW5kWCAmJiBweCA8IHN0YXJ0WFxyXG4gICAgICAgICAgfHwgKHB4IDwgZW5kWCAmJiBweCA+IHN0YXJ0WCkpKSkge1xyXG4gICAgICAgIGluUmVjdCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHN0YXJ0WSA8IHB5ICYmIGVuZFkgPj0gcHkpXHJcbiAgICAgICAgfHwgKHN0YXJ0WSA+PSBweSAmJiBlbmRZIDwgcHkpKSB7XHJcblxyXG4gICAgICAgIC8v5rGC5bCE57q/5LiO57q/5q615Lqk54K555qEeOWdkOaghyx55Z2Q5qCH6L+Y5pivcHlcclxuICAgICAgICBsZXQgeCA9IHN0YXJ0WCArIChweSAtIHN0YXJ0WSkgKiAoZW5kWCAtIHN0YXJ0WCkgLyAoZW5kWSAtIHN0YXJ0WSk7XHJcbiAgICAgICAgLy/ngrnlnKjovrnkuIpcclxuICAgICAgICBpZiAoeCA9PSBweCkge1xyXG4gICAgICAgICAgaW5SZWN0ID0gdHJ1ZVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL3jlpKfkuo5weOadpeS/neivgeWwhOe6v+acneWPs1xyXG4gICAgICAgIGlmICh4ID4gcHgpIHtcclxuICAgICAgICAgIGZsYWcgPSAhZmxhZ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBpblJlY3QgfHwgZmxhZztcclxuXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGlmZklucHV0KGNobmc6IFNpbXBsZUNoYW5nZSwgYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBpZiAoY2huZyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGN1ciA9IEpTT04uc3RyaW5naWZ5KGNobmcuY3VycmVudFZhbHVlKTtcclxuICAgIGxldCBwcmV2ID0gSlNPTi5zdHJpbmdpZnkoY2huZy5wcmV2aW91c1ZhbHVlKTtcclxuICAgIGlmIChjdXIgIT09IHByZXYpIHtcclxuICAgICAgYWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGlmZklucHV0cyhjaG5nOiBTaW1wbGVDaGFuZ2VbXSwgYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBpZiAoY2huZyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICBpZiAoY2huZy5sZW5ndGggPT0gMCkgcmV0dXJuO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaG5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gY2huZ1tpXTtcclxuICAgICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgIGxldCBjdXIgPSBKU09OLnN0cmluZ2lmeShpdGVtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIGxldCBwcmV2ID0gSlNPTi5zdHJpbmdpZnkoaXRlbS5wcmV2aW91c1ZhbHVlKTtcclxuICAgICAgaWYgKGN1ciAhPT0gcHJldikge1xyXG4gICAgICAgIGFjdGlvbigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0YVVSTHRvQmxvYihkYXRhdXJsOiBhbnkpIHtcclxuICAgIHZhciBhcnIgPSBkYXRhdXJsLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgbiA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG4gICAgd2hpbGUgKG4tLSkge1xyXG4gICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQmxvYihbdThhcnJdLCB7dHlwZTogbWltZX0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRhdGFVUkx0b0ZpbGUoZGF0YXVybDogYW55LCBmaWxlbmFtZT86IHN0cmluZykge1xyXG4gICAgdmFyIGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKSwgbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdLFxyXG4gICAgICBic3RyID0gYXRvYihhcnJbMV0pLCBuID0gYnN0ci5sZW5ndGgsIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcbiAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGaWxlKFt1OGFycl0sIChmaWxlbmFtZSB8fCBUb29sc1V0aWwuZ2V0UmFuZG9tRmlsZU5hbWUoKSksIHt0eXBlOiBtaW1lfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0WWVzdGVyZGF5KGRheTogRGF0ZSk6IERhdGUge1xyXG5cclxuICAgIGxldCB0aW1lID0gZGF5LmdldFRpbWUoKSAtIDEwMDAgKiA2MCAqIDYwICogMjQ7XHJcbiAgICBkYXkgPSBuZXcgRGF0ZSh0aW1lKTtcclxuXHJcbiAgICByZXR1cm4gZGF5O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFRvbW9ycm93ZGF5KGRheTogRGF0ZSk6IERhdGUge1xyXG4gICAgbGV0IHRpbWUgPSBkYXkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNDtcclxuXHJcbiAgICByZXR1cm4gbmV3IERhdGUodGltZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0TmV4dE1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgbGV0IGRzID0gbmV3IERhdGUoZGF5KS5zZXRNb250aChkYXkuZ2V0TW9udGgoKSArIDEpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRWaWRlb0NvdmVyKHVybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gVG9vbHNVdGlsLmdldE9zc1VybCh1cmwpICsgXCI/eC1vc3MtcHJvY2Vzcz12aWRlby9zbmFwc2hvdCx0XzEwMDAwLG1fZmFzdFwiO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpc3REYXlPZk1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKGRheSkuc2V0RGF0ZSgxKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbGFzdERheU9mTW9udGgoZGF5OiBEYXRlKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoVG9vbHNVdGlsLmdldE5leHRNb250aChkYXkpLnNldERhdGUoMCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFJhbmRvbUZpbGVOYW1lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgY29uc3QgZXhwZWN0ID0gMTY7XHJcbiAgICBsZXQgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xyXG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCBleHBlY3QpIHtcclxuICAgICAgc3RyICs9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGV4cGVjdCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RmlsZUV4dCA9IGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICB2YXIgaW5kZXggPSBmaWxlTmFtZS5sYXN0SW5kZXhPZihcIi5cIik7XHJcbiAgICB2YXIgc3VmZml4ID0gZmlsZU5hbWUuc3Vic3RyKGluZGV4ICsgMSk7XHJcbiAgICByZXR1cm4gc3VmZml4O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEh0dHBPcHRpb25zKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge2lzQ29tbW9uSHR0cEhlYWRlcjogdHJ1ZX1cclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgcmVzZXRGb3JtVmFsdWUob3B0OiBBdHJGb3JtT3B0LCBqc29uOiBqc29uKTogQXRyRm9ybU9wdCB7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIG9wdC5pdGVtcykge1xyXG4gICAgICBpdGVtLnZhbHVlID0gXCJcIjtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoanNvbikpIHtcclxuICAgICAgICBpZiAoanNvbi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGpzb25ba2V5XSAhPSBudWxsICYmIGpzb25ba2V5XSAhPSB1bmRlZmluZWQgJiYga2V5ID09IGl0ZW0ua2V5KSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09ICdkYXRlJylcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IG5ldyBEYXRlKGpzb25ba2V5XSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gbmV3IERhdGUoanNvbltrZXldKTtcclxuICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0ganNvbltrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBtb250aCArIFwiLVwiICsgc3RyRGF0ZVxyXG4gICAgLy8gKyBcIiBcIlxyXG4gICAgLy8gKyBkYXRlLmdldEhvdXJzKCkgKyBcIjpcIiArIGRhdGUuZ2V0TWludXRlcygpICsgXCI6XCIgKyBkYXRlLmdldFNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlRnVsbChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGVXaXRob3V0UyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGxldCBob3Vyczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgbGV0IHNlY29uZHM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChob3VycyA8PSA5KSB7XHJcbiAgICAgIGhvdXJzID0gXCIwXCIgKyBob3VycztcclxuICAgIH1cclxuICAgIGlmIChzZWNvbmRzIDw9IDkpIHtcclxuICAgICAgc2Vjb25kcyA9IFwiMFwiICsgc2Vjb25kcztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyBob3VycyArIFwiOlwiICsgc2Vjb25kcztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlSG91cihkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGxldCBob3Vyczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgbGV0IHNlY29uZHM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChob3VycyA8PSA5KSB7XHJcbiAgICAgIGhvdXJzID0gXCIwXCIgKyBob3VycztcclxuICAgIH1cclxuICAgIGlmIChzZWNvbmRzIDw9IDkpIHtcclxuICAgICAgc2Vjb25kcyA9IFwiMFwiICsgc2Vjb25kcztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIlwiICsgbW9udGggKyBzdHJEYXRlICsgaG91cnM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0T3NzVXJsKHVybDogc3RyaW5nLCBuZWVkVGltZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIGlmIChuZWVkVGltZSkge1xyXG4gICAgICAvLyB1cmwgPSB1cmwgKyBcIj92PVwiICsgVG9vbHNVdGlsLmdldEZvcm1hdERhdGVIb3VyKG5ldyBEYXRlKCkpO1xyXG4gICAgICB1cmwgPSB1cmwgKyBcIj92PVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIH1cclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfVxyXG4gICAgbGV0IHJlc3VsdCA9IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIHVybFxyXG5cclxuICAgIHJldHVybiByZXN1bHRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRTdGF0aWNPc3NVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICByZXR1cm4gdXJsXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXRyX3N0YXRpY19kYXRhcy5TVEFUSUNfT1NTX1VSTCArIHVybDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZW1vdmVIdG1sKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLzxbXjw+XSs+L2csICcnKS5yZXBsYWNlKC8mbmJzcDsvaWcsICcnKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG11bCguLi5udW1iZXJzOiBhbnkpIHtcclxuICAgIGlmIChudW1iZXJzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG0gPSB0aGlzLmdldERpZ2l0KG51bWJlcnMpO1xyXG4gICAgbGV0IHJlc3VsdCA9IDE7XHJcbiAgICBudW1iZXJzLmZvckVhY2goXHJcbiAgICAgIChudW06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBzID0gbnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgcmVzdWx0ICo9IE51bWJlcihzLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQgLyBNYXRoLnBvdygxMCwgbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGlnaXQoLi4ubnVtYmVyczogYW55W10pIHtcclxuICAgIGxldCBtID0gMDtcclxuICAgIG51bWJlcnMuZm9yRWFjaChcclxuICAgICAgbnVtID0+IHtcclxuICAgICAgICBsZXQgcyA9IG51bS50b1N0cmluZygpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBtICs9IHMuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aFxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gbTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3dubG9hZEltZyhkYXRhOiBhbnksIGZpbGVOYW1lPzogc3RyaW5nLCBlbmRwb2ludD86IHN0cmluZykge1xyXG4gICAgLy8gLy8g5LiL6L2957G75Z6LIHhsc1xyXG4gICAgLy8gY29uc3QgY29udGVudFR5cGUgPSAnaW1hZ2UvanBlZyc7XHJcbiAgICAvLyAvLyBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc7XHJcbiAgICAvLyAvLyDkuIvovb3nsbvlnovvvJpjc3ZcclxuICAgIC8vIGNvbnN0IGRlYnVnID0ge2hlbGxvOiBcIndvcmxkXCJ9O1xyXG4gICAgLy8gY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtdLHt0eXBlIDogJ2ltYWdlL2pwZWcnfSk7XHJcbiAgICAvLyBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIC8vXHJcbiAgICAvLyAvLyDmiZPlvIDmlrDnqpflj6PmlrnlvI/ov5vooYzkuIvovb1cclxuICAgIC8vIC8vIHdpbmRvdy5vcGVuKHVybCk7XHJcbiAgICAvL1xyXG4gICAgLy8gLy8g5Lul5Yqo5oCB5Yib5bu6Yeagh+etvui/m+ihjOS4i+i9vVxyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IGRhdGE7XHJcbiAgICAvLyBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBhLmRvd25sb2FkID0gZmlsZU5hbWUgPyBmaWxlTmFtZSA6IFwiXCIgKyBlbmRwb2ludDtcclxuICAgIGEuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3dubG9hZFhscyh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCkge1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICB1cmwgKz0gXCI/XCI7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgICBpZiAocGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgIHVybCArPSBrZXkgKyBcIj1cIiArIHBhcmFtc1trZXldICsgXCImJlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB3aW5kb3cub3Blbih1cmwpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIC8vIC8vIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIC8vIGEuZG93bmxvYWQgPSBcIjMzMjEueGxzXCI7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0SW1nKHVybDogc3RyaW5nLCBwYXJhbTogYW55ID0ge1xyXG4gICAgaW1nVzogMCwgaW1nSDogMCxcclxuICAgIG5lZWRUaW1lOiBmYWxzZSwgaXNGdWxsVXJsOiBmYWxzZVxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBkYXRhVXJsOiBhbnkgPSBTZXNzaW9uU3RvcmFnZVV0aWwuZ2V0SW1nKHVybClcclxuICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpXHJcbiAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpXHJcbiAgICAgIGlmICghZGF0YVVybCkge1xyXG4gICAgICAgIGltZy5zcmMgPSBwYXJhbS5pc0Z1bGxVcmwgPyB1cmwgOiBUb29sc1V0aWwuZ2V0T3NzVXJsKHVybCwgcGFyYW0ubmVlZFRpbWUpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gZGF0YVVybC5pbmRleE9mKFwifVwiKSArIDFcclxuICAgICAgICBpbWcuc3JjID0gZGF0YVVybC5zbGljZSgwLCA1MCkgKyBkYXRhVXJsLnNsaWNlKGluZGV4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXHJcbiAgICAgICAgbGV0IGNvbnRleHQyOiBhbnkgPSBjLmdldENvbnRleHQoXCIyZFwiKVxyXG4gICAgICAgIGMud2lkdGggPSBwYXJhbS5pbWdXIHx8IGltZy53aWR0aDtcclxuICAgICAgICBjLmhlaWdodCA9IHBhcmFtLmltZ0ggfHwgaW1nLmhlaWdodFxyXG4gICAgICAgIGNvbnRleHQyLmRyYXdJbWFnZShpbWcsIDAsIDAsIGMud2lkdGgsIGMuaGVpZ2h0KVxyXG4gICAgICAgIGxldCBkYXRhVXJsID0gYy50b0RhdGFVUkwoKVxyXG4gICAgICAgIGxldCBzdHIgPSBjLndpZHRoICsgXCIsXCIgKyBjLmhlaWdodCArIFwifVwiXHJcbiAgICAgICAgZGF0YVVybCA9IGRhdGFVcmwuc2xpY2UoMCwgNTApICsgc3RyICsgZGF0YVVybC5zbGljZSg1MClcclxuLy/kuI3kv53lrZhcclxuLy8gICAgICAgICBTZXNzaW9uU3RvcmFnZVV0aWwuc2V0SW1nKHVybCwgZGF0YVVybClcclxuXHJcbiAgICAgICAgcmVzb2x2ZShpbWcpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBpeGVsVG9OdW0od2lkdGg6IGFueSkge1xyXG4gICAgY29uc3QgcmUgPSAvcHgvZ2k7XHJcbiAgICBsZXQgd2lkdGhTdHIgPSB3aWR0aC5yZXBsYWNlKHJlLCBcIlwiKTtcclxuICAgIHJldHVybiBOdW1iZXIod2lkdGhTdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFsbEVxdWFsID0gKC4uLmFycmF5OiBhbnlbXSkgPT4gYXJyYXkuZXZlcnkoaXRlbSA9PiBpdGVtID09PSBhcnJheVswXSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIGFycmF55omA5pyJ5Y+C5pWw5ruh6LazZm7lh73mlbDov5Tlm550cnVlXHJcbiAgICogYWxsKHggPT4geCA+IDEsMSwyLDMpOyAvLyB0cnVlXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIGFycmF5XHJcbiAgICovXHJcbiAgc3RhdGljIHNhdGlzZmllZEZuID0gKGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IGJvb2xlYW4sIC4uLmFycmF5OiBhbnlbXSkgPT4gYXJyYXkuZXZlcnkoY2FsbGJhY2spO1xyXG5cclxuICAvL+WFqOmDqOS4jeepuuS4unRydWVcclxuICBzdGF0aWMgbm90RW1wdHkoLi4uYXJyOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeShpdGVtID0+ICEhaXRlbSlcclxuICB9XHJcblxyXG4gIC8v5YyF5ZCr56m65Li6dHJ1ZVxyXG4gIHN0YXRpYyBoYXNFbXB0eSguLi5hcnI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYXJyLnNvbWUoaXRlbSA9PiAhaXRlbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWxsRW1wdHkoLi4uYXJyOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeShpdGVtID0+ICFpdGVtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0VtcHR5KG9iajogYW55KSB7XHJcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGlmIChvYmogPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygb2JqID09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGlmIChvYmogPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBpZiAob2JqLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVuY29kZVZhbHVlKHBhcmFtczogYW55KSB7XHJcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goa2V5ID0+IHBhcmFtc1trZXldID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1trZXldKSk7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdpbmRvd0hlaWdodCgpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdpbmRvd1dpZHRoKCkge1xyXG5cclxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbW9kYWxlU3R5bGUoKSB7XHJcbiAgICByZXR1cm4geydtYXhIZWlnaHQnOiBUb29sc1V0aWwud2luZG93SGVpZ2h0KCkgLSAyMDAgKyAncHgnLCAnb3ZlcmZsb3cteSc6ICdhdXRvJ307XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Um90YXRlTnVtKHBvaW50QjogeyB4MTogYW55LCB5MTogYW55IH0sIHBvaW50QzogeyB4MTogYW55LCB5MTogYW55IH0sIHBvaW50QTogeyB4MTogYW55LCB5MTogYW55IH0pIHtcclxuICAgIC8vQUJD5Lit5b+D54K5LOi1t+Wni+eCuSznu4jngrlcclxuICAgIGxldCBBQjogYW55ID0ge307XHJcbiAgICBsZXQgQUM6IGFueSA9IHt9O1xyXG4gICAgQUIueDEgPSBwb2ludEIueDEgLSBwb2ludEEueDFcclxuICAgIEFCLnkxID0gcG9pbnRCLnkxIC0gcG9pbnRBLnkxXHJcbiAgICBBQy54MSA9IHBvaW50Qy54MSAtIHBvaW50QS54MVxyXG4gICAgQUMueTEgPSBwb2ludEMueTEgLSBwb2ludEEueTFcclxuICAgIHZhciBkaXJlY3QgPSBBQi54MSAqIEFDLnkxIC0gQUIueTEgKiBBQy55MVxyXG4gICAgdmFyIGxlbmd0aEFCID0gTWF0aC5zcXJ0KE1hdGgucG93KHBvaW50QS54MSAtIHBvaW50Qi54MSwgMikgK1xyXG4gICAgICBNYXRoLnBvdyhwb2ludEEueTEgLSBwb2ludEIueTEsIDIpKVxyXG4gICAgdmFyIGxlbmd0aEFDID0gTWF0aC5zcXJ0KE1hdGgucG93KHBvaW50QS54MSAtIHBvaW50Qy54MSwgMikgK1xyXG4gICAgICBNYXRoLnBvdyhwb2ludEEueTEgLSBwb2ludEMueTEsIDIpKVxyXG4gICAgdmFyIGxlbmd0aEJDID0gTWF0aC5zcXJ0KE1hdGgucG93KHBvaW50Qi54MSAtIHBvaW50Qy54MSwgMikgK1xyXG4gICAgICBNYXRoLnBvdyhwb2ludEIueTEgLSBwb2ludEMueTEsIDIpKVxyXG4gICAgdmFyIGNvc0EgPSAoTWF0aC5wb3cobGVuZ3RoQUIsIDIpICsgTWF0aC5wb3cobGVuZ3RoQUMsIDIpIC1cclxuICAgICAgTWF0aC5wb3cobGVuZ3RoQkMsIDIpKSAvICgyICogbGVuZ3RoQUIgKiBsZW5ndGhBQylcclxuICAgIHZhciBhbmdsZUEgPSBNYXRoLnJvdW5kKE1hdGguYWNvcyhjb3NBKSAqIDE4MCAvIE1hdGguUEkpXHJcbiAgICBpZiAoZGlyZWN0IDwgMCkge1xyXG4gICAgICByZXR1cm4gLWFuZ2xlQVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGFuZ2xlQVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8v57uVY2VudGVy54K55peL6L2scm90YXRl6KeS5bqmXHJcbiAgc3RhdGljIGdldFJvdGF0ZVBvaW50KHA6IHsgeDE6IGFueSwgeTE6IGFueSB9LCBjZW50ZXI6IHsgeDE6IGFueSwgeTE6IGFueSB9LCByb3RhdGU6IGFueSkge1xyXG4gICAgbGV0IHN0YXJ0WCA9IHAueDFcclxuICAgIGxldCBzdGFydFkgPSBwLnkxXHJcbiAgICBsZXQgYSA9IGNlbnRlci54MVxyXG4gICAgbGV0IGIgPSBjZW50ZXIueTFcclxuICAgIGxldCB4MSA9IGEgLSBNYXRoLmNvcyhyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKSAqIChhIC0gc3RhcnRYKSArIE1hdGguc2luKHJvdGF0ZSAqIE1hdGguUEkgLyAxODApICogKGIgLSBzdGFydFkpXHJcbiAgICBsZXQgeTEgPSBiIC0gTWF0aC5jb3Mocm90YXRlICogTWF0aC5QSSAvIDE4MCkgKiAoYiAtIHN0YXJ0WSkgLSBNYXRoLnNpbihyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKSAqIChhIC0gc3RhcnRYKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeDE6IHgxLFxyXG4gICAgICB5MTogeTFcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,5 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { atr_static_datas } from "../../../../core/base/atr-common";
3
+ import { ToolsUtil } from "../../../../core/utils/ToolsUtil";
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "ng-zorro-antd/switch";
5
6
  import * as i2 from "ng-zorro-antd/button";
@@ -89,15 +90,11 @@ export class TableTdComponent {
89
90
  let isShow = false;
90
91
  if (op.length > 1) {
91
92
  let value = data[op[0]];
92
- if (!value) {
93
- isShow = false;
94
- }
95
- else {
96
- isShow = this.compare(value, op[1], op[2]);
97
- }
93
+ isShow = this.compare(value, op[1], op[2]);
98
94
  }
99
- else
95
+ else {
100
96
  isShow = false;
97
+ }
101
98
  return isShow;
102
99
  }
103
100
  compare(value, operator, target) {
@@ -119,16 +116,10 @@ export class TableTdComponent {
119
116
  }
120
117
  break;
121
118
  case 'notEmpty':
122
- isRight = false;
123
- if (value) {
124
- isRight = true;
125
- }
119
+ isRight = !ToolsUtil.isEmpty(value);
126
120
  break;
127
121
  case 'empty':
128
- isRight = true;
129
- if (!!value) {
130
- isRight = false;
131
- }
122
+ isRight = ToolsUtil.isEmpty(value);
132
123
  break;
133
124
  default:
134
125
  isRight = false;
@@ -151,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
151
142
  }], doActionByRowAction: [{
152
143
  type: Output
153
144
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS10ZC90YWJsZS10ZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLXRkL3RhYmxlLXRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFxQixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLGdCQUFnQjtJQVUzQjtRQUxVLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsbUJBQWMsR0FBTyxPQUFPLENBQUE7UUFFNUIsZ0JBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFHdkMsQ0FBQztJQUNELGdCQUFnQixDQUFDLElBQVUsRUFBQyxJQUFRO1FBQ2xDLElBQUksS0FBSyxHQUFPLEVBQUUsQ0FBQTtRQUNsQixJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUM7WUFDcEIsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDakM7UUFDRCxJQUFHLElBQUksQ0FBQyxLQUFLLEVBQUM7WUFDWixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFRLEVBQUUsSUFBUSxFQUFFLEtBQWtCLEVBQUUsS0FBVTtRQUMvRCxJQUFJLENBQUMsbUJB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QyxDQUFDLEtBQUssRUFBRTtvQkFDWCxPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUNqQjtnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsTUFBTTtTQUNUO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7OEdBL0hVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDZKQ1Q3QixvbEpBdUVBOzRGRDlEYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzswRUFLZixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLENBQUM7c0JBQVQsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIFRhYmxlLCBUYWJsZUFjdGlvbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS10ZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXRkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS10ZC5jb21wb25lbnQuc2NzcycsICcuLi90YWJsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOmFueVxyXG4gIEBJbnB1dCgpIGl0ZW06IFRhYmxlIHxhbnk7XHJcbiAgQElucHV0KCkgaTphbnlcclxuXHJcbiAgQE91dHB1dCgpIGRvQWN0aW9uQnlSb3dBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBwb3BvdmVyVHJpZ2dlcjphbnkgPSAnaG92ZXInXHJcblxyXG4gIGltYWdlUHJlZml4ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbiAgZ2V0U3R5bGVDYWxsQmFjayhpdGVtOlRhYmxlLGRhdGE6YW55KXtcclxuICAgIGxldCBzdHlsZTphbnkgPSB7fVxyXG4gICAgaWYoaXRlbS5zdHlsZUNhbGxCYWNrKXtcclxuICAgICAgc3R5bGUgPSBpdGVtLnN0eWxlQ2FsbEJhY2soZGF0YSlcclxuICAgIH1cclxuICAgIGlmKGl0ZW0uY29sb3Ipe1xyXG4gICAgICBzdHlsZVsnY29sb3InXSA9IGl0ZW0uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3R5bGVcclxuICB9XHJcbiAgZG9BY3Rpb25Td2l0Y2goZGF0YTphbnksIGNvZGU6YW55LCBldmVudD86IE1vdXNlRXZlbnQsIGluZGV4PzphbnkpIHtcclxuICAgIHRoaXMuZG9BY3Rpb25CeVJvd0FjdGlvbi5lbWl0KHtkYXRhOiBkYXRhLCBjb2RlOiBjb2RlLCBldmVudDogZXZlbnQsIGluZGV4OiBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBjaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb25CeVJvdyhkYXRhOmFueSwgY29kZTphbnksIGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDphbnkpIHtcclxuICAgIHRoaXMuZG9BY3Rpb25CeVJvd0FjdGlvbi5lbWl0KHtkYXRhOiBkYXRhLCBjb2RlOiBjb2RlLCBldmVudDogZXZlbnQsIGluZGV4OiBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBlbnRlcihlOmFueSkge1xyXG4gICAgdGhpcy5wb3BvdmVyVHJpZ2dlciA9IGUudG9FbGVtZW50LmNsaWVudFdpZHRoIDwgZS50b0VsZW1lbnQuc2Nyb2xsV2lkdGggPyAnaG92ZXInIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGlzU2hvd0J0bihkYXRhOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcsIGFjdGlvbj86VGFibGVBY3Rpb24pOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gbnVsbCB8fCBvcGVyYXRvciA9PSBcIlwiKSB7XHJcbiAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSwgZGF0YSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnfHwnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3AsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNoZWNrSXNTaG93QmFzZShvcDphbnksIGRhdGE6YW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpZiAob3AubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgdmFsdWUgPSBkYXRhW29wWzBdXTtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlzU2hvdyA9IHRoaXMuY29tcGFyZSh2YWx1ZSwgb3BbMV0sIG9wWzJdKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2VcclxuICAgICAgaXNTaG93ID0gZmFsc2VcclxuXHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZSh2YWx1ZTphbnksIG9wZXJhdG9yOmFueSwgdGFyZ2V0OmFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzUmlnaHQgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcclxuICAgICAgY2FzZSAnZXEnIDpcclxuICAgICAgICBpZiAodmFsdWUgPT0gdGFyZ2V0KSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2doJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID49IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICduZSc6XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ25vdEVtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICBpZiAoISF2YWx1ZSkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdCA6XHJcbiAgICAgICAgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzUmlnaHQ7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lubmVySHRtbCdcIj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwiZ2V0U3R5bGVDYWxsQmFjayhpdGVtLGRhdGEpXCIgW2lubmVySFRNTF09XCJpdGVtLmlubmVySHRtbEJhY2soZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsLGRhdGEpIHwgc2FmZUh0bWxcIiAgPjwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Y29sb3InXCI+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCIgW25nU3R5bGVdPVwieydjb2xvcic6aXRlbS5jb2xvcn1cIlxyXG4gICAgICAgICAqbmdJZj1cIml0ZW0uY29sb3JTaG93ID09IGRhdGFbaXRlbS5rZXldXCI+PC9kaXY+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCIgKm5nSWY9XCJpdGVtLmNvbG9yU2hvdyAhPSBkYXRhW2l0ZW0ua2V5XVwiPjwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgPHNwYW4gbnotcG9wb3ZlciAobW91c2VlbnRlcik9XCJlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtuelBvcG92ZXJUcmlnZ2VyXT1cInBvcG92ZXJUcmlnZ2VyXCJcclxuICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICBbbnpQb3BvdmVyQ29udGVudF09XCJkYXRhW2l0ZW0ua2V5XSB8IGRhdGU6J3l5eXktTU0tZGQnIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cInZpZXctdGV4dFwiPnt7IGRhdGFbaXRlbS5rZXldIHwgZGF0ZToneXl5eS1NTS1kZCcgfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsfX08L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxyXG4gICAgICA8c3BhbiBuei1wb3BvdmVyIChtb3VzZWVudGVyKT1cImVudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbbnpQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyVHJpZ2dlclwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgIFtuelBvcG92ZXJDb250ZW50XT1cImRhdGFbaXRlbS5rZXldIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbTpzcycgfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ2aWV3LXRleHRcIj4ge3sgZGF0YVtpdGVtLmtleV0gfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tOnNzJyB8IGRlZlZhbDppdGVtLmRlZmF1bHRWYWx9fTwvc3Bhbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bnotc3dpdGNoICpuZ1N3aXRjaENhc2U9XCInc3dpdGNoJ1wiIFsobmdNb2RlbCldPVwiZGF0YVtpdGVtLmtleV1cIiBbbnpEaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkb0FjdGlvblN3aXRjaChkYXRhLGl0ZW0ua2V5KVwiIG56Q2hlY2tlZENoaWxkcmVuPVwi5pivXCIgbnpVbkNoZWNrZWRDaGlsZHJlbj1cIuWQplwiPlxyXG4gIDwvbnotc3dpdGNoPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzRGF0ZVRpbWUnXCI+XHJcbiAgICAgIDxzcGFuIG56LXBvcG92ZXIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtuelBvcG92ZXJUcmlnZ2VyXT1cInBvcG92ZXJUcmlnZ2VyXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDYWxsQmFjayhpdGVtLGRhdGEpXCJcclxuICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiZGF0YVtpdGVtLmtleV0gfCBkYXRlOidNTS1kZCBISDptbScgfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ2aWV3LXRleHRcIj4gIHt7IGRhdGFbaXRlbS5rZXldIHwgZGF0ZTonTU0tZGQgSEg6bW0nIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbH19PC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidmaXhlZFRleHQnXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDYWxsQmFjayhpdGVtLGRhdGEpXCIgW2lubmVySFRNTF09XCJpdGVtLmtleVwiPjwvZGl2PlxyXG5cclxuICA8aW1nICpuZ1N3aXRjaENhc2U9XCInaW1hZ2UnXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDYWxsQmFjayhpdGVtLGRhdGEpXCIgd2lkdGg9XCIzNXB4XCIgbnpTcmM9XCJ7eyhkYXRhW2l0ZW0ua2V5XSB8IGRlZlZhbDppdGVtLmRlZmF1bHRWYWwpIHwgb3NzSW1nfX1cIlxyXG4gICAgICAgbnotaW1hZ2UgYXRyRXJyb3JJbWcvPlxyXG4gIDxkaXYgbnotcm93ICpuZ1N3aXRjaENhc2U9XCInYWN0aW9uJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1hcmVhXCIgbnotY29sIFtuelNwYW5dPVwiMjRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGl0ZW0uYWN0aW9uc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3dCdG4oZGF0YSxhY3Rpb24ub3BlcmF0b3IsYWN0aW9uKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb24ud2l0aG91dFJvbGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBuei1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbbnpUeXBlXT1cImFjdGlvbi5idXR0b25UeXBlJiZhY3Rpb24uYnV0dG9uVHlwZSAhPSAnZGFuZ2VyJz8gYWN0aW9uLmJ1dHRvblR5cGUgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuekRhbmdlcl09XCJhY3Rpb24uYnV0dG9uVHlwZSA9PSAnZGFuZ2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgbnpTaXplPVwic21hbGxcIiAqYXRyUm9sZT1cImFjdGlvbi5jb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9BY3Rpb25CeVJvdyhkYXRhLGFjdGlvbi5jb2RlLCRldmVudCxpKVwiPlxyXG4gICAgICAgICAgICAgIDxpIG56LWljb24gKm5nSWY9XCJhY3Rpb24uaWNvblwiIFtuelR5cGVdPVwiYWN0aW9uLmljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAge3thY3Rpb24ubmFtZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24ud2l0aG91dFJvbGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBuei1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbbnpUeXBlXT1cImFjdGlvbi5idXR0b25UeXBlJiZhY3Rpb24uYnV0dG9uVHlwZSAhPSAnZGFuZ2VyJz8gYWN0aW9uLmJ1dHRvblR5cGUgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuekRhbmdlcl09XCJhY3Rpb24uYnV0dG9uVHlwZSA9PSAnZGFuZ2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwiZG9BY3Rpb25CeVJvdyhkYXRhLGFjdGlvbi5jb2RlLCRldmVudCxpKVwiPlxyXG4gICAgICAgICAgICAgIDxpIG56LWljb24gKm5nSWY9XCJhY3Rpb24uaWNvblwiIFtuelR5cGVdPVwiYWN0aW9uLmljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAge3thY3Rpb24ubmFtZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiBuei1idXR0b24gW256VHlwZV09XCIncHJpbWFyeSdcIiBuelNpemU9XCJzbWFsbFwiICphdHJSb2xlPVwiYWN0aW9uLmNvZGVcIiAoY2xpY2spPVwiZG9BY3Rpb25CeVJvdyhkYXRhLGFjdGlvbi5jb2RlLCRldmVudClcIj57e2FjdGlvbi5uYW1lXHJcbiAgICAgICAgICB9fTwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiICpuZ1N3aXRjaENhc2U9XCInZGljdCdcIiBbaW5uZXJIVE1MXT1cImRhdGFbaXRlbS5rZXldIHwgZGljdHM6aXRlbS5kaWN0Q29kZTonLCcgfCBhc3luYyB8IGRlZlZhbDppdGVtLmRlZmF1bHRWYWxcIj48L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiIG56LXBvcG92ZXIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICBbbnpQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyVHJpZ2dlclwiIFtuelBvcG92ZXJDb250ZW50XT0nZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsJ1xyXG4gICAgICAgY2xhc3M9XCJ2aWV3LXRleHRcIiAqbmdTd2l0Y2hEZWZhdWx0IFtpbm5lckhUTUxdPVwiZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCI+PC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS10ZC90YWJsZS10ZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLXRkL3RhYmxlLXRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFxQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzNELE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0I7UUFMVSx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hELG1CQUFjLEdBQU8sT0FBTyxDQUFBO1FBRTVCLGdCQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBR3ZDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUMsSUFBUTtRQUNsQyxJQUFJLEtBQUssR0FBTyxFQUFFLENBQUE7UUFDbEIsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFDO1lBQ3BCLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ2pDO1FBQ0QsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDO1lBQ1osS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDN0I7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxjQUFjLENBQUMsSUFBUSxFQUFFLElB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RyxLQUFLLENBQUM7Z0JBQ2hCLE1BQU07U0FDVDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OzhHQXRIVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw2SkNWN0Isb2xKQXVFQTs0RkQ3RGEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7MEVBS2YsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxDQUFDO3NCQUFULEtBQUs7Z0JBRUksbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZS9lbnZpcm9ubWVudHNcIjtcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBUYWJsZSwgVGFibGVBY3Rpb259IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS10ZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXRkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS10ZC5jb21wb25lbnQuc2NzcycsICcuLi90YWJsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOmFueVxyXG4gIEBJbnB1dCgpIGl0ZW06IFRhYmxlIHxhbnk7XHJcbiAgQElucHV0KCkgaTphbnlcclxuXHJcbiAgQE91dHB1dCgpIGRvQWN0aW9uQnlSb3dBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBwb3BvdmVyVHJpZ2dlcjphbnkgPSAnaG92ZXInXHJcblxyXG4gIGltYWdlUHJlZml4ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbiAgZ2V0U3R5bGVDYWxsQmFjayhpdGVtOlRhYmxlLGRhdGE6YW55KXtcclxuICAgIGxldCBzdHlsZTphbnkgPSB7fVxyXG4gICAgaWYoaXRlbS5zdHlsZUNhbGxCYWNrKXtcclxuICAgICAgc3R5bGUgPSBpdGVtLnN0eWxlQ2FsbEJhY2soZGF0YSlcclxuICAgIH1cclxuICAgIGlmKGl0ZW0uY29sb3Ipe1xyXG4gICAgICBzdHlsZVsnY29sb3InXSA9IGl0ZW0uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3R5bGVcclxuICB9XHJcbiAgZG9BY3Rpb25Td2l0Y2goZGF0YTphbnksIGNvZGU6YW55LCBldmVudD86IE1vdXNlRXZlbnQsIGluZGV4PzphbnkpIHtcclxuICAgIHRoaXMuZG9BY3Rpb25CeVJvd0FjdGlvbi5lbWl0KHtkYXRhOiBkYXRhLCBjb2RlOiBjb2RlLCBldmVudDogZXZlbnQsIGluZGV4OiBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBjaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb25CeVJvdyhkYXRhOmFueSwgY29kZTphbnksIGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDphbnkpIHtcclxuICAgIHRoaXMuZG9BY3Rpb25CeVJvd0FjdGlvbi5lbWl0KHtkYXRhOiBkYXRhLCBjb2RlOiBjb2RlLCBldmVudDogZXZlbnQsIGluZGV4OiBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBlbnRlcihlOmFueSkge1xyXG4gICAgdGhpcy5wb3BvdmVyVHJpZ2dlciA9IGUudG9FbGVtZW50LmNsaWVudFdpZHRoIDwgZS50b0VsZW1lbnQuc2Nyb2xsV2lkdGggPyAnaG92ZXInIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGlzU2hvd0J0bihkYXRhOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcsIGFjdGlvbj86VGFibGVBY3Rpb24pOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gbnVsbCB8fCBvcGVyYXRvciA9PSBcIlwiKSB7XHJcbiAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSwgZGF0YSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnfHwnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3AsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNoZWNrSXNTaG93QmFzZShvcDphbnksIGRhdGE6YW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpZiAob3AubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgdmFsdWUgPSBkYXRhW29wWzBdXTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jb21wYXJlKHZhbHVlLCBvcFsxXSwgb3BbMl0pXHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIGlzU2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6YW55LCBvcGVyYXRvcjphbnksIHRhcmdldDphbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbmUnOlxyXG4gICAgICAgIGlmICh2YWx1ZSAhPSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdub3RFbXB0eSc6XHJcbiAgICAgICAgaXNSaWdodCA9ICFUb29sc1V0aWwuaXNFbXB0eSh2YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gVG9vbHNVdGlsLmlzRW1wdHkodmFsdWUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaXRlbS50eXBlXCI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbm5lckh0bWwnXCI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiIFtpbm5lckhUTUxdPVwiaXRlbS5pbm5lckh0bWxCYWNrKGRhdGFbaXRlbS5rZXldIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbCxkYXRhKSB8IHNhZmVIdG1sXCIgID48L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGNvbG9yJ1wiPlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGFbaXRlbS5rZXldIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiIFtuZ1N0eWxlXT1cInsnY29sb3InOml0ZW0uY29sb3J9XCJcclxuICAgICAgICAgKm5nSWY9XCJpdGVtLmNvbG9yU2hvdyA9PSBkYXRhW2l0ZW0ua2V5XVwiPjwvZGl2PlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGFbaXRlbS5rZXldIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiICpuZ0lmPVwiaXRlbS5jb2xvclNob3cgIT0gZGF0YVtpdGVtLmtleV1cIj48L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgIDxzcGFuIG56LXBvcG92ZXIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbbnpQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyVHJpZ2dlclwiXHJcbiAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZUNhbGxCYWNrKGl0ZW0sZGF0YSlcIlxyXG4gICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiZGF0YVtpdGVtLmtleV0gfCBkYXRlOid5eXl5LU1NLWRkJyB8IGRlZlZhbDppdGVtLmRlZmF1bHRWYWxcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJ2aWV3LXRleHRcIj57eyBkYXRhW2l0ZW0ua2V5XSB8IGRhdGU6J3l5eXktTU0tZGQnIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbH19PC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cclxuICAgICAgPHNwYW4gbnotcG9wb3ZlciAobW91c2VlbnRlcik9XCJlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgW256UG9wb3ZlclRyaWdnZXJdPVwicG9wb3ZlclRyaWdnZXJcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZUNhbGxCYWNrKGl0ZW0sZGF0YSlcIlxyXG4gICAgICAgICAgICBbbnpQb3BvdmVyQ29udGVudF09XCJkYXRhW2l0ZW0ua2V5XSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW06c3MnIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidmlldy10ZXh0XCI+IHt7IGRhdGFbaXRlbS5rZXldIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbTpzcycgfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsfX08L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG56LXN3aXRjaCAqbmdTd2l0Y2hDYXNlPVwiJ3N3aXRjaCdcIiBbKG5nTW9kZWwpXT1cImRhdGFbaXRlbS5rZXldXCIgW256RGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZUNhbGxCYWNrKGl0ZW0sZGF0YSlcIlxyXG4gICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZG9BY3Rpb25Td2l0Y2goZGF0YSxpdGVtLmtleSlcIiBuekNoZWNrZWRDaGlsZHJlbj1cIuaYr1wiIG56VW5DaGVja2VkQ2hpbGRyZW49XCLlkKZcIj5cclxuICA8L256LXN3aXRjaD5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc0RhdGVUaW1lJ1wiPlxyXG4gICAgICA8c3BhbiBuei1wb3BvdmVyIChtb3VzZWVudGVyKT1cImVudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbbnpQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyVHJpZ2dlclwiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgIFtuelBvcG92ZXJDb250ZW50XT1cImRhdGFbaXRlbS5rZXldIHwgZGF0ZTonTU0tZGQgSEg6bW0nIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidmlldy10ZXh0XCI+ICB7eyBkYXRhW2l0ZW0ua2V5XSB8IGRhdGU6J01NLWRkIEhIOm1tJyB8IGRlZlZhbDppdGVtLmRlZmF1bHRWYWx9fTwvc3Bhbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZml4ZWRUZXh0J1wiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiIFtpbm5lckhUTUxdPVwiaXRlbS5rZXlcIj48L2Rpdj5cclxuXHJcbiAgPGltZyAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ2FsbEJhY2soaXRlbSxkYXRhKVwiIHdpZHRoPVwiMzVweFwiIG56U3JjPVwie3soZGF0YVtpdGVtLmtleV0gfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsKSB8IG9zc0ltZ319XCJcclxuICAgICAgIG56LWltYWdlIGF0ckVycm9ySW1nLz5cclxuICA8ZGl2IG56LXJvdyAqbmdTd2l0Y2hDYXNlPVwiJ2FjdGlvbidcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYXJlYVwiIG56LWNvbCBbbnpTcGFuXT1cIjI0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBpdGVtLmFjdGlvbnNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93QnRuKGRhdGEsYWN0aW9uLm9wZXJhdG9yLGFjdGlvbilcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uLndpdGhvdXRSb2xlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW256VHlwZV09XCJhY3Rpb24uYnV0dG9uVHlwZSYmYWN0aW9uLmJ1dHRvblR5cGUgIT0gJ2Rhbmdlcic/IGFjdGlvbi5idXR0b25UeXBlIDogJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICBbbnpEYW5nZXJdPVwiYWN0aW9uLmJ1dHRvblR5cGUgPT0gJ2RhbmdlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgIG56U2l6ZT1cInNtYWxsXCIgKmF0clJvbGU9XCJhY3Rpb24uY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQWN0aW9uQnlSb3coZGF0YSxhY3Rpb24uY29kZSwkZXZlbnQsaSlcIj5cclxuICAgICAgICAgICAgICA8aSBuei1pY29uICpuZ0lmPVwiYWN0aW9uLmljb25cIiBbbnpUeXBlXT1cImFjdGlvbi5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgIHt7YWN0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLndpdGhvdXRSb2xlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW256VHlwZV09XCJhY3Rpb24uYnV0dG9uVHlwZSYmYWN0aW9uLmJ1dHRvblR5cGUgIT0gJ2Rhbmdlcic/IGFjdGlvbi5idXR0b25UeXBlIDogJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICBbbnpEYW5nZXJdPVwiYWN0aW9uLmJ1dHRvblR5cGUgPT0gJ2RhbmdlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgIG56U2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImRvQWN0aW9uQnlSb3coZGF0YSxhY3Rpb24uY29kZSwkZXZlbnQsaSlcIj5cclxuICAgICAgICAgICAgICA8aSBuei1pY29uICpuZ0lmPVwiYWN0aW9uLmljb25cIiBbbnpUeXBlXT1cImFjdGlvbi5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgIHt7YWN0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8IS0tIDxidXR0b24gbnotYnV0dG9uIFtuelR5cGVdPVwiJ3ByaW1hcnknXCIgbnpTaXplPVwic21hbGxcIiAqYXRyUm9sZT1cImFjdGlvbi5jb2RlXCIgKGNsaWNrKT1cImRvQWN0aW9uQnlSb3coZGF0YSxhY3Rpb24uY29kZSwkZXZlbnQpXCI+e3thY3Rpb24ubmFtZVxyXG4gICAgICAgICAgfX08L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJnZXRTdHlsZUNhbGxCYWNrKGl0ZW0sZGF0YSlcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RpY3QnXCIgW2lubmVySFRNTF09XCJkYXRhW2l0ZW0ua2V5XSB8IGRpY3RzOml0ZW0uZGljdENvZGU6JywnIHwgYXN5bmMgfCBkZWZWYWw6aXRlbS5kZWZhdWx0VmFsXCI+PC9kaXY+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJnZXRTdHlsZUNhbGxCYWNrKGl0ZW0sZGF0YSlcIiBuei1wb3BvdmVyIChtb3VzZWVudGVyKT1cImVudGVyKCRldmVudClcIlxyXG4gICAgICAgW256UG9wb3ZlclRyaWdnZXJdPVwicG9wb3ZlclRyaWdnZXJcIiBbbnpQb3BvdmVyQ29udGVudF09J2RhdGFbaXRlbS5rZXldIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbCdcclxuICAgICAgIGNsYXNzPVwidmlldy10ZXh0XCIgKm5nU3dpdGNoRGVmYXVsdCBbaW5uZXJIVE1MXT1cImRhdGFbaXRlbS5rZXldIHwgZGVmVmFsOml0ZW0uZGVmYXVsdFZhbFwiPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbiJdfQ==
@@ -224,7 +224,16 @@ export class UploadComponent {
224
224
  delImg(numer) {
225
225
  console.log(numer);
226
226
  this.opts.imageList = this.opts.imageList.filter((v, i) => i != numer);
227
- // this.opts.imageList = numer
227
+ let fileUrls = [];
228
+ for (let file of this.opts.imageList) {
229
+ if (file["key"] != undefined) {
230
+ fileUrls.push(file["key"]);
231
+ continue;
232
+ }
233
+ if (file.originFileObj && file.originFileObj["key"] != undefined)
234
+ fileUrls.push(file.originFileObj["key"]);
235
+ }
236
+ this.afterChange.emit({ key: this.opts.key, values: fileUrls.join(",") });
228
237
  }
229
238
  priviewImg(img) {
230
239
  let url = ToolsUtil.getOssUrl(this.getImgUrl(img));
@@ -259,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
259
268
  }], onBeforeUpload: [{
260
269
  type: Output
261
270
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsV0FBVyxFQUFhLGFBQWEsRUFBRSxZQUFZLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFJbEgsT0FBTyxFQUFDLGdCQUFnQixFQUFZLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFReEQsTUFBTSxPQUFPLGVBQWU7SUE2QjFCLFlBQW9CLFFBQWtCLEVBQVUsY0FBOEIsRUFDMUQsVUFBc0IsRUFBVSxZQUE0QjtRQUQ1RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzFELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUEzQnZFLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUUvQixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLGVBQVUsR0FBUSxFQUFFLENBQUE7UUFFcEIsbUJBQWMsR0FBRztZQUNmLGVBQWUsRUFBRSxJQUFJ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SSxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQixHQUFHLEVBQUUsR0FBRztnQkFDUixHQUFHLEVBQUUsVUFBVTthQUNoQixDQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUTtRQUNoQixJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQTtTQUM3QjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNsQyxDQUFDOzs2R0FyUVUsZUFBZTtpR0FBZixlQUFlLHVPQ2hCNUIsK2hKQXFHQTs0RkRyRmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxnQkFBZ0I7a0xBTWpCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFhTixXQUFXO3NCQURWLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUdQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7SHR0cFJlcXVlc3QsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFJlc3BvbnNlLCBIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge056TW9kYWxSZWYsIE56TW9kYWxTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL21vZGFsJztcclxuaW1wb3J0IHtOelVwbG9hZENoYW5nZVBhcmFtLCBOelVwbG9hZEZpbGUsIE56VXBsb2FkWEhSQXJnc30gZnJvbSAnbmctem9ycm8tYW50ZC91cGxvYWQnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEltYWdlT3B0c30gZnJvbSBcIi4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcbmltcG9ydCB7TnpJbWFnZVNlcnZpY2V9IGZyb20gJ25nLXpvcnJvLWFudGQvaW1hZ2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItaW1nLXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIG9wdHM6IEltYWdlT3B0cyB8IGFueTtcclxuICBASW5wdXQoKSBpc0VkaXQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93Q2hhbmdTZXEgPSBmYWxzZTtcclxuICB0cGxNb2RhbDogTnpNb2RhbFJlZiB8IGFueTtcclxuICB1cGxvYWRVcmw6IGFueSA9IFwiXCI7XHJcblxyXG4gIHVwbG9hZERhdGE6IGFueSA9IHt9XHJcblxyXG4gIHNob3dVcGxvYWRMaXN0ID0ge1xyXG4gICAgc2hvd1ByZXZpZXdJY29uOiB0cnVlLFxyXG4gICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICBoaWRlUHJldmlld0ljb25Jbk5vbkltYWdlOiB0cnVlXHJcbiAgfTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgYWZ0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvcHRzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBvbkJlZm9yZVVwbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBwcmV2aWV3SW1hZ2U6IHN0cmluZyB8IGFueSA9ICcnO1xyXG4gIHByZXZpZXdWaXNpYmxlID0gZmFsc2U7XHJcbiAgY2hhbmdlVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBuekltYWdlU2VydmljZTogTnpJbWFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIG1vZGFsU2VydmljZTogTnpNb2RhbFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZVR5ZUljb24oZmlsZVR5cGU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgbGV0IHRodW1iVXJsID0gdGhpcy5nZXRGaWxlVGh1bWJVcmwoZmlsZVR5cGUpO1xyXG4gICAgaWYgKHRodW1iVXJsID09PSAnJykge1xyXG4gICAgICB0aHVtYlVybCA9IHRoaXMuZ2V0VGh1bWJVcmwoZmlsZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRodW1iVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGh1bWJVcmwocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAoIXBhdGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgLy8g5ZCO57yA6I635Y+WXHJcbiAgICBpZiAocGF0aC5lbmRzV2l0aCgnLm1wNCcpKSB7XHJcbiAgICAgIHJldHVybiAnLi4vLi4vLi4vYXNzZXRzL3ZpZGVvLmpwZyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlVGh1bWJVcmwodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0aHVtYlVybCA9ICcnO1xyXG4gICAgaWYgKHR5cGUgPT09ICd2aWRlby9tcDQnIHx8IHR5cGUgPT09ICdtcDQnKSB7XHJcbiAgICAgIHRodW1iVXJsID0gJy4uLy4uLy4uL2Fzc2V0cy92aWRlby5qcGcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRodW1iVXJsO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UocGFyYW1zOiBOelVwbG9hZENoYW5nZVBhcmFtKSB7XHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpO1xyXG4gICAgaWYgKHBhcmFtcy50eXBlID09IFwic3VjY2Vzc1wiIHx8IHBhcmFtcy50eXBlID09IFwicmVtb3ZlZFwiKSB7XHJcblxyXG4gICAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0ID0gW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub3B0cy5pbWFnZUxpc3QgPSBwYXJhbXMuZmlsZUxpc3QubWFwKChmaWxlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoZmlsZS50eXBlID09ICd2aWRlby9tcDQnICYmIGZpbGUudWlkID09PSBwYXJhbXMuZmlsZS51aWQpIHtcclxuICAgICAgICAgICAgbGV0IHRodW1iVXJsID0gdGhpcy5nZXRGaWxlVHllSWNvbihmaWxlLnR5cGUsIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIGZpbGUudGh1bWJVcmwgPSB0aHVtYlVybCA/IHRodW1iVXJsIDogZmlsZS50aHVtYlVybDtcclxuICAgICAgICAgICAgZmlsZS51cmwgPSBmaWxlLm9yaWdpbkZpbGVPYmogPyBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkwgKyBmaWxlLm9yaWdpbkZpbGVPYmpbJ2tleSddIDogZmlsZVsncGF0aCddO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIDUwKTtcclxuICAgICAgbGV0IGZpbGVVcmxzOiBhbnlbXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBmaWxlIG9mIHBhcmFtcy5maWxlTGlzdCkge1xyXG4gICAgICAgIGlmIChmaWxlW1wia2V5XCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsZVVybHMucHVzaChmaWxlW1wia2V5XCJdKTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsZS5vcmlnaW5GaWxlT2JqKSB7XHJcbiAgICAgICAgICBsZXQgb3JpZ2luRmlsZU9iajogYW55ID0gZmlsZS5vcmlnaW5GaWxlT2JqXHJcbiAgICAgICAgICBpZiAob3JpZ2luRmlsZU9ialtcImtleVwiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZmlsZVVybHMucHVzaChvcmlnaW5GaWxlT2JqW1wia2V5XCJdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hZnRlckNoYW5nZS5lbWl0KHtrZXk6IHRoaXMub3B0cy5rZXksIHZhbHVlczogZmlsZVVybHMuam9pbihcIixcIil9KTtcclxuICAgICAgdGhpcy5vcHRzQ2hhbmdlLmVtaXQodGhpcy5vcHRzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaHR0cFNlcnZpY2UoKTogSHR0cFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVByZXZpZXcgPSAoZmlsZTogTnpVcGxvYWRGaWxlKSA9PiB7XHJcbiAgICB0aGlzLnByZXZpZXdJbWFnZSA9IGZpbGUudXJsIHx8IGZpbGUudGh1bWJVcmw7XHJcbiAgICB0aGlzLnByZXZpZXdWaXNpYmxlID0gdHJ1ZTtcclxuICB9O1xyXG5cclxuICByZW1vdmUgPSAoZmlsZTogTnpVcGxvYWRGaWxlKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaXNFZGl0KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKGZpbGUpO1xyXG4gICAgaWYgKHRoaXMub3B0cyAmJiB0aGlzLm9wdHMucmVtb3ZlQWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYmVmb3JlVXBsb2FkID0gKGZpbGU6IE56VXBsb2FkRmlsZSwgZmlsZUxpc3Q6IE56VXBsb2FkRmlsZVtdKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIGxldCBmaWxlTmFtZTtcclxuICAgICAgaWYgKHRoaXMub3B0cy5rZWVwTmFtZSkge1xyXG4gICAgICAgIGZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbGVOYW1lID0gVG9vbHNVdGlsLmdldFJhbmRvbUZpbGVOYW1lKCkgKyBcIi5cIiArIFRvb2xzVXRpbC5nZXRGaWxlRXh0KGZpbGUubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkJlZm9yZVVwbG9hZC5lbWl0KHtjb2RlOiAnZ2V0RmlsZScsIGRhdGE6IHtmaWxlOiBmaWxlLCBmaWxlTGlzdDogZmlsZUxpc3R9fSlcclxuICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0KGF0cl9zdGF0aWNfZGF0YXMuT1NTX1BPTElDWSwge1xyXG4gICAgICAgIGRpcjogdGhpcy5vcHRzLnVwbG9hZERpcixcclxuICAgICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgICAgJ3N1Y2Nlc3NfYWN0aW9uX3N0YXR1cyc6ICcyMDAnXHJcbiAgICAgIH0sIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzdWx0ID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWREYXRhW2ZpbGUudWlkXSA9IHJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIG9ic2VydmUudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIGN1c3RvbVJlcSA9IChpdGVtOiBOelVwbG9hZFhIUkFyZ3MpID0+IHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBsZXQgdXBsb2FkRGF0YSA9IHRoaXMudXBsb2FkRGF0YVtpdGVtLmZpbGUudWlkXTtcclxuICAgIGZvciAobGV0IGtleSBpbiB1cGxvYWREYXRhKSB7XHJcbiAgICAgIGlmIChrZXkgIT0gJ2hvc3QnKVxyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHVwbG9hZERhdGFba2V5XSlcclxuICAgIH1cclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGl0ZW0uZmlsZSBhcyBhbnkpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXBsb2FkRGF0YS5ob3N0ISwgZm9ybURhdGEsIHtcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdChyZXEpLnN1YnNjcmliZShcclxuICAgICAgKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQudG90YWwhID4gMCkge1xyXG4gICAgICAgICAgICAoZXZlbnQgYXMgYW55KS5wZXJjZW50ID0gKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsISkgKiAxMDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtLm9uUHJvZ3Jlc3MhKGV2ZW50LCBpdGVtLmZpbGUhKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBpdGVtLmZpbGVbXCJrZXlcIl0gPSB1cGxvYWREYXRhLmtleTtcclxuICAgICAgICAgIGl0ZW0ub25TdWNjZXNzIShldmVudC5ib2R5LCBpdGVtLmZpbGUhLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnIgPT4ge1xyXG4gICAgICAgIGl0ZW0ub25FcnJvciEoZXJyLCBpdGVtLmZpbGUhKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBvcGVuQmFubmVyU2VxKHRwbENvbnRlbnQ6IGFueSwgdHBsRm9vdGVyOiBhbnkpIHtcclxuICAgIHRoaXMudHBsTW9kYWwgPSB0aGlzLm1vZGFsU2VydmljZS5jcmVhdGUoe1xyXG4gICAgICBuelRpdGxlOiBcIuS/ruaUueWbvueJh+mhuuW6j1wiLFxyXG4gICAgICBuekNvbnRlbnQ6IHRwbENvbnRlbnQsXHJcbiAgICAgIG56Rm9vdGVyOiB0cGxGb290ZXIsXHJcbiAgICAgIG56TWFza0Nsb3NhYmxlOiBmYWxzZSxcclxuICAgICAgbnpDbG9zYWJsZTogZmFsc2UsXHJcbiAgICAgIG56T25PazogKCkgPT4gY29uc29sZS5sb2coJ0NsaWNrIG9rJylcclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5vcHRzLmltYWdlTGlzdCk7XHJcbiAgICB0aGlzLmNoYW5nZVZpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVRwbE1vZGFsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHBsTW9kYWwpXHJcbiAgICAgIHRoaXMudHBsTW9kYWwuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgYXJyb3dVcChpbmRleDogYW55KSB7XHJcbiAgICBsZXQgaW1nID0gdGhpcy5vcHRzLmltYWdlTGlzdFtpbmRleF07XHJcbiAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4XSA9IHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXggLSAxXTtcclxuICAgIHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXggLSAxXSA9IGltZztcclxuICB9XHJcblxyXG4gIGFycm93RG93bihpbmRleDogYW55KSB7XHJcbiAgICBsZXQgaW1nID0gdGhpcy5vcHRzLmltYWdlTGlzdFtpbmRleF07XHJcbiAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4XSA9IHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXggKyAxXTtcclxuICAgIHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXggKyAxXSA9IGltZztcclxuICB9XHJcblxyXG4gIHNhdmVTZXEoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lUcGxNb2RhbCgpO1xyXG4gICAgbGV0IGltZ3MgPSB0aGlzLm9wdHMuaW1hZ2VMaXN0O1xyXG4gICAgdGhpcy5vcHRzLmltYWdlTGlzdCA9IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMub3B0cy5pbWFnZUxpc3QgPSBpbWdzO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLm9wdHMuaW1hZ2VMaXN0KTtcclxuICAgICAgbGV0IGZpbGVVcmxzOiBhbnkgPSBbXTtcclxuICAgICAgZm9yIChsZXQgZmlsZSBvZiB0aGlzLm9wdHMuaW1hZ2VMaXN0KSB7XHJcbiAgICAgICAgaWYgKGZpbGVbXCJrZXlcIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBmaWxlVXJscy5wdXNoKGZpbGVbXCJrZXlcIl0pO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWxlLm9yaWdpbkZpbGVPYmogJiYgZmlsZS5vcmlnaW5GaWxlT2JqW1wia2V5XCJdICE9IHVuZGVmaW5lZClcclxuICAgICAgICAgIGZpbGVVcmxzLnB1c2goZmlsZS5vcmlnaW5GaWxlT2JqW1wia2V5XCJdKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFmdGVyQ2hhbmdlLmVtaXQoe2tleTogdGhpcy5vcHRzLmtleSwgdmFsdWVzOiBmaWxlVXJscy5qb2luKFwiLFwiKX0pO1xyXG4gICAgfSwgNTApXHJcblxyXG4gIH1cclxuXHJcbiAgZHJhZ251bWJlcihudW1lcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhudW1lcik7XHJcbiAgICBjb25zb2xlLmxvZygnb3InLCB0aGlzLm9wdHMuaW1hZ2VMaXN0KVxyXG4gICAgY29uc29sZS5sb2coJ25ldycsIG51bWVyKVxyXG4gICAgdGhpcy5zYXZlU2VxKCk7XHJcbiAgICAvLyB0aGlzLm9wdHMuaW1hZ2VMaXN0ID0gbnVtZXJcclxuICB9XHJcblxyXG4gIGRlbEltZyhudW1lcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhudW1lcik7XHJcbiAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0ID0gdGhpcy5vcHRzLmltYWdlTGlzdC5maWx0ZXIoKHY6IGFueSwgaTogYW55KSA9PiBpICE9IG51bWVyKVxyXG4gICAgLy8gdGhpcy5vcHRzLmltYWdlTGlzdCA9IG51bWVyXHJcbiAgfVxyXG5cclxuICBwcml2aWV3SW1nKGltZzogYW55KSB7XHJcbiAgICBsZXQgdXJsID0gVG9vbHNVdGlsLmdldE9zc1VybCh0aGlzLmdldEltZ1VybChpbWcpKVxyXG4gICAgY29uc29sZS5sb2codXJsKVxyXG4gICAgdGhpcy5uekltYWdlU2VydmljZS5wcmV2aWV3KFt7XHJcbiAgICAgIHNyYzogdXJsLFxyXG4gICAgICBhbHQ6ICduZy16b3JybydcclxuICAgIH1dLCB7bnpab29tOiAxLjUsIG56Um90YXRlOiAwfSk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWdVcmwoaW1nOiBhbnkpIHtcclxuICAgIGlmIChpbWcub3JpZ2luRmlsZU9iaiAmJiBpbWcub3JpZ2luRmlsZU9iai5rZXkpIHtcclxuICAgICAgcmV0dXJuIGltZy5vcmlnaW5GaWxlT2JqLmtleVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChpbWcudXJsIHx8IGltZy50aHVtYlVybClcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+XHJcbiAgPG56LXVwbG9hZFxyXG4gICAgKm5nSWY9XCJvcHRzICYmIG9wdHM/LnVwbG9hZFR5cGUgPT0gJ2RyYWcnXCJcclxuICAgIG56VHlwZT1cImRyYWdcIlxyXG4gICAgbnpBY3Rpb249XCJcIlxyXG4gICAgW256QmVmb3JlVXBsb2FkXT1cImJlZm9yZVVwbG9hZFwiXHJcbiAgICBbbnpSZW1vdmVdPVwicmVtb3ZlXCJcclxuICAgIFtuekN1c3RvbVJlcXVlc3RdPVwiY3VzdG9tUmVxXCJcclxuICAgIChuekNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFtuelR5cGVdPVwib3B0cz8udXBsb2FkVHlwZVwiXHJcbiAgICBbbnpBY2NlcHRdPVwib3B0cy5uekZpbGVUeXBlXCJcclxuICAgIFtuekxpbWl0XT1cIicxJ1wiXHJcbiAgPlxyXG4gICAgPHAgY2xhc3M9XCJhbnQtdXBsb2FkLWRyYWctaWNvblwiPlxyXG4gICAgICA8aSBuei1pY29uIG56VHlwZT1cImluYm94XCI+PC9pPlxyXG4gICAgPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJhbnQtdXBsb2FkLXRleHRcIj7ljZXlh7vmiJbmi5bliqjmlofku7bliLDmraTljLrln5/kuIrkvKA8L3A+XHJcbiAgPC9uei11cGxvYWQ+XHJcbiAgPG56LXVwbG9hZFxyXG4gICAgKm5nSWY9XCJvcHRzICYmIG9wdHM/LnVwbG9hZFR5cGUgIT0gJ2RyYWcnXCJcclxuICAgIG56QWN0aW9uPVwiXCJcclxuICAgIG56TGlzdFR5cGU9XCJwaWN0dXJlLWNhcmRcIlxyXG4gICAgWyhuekZpbGVMaXN0KV09XCJvcHRzLmltYWdlTGlzdFwiXHJcbiAgICBbbnpTaG93QnV0dG9uXT1cIm9wdHMuaW1hZ2VMaXN0Lmxlbmd0aCA8IG9wdHMubGltaXRcIlxyXG4gICAgW256U2hvd1VwbG9hZExpc3RdPVwic2hvd1VwbG9hZExpc3RcIlxyXG4gICAgW256UHJldmlld109XCJoYW5kbGVQcmV2aWV3XCJcclxuICAgIFtuelJlbW92ZV09XCJyZW1vdmVcIlxyXG4gICAgW256QmVmb3JlVXBsb2FkXT1cImJlZm9yZVVwbG9hZFwiXHJcbiAgICBbbnpDdXN0b21SZXF1ZXN0XT1cImN1c3RvbVJlcVwiXHJcbiAgICAobnpDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbbnpUeXBlXT1cIm9wdHM/LnVwbG9hZFR5cGVcIlxyXG4gICAgW256QWNjZXB0XT1cIm9wdHMubnpGaWxlVHlwZVwiXHJcbiAgICBbbnpEaXNhYmxlZF09XCIhaXNFZGl0XCJcclxuICAgIFtuekxpbWl0XT1cIicxJ1wiXHJcbiAgICBbbnpGaWxlTGlzdFJlbmRlcl09XCJvcHRzICYmIGlzRWRpdCAmJiBhbGxvd0NoYW5nU2VxICYmIG9wdHMuaW1hZ2VMaXN0Lmxlbmd0aCA+IDAgPyBmaWxlTGlzdFRtcCA6IG51bGxcIlxyXG4gID5cclxuICAgIDxpIG56LWljb24gbnpUeXBlPVwicGx1c1wiPjwvaT5cclxuICAgIDxkaXYgY2xhc3M9XCJhbnQtdXBsb2FkLXRleHRcIj7kuIrkvKDlm77niYc8L2Rpdj5cclxuICA8L256LXVwbG9hZD5cclxuICA8IS0tIDxhICpuZ0lmPVwiYWxsb3dDaGFuZ1NlcSAmJiBpc0VkaXQgJiYgb3B0cy5pbWFnZUxpc3QubGVuZ3RoID4gMVwiIChjbGljayk9XCJvcGVuQmFubmVyU2VxKGltZ3NDb250ZW50LCB0cGxGb290ZXIpXCJcclxuICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDsgXCJcclxuICAgPjxpIG56LWljb24gbnpUeXBlPVwicGx1c1wiIG56VGhlbWU9XCJvdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogIzE4OTBmZjsgZm9udC1zaXplOiAxNXB4XCI+PC9pPuiwg+aVtOWbvueJh+mhuuW6jzwvYT4tLT5cclxuICA8bnotbW9kYWxcclxuICAgIFtuelZpc2libGVdPVwicHJldmlld1Zpc2libGVcIlxyXG4gICAgW256Q29udGVudF09XCJtb2RhbENvbnRlbnRcIlxyXG4gICAgW256Rm9vdGVyXT1cIm51bGxcIlxyXG4gICAgKG56T25DYW5jZWwpPVwicHJldmlld1Zpc2libGUgPSBmYWxzZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlICNtb2RhbENvbnRlbnQ+XHJcbiAgICAgIDxpbWcgKm5nSWY9XCIhcHJldmlld0ltYWdlLmVuZHNXaXRoKCcubXA0JylcIiBbc3JjXT1cInByZXZpZXdJbWFnZVwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCIvPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7bWFyZ2luLXRvcDogMTVweFwiPlxyXG4gICAgICAgIDxhcHAtdmlkZW8gKm5nSWY9XCJwcmV2aWV3SW1hZ2UuZW5kc1dpdGgoJy5tcDQnKVwiIFt1cmxdPVwicHJldmlld0ltYWdlXCI+PC9hcHAtdmlkZW8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L256LW1vZGFsPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaW1nc0NvbnRlbnQ+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0cyAmJiBvcHRzLmltYWdlTGlzdFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWdzIG9mIG9wdHMuaW1hZ2VMaXN0O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRpdlwiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImltZ3MudXJsIHx8IGltZ3MudGh1bWJVcmxcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwcHgnLGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCBtYXJnaW46JzEwcHgnIH1cIi8+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHB4XCI+XHJcbiAgICAgICAgICAgIDxhIHRpdGxlPVwi5LiK56e7XCIgKm5nSWY9XCIgaSA+IDBcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiIChjbGljayk9XCJhcnJvd1VwKGkpXCI+PGkgbnotaWNvbiBuelR5cGU9XCJhcnJvdy11cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpUaGVtZT1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMxODkwZmY7IGZvbnQtc2l6ZTogMTVweDtcIj48L2k+XHJcbiAgICAgICAgICAgICAg5LiK56e7PC9hPlxyXG4gICAgICAgICAgICA8YSB0aXRsZT1cIuS4i+enu1wiICpuZ0lmPVwiIGkgPCBvcHRzLmltYWdlTGlzdC5sZW5ndGggLSAxXCIgKGNsaWNrKT1cImFycm93RG93bihpKVwiPjxpIG56LWljb24gbnpUeXBlPVwiYXJyb3ctZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelRoZW1lPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMTg5MGZmOyBmb250LXNpemU6IDE1cHhcIj48L2k+XHJcbiAgICAgICAgICAgICAg5LiL56e7PC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSAgPC9uei1tb2RhbD4tLT5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsZUxpc3RUbXA+XHJcbiAgPGRpdiBkcmFndWxhPVwiZHJhZ3VsYUJhZ1wiIFsoZHJhZ3VsYU1vZGVsKV09XCJvcHRzLmltYWdlTGlzdFwiIChkcmFndWxhTW9kZWxDaGFuZ2UpPVwiZHJhZ251bWJlcigkZXZlbnQpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWdzIG9mIG9wdHMuaW1hZ2VMaXN0O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImltZy1kaXYgaW1nLXByZVwiIHN0eWxlPVwiXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImdldEltZ1VybChpbWdzKSB8b3NzSW1nXCIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMHB4JyxkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgbWFyZ2luOicxMHB4JyB9XCIvPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicHJpdmlld0ltZyhpbWdzKVwiIG56LWljb24gbnpUeXBlPVwiZXllXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiZGVsSW1nKGkpXCIgbnotaWNvbiBuelR5cGU9XCJkZWxldGVcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdHBsRm9vdGVyPlxyXG4gIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImRlZmF1bHRcIiAoY2xpY2spPVwiZGVzdHJveVRwbE1vZGFsKClcIj5cclxuICAgIOWPlua2iFxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZVNlcSgpXCI+XHJcbiAgICDkv53lrZjpobrluo9cclxuICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4iXX0=
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsV0FBVyxFQUFhLGFBQWEsRUFBRSxZQUFZLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFJbEgsT0FBTyxFQUFDLGdCQUFnQixFQUFZLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFReEQsTUFBTSxPQUFPLGVBQWU7SUE2QjFCLFlBQW9CLFFBQWtCLEVBQVUsY0FBOEIsRUFDMUQsVUFBc0IsRUFBVSxZQUE0QjtRQUQ1RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzFELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUEzQnZFLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUUvQixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLGVBQVUsR0FBUSxFQUFFLENBQUE7UUFFcEIsbUJBQWMsR0FBRztZQUNmLGVBQWUsRUFBRSxJQUFJ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QUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbEMsQ0FBQzs7NkdBOVFVLGVBQWU7aUdBQWYsZUFBZSx1T0NoQjVCLCtoSkFxR0E7NEZEckZhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsZ0JBQWdCO2tMQU1qQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBYU4sV0FBVztzQkFEVixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFHUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0h0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSwgSHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtOek1vZGFsUmVmLCBOek1vZGFsU2VydmljZX0gZnJvbSAnbmctem9ycm8tYW50ZC9tb2RhbCc7XHJcbmltcG9ydCB7TnpVcGxvYWRDaGFuZ2VQYXJhbSwgTnpVcGxvYWRGaWxlLCBOelVwbG9hZFhIUkFyZ3N9IGZyb20gJ25nLXpvcnJvLWFudGQvdXBsb2FkJztcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZS9lbnZpcm9ubWVudHNcIjtcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBJbWFnZU9wdHN9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge0h0dHBTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL1Rvb2xzVXRpbFwiO1xyXG5pbXBvcnQge056SW1hZ2VTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL2ltYWdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXRyLWltZy11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBvcHRzOiBJbWFnZU9wdHMgfCBhbnk7XHJcbiAgQElucHV0KCkgaXNFZGl0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd0NoYW5nU2VxID0gZmFsc2U7XHJcbiAgdHBsTW9kYWw6IE56TW9kYWxSZWYgfCBhbnk7XHJcbiAgdXBsb2FkVXJsOiBhbnkgPSBcIlwiO1xyXG5cclxuICB1cGxvYWREYXRhOiBhbnkgPSB7fVxyXG5cclxuICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgIHNob3dQcmV2aWV3SWNvbjogdHJ1ZSxcclxuICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgaGlkZVByZXZpZXdJY29uSW5Ob25JbWFnZTogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGFmdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb3B0c0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgb25CZWZvcmVVcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgcHJldmlld0ltYWdlOiBzdHJpbmcgfCBhbnkgPSAnJztcclxuICBwcmV2aWV3VmlzaWJsZSA9IGZhbHNlO1xyXG4gIGNoYW5nZVZpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgbnpJbWFnZVNlcnZpY2U6IE56SW1hZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE56TW9kYWxTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIGdldEZpbGVUeWVJY29uKGZpbGVUeXBlOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCB0aHVtYlVybCA9IHRoaXMuZ2V0RmlsZVRodW1iVXJsKGZpbGVUeXBlKTtcclxuICAgIGlmICh0aHVtYlVybCA9PT0gJycpIHtcclxuICAgICAgdGh1bWJVcmwgPSB0aGlzLmdldFRodW1iVXJsKGZpbGVOYW1lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aHVtYlVybDtcclxuICB9XHJcblxyXG4gIGdldFRodW1iVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcblxyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIC8vIOWQjue8gOiOt+WPllxyXG4gICAgaWYgKHBhdGguZW5kc1dpdGgoJy5tcDQnKSkge1xyXG4gICAgICByZXR1cm4gJy4uLy4uLy4uL2Fzc2V0cy92aWRlby5qcGcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZVRodW1iVXJsKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGh1bWJVcmwgPSAnJztcclxuICAgIGlmICh0eXBlID09PSAndmlkZW8vbXA0JyB8fCB0eXBlID09PSAnbXA0Jykge1xyXG4gICAgICB0aHVtYlVybCA9ICcuLi8uLi8uLi9hc3NldHMvdmlkZW8uanBnJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aHVtYlVybDtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhcmFtczogTnpVcGxvYWRDaGFuZ2VQYXJhbSkge1xyXG4gICAgY29uc29sZS5sb2cocGFyYW1zKTtcclxuICAgIGlmIChwYXJhbXMudHlwZSA9PSBcInN1Y2Nlc3NcIiB8fCBwYXJhbXMudHlwZSA9PSBcInJlbW92ZWRcIikge1xyXG5cclxuICAgICAgdGhpcy5vcHRzLmltYWdlTGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0ID0gcGFyYW1zLmZpbGVMaXN0Lm1hcCgoZmlsZTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKGZpbGUudHlwZSA9PSAndmlkZW8vbXA0JyAmJiBmaWxlLnVpZCA9PT0gcGFyYW1zLmZpbGUudWlkKSB7XHJcbiAgICAgICAgICAgIGxldCB0aHVtYlVybCA9IHRoaXMuZ2V0RmlsZVR5ZUljb24oZmlsZS50eXBlLCBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICBmaWxlLnRodW1iVXJsID0gdGh1bWJVcmwgPyB0aHVtYlVybCA6IGZpbGUudGh1bWJVcmw7XHJcbiAgICAgICAgICAgIGZpbGUudXJsID0gZmlsZS5vcmlnaW5GaWxlT2JqID8gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsgZmlsZS5vcmlnaW5GaWxlT2JqWydrZXknXSA6IGZpbGVbJ3BhdGgnXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCA1MCk7XHJcbiAgICAgIGxldCBmaWxlVXJsczogYW55W10gPSBbXTtcclxuICAgICAgZm9yIChsZXQgZmlsZSBvZiBwYXJhbXMuZmlsZUxpc3QpIHtcclxuICAgICAgICBpZiAoZmlsZVtcImtleVwiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGZpbGVVcmxzLnB1c2goZmlsZVtcImtleVwiXSk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbGUub3JpZ2luRmlsZU9iaikge1xyXG4gICAgICAgICAgbGV0IG9yaWdpbkZpbGVPYmo6IGFueSA9IGZpbGUub3JpZ2luRmlsZU9ialxyXG4gICAgICAgICAgaWYgKG9yaWdpbkZpbGVPYmpbXCJrZXlcIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZpbGVVcmxzLnB1c2gob3JpZ2luRmlsZU9ialtcImtleVwiXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2UuZW1pdCh7a2V5OiB0aGlzLm9wdHMua2V5LCB2YWx1ZXM6IGZpbGVVcmxzLmpvaW4oXCIsXCIpfSk7XHJcbiAgICAgIHRoaXMub3B0c0NoYW5nZS5lbWl0KHRoaXMub3B0cylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGh0dHBTZXJ2aWNlKCk6IEh0dHBTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChIdHRwU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQcmV2aWV3ID0gKGZpbGU6IE56VXBsb2FkRmlsZSkgPT4ge1xyXG4gICAgdGhpcy5wcmV2aWV3SW1hZ2UgPSBmaWxlLnVybCB8fCBmaWxlLnRodW1iVXJsO1xyXG4gICAgdGhpcy5wcmV2aWV3VmlzaWJsZSA9IHRydWU7XHJcbiAgfTtcclxuXHJcbiAgcmVtb3ZlID0gKGZpbGU6IE56VXBsb2FkRmlsZSkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmlzRWRpdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhmaWxlKTtcclxuICAgIGlmICh0aGlzLm9wdHMgJiYgdGhpcy5vcHRzLnJlbW92ZUFjdGlvbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGJlZm9yZVVwbG9hZCA9IChmaWxlOiBOelVwbG9hZEZpbGUsIGZpbGVMaXN0OiBOelVwbG9hZEZpbGVbXSkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KG9ic2VydmUgPT4ge1xyXG4gICAgICBsZXQgZmlsZU5hbWU7XHJcbiAgICAgIGlmICh0aGlzLm9wdHMua2VlcE5hbWUpIHtcclxuICAgICAgICBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlTmFtZSA9IFRvb2xzVXRpbC5nZXRSYW5kb21GaWxlTmFtZSgpICsgXCIuXCIgKyBUb29sc1V0aWwuZ2V0RmlsZUV4dChmaWxlLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25CZWZvcmVVcGxvYWQuZW1pdCh7Y29kZTogJ2dldEZpbGUnLCBkYXRhOiB7ZmlsZTogZmlsZSwgZmlsZUxpc3Q6IGZpbGVMaXN0fX0pXHJcbiAgICAgIHRoaXMuaHR0cFNlcnZpY2UucG9zdChhdHJfc3RhdGljX2RhdGFzLk9TU19QT0xJQ1ksIHtcclxuICAgICAgICBkaXI6IHRoaXMub3B0cy51cGxvYWREaXIsXHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICdzdWNjZXNzX2FjdGlvbl9zdGF0dXMnOiAnMjAwJ1xyXG4gICAgICB9LCBUb29sc1V0aWwuZ2V0SHR0cE9wdGlvbnMoKSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3VsdCA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRGF0YVtmaWxlLnVpZF0gPSByZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgIG9ic2VydmUubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICBvYnNlcnZlLnVuc3Vic2NyaWJlKClcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuICBjdXN0b21SZXEgPSAoaXRlbTogTnpVcGxvYWRYSFJBcmdzKSA9PiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgbGV0IHVwbG9hZERhdGEgPSB0aGlzLnVwbG9hZERhdGFbaXRlbS5maWxlLnVpZF07XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdXBsb2FkRGF0YSkge1xyXG4gICAgICBpZiAoa2V5ICE9ICdob3N0JylcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB1cGxvYWREYXRhW2tleV0pXHJcbiAgICB9XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBpdGVtLmZpbGUgYXMgYW55KTtcclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVwbG9hZERhdGEuaG9zdCEsIGZvcm1EYXRhLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3QocmVxKS5zdWJzY3JpYmUoXHJcbiAgICAgIChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG4gICAgICAgICAgaWYgKGV2ZW50LnRvdGFsISA+IDApIHtcclxuICAgICAgICAgICAgKGV2ZW50IGFzIGFueSkucGVyY2VudCA9IChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCEpICogMTAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbS5vblByb2dyZXNzIShldmVudCwgaXRlbS5maWxlISk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgaXRlbS5maWxlW1wia2V5XCJdID0gdXBsb2FkRGF0YS5rZXk7XHJcbiAgICAgICAgICBpdGVtLm9uU3VjY2VzcyEoZXZlbnQuYm9keSwgaXRlbS5maWxlISwgZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICBpdGVtLm9uRXJyb3IhKGVyciwgaXRlbS5maWxlISk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgb3BlbkJhbm5lclNlcSh0cGxDb250ZW50OiBhbnksIHRwbEZvb3RlcjogYW55KSB7XHJcbiAgICB0aGlzLnRwbE1vZGFsID0gdGhpcy5tb2RhbFNlcnZpY2UuY3JlYXRlKHtcclxuICAgICAgbnpUaXRsZTogXCLkv67mlLnlm77niYfpobrluo9cIixcclxuICAgICAgbnpDb250ZW50OiB0cGxDb250ZW50LFxyXG4gICAgICBuekZvb3RlcjogdHBsRm9vdGVyLFxyXG4gICAgICBuek1hc2tDbG9zYWJsZTogZmFsc2UsXHJcbiAgICAgIG56Q2xvc2FibGU6IGZhbHNlLFxyXG4gICAgICBuek9uT2s6ICgpID0+IGNvbnNvbGUubG9nKCdDbGljayBvaycpXHJcbiAgICB9KTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMub3B0cy5pbWFnZUxpc3QpO1xyXG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3lUcGxNb2RhbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRwbE1vZGFsKVxyXG4gICAgICB0aGlzLnRwbE1vZGFsLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIGFycm93VXAoaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGltZyA9IHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXhdO1xyXG4gICAgdGhpcy5vcHRzLmltYWdlTGlzdFtpbmRleF0gPSB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4IC0gMV07XHJcbiAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4IC0gMV0gPSBpbWc7XHJcbiAgfVxyXG5cclxuICBhcnJvd0Rvd24oaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGltZyA9IHRoaXMub3B0cy5pbWFnZUxpc3RbaW5kZXhdO1xyXG4gICAgdGhpcy5vcHRzLmltYWdlTGlzdFtpbmRleF0gPSB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4ICsgMV07XHJcbiAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0W2luZGV4ICsgMV0gPSBpbWc7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VxKCkge1xyXG4gICAgdGhpcy5kZXN0cm95VHBsTW9kYWwoKTtcclxuICAgIGxldCBpbWdzID0gdGhpcy5vcHRzLmltYWdlTGlzdDtcclxuICAgIHRoaXMub3B0cy5pbWFnZUxpc3QgPSBbXTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdHMuaW1hZ2VMaXN0ID0gaW1ncztcclxuICAgICAgY29uc29sZS5sb2codGhpcy5vcHRzLmltYWdlTGlzdCk7XHJcbiAgICAgIGxldCBmaWxlVXJsczogYW55ID0gW107XHJcbiAgICAgIGZvciAobGV0IGZpbGUgb2YgdGhpcy5vcHRzLmltYWdlTGlzdCkge1xyXG4gICAgICAgIGlmIChmaWxlW1wia2V5XCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsZVVybHMucHVzaChmaWxlW1wia2V5XCJdKTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsZS5vcmlnaW5GaWxlT2JqICYmIGZpbGUub3JpZ2luRmlsZU9ialtcImtleVwiXSAhPSB1bmRlZmluZWQpXHJcbiAgICAgICAgICBmaWxlVXJscy5wdXNoKGZpbGUub3JpZ2luRmlsZU9ialtcImtleVwiXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hZnRlckNoYW5nZS5lbWl0KHtrZXk6IHRoaXMub3B0cy5rZXksIHZhbHVlczogZmlsZVVybHMuam9pbihcIixcIil9KTtcclxuICAgIH0sIDUwKVxyXG5cclxuICB9XHJcblxyXG4gIGRyYWdudW1iZXIobnVtZXI6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2cobnVtZXIpO1xyXG4gICAgY29uc29sZS5sb2coJ29yJywgdGhpcy5vcHRzLmltYWdlTGlzdClcclxuICAgIGNvbnNvbGUubG9nKCduZXcnLCBudW1lcilcclxuICAgIHRoaXMuc2F2ZVNlcSgpO1xyXG4gICAgLy8gdGhpcy5vcHRzLmltYWdlTGlzdCA9IG51bWVyXHJcbiAgfVxyXG5cclxuICBkZWxJbWcobnVtZXI6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2cobnVtZXIpO1xyXG4gICAgdGhpcy5vcHRzLmltYWdlTGlzdCA9IHRoaXMub3B0cy5pbWFnZUxpc3QuZmlsdGVyKCh2OiBhbnksIGk6IGFueSkgPT4gaSAhPSBudW1lcilcclxuICAgIGxldCBmaWxlVXJsczogYW55ID0gW107XHJcbiAgICBmb3IgKGxldCBmaWxlIG9mIHRoaXMub3B0cy5pbWFnZUxpc3QpIHtcclxuICAgICAgaWYgKGZpbGVbXCJrZXlcIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZmlsZVVybHMucHVzaChmaWxlW1wia2V5XCJdKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZS5vcmlnaW5GaWxlT2JqICYmIGZpbGUub3JpZ2luRmlsZU9ialtcImtleVwiXSAhPSB1bmRlZmluZWQpXHJcbiAgICAgICAgZmlsZVVybHMucHVzaChmaWxlLm9yaWdpbkZpbGVPYmpbXCJrZXlcIl0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmFmdGVyQ2hhbmdlLmVtaXQoe2tleTogdGhpcy5vcHRzLmtleSwgdmFsdWVzOiBmaWxlVXJscy5qb2luKFwiLFwiKX0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmlld0ltZyhpbWc6IGFueSkge1xyXG4gICAgbGV0IHVybCA9IFRvb2xzVXRpbC5nZXRPc3NVcmwodGhpcy5nZXRJbWdVcmwoaW1nKSlcclxuICAgIGNvbnNvbGUubG9nKHVybClcclxuICAgIHRoaXMubnpJbWFnZVNlcnZpY2UucHJldmlldyhbe1xyXG4gICAgICBzcmM6IHVybCxcclxuICAgICAgYWx0OiAnbmctem9ycm8nXHJcbiAgICB9XSwge256Wm9vbTogMS41LCBuelJvdGF0ZTogMH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1nVXJsKGltZzogYW55KSB7XHJcbiAgICBpZiAoaW1nLm9yaWdpbkZpbGVPYmogJiYgaW1nLm9yaWdpbkZpbGVPYmoua2V5KSB7XHJcbiAgICAgIHJldHVybiBpbWcub3JpZ2luRmlsZU9iai5rZXlcclxuICAgIH1cclxuICAgIHJldHVybiAoaW1nLnVybCB8fCBpbWcudGh1bWJVcmwpXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPlxyXG4gIDxuei11cGxvYWRcclxuICAgICpuZ0lmPVwib3B0cyAmJiBvcHRzPy51cGxvYWRUeXBlID09ICdkcmFnJ1wiXHJcbiAgICBuelR5cGU9XCJkcmFnXCJcclxuICAgIG56QWN0aW9uPVwiXCJcclxuICAgIFtuekJlZm9yZVVwbG9hZF09XCJiZWZvcmVVcGxvYWRcIlxyXG4gICAgW256UmVtb3ZlXT1cInJlbW92ZVwiXHJcbiAgICBbbnpDdXN0b21SZXF1ZXN0XT1cImN1c3RvbVJlcVwiXHJcbiAgICAobnpDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbbnpUeXBlXT1cIm9wdHM/LnVwbG9hZFR5cGVcIlxyXG4gICAgW256QWNjZXB0XT1cIm9wdHMubnpGaWxlVHlwZVwiXHJcbiAgICBbbnpMaW1pdF09XCInMSdcIlxyXG4gID5cclxuICAgIDxwIGNsYXNzPVwiYW50LXVwbG9hZC1kcmFnLWljb25cIj5cclxuICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJpbmJveFwiPjwvaT5cclxuICAgIDwvcD5cclxuICAgIDxwIGNsYXNzPVwiYW50LXVwbG9hZC10ZXh0XCI+5Y2V5Ye75oiW5ouW5Yqo5paH5Lu25Yiw5q2k5Yy65Z+f5LiK5LygPC9wPlxyXG4gIDwvbnotdXBsb2FkPlxyXG4gIDxuei11cGxvYWRcclxuICAgICpuZ0lmPVwib3B0cyAmJiBvcHRzPy51cGxvYWRUeXBlICE9ICdkcmFnJ1wiXHJcbiAgICBuekFjdGlvbj1cIlwiXHJcbiAgICBuekxpc3RUeXBlPVwicGljdHVyZS1jYXJkXCJcclxuICAgIFsobnpGaWxlTGlzdCldPVwib3B0cy5pbWFnZUxpc3RcIlxyXG4gICAgW256U2hvd0J1dHRvbl09XCJvcHRzLmltYWdlTGlzdC5sZW5ndGggPCBvcHRzLmxpbWl0XCJcclxuICAgIFtuelNob3dVcGxvYWRMaXN0XT1cInNob3dVcGxvYWRMaXN0XCJcclxuICAgIFtuelByZXZpZXddPVwiaGFuZGxlUHJldmlld1wiXHJcbiAgICBbbnpSZW1vdmVdPVwicmVtb3ZlXCJcclxuICAgIFtuekJlZm9yZVVwbG9hZF09XCJiZWZvcmVVcGxvYWRcIlxyXG4gICAgW256Q3VzdG9tUmVxdWVzdF09XCJjdXN0b21SZXFcIlxyXG4gICAgKG56Q2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgW256VHlwZV09XCJvcHRzPy51cGxvYWRUeXBlXCJcclxuICAgIFtuekFjY2VwdF09XCJvcHRzLm56RmlsZVR5cGVcIlxyXG4gICAgW256RGlzYWJsZWRdPVwiIWlzRWRpdFwiXHJcbiAgICBbbnpMaW1pdF09XCInMSdcIlxyXG4gICAgW256RmlsZUxpc3RSZW5kZXJdPVwib3B0cyAmJiBpc0VkaXQgJiYgYWxsb3dDaGFuZ1NlcSAmJiBvcHRzLmltYWdlTGlzdC5sZW5ndGggPiAwID8gZmlsZUxpc3RUbXAgOiBudWxsXCJcclxuICA+XHJcbiAgICA8aSBuei1pY29uIG56VHlwZT1cInBsdXNcIj48L2k+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYW50LXVwbG9hZC10ZXh0XCI+5LiK5Lyg5Zu+54mHPC9kaXY+XHJcbiAgPC9uei11cGxvYWQ+XHJcbiAgPCEtLSA8YSAqbmdJZj1cImFsbG93Q2hhbmdTZXEgJiYgaXNFZGl0ICYmIG9wdHMuaW1hZ2VMaXN0Lmxlbmd0aCA+IDFcIiAoY2xpY2spPVwib3BlbkJhbm5lclNlcShpbWdzQ29udGVudCwgdHBsRm9vdGVyKVwiXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHg7IFwiXHJcbiAgID48aSBuei1pY29uIG56VHlwZT1cInBsdXNcIiBuelRoZW1lPVwib3V0bGluZVwiIHN0eWxlPVwiY29sb3I6ICMxODkwZmY7IGZvbnQtc2l6ZTogMTVweFwiPjwvaT7osIPmlbTlm77niYfpobrluo88L2E+LS0+XHJcbiAgPG56LW1vZGFsXHJcbiAgICBbbnpWaXNpYmxlXT1cInByZXZpZXdWaXNpYmxlXCJcclxuICAgIFtuekNvbnRlbnRdPVwibW9kYWxDb250ZW50XCJcclxuICAgIFtuekZvb3Rlcl09XCJudWxsXCJcclxuICAgIChuek9uQ2FuY2VsKT1cInByZXZpZXdWaXNpYmxlID0gZmFsc2VcIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbW9kYWxDb250ZW50PlxyXG4gICAgICA8aW1nICpuZ0lmPVwiIXByZXZpZXdJbWFnZS5lbmRzV2l0aCgnLm1wNCcpXCIgW3NyY109XCJwcmV2aWV3SW1hZ2VcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiLz5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlO21hcmdpbi10b3A6IDE1cHhcIj5cclxuICAgICAgICA8YXBwLXZpZGVvICpuZ0lmPVwicHJldmlld0ltYWdlLmVuZHNXaXRoKCcubXA0JylcIiBbdXJsXT1cInByZXZpZXdJbWFnZVwiPjwvYXBwLXZpZGVvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uei1tb2RhbD5cclxuICA8bmctdGVtcGxhdGUgI2ltZ3NDb250ZW50PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdHMgJiYgb3B0cy5pbWFnZUxpc3RcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1ncyBvZiBvcHRzLmltYWdlTGlzdDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kaXZcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbWdzLnVybCB8fCBpbWdzLnRodW1iVXJsXCIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMHB4JyxkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgbWFyZ2luOicxMHB4JyB9XCIvPlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweFwiPlxyXG4gICAgICAgICAgICA8YSB0aXRsZT1cIuS4iuenu1wiICpuZ0lmPVwiIGkgPiAwXCIgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIiAoY2xpY2spPVwiYXJyb3dVcChpKVwiPjxpIG56LWljb24gbnpUeXBlPVwiYXJyb3ctdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56VGhlbWU9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMTg5MGZmOyBmb250LXNpemU6IDE1cHg7XCI+PC9pPlxyXG4gICAgICAgICAgICAgIOS4iuenuzwvYT5cclxuICAgICAgICAgICAgPGEgdGl0bGU9XCLkuIvnp7tcIiAqbmdJZj1cIiBpIDwgb3B0cy5pbWFnZUxpc3QubGVuZ3RoIC0gMVwiIChjbGljayk9XCJhcnJvd0Rvd24oaSlcIj48aSBuei1pY29uIG56VHlwZT1cImFycm93LWRvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpUaGVtZT1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzE4OTBmZjsgZm9udC1zaXplOiAxNXB4XCI+PC9pPlxyXG4gICAgICAgICAgICAgIOS4i+enuzwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gIDwvbnotbW9kYWw+LS0+XHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI2ZpbGVMaXN0VG1wPlxyXG4gIDxkaXYgZHJhZ3VsYT1cImRyYWd1bGFCYWdcIiBbKGRyYWd1bGFNb2RlbCldPVwib3B0cy5pbWFnZUxpc3RcIiAoZHJhZ3VsYU1vZGVsQ2hhbmdlKT1cImRyYWdudW1iZXIoJGV2ZW50KVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1ncyBvZiBvcHRzLmltYWdlTGlzdDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbWctZGl2IGltZy1wcmVcIiBzdHlsZT1cIlwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWdVcmwoaW1ncykgfG9zc0ltZ1wiIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDBweCcsZGlzcGxheTogJ2lubGluZS1ibG9jaycsIG1hcmdpbjonMTBweCcgfVwiLz5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInByaXZpZXdJbWcoaW1ncylcIiBuei1pY29uIG56VHlwZT1cImV5ZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImRlbEltZyhpKVwiIG56LWljb24gbnpUeXBlPVwiZGVsZXRlXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RwbEZvb3Rlcj5cclxuICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJkZWZhdWx0XCIgKGNsaWNrKT1cImRlc3Ryb3lUcGxNb2RhbCgpXCI+XHJcbiAgICDlj5bmtohcclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVTZXEoKVwiPlxyXG4gICAg5L+d5a2Y6aG65bqPXHJcbiAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuIl19