raise-common-lib 0.0.215 → 0.0.216

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.
@@ -120,57 +120,10 @@ export class FloatBoxComponent {
120
120
  * @return {?}
121
121
  */
122
122
  setFixedContentPosition() {
123
- const { top: y, left: x, width, height, } = this.rootElement.nativeElement.getBoundingClientRect();
124
- // 临时显示内容以获取尺寸
125
- /** @type {?} */
126
- const wasVisible = this.contentElement.nativeElement.style.display !== "none";
127
- this.contentElement.nativeElement.style.visibility = "hidden";
128
- this.contentElement.nativeElement.style.display = "block";
129
- /** @type {?} */
130
- const contentRect = this.contentElement.nativeElement.getBoundingClientRect();
131
- /** @type {?} */
132
- const contentWidth = contentRect.width;
133
- /** @type {?} */
134
- const contentHeight = contentRect.height;
135
- // 获取视口尺寸
136
- /** @type {?} */
137
- const viewportWidth = window.innerWidth;
138
- /** @type {?} */
139
- const viewportHeight = window.innerHeight;
140
- /** @type {?} */
141
- const SAFE_MARGIN = 12;
142
- // 边界检测:计算最佳 placement
143
- /** @type {?} */
144
- let finalPlacement = this.placement;
145
- if (this.placement === "top" && y < contentHeight + SAFE_MARGIN) {
146
- if (viewportHeight - (y + height) >= contentHeight + SAFE_MARGIN) {
147
- finalPlacement = "bottom";
148
- }
149
- }
150
- else if (this.placement === "bottom" && viewportHeight - (y + height) < contentHeight + SAFE_MARGIN) {
151
- if (y >= contentHeight + SAFE_MARGIN) {
152
- finalPlacement = "top";
153
- }
154
- }
155
- else if (this.placement === "left" && x < contentWidth + SAFE_MARGIN) {
156
- if (viewportWidth - (x + width) >= contentWidth + SAFE_MARGIN) {
157
- finalPlacement = "right";
158
- }
159
- }
160
- else if (this.placement === "right" && viewportWidth - (x + width) < contentWidth + SAFE_MARGIN) {
161
- if (x >= contentWidth + SAFE_MARGIN) {
162
- finalPlacement = "left";
163
- }
164
- }
165
- // 保存调整后的 placement
166
- this.actualPlacement = finalPlacement;
167
- // 对于 fixed="no" 的情况,只更新 data-placement,让 CSS 处理
168
123
  if (this.fixed === "no") {
169
- this.contentElement.nativeElement.style.visibility = "";
170
- this.contentElement.nativeElement.style.display = wasVisible ? "" : "none";
171
124
  return;
172
125
  }
173
- // 对于 fixed="yes" 的情况,计算具体位置
126
+ const { top: y, left: x, width, height, } = this.rootElement.nativeElement.getBoundingClientRect();
174
127
  /** @type {?} */
175
128
  let top = "0";
176
129
  /** @type {?} */
@@ -179,7 +132,7 @@ export class FloatBoxComponent {
179
132
  let translateX = "0";
180
133
  /** @type {?} */
181
134
  let translateY = "0";
182
- switch (finalPlacement + "_" + this.position) {
135
+ switch (this.placement + "_" + this.position) {
183
136
  case "top_start":
184
137
  top = y + "px";
185
138
  left = x - 8 + "px";
@@ -243,49 +196,9 @@ export class FloatBoxComponent {
243
196
  translateX = "-100%";
244
197
  break;
245
198
  }
246
- // 计算实际渲染位置(考虑 transform)进行边界调整
247
- /** @type {?} */
248
- let actualLeft = parseFloat(left) || 0;
249
- /** @type {?} */
250
- let actualTop = parseFloat(top) || 0;
251
- if (translateX === "-50%") {
252
- actualLeft = actualLeft - contentWidth / 2;
253
- }
254
- else if (translateX === "-100%") {
255
- actualLeft = actualLeft - contentWidth;
256
- }
257
- if (translateY === "-50%") {
258
- actualTop = actualTop - contentHeight / 2;
259
- }
260
- else if (translateY === "-100%") {
261
- actualTop = actualTop - contentHeight;
262
- }
263
- // 水平边界调整
264
- if (finalPlacement === "top" || finalPlacement === "bottom") {
265
- if (actualLeft < SAFE_MARGIN) {
266
- left = (x + SAFE_MARGIN) + "px";
267
- translateX = "0";
268
- }
269
- else if (actualLeft + contentWidth > viewportWidth - SAFE_MARGIN) {
270
- left = (viewportWidth - contentWidth - SAFE_MARGIN) + "px";
271
- translateX = "0";
272
- }
273
- }
274
- // 垂直边界调整
275
- else {
276
- if (actualTop < SAFE_MARGIN) {
277
- top = (y + SAFE_MARGIN) + "px";
278
- translateY = "0";
279
- }
280
- else if (actualTop + contentHeight > viewportHeight - SAFE_MARGIN) {
281
- top = (viewportHeight - contentHeight - SAFE_MARGIN) + "px";
282
- translateY = "0";
283
- }
284
- }
285
199
  this.contentElement.nativeElement.style.top = top;
286
200
  this.contentElement.nativeElement.style.left = left;
287
201
  this.contentElement.nativeElement.style.transform = `translate(${translateX}, ${translateY})`;
288
- this.contentElement.nativeElement.style.visibility = "visible";
289
202
  }
290
203
  /**
291
204
  * @return {?}
@@ -303,15 +216,13 @@ export class FloatBoxComponent {
303
216
  * @return {?}
304
217
  */
305
218
  onMouseEnter() {
306
- if (this.trigger !== "hover") {
219
+ if (this.fixed === "no" || this.trigger !== "hover") {
307
220
  return;
308
221
  }
309
222
  this.opened = "yes";
310
223
  this.openChange.emit(true);
311
224
  this.setFixedContentPosition();
312
- if (this.fixed === "yes") {
313
- window.addEventListener("mousemove", this.onMoveOutside);
314
- }
225
+ window.addEventListener("mousemove", this.onMoveOutside);
315
226
  }
316
227
  /**
317
228
  * @return {?}
@@ -331,7 +242,7 @@ export class FloatBoxComponent {
331
242
  FloatBoxComponent.decorators = [
332
243
  { type: Component, args: [{
333
244
  selector: "rs-float-box",
334
- template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"actualPlacement || placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
245
+ template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
335
246
  styles: [".float-box-container{position:relative}.float-box-container[data-trigger=click]>.float-box-content[data-opened=no],.float-box-container[data-trigger=hover]:not(:hover)>.float-box-content{display:none}.float-box-container>.float-box-content[data-fixed=no]{padding:8px;--top:0;--left:0;--translate-x:0;--translate-y:0;position:absolute;top:var(--top);left:var(--left);transform:translate(var(--translate-x),var(--translate-y));z-index:10}.float-box-container>.float-box-content[data-fixed=no][data-animation=yes]{-webkit-animation:.25s ease-in-out;animation:.25s ease-in-out}.float-box-container>.float-box-content[data-fixed=no][data-placement=top]{--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-animation=true]{-webkit-animation-name:open-from-top;animation-name:open-from-top}.float-box-container>.float-box-content[data-fixed=no][data-placement=left]{--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=right]{--left:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom]{--top:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=start]{--left:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=center]{--left:50%;--translate-x:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=end]{--left:calc(100% + 8px);--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start]{--top:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center]{--top:50%;--translate-y:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end]{--top:calc(100% + 8px);--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end][data-animation=yes]{-webkit-animation-name:open-from-top;animation-name:open-from-top}@-webkit-keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@-webkit-keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}::ng-deep #kt-float-box-fixed-container{width:0;height:0;z-index:100000}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes]{padding:8px;position:fixed;z-index:10}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes][data-opened=no]{display:none}.float-box-show-content{padding:8px 8px 12px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25)}"]
336
247
  }] }
337
248
  ];
@@ -361,8 +272,6 @@ if (false) {
361
272
  /** @type {?} */
362
273
  FloatBoxComponent.prototype._fixed;
363
274
  /** @type {?} */
364
- FloatBoxComponent.prototype.actualPlacement;
365
- /** @type {?} */
366
275
  FloatBoxComponent.prototype.openChange;
367
276
  /** @type {?} */
368
277
  FloatBoxComponent.prototype.rootElement;
@@ -384,4 +293,4 @@ if (false) {
384
293
  */
385
294
  FloatBoxComponent.prototype.ref;
386
295
  }
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLE9BQU8saUJBQWlCOzs7O0lBb0Q3QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpEeEIsYUFBUSxHQUFzQixPQUFPLENBQUM7UUFDcEMsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFDcEMsV0FBTSxHQUFpQixJQUFJLENBQUM7UUF3Q3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBb0IvRCx1QkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztRQThLcEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFZNUIsbUJBQWM7Ozs7UUFBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0QyxJQUNDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQztnQkFDakUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQyxFQUN2RDtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVks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Q0FBQyxDQUFDO1NBQ3pEO0lBQ0YsQ0FBQzs7OztJQWNELEtBQUs7UUFDSixVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBNVNELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsY0FBYztnQkFDeEIscW9CQUFxQzs7YUFFckM7Ozs7WUFkQSxpQkFBaUI7Ozt5QkFnQmhCLEtBQUssU0FBQyxXQUFXO3dCQUNqQixLQUFLLFNBQUMsVUFBVTt1QkFDaEIsS0FBSyxTQUFDLFNBQVM7eUJBQ2YsS0FBSyxTQUFDLFdBQVc7cUJBQ2pCLEtBQUssU0FBQyxPQUFPO3lCQXdDYixNQUFNLFNBQUMsWUFBWTswQkFFbkIsU0FBUyxTQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBRXRDLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzs7O0lBaER2Qyx1Q0FBb0U7O0lBQ3BFLHNDQUF5RDs7SUFDekQscUNBQXdEOztJQUN4RCx1Q0FBb0Q7O0lBQ3BELG1DQUE0Qzs7SUFzQzVDLDRDQUFxRDs7SUFFckQsdUNBQStEOztJQUUvRCx3Q0FDd0M7O0lBQ3hDLDJDQUMyQzs7SUFlM0MsK0NBQW9EOztJQUNwRCw2Q0FBOEI7O0lBNks5QixtQ0FBNEI7O0lBWTVCLDJDQVVFOztJQWVGLDBDQVVFOzs7OztJQTFPVSxnQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1mbG9hdC1ib3hcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInBsYWNlbWVudFwiKSBfcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG5cdEBJbnB1dChcInBvc2l0aW9uXCIpIF9wb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCI7XHJcblx0QElucHV0KFwidHJpZ2dlclwiKSBfdHJpZ2dlcjogXCJob3ZlclwiIHwgXCJjbGlja1wiID0gXCJob3ZlclwiO1xyXG5cdEBJbnB1dChcImFuaW1hdGlvblwiKSBfYW5pbWF0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cdEBJbnB1dChcImZpeGVkXCIpIF9maXhlZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHJcblx0Z2V0IHBsYWNlbWVudCgpIHtcclxuXHRcdGlmIChbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModGhpcy5fcGxhY2VtZW50KSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiYm90dG9tXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgcG9zaXRpb24oKSB7XHJcblx0XHRpZiAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0uaW5jbHVkZXModGhpcy5fcG9zaXRpb24pKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wb3NpdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImNlbnRlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRyaWdnZXIoKSB7XHJcblx0XHRpZiAodGhpcy5fdHJpZ2dlciA9PT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybiBcImNsaWNrXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJob3ZlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFuaW1hdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLl9hbmltYXRpb24gPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpeGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX2ZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdC8vIOWunumZheS9v+eUqOeahCBwbGFjZW1lbnTvvIjlj6/og73nu4/ov4foh6rliqjosIPmlbTvvIlcclxuXHRhY3R1YWxQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcblxyXG5cdEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHJvb3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5maXhlZENvbnRhaW5lckVsID0gdGhpcy5nZXRGaXhlZENvbnRhaW5lcigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0dGhpcy5maXhlZENvbnRhaW5lckVsLmFwcGVuZCh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRGSVhFRF9DT05UQUlORVJfSUQgPSBcImt0LWZsb2F0LWJveC1maXhlZC1jb250YWluZXJcIjtcclxuXHRmaXhlZENvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcclxuXHRnZXRGaXhlZENvbnRhaW5lcigpIHtcclxuXHRcdGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0aWYgKCFjb250YWluZXJFbGVtZW50KSB7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29udGFpbmVyRWxlbWVudDtcclxuXHR9XHJcblxyXG5cdHNldEZpeGVkQ29udGVudFBvc2l0aW9uKCkge1xyXG5cdFx0Y29uc3Qge1xyXG5cdFx0XHR0b3A6IHksXHJcblx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdHdpZHRoLFxyXG5cdFx0XHRoZWlnaHQsXHJcblx0XHR9ID0gdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuXHRcdC8vIOS4tOaXtuaYvuekuuWGheWuueS7peiOt+WPluWwuuWvuFxyXG5cdFx0Y29uc3Qgd2FzVmlzaWJsZSA9IHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ICE9PSBcIm5vbmVcIjtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG5cdFx0Y29uc3QgY29udGVudFJlY3QgPSB0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRjb25zdCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aDtcclxuXHRcdGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50UmVjdC5oZWlnaHQ7XHJcblxyXG5cdFx0Ly8g6I635Y+W6KeG5Y+j5bC65a+4XHJcblx0XHRjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcblx0XHRjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHRcdGNvbnN0IFNBRkVfTUFSR0lOID0gMTI7XHJcblxyXG5cdFx0Ly8g6L6555WM5qOA5rWL77ya6K6h566X5pyA5L2zIHBsYWNlbWVudFxyXG5cdFx0bGV0IGZpbmFsUGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQ7XHJcblx0XHRpZiAodGhpcy5wbGFjZW1lbnQgPT09IFwidG9wXCIgJiYgeSA8IGNvbnRlbnRIZWlnaHQgKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRpZiAodmlld3BvcnRIZWlnaHQgLSAoeSArIGhlaWdodCkgPj0gY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcImJvdHRvbVwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcImJvdHRvbVwiICYmIHZpZXdwb3J0SGVpZ2h0IC0gKHkgKyBoZWlnaHQpIDwgY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh5ID49IGNvbnRlbnRIZWlnaHQgKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGZpbmFsUGxhY2VtZW50ID0gXCJ0b3BcIjtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgJiYgeCA8IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh2aWV3cG9ydFdpZHRoIC0gKHggKyB3aWR0aCkgPj0gY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwicmlnaHRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJyaWdodFwiICYmIHZpZXdwb3J0V2lkdGggLSAoeCArIHdpZHRoKSA8IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh4ID49IGNvbnRlbnRXaWR0aCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcImxlZnRcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOS/neWtmOiwg+aVtOWQjueahCBwbGFjZW1lbnRcclxuXHRcdHRoaXMuYWN0dWFsUGxhY2VtZW50ID0gZmluYWxQbGFjZW1lbnQ7XHJcblxyXG5cdFx0Ly8g5a+55LqOIGZpeGVkPVwibm9cIiDnmoTmg4XlhrXvvIzlj6rmm7TmlrAgZGF0YS1wbGFjZW1lbnTvvIzorqkgQ1NTIOWkhOeQhlxyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwibm9cIikge1xyXG5cdFx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gd2FzVmlzaWJsZSA/IFwiXCIgOiBcIm5vbmVcIjtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOWvueS6jiBmaXhlZD1cInllc1wiIOeahOaDheWGte+8jOiuoeeul+WFt+S9k+S9jee9rlxyXG5cdFx0bGV0IHRvcCA9IFwiMFwiO1xyXG5cdFx0bGV0IGxlZnQgPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRsZXQgdHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0c3dpdGNoIChmaW5hbFBsYWNlbWVudCArIFwiX1wiICsgdGhpcy5wb3NpdGlvbikge1xyXG5cdFx0XHRjYXNlIFwidG9wX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInRvcF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi01MCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0IC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflrp7pmYXmuLLmn5PkvY3nva7vvIjogIPomZEgdHJhbnNmb3Jt77yJ6L+b6KGM6L6555WM6LCD5pW0XHJcblx0XHRsZXQgYWN0dWFsTGVmdCA9IHBhcnNlRmxvYXQobGVmdCkgfHwgMDtcclxuXHRcdGxldCBhY3R1YWxUb3AgPSBwYXJzZUZsb2F0KHRvcCkgfHwgMDtcclxuXHRcdGlmICh0cmFuc2xhdGVYID09PSBcIi01MCVcIikge1xyXG5cdFx0XHRhY3R1YWxMZWZ0ID0gYWN0dWFsTGVmdCAtIGNvbnRlbnRXaWR0aCAvIDI7XHJcblx0XHR9IGVsc2UgaWYgKHRyYW5zbGF0ZVggPT09IFwiLTEwMCVcIikge1xyXG5cdFx0XHRhY3R1YWxMZWZ0ID0gYWN0dWFsTGVmdCAtIGNvbnRlbnRXaWR0aDtcclxuXHRcdH1cclxuXHRcdGlmICh0cmFuc2xhdGVZID09PSBcIi01MCVcIikge1xyXG5cdFx0XHRhY3R1YWxUb3AgPSBhY3R1YWxUb3AgLSBjb250ZW50SGVpZ2h0IC8gMjtcclxuXHRcdH0gZWxzZSBpZiAodHJhbnNsYXRlWSA9PT0gXCItMTAwJVwiKSB7XHJcblx0XHRcdGFjdHVhbFRvcCA9IGFjdHVhbFRvcCAtIGNvbnRlbnRIZWlnaHQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5rC05bmz6L6555WM6LCD5pW0XHJcblx0XHRpZiAoZmluYWxQbGFjZW1lbnQgPT09IFwidG9wXCIgfHwgZmluYWxQbGFjZW1lbnQgPT09IFwiYm90dG9tXCIpIHtcclxuXHRcdFx0aWYgKGFjdHVhbExlZnQgPCBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGxlZnQgPSAoeCArIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRcdH0gZWxzZSBpZiAoYWN0dWFsTGVmdCArIGNvbnRlbnRXaWR0aCA+IHZpZXdwb3J0V2lkdGggLSBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGxlZnQgPSAodmlld3BvcnRXaWR0aCAtIGNvbnRlbnRXaWR0aCAtIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCIwXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8vIOWeguebtOi+ueeVjOiwg+aVtFxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdGlmIChhY3R1YWxUb3AgPCBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdHRvcCA9ICh5ICsgU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHRcdFx0fSBlbHNlIGlmIChhY3R1YWxUb3AgKyBjb250ZW50SGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQgLSBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdHRvcCA9ICh2aWV3cG9ydEhlaWdodCAtIGNvbnRlbnRIZWlnaHQgLSBTQUZFX01BUkdJTikgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7dHJhbnNsYXRlWX0pYDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJ2aXNpYmxlXCI7XHJcblx0fVxyXG5cclxuXHRvcGVuZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0b25DbGlja0NvbnRhaW5lcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdH1cclxuXHJcblx0b25DbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuZml4ZWRDb250YWluZXJFbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRvbk1vdXNlRW50ZXIoKSB7XHJcblx0XHRpZiAodGhpcy50cmlnZ2VyICE9PSBcImhvdmVyXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMub3BlbmVkID0gXCJ5ZXNcIjtcclxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xyXG5cdFx0dGhpcy5zZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uTW92ZU91dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcbn1cclxuIl19
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLE9BQU8saUJBQWlCOzs7O0lBaUQ3QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlDeEIsYUFBUSxHQUFzQixPQUFPLENBQUM7UUFDcEMsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFDcEMsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFxQ3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBb0IvRCx1QkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztRQWtHcEQsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFZNUIsbUJBQWM7Ozs7UUFBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0QyxJQUNDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQztnQkFDakUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVcsQ0FBQyxFQUN2RDtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVks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MkM7O0lBZTNDLCtDQUFvRDs7SUFDcEQsNkNBQThCOztJQWlHOUIsbUNBQTRCOztJQVk1QiwyQ0FVRTs7SUFhRiwwQ0FVRTs7Ozs7SUE1SlUsZ0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6IFwicnMtZmxvYXQtYm94XCIsXHJcblx0dGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG5cdHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsb2F0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRASW5wdXQoXCJwbGFjZW1lbnRcIikgX3BsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuXHRASW5wdXQoXCJwb3NpdGlvblwiKSBfcG9zaXRpb246IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiO1xyXG5cdEBJbnB1dChcInRyaWdnZXJcIikgX3RyaWdnZXI6IFwiaG92ZXJcIiB8IFwiY2xpY2tcIiA9IFwiaG92ZXJcIjtcclxuXHRASW5wdXQoXCJhbmltYXRpb25cIikgX2FuaW1hdGlvbjogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRASW5wdXQoXCJmaXhlZFwiKSBfZml4ZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblxyXG5cdGdldCBwbGFjZW1lbnQoKSB7XHJcblx0XHRpZiAoW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCJdLmluY2x1ZGVzKHRoaXMuX3BsYWNlbWVudCkpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImJvdHRvbVwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBvc2l0aW9uKCkge1xyXG5cdFx0aWYgKFtcInN0YXJ0XCIsIFwiY2VudGVyXCIsIFwiZW5kXCJdLmluY2x1ZGVzKHRoaXMuX3Bvc2l0aW9uKSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcG9zaXRpb247XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJjZW50ZXJcIjtcclxuXHR9XHJcblxyXG5cdGdldCB0cmlnZ2VyKCkge1xyXG5cdFx0aWYgKHRoaXMuX3RyaWdnZXIgPT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJjbGlja1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiaG92ZXJcIjtcclxuXHR9XHJcblxyXG5cdGdldCBhbmltYXRpb24oKSB7XHJcblx0XHRpZiAodGhpcy5fYW5pbWF0aW9uID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdGdldCBmaXhlZCgpIHtcclxuXHRcdGlmICh0aGlzLl9maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJ5ZXNcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcIm5vXCI7XHJcblx0fVxyXG5cclxuXHRAT3V0cHV0KFwib3BlbkNoYW5nZVwiKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwiZWxlbWVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRyb290RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblx0QFZpZXdDaGlsZChcImNvbnRlbnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0Y29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdHRoaXMuZml4ZWRDb250YWluZXJFbCA9IHRoaXMuZ2V0Rml4ZWRDb250YWluZXIoKTtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHRoaXMuZml4ZWRDb250YWluZXJFbC5hcHBlbmQodGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xyXG5cdH1cclxuXHJcblx0RklYRURfQ09OVEFJTkVSX0lEID0gXCJrdC1mbG9hdC1ib3gtZml4ZWQtY29udGFpbmVyXCI7XHJcblx0Zml4ZWRDb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XHJcblx0Z2V0Rml4ZWRDb250YWluZXIoKSB7XHJcblx0XHRsZXQgY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdGlmICghY29udGFpbmVyRWxlbWVudCkge1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuXHRcdFx0Y29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lckVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbnRhaW5lckVsZW1lbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcIm5vXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHtcclxuXHRcdFx0dG9wOiB5LFxyXG5cdFx0XHRsZWZ0OiB4LFxyXG5cdFx0XHR3aWR0aCxcclxuXHRcdFx0aGVpZ2h0LFxyXG5cdFx0fSA9IHRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcblx0XHRsZXQgdG9wID0gXCIwXCI7XHJcblx0XHRsZXQgbGVmdCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRzd2l0Y2ggKHRoaXMucGxhY2VtZW50ICsgXCJfXCIgKyB0aGlzLnBvc2l0aW9uKSB7XHJcblx0XHRcdGNhc2UgXCJ0b3Bfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0b3A7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQ7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3RyYW5zbGF0ZVh9LCAke3RyYW5zbGF0ZVl9KWA7XHJcblx0fVxyXG5cclxuXHRvcGVuZWQ6IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0b25DbGlja0NvbnRhaW5lcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiY2xpY2tcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdH1cclxuXHJcblx0b25DbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuZml4ZWRDb250YWluZXJFbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25DbGlja091dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRvbk1vdXNlRW50ZXIoKSB7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJub1wiIHx8IHRoaXMudHJpZ2dlciAhPT0gXCJob3ZlclwiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbk1vdmVPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcblx0XHRpZiAoXHJcblx0XHRcdCF0aGlzLnJvb3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpICYmXHJcblx0XHRcdCF0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcblx0XHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcclxuXHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm9uTW92ZU91dHNpZGUpO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0fSwgMCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -150,57 +150,10 @@ var FloatBoxComponent = /** @class */ (function () {
150
150
  * @return {?}
151
151
  */
152
152
  function () {
153
- var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
154
- // 临时显示内容以获取尺寸
155
- /** @type {?} */
156
- var wasVisible = this.contentElement.nativeElement.style.display !== "none";
157
- this.contentElement.nativeElement.style.visibility = "hidden";
158
- this.contentElement.nativeElement.style.display = "block";
159
- /** @type {?} */
160
- var contentRect = this.contentElement.nativeElement.getBoundingClientRect();
161
- /** @type {?} */
162
- var contentWidth = contentRect.width;
163
- /** @type {?} */
164
- var contentHeight = contentRect.height;
165
- // 获取视口尺寸
166
- /** @type {?} */
167
- var viewportWidth = window.innerWidth;
168
- /** @type {?} */
169
- var viewportHeight = window.innerHeight;
170
- /** @type {?} */
171
- var SAFE_MARGIN = 12;
172
- // 边界检测:计算最佳 placement
173
- /** @type {?} */
174
- var finalPlacement = this.placement;
175
- if (this.placement === "top" && y < contentHeight + SAFE_MARGIN) {
176
- if (viewportHeight - (y + height) >= contentHeight + SAFE_MARGIN) {
177
- finalPlacement = "bottom";
178
- }
179
- }
180
- else if (this.placement === "bottom" && viewportHeight - (y + height) < contentHeight + SAFE_MARGIN) {
181
- if (y >= contentHeight + SAFE_MARGIN) {
182
- finalPlacement = "top";
183
- }
184
- }
185
- else if (this.placement === "left" && x < contentWidth + SAFE_MARGIN) {
186
- if (viewportWidth - (x + width) >= contentWidth + SAFE_MARGIN) {
187
- finalPlacement = "right";
188
- }
189
- }
190
- else if (this.placement === "right" && viewportWidth - (x + width) < contentWidth + SAFE_MARGIN) {
191
- if (x >= contentWidth + SAFE_MARGIN) {
192
- finalPlacement = "left";
193
- }
194
- }
195
- // 保存调整后的 placement
196
- this.actualPlacement = finalPlacement;
197
- // 对于 fixed="no" 的情况,只更新 data-placement,让 CSS 处理
198
153
  if (this.fixed === "no") {
199
- this.contentElement.nativeElement.style.visibility = "";
200
- this.contentElement.nativeElement.style.display = wasVisible ? "" : "none";
201
154
  return;
202
155
  }
203
- // 对于 fixed="yes" 的情况,计算具体位置
156
+ var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
204
157
  /** @type {?} */
205
158
  var top = "0";
206
159
  /** @type {?} */
@@ -209,7 +162,7 @@ var FloatBoxComponent = /** @class */ (function () {
209
162
  var translateX = "0";
210
163
  /** @type {?} */
211
164
  var translateY = "0";
212
- switch (finalPlacement + "_" + this.position) {
165
+ switch (this.placement + "_" + this.position) {
213
166
  case "top_start":
214
167
  top = y + "px";
215
168
  left = x - 8 + "px";
@@ -273,49 +226,9 @@ var FloatBoxComponent = /** @class */ (function () {
273
226
  translateX = "-100%";
274
227
  break;
275
228
  }
276
- // 计算实际渲染位置(考虑 transform)进行边界调整
277
- /** @type {?} */
278
- var actualLeft = parseFloat(left) || 0;
279
- /** @type {?} */
280
- var actualTop = parseFloat(top) || 0;
281
- if (translateX === "-50%") {
282
- actualLeft = actualLeft - contentWidth / 2;
283
- }
284
- else if (translateX === "-100%") {
285
- actualLeft = actualLeft - contentWidth;
286
- }
287
- if (translateY === "-50%") {
288
- actualTop = actualTop - contentHeight / 2;
289
- }
290
- else if (translateY === "-100%") {
291
- actualTop = actualTop - contentHeight;
292
- }
293
- // 水平边界调整
294
- if (finalPlacement === "top" || finalPlacement === "bottom") {
295
- if (actualLeft < SAFE_MARGIN) {
296
- left = (x + SAFE_MARGIN) + "px";
297
- translateX = "0";
298
- }
299
- else if (actualLeft + contentWidth > viewportWidth - SAFE_MARGIN) {
300
- left = (viewportWidth - contentWidth - SAFE_MARGIN) + "px";
301
- translateX = "0";
302
- }
303
- }
304
- // 垂直边界调整
305
- else {
306
- if (actualTop < SAFE_MARGIN) {
307
- top = (y + SAFE_MARGIN) + "px";
308
- translateY = "0";
309
- }
310
- else if (actualTop + contentHeight > viewportHeight - SAFE_MARGIN) {
311
- top = (viewportHeight - contentHeight - SAFE_MARGIN) + "px";
312
- translateY = "0";
313
- }
314
- }
315
229
  this.contentElement.nativeElement.style.top = top;
316
230
  this.contentElement.nativeElement.style.left = left;
317
231
  this.contentElement.nativeElement.style.transform = "translate(" + translateX + ", " + translateY + ")";
318
- this.contentElement.nativeElement.style.visibility = "visible";
319
232
  };
320
233
  /**
321
234
  * @return {?}
@@ -339,15 +252,13 @@ var FloatBoxComponent = /** @class */ (function () {
339
252
  * @return {?}
340
253
  */
341
254
  function () {
342
- if (this.trigger !== "hover") {
255
+ if (this.fixed === "no" || this.trigger !== "hover") {
343
256
  return;
344
257
  }
345
258
  this.opened = "yes";
346
259
  this.openChange.emit(true);
347
260
  this.setFixedContentPosition();
348
- if (this.fixed === "yes") {
349
- window.addEventListener("mousemove", this.onMoveOutside);
350
- }
261
+ window.addEventListener("mousemove", this.onMoveOutside);
351
262
  };
352
263
  /**
353
264
  * @return {?}
@@ -370,7 +281,7 @@ var FloatBoxComponent = /** @class */ (function () {
370
281
  FloatBoxComponent.decorators = [
371
282
  { type: Component, args: [{
372
283
  selector: "rs-float-box",
373
- template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"actualPlacement || placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
284
+ template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
374
285
  styles: [".float-box-container{position:relative}.float-box-container[data-trigger=click]>.float-box-content[data-opened=no],.float-box-container[data-trigger=hover]:not(:hover)>.float-box-content{display:none}.float-box-container>.float-box-content[data-fixed=no]{padding:8px;--top:0;--left:0;--translate-x:0;--translate-y:0;position:absolute;top:var(--top);left:var(--left);transform:translate(var(--translate-x),var(--translate-y));z-index:10}.float-box-container>.float-box-content[data-fixed=no][data-animation=yes]{-webkit-animation:.25s ease-in-out;animation:.25s ease-in-out}.float-box-container>.float-box-content[data-fixed=no][data-placement=top]{--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-animation=true]{-webkit-animation-name:open-from-top;animation-name:open-from-top}.float-box-container>.float-box-content[data-fixed=no][data-placement=left]{--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=right]{--left:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom]{--top:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=start]{--left:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=center]{--left:50%;--translate-x:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=end]{--left:calc(100% + 8px);--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start]{--top:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center]{--top:50%;--translate-y:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end]{--top:calc(100% + 8px);--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end][data-animation=yes]{-webkit-animation-name:open-from-top;animation-name:open-from-top}@-webkit-keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@-webkit-keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}::ng-deep #kt-float-box-fixed-container{width:0;height:0;z-index:100000}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes]{padding:8px;position:fixed;z-index:10}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes][data-opened=no]{display:none}.float-box-show-content{padding:8px 8px 12px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25)}"]
375
286
  }] }
376
287
  ];
@@ -403,8 +314,6 @@ if (false) {
403
314
  /** @type {?} */
404
315
  FloatBoxComponent.prototype._fixed;
405
316
  /** @type {?} */
406
- FloatBoxComponent.prototype.actualPlacement;
407
- /** @type {?} */
408
317
  FloatBoxComponent.prototype.openChange;
409
318
  /** @type {?} */
410
319
  FloatBoxComponent.prototype.rootElement;
@@ -426,4 +335,4 @@ if (false) {
426
335
  */
427
336
  FloatBoxComponent.prototype.ref;
428
337
  }
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXlEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakR4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXdDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBOEtwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25EZXN0cm95LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWZsb2F0LWJveFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbG9hdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KFwicGxhY2VtZW50XCIpIF9wbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcblx0QElucHV0KFwicG9zaXRpb25cIikgX3Bvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuXHRASW5wdXQoXCJ0cmlnZ2VyXCIpIF90cmlnZ2VyOiBcImhvdmVyXCIgfCBcImNsaWNrXCIgPSBcImhvdmVyXCI7XHJcblx0QElucHV0KFwiYW5pbWF0aW9uXCIpIF9hbmltYXRpb246IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0QElucHV0KFwiZml4ZWRcIikgX2ZpeGVkOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cclxuXHRnZXQgcGxhY2VtZW50KCkge1xyXG5cdFx0aWYgKFtcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh0aGlzLl9wbGFjZW1lbnQpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wbGFjZW1lbnQ7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJib3R0b21cIjtcclxuXHR9XHJcblxyXG5cdGdldCBwb3NpdGlvbigpIHtcclxuXHRcdGlmIChbXCJzdGFydFwiLCBcImNlbnRlclwiLCBcImVuZFwiXS5pbmNsdWRlcyh0aGlzLl9wb3NpdGlvbikpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiY2VudGVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgdHJpZ2dlcigpIHtcclxuXHRcdGlmICh0aGlzLl90cmlnZ2VyID09PSBcImNsaWNrXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwiY2xpY2tcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImhvdmVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgYW5pbWF0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuX2FuaW1hdGlvbiA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJ5ZXNcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcIm5vXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgZml4ZWQoKSB7XHJcblx0XHRpZiAodGhpcy5fZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Ly8g5a6e6ZmF5L2/55So55qEIHBsYWNlbWVudO+8iOWPr+iDvee7j+i/h+iHquWKqOiwg+aVtO+8iVxyXG5cdGFjdHVhbFBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuXHJcblx0QE91dHB1dChcIm9wZW5DaGFuZ2VcIikgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImVsZW1lbnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cm9vdEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cdEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdGNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwgPSB0aGlzLmdldEZpeGVkQ29udGFpbmVyKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwuYXBwZW5kKHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuXHR9XHJcblxyXG5cdEZJWEVEX0NPTlRBSU5FUl9JRCA9IFwia3QtZmxvYXQtYm94LWZpeGVkLWNvbnRhaW5lclwiO1xyXG5cdGZpeGVkQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xyXG5cdGdldEZpeGVkQ29udGFpbmVyKCkge1xyXG5cdFx0bGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcblx0XHRpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuXHRcdFx0Y29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBjb250YWluZXJFbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKSB7XHJcblx0XHRjb25zdCB7XHJcblx0XHRcdHRvcDogeSxcclxuXHRcdFx0bGVmdDogeCxcclxuXHRcdFx0d2lkdGgsXHJcblx0XHRcdGhlaWdodCxcclxuXHRcdH0gPSB0aGlzLnJvb3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Ly8g5Li05pe25pi+56S65YaF5a655Lul6I635Y+W5bC65a+4XHJcblx0XHRjb25zdCB3YXNWaXNpYmxlID0gdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgIT09IFwibm9uZVwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XHJcblx0XHRjb25zdCBjb250ZW50UmVjdCA9IHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoO1xyXG5cdFx0Y29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodDtcclxuXHJcblx0XHQvLyDojrflj5bop4blj6PlsLrlr7hcclxuXHRcdGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuXHRcdGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG5cdFx0Y29uc3QgU0FGRV9NQVJHSU4gPSAxMjtcclxuXHJcblx0XHQvLyDovrnnlYzmo4DmtYvvvJrorqHnrpfmnIDkvbMgcGxhY2VtZW50XHJcblx0XHRsZXQgZmluYWxQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcclxuXHRcdGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB5IDwgY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh2aWV3cG9ydEhlaWdodCAtICh5ICsgaGVpZ2h0KSA+PSBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwiYm90dG9tXCI7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYgdmlld3BvcnRIZWlnaHQgLSAoeSArIGhlaWdodCkgPCBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHkgPj0gY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcInRvcFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcImxlZnRcIiAmJiB4IDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHZpZXdwb3J0V2lkdGggLSAoeCArIHdpZHRoKSA+PSBjb250ZW50V2lkdGggKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGZpbmFsUGxhY2VtZW50ID0gXCJyaWdodFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcInJpZ2h0XCIgJiYgdmlld3BvcnRXaWR0aCAtICh4ICsgd2lkdGgpIDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHggPj0gY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwibGVmdFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5L+d5a2Y6LCD5pW05ZCO55qEIHBsYWNlbWVudFxyXG5cdFx0dGhpcy5hY3R1YWxQbGFjZW1lbnQgPSBmaW5hbFBsYWNlbWVudDtcclxuXHJcblx0XHQvLyDlr7nkuo4gZml4ZWQ9XCJub1wiIOeahOaDheWGte+8jOWPquabtOaWsCBkYXRhLXBsYWNlbWVudO+8jOiuqSBDU1Mg5aSE55CGXHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJub1wiKSB7XHJcblx0XHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcclxuXHRcdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSB3YXNWaXNpYmxlID8gXCJcIiA6IFwibm9uZVwiO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5a+55LqOIGZpeGVkPVwieWVzXCIg55qE5oOF5Ya177yM6K6h566X5YW35L2T5L2N572uXHJcblx0XHRsZXQgdG9wID0gXCIwXCI7XHJcblx0XHRsZXQgbGVmdCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRzd2l0Y2ggKGZpbmFsUGxhY2VtZW50ICsgXCJfXCIgKyB0aGlzLnBvc2l0aW9uKSB7XHJcblx0XHRcdGNhc2UgXCJ0b3Bfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOiuoeeul+WunumZhea4suafk+S9jee9ru+8iOiAg+iZkSB0cmFuc2Zvcm3vvInov5vooYzovrnnlYzosIPmlbRcclxuXHRcdGxldCBhY3R1YWxMZWZ0ID0gcGFyc2VGbG9hdChsZWZ0KSB8fCAwO1xyXG5cdFx0bGV0IGFjdHVhbFRvcCA9IHBhcnNlRmxvYXQodG9wKSB8fCAwO1xyXG5cdFx0aWYgKHRyYW5zbGF0ZVggPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoIC8gMjtcclxuXHRcdH0gZWxzZSBpZiAodHJhbnNsYXRlWCA9PT0gXCItMTAwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRyYW5zbGF0ZVkgPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbFRvcCA9IGFjdHVhbFRvcCAtIGNvbnRlbnRIZWlnaHQgLyAyO1xyXG5cdFx0fSBlbHNlIGlmICh0cmFuc2xhdGVZID09PSBcIi0xMDAlXCIpIHtcclxuXHRcdFx0YWN0dWFsVG9wID0gYWN0dWFsVG9wIC0gY29udGVudEhlaWdodDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDmsLTlubPovrnnlYzosIPmlbRcclxuXHRcdGlmIChmaW5hbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiB8fCBmaW5hbFBsYWNlbWVudCA9PT0gXCJib3R0b21cIikge1xyXG5cdFx0XHRpZiAoYWN0dWFsTGVmdCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh4ICsgU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fSBlbHNlIGlmIChhY3R1YWxMZWZ0ICsgY29udGVudFdpZHRoID4gdmlld3BvcnRXaWR0aCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh2aWV3cG9ydFdpZHRoIC0gY29udGVudFdpZHRoIC0gU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8g5Z6C55u06L6555WM6LCD5pW0XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0aWYgKGFjdHVhbFRvcCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHkgKyBTQUZFX01BUkdJTikgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGFjdHVhbFRvcCArIGNvbnRlbnRIZWlnaHQgPiB2aWV3cG9ydEhlaWdodCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudEhlaWdodCAtIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdG9wO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0O1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt0cmFuc2xhdGVYfSwgJHt0cmFuc2xhdGVZfSlgO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcInZpc2libGVcIjtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiaG92ZXJcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW92ZU91dHNpZGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25Nb3ZlT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Y2xvc2UoKSB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHR0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcclxuXHRcdH0sIDApO1xyXG5cdH1cclxufVxyXG4iXX0=
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXNEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUN4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXFDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBa0dwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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cEUsc0NBQXlEOztJQUN6RCxxQ0FBd0Q7O0lBQ3hELHVDQUFvRDs7SUFDcEQsbUNBQTRDOztJQXFDNUMsdUNBQStEOztJQUUvRCx3Q0FDd0M7O0lBQ3hDLDJDQUMyQzs7SUFlM0MsK0NBQW9EOztJQUNwRCw2Q0FBOEI7O0lBaUc5QixtQ0FBNEI7O0lBWTVCLDJDQVVFOztJQWFGLDBDQVVFOzs7OztJQTVKVSxnQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1mbG9hdC1ib3hcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInBsYWNlbWVudFwiKSBfcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG5cdEBJbnB1dChcInBvc2l0aW9uXCIpIF9wb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCI7XHJcblx0QElucHV0KFwidHJpZ2dlclwiKSBfdHJpZ2dlcjogXCJob3ZlclwiIHwgXCJjbGlja1wiID0gXCJob3ZlclwiO1xyXG5cdEBJbnB1dChcImFuaW1hdGlvblwiKSBfYW5pbWF0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cdEBJbnB1dChcImZpeGVkXCIpIF9maXhlZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHJcblx0Z2V0IHBsYWNlbWVudCgpIHtcclxuXHRcdGlmIChbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModGhpcy5fcGxhY2VtZW50KSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiYm90dG9tXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgcG9zaXRpb24oKSB7XHJcblx0XHRpZiAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0uaW5jbHVkZXModGhpcy5fcG9zaXRpb24pKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wb3NpdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImNlbnRlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRyaWdnZXIoKSB7XHJcblx0XHRpZiAodGhpcy5fdHJpZ2dlciA9PT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybiBcImNsaWNrXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJob3ZlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFuaW1hdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLl9hbmltYXRpb24gPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpeGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX2ZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHJvb3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5maXhlZENvbnRhaW5lckVsID0gdGhpcy5nZXRGaXhlZENvbnRhaW5lcigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0dGhpcy5maXhlZENvbnRhaW5lckVsLmFwcGVuZCh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRGSVhFRF9DT05UQUlORVJfSUQgPSBcImt0LWZsb2F0LWJveC1maXhlZC1jb250YWluZXJcIjtcclxuXHRmaXhlZENvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcclxuXHRnZXRGaXhlZENvbnRhaW5lcigpIHtcclxuXHRcdGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0aWYgKCFjb250YWluZXJFbGVtZW50KSB7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29udGFpbmVyRWxlbWVudDtcclxuXHR9XHJcblxyXG5cdHNldEZpeGVkQ29udGVudFBvc2l0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwibm9cIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qge1xyXG5cdFx0XHR0b3A6IHksXHJcblx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdHdpZHRoLFxyXG5cdFx0XHRoZWlnaHQsXHJcblx0XHR9ID0gdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuXHRcdGxldCB0b3AgPSBcIjBcIjtcclxuXHRcdGxldCBsZWZ0ID0gXCIwXCI7XHJcblx0XHRsZXQgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHRcdHN3aXRjaCAodGhpcy5wbGFjZW1lbnQgKyBcIl9cIiArIHRoaXMucG9zaXRpb24pIHtcclxuXHRcdFx0Y2FzZSBcInRvcF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInRvcF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0IC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7dHJhbnNsYXRlWX0pYDtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcIm5vXCIgfHwgdGhpcy50cmlnZ2VyICE9PSBcImhvdmVyXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMub3BlbmVkID0gXCJ5ZXNcIjtcclxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xyXG5cdFx0dGhpcy5zZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpO1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHR9XHJcblxyXG5cdG9uTW92ZU91dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcbn1cclxuIl19