@bizdoc/core 1.10.3 → 1.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/browse/browse-items.component.mjs +2 -2
- package/esm2020/lib/compose/compose.mobile.component.mjs +2 -2
- package/esm2020/lib/compose/compose.pane.component.mjs +2 -2
- package/esm2020/lib/core/translate.service.mjs +4 -1
- package/esm2020/lib/core/translations.mjs +3 -3
- package/esm2020/lib/cube/accum/accum.component.mjs +2 -6
- package/esm2020/lib/cube/chart/chart.component.mjs +2 -6
- package/esm2020/lib/cube/cube.service.mjs +11 -4
- package/esm2020/lib/cube/explore/explore-items.component.mjs +2 -6
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +16 -19
- package/esm2020/lib/cube/pivot/pivot.component.mjs +2 -6
- package/esm2020/lib/dashboard/recents/recents.widget.mjs +16 -15
- package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
- package/fesm2015/bizdoc-core.mjs +151 -156
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +151 -156
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/cube/cube.service.d.ts +1 -0
- package/lib/cube/grid/spreadsheet.component.d.ts +0 -1
- package/lib/dashboard/recents/recents.widget.d.ts +2 -1
- package/package.json +1 -1
- package/assets/dayjs/locale/af.js +0 -1
- package/assets/dayjs/locale/am.js +0 -1
- package/assets/dayjs/locale/ar-dz.js +0 -1
- package/assets/dayjs/locale/ar-iq.js +0 -1
- package/assets/dayjs/locale/ar-kw.js +0 -1
- package/assets/dayjs/locale/ar-ly.js +0 -1
- package/assets/dayjs/locale/ar-ma.js +0 -1
- package/assets/dayjs/locale/ar-sa.js +0 -1
- package/assets/dayjs/locale/ar-tn.js +0 -1
- package/assets/dayjs/locale/ar.js +0 -1
- package/assets/dayjs/locale/az.js +0 -1
- package/assets/dayjs/locale/be.js +0 -1
- package/assets/dayjs/locale/bg.js +0 -1
- package/assets/dayjs/locale/bi.js +0 -1
- package/assets/dayjs/locale/bm.js +0 -1
- package/assets/dayjs/locale/bn.js +0 -1
- package/assets/dayjs/locale/bo.js +0 -1
- package/assets/dayjs/locale/br.js +0 -1
- package/assets/dayjs/locale/bs.js +0 -1
- package/assets/dayjs/locale/ca.js +0 -1
- package/assets/dayjs/locale/cs.js +0 -1
- package/assets/dayjs/locale/cv.js +0 -1
- package/assets/dayjs/locale/cy.js +0 -1
- package/assets/dayjs/locale/da.js +0 -1
- package/assets/dayjs/locale/de-at.js +0 -1
- package/assets/dayjs/locale/de-ch.js +0 -1
- package/assets/dayjs/locale/de.js +0 -1
- package/assets/dayjs/locale/dv.js +0 -1
- package/assets/dayjs/locale/el.js +0 -1
- package/assets/dayjs/locale/en-au.js +0 -1
- package/assets/dayjs/locale/en-ca.js +0 -1
- package/assets/dayjs/locale/en-gb.js +0 -1
- package/assets/dayjs/locale/en-ie.js +0 -1
- package/assets/dayjs/locale/en-il.js +0 -1
- package/assets/dayjs/locale/en-in.js +0 -1
- package/assets/dayjs/locale/en-nz.js +0 -1
- package/assets/dayjs/locale/en-sg.js +0 -1
- package/assets/dayjs/locale/en-tt.js +0 -1
- package/assets/dayjs/locale/en.js +0 -1
- package/assets/dayjs/locale/eo.js +0 -1
- package/assets/dayjs/locale/es-do.js +0 -1
- package/assets/dayjs/locale/es-mx.js +0 -1
- package/assets/dayjs/locale/es-pr.js +0 -1
- package/assets/dayjs/locale/es-us.js +0 -1
- package/assets/dayjs/locale/es.js +0 -1
- package/assets/dayjs/locale/et.js +0 -1
- package/assets/dayjs/locale/eu.js +0 -1
- package/assets/dayjs/locale/fa.js +0 -1
- package/assets/dayjs/locale/fi.js +0 -1
- package/assets/dayjs/locale/fo.js +0 -1
- package/assets/dayjs/locale/fr-ca.js +0 -1
- package/assets/dayjs/locale/fr-ch.js +0 -1
- package/assets/dayjs/locale/fr.js +0 -1
- package/assets/dayjs/locale/fy.js +0 -1
- package/assets/dayjs/locale/ga.js +0 -1
- package/assets/dayjs/locale/gd.js +0 -1
- package/assets/dayjs/locale/gl.js +0 -1
- package/assets/dayjs/locale/gom-latn.js +0 -1
- package/assets/dayjs/locale/gu.js +0 -1
- package/assets/dayjs/locale/he.js +0 -1
- package/assets/dayjs/locale/hi.js +0 -1
- package/assets/dayjs/locale/hr.js +0 -1
- package/assets/dayjs/locale/ht.js +0 -1
- package/assets/dayjs/locale/hu.js +0 -1
- package/assets/dayjs/locale/hy-am.js +0 -1
- package/assets/dayjs/locale/id.js +0 -1
- package/assets/dayjs/locale/index.d.ts +0 -11
- package/assets/dayjs/locale/is.js +0 -1
- package/assets/dayjs/locale/it-ch.js +0 -1
- package/assets/dayjs/locale/it.js +0 -1
- package/assets/dayjs/locale/ja.js +0 -1
- package/assets/dayjs/locale/jv.js +0 -1
- package/assets/dayjs/locale/ka.js +0 -1
- package/assets/dayjs/locale/kk.js +0 -1
- package/assets/dayjs/locale/km.js +0 -1
- package/assets/dayjs/locale/kn.js +0 -1
- package/assets/dayjs/locale/ko.js +0 -1
- package/assets/dayjs/locale/ku.js +0 -1
- package/assets/dayjs/locale/ky.js +0 -1
- package/assets/dayjs/locale/lb.js +0 -1
- package/assets/dayjs/locale/lo.js +0 -1
- package/assets/dayjs/locale/lt.js +0 -1
- package/assets/dayjs/locale/lv.js +0 -1
- package/assets/dayjs/locale/me.js +0 -1
- package/assets/dayjs/locale/mi.js +0 -1
- package/assets/dayjs/locale/mk.js +0 -1
- package/assets/dayjs/locale/ml.js +0 -1
- package/assets/dayjs/locale/mn.js +0 -1
- package/assets/dayjs/locale/mr.js +0 -1
- package/assets/dayjs/locale/ms-my.js +0 -1
- package/assets/dayjs/locale/ms.js +0 -1
- package/assets/dayjs/locale/mt.js +0 -1
- package/assets/dayjs/locale/my.js +0 -1
- package/assets/dayjs/locale/nb.js +0 -1
- package/assets/dayjs/locale/ne.js +0 -1
- package/assets/dayjs/locale/nl-be.js +0 -1
- package/assets/dayjs/locale/nl.js +0 -1
- package/assets/dayjs/locale/nn.js +0 -1
- package/assets/dayjs/locale/oc-lnc.js +0 -1
- package/assets/dayjs/locale/pa-in.js +0 -1
- package/assets/dayjs/locale/pl.js +0 -1
- package/assets/dayjs/locale/pt-br.js +0 -1
- package/assets/dayjs/locale/pt.js +0 -1
- package/assets/dayjs/locale/ro.js +0 -1
- package/assets/dayjs/locale/ru.js +0 -1
- package/assets/dayjs/locale/rw.js +0 -1
- package/assets/dayjs/locale/sd.js +0 -1
- package/assets/dayjs/locale/se.js +0 -1
- package/assets/dayjs/locale/si.js +0 -1
- package/assets/dayjs/locale/sk.js +0 -1
- package/assets/dayjs/locale/sl.js +0 -1
- package/assets/dayjs/locale/sq.js +0 -1
- package/assets/dayjs/locale/sr-cyrl.js +0 -1
- package/assets/dayjs/locale/sr.js +0 -1
- package/assets/dayjs/locale/ss.js +0 -1
- package/assets/dayjs/locale/sv-fi.js +0 -1
- package/assets/dayjs/locale/sv.js +0 -1
- package/assets/dayjs/locale/sw.js +0 -1
- package/assets/dayjs/locale/ta.js +0 -1
- package/assets/dayjs/locale/te.js +0 -1
- package/assets/dayjs/locale/tet.js +0 -1
- package/assets/dayjs/locale/tg.js +0 -1
- package/assets/dayjs/locale/th.js +0 -1
- package/assets/dayjs/locale/tk.js +0 -1
- package/assets/dayjs/locale/tl-ph.js +0 -1
- package/assets/dayjs/locale/tlh.js +0 -1
- package/assets/dayjs/locale/tr.js +0 -1
- package/assets/dayjs/locale/types.d.ts +0 -33
- package/assets/dayjs/locale/tzl.js +0 -1
- package/assets/dayjs/locale/tzm-latn.js +0 -1
- package/assets/dayjs/locale/tzm.js +0 -1
- package/assets/dayjs/locale/ug-cn.js +0 -1
- package/assets/dayjs/locale/uk.js +0 -1
- package/assets/dayjs/locale/ur.js +0 -1
- package/assets/dayjs/locale/uz-latn.js +0 -1
- package/assets/dayjs/locale/uz.js +0 -1
- package/assets/dayjs/locale/vi.js +0 -1
- package/assets/dayjs/locale/x-pseudo.js +0 -1
- package/assets/dayjs/locale/yo.js +0 -1
- package/assets/dayjs/locale/zh-cn.js +0 -1
- package/assets/dayjs/locale/zh-hk.js +0 -1
- package/assets/dayjs/locale/zh-tw.js +0 -1
- package/assets/dayjs/locale/zh.js +0 -1
@@ -1,9 +1,7 @@
|
|
1
1
|
import { EventEmitter, Component, Output, HostBinding, Input } from "@angular/core";
|
2
|
-
import { Spreadsheet } from "@syncfusion/ej2-angular-spreadsheet";
|
3
|
-
import { Internationalization } from "@syncfusion/ej2-base";
|
2
|
+
import { Spreadsheet, isNumber } from "@syncfusion/ej2-angular-spreadsheet";
|
4
3
|
import { Workbook } from '@syncfusion/ej2-excel-export';
|
5
4
|
import { isArray, isString } from "../../core/functions";
|
6
|
-
import { getCurrencySymbol, getLocaleNumberFormat, NumberFormatStyle } from "@angular/common";
|
7
5
|
import * as i0 from "@angular/core";
|
8
6
|
import * as i1 from "../../core/session.service";
|
9
7
|
import * as i2 from "../../core/prompt.service";
|
@@ -11,6 +9,7 @@ import * as i3 from "../cube.service";
|
|
11
9
|
import * as i4 from "../../core/translate.service";
|
12
10
|
import * as i5 from "../../core/datasource.service";
|
13
11
|
export class CubeSpreadsheetComponent {
|
12
|
+
//private readonly _intl: Internationalization = new Internationalization();
|
14
13
|
constructor(_session, _sb, _service, _translate, _ds, _elementRef) {
|
15
14
|
this._session = _session;
|
16
15
|
this._sb = _sb;
|
@@ -26,7 +25,6 @@ export class CubeSpreadsheetComponent {
|
|
26
25
|
this.autoFillSettings = { showFillOptions: false };
|
27
26
|
this._yrows = [];
|
28
27
|
this._xcolumns = [];
|
29
|
-
this._intl = new Internationalization();
|
30
28
|
}
|
31
29
|
set xAxis(val) {
|
32
30
|
this._xAxis = isArray(val) ? val : [val];
|
@@ -41,13 +39,14 @@ export class CubeSpreadsheetComponent {
|
|
41
39
|
}
|
42
40
|
ngOnInit() {
|
43
41
|
this._cube = this.cube ? this._session.profile.cubes.find(c => c.name === this.cube) : this._session.profile.cubes[0];
|
44
|
-
this._numberFormat = this.
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
42
|
+
this._numberFormat = `${this._cube.currencyCode ? 'c' : 'n'}${this._service.fractionDigits}`;
|
43
|
+
//this._intl.getNumberPattern({
|
44
|
+
// currency: this._cube.currencyCode,
|
45
|
+
// format: this._cube.currencyCode ? 'c' : 'n',
|
46
|
+
// useGrouping: true,
|
47
|
+
// maximumFractionDigits: this._service.fractionDigits,
|
48
|
+
// minimumFractionDigits: this._service.fractionDigits
|
49
|
+
//} as NumberFormatOptions);
|
51
50
|
if (!this._series) {
|
52
51
|
this._axes = this._xAxis.map(c => this._cube.axes.find(a => a.name == c));
|
53
52
|
if (this._indices)
|
@@ -300,24 +299,22 @@ export class CubeSpreadsheetComponent {
|
|
300
299
|
}
|
301
300
|
}
|
302
301
|
exportToExcel(title) {
|
303
|
-
const { rows } = this.spreadsheet.sheets[0], numberFormat = this.
|
304
|
-
getCurrencySymbol(this._cube.currencyCode, 'narrow') +
|
305
|
-
getLocaleNumberFormat(this._session.locale, NumberFormatStyle.Currency)
|
306
|
-
: getLocaleNumberFormat(this._session.locale, NumberFormatStyle.Decimal), book = new Workbook({
|
302
|
+
const { rows } = this.spreadsheet.sheets[0], numberFormat = this._service.numberFormat, book = new Workbook({
|
307
303
|
worksheets: [
|
308
304
|
{
|
305
|
+
enableRtl: this._session.inverse,
|
309
306
|
name: this._translate.get('SheetN', 1),
|
310
307
|
columns: rows[0].cells.map((_, i) => ({ index: i + 1, width: 150 })),
|
311
308
|
rows: rows.map((r, i) => ({
|
312
309
|
index: i + 1,
|
313
310
|
cells: r.cells.map((c, j) => {
|
314
|
-
const header = i === 0 || (this.series && j === 0);
|
311
|
+
const header = i === 0 || (this.series && j === 0), isnumber = this.series ? !header : isNumber(c.value);
|
315
312
|
return {
|
316
|
-
type:
|
313
|
+
type: isnumber ? 'number' : 'text',
|
317
314
|
index: j + 1, value: c.value,
|
318
315
|
cellStyle: {
|
319
316
|
numberFormat,
|
320
|
-
hAlign:
|
317
|
+
hAlign: isnumber ? 'right' : 'center',
|
321
318
|
bold: header
|
322
319
|
}
|
323
320
|
};
|
@@ -369,4 +366,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
|
|
369
366
|
}], id: [{
|
370
367
|
type: HostBinding
|
371
368
|
}] } });
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQXlCLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFFN0ksT0FBTyxFQUFvQyxXQUFXLEVBQTBELE1BQU0scUNBQXFDLENBQUM7QUFDNUosT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBUzlGLE1BQU0sT0FBTyx3QkFBd0I7SUE0Q25DLFlBQ1UsUUFBd0IsRUFDeEIsR0FBa0IsRUFDbEIsUUFBcUIsRUFDckIsVUFBNEIsRUFDNUIsR0FBc0IsRUFDdEIsV0FBdUI7UUFMdkIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBekJkLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsT0FBRSxHQUFHLG9CQUFvQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUs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QUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pELENBQUM7O0FBcldjLCtCQUFNLEdBQUcsQ0FBRSxDQUFBO3FIQURmLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHVZQUx6QixFQUFFOzJGQUtELHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2lCQUNGO21QQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQUtGLE9BQU87c0JBRFYsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBRWEsT0FBTztzQkFBekIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2EsYUFBYTtzQkFBL0IsTUFBTTtnQkFDUSxFQUFFO3NCQUFoQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQsIE91dHB1dCwgT25Jbml0LCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgT25EZXN0cm95LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IENlbGxNb2RlbCwgQ29sdW1uTW9kZWwsIFJvd01vZGVsLCBTcHJlYWRzaGVldCwgQ2VsbFN0eWxlTW9kZWwsIFNlbGVjdEV2ZW50QXJncywgQXV0b0ZpbGxTZXR0aW5nc01vZGVsIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXNwcmVhZHNoZWV0XCI7XHJcbmltcG9ydCB7IEludGVybmF0aW9uYWxpemF0aW9uLCBOdW1iZXJGb3JtYXRPcHRpb25zIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XHJcbmltcG9ydCB7IFdvcmtib29rIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydCc7XHJcbmltcG9ydCB7IFdvcmtzaGVldCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3dvcmtzaGVldCc7XHJcbmltcG9ydCB7IFJvdyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3Jvdyc7XHJcbmltcG9ydCB7IENlbGwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9jZWxsJztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIFlBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgZ2V0Q3VycmVuY3lTeW1ib2wsIGdldExvY2FsZU51bWJlckZvcm1hdCwgTnVtYmVyRm9ybWF0U3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXNwcmVhZHNoZWV0JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdjdWJlLXZpZXcnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDdWJlVmlld2VyQ29tcG9uZW50LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASW5wdXQoKVxyXG4gIHdpZHRoOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBoZWlnaHQ6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHhBeGlzKHZhbDogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3hBeGlzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgeUF4aXM/OiBZQXhpcztcclxuICBASW5wdXQoKVxyXG4gIHNldCBzZXJpZXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5fc2VyaWVzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGluZGljZXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5faW5kaWNlcyA9IGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBleHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGlzQ2xpY2tFdmVudD4oKTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBsb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBIb3N0QmluZGluZygpIGlkID0gYGN1YmUtc3ByZWFkc2hlZXQtJHtDdWJlU3ByZWFkc2hlZXRDb21wb25lbnQubmV4dElkKyt9YDtcclxuICBzcHJlYWRzaGVldDogU3ByZWFkc2hlZXQ7XHJcbiAgZGF0YVNvdXJjZTogUm93TW9kZWxbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XHJcbiAgcmVhZG9ubHkgbnVtYmVyU3R5bGUgPSB7IHRleHRBbGlnbjogJ3JpZ2h0JyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gIHJlYWRvbmx5IGF1dG9GaWxsU2V0dGluZ3MgPSB7IHNob3dGaWxsT3B0aW9uczogZmFsc2UgfSBhcyBBdXRvRmlsbFNldHRpbmdzTW9kZWw7XHJcbiAgcHJpdmF0ZSBfeEF4aXM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX3Nlcmllcz86IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9heGVzOiBDdWJlQXhpc1tdO1xyXG4gIHByaXZhdGUgX2NpbmRpY2VzOiBDdWJlSW5kZXhbXTtcclxuICBwcml2YXRlIF95cm93czogeyBrZXk6IGFueTsgdmFsdWU6IGFueSB9W10gPSBbXTtcclxuICBwcml2YXRlIF94Y29sdW1uczogeyBrZXk6IGFueTsgdmFsdWU6IGFueSB9W10gPSBbXTtcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueVtdPjtcclxuICBwcml2YXRlIF9udW1iZXJGb3JtYXQ6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5jdWJlID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLl9udW1iZXJGb3JtYXQgPSB0aGlzLl9pbnRsLmdldE51bWJlclBhdHRlcm4oe1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSBhcyBOdW1iZXJGb3JtYXRPcHRpb25zKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIHRoaXMuX2F4ZXMgPSB0aGlzLl94QXhpcy5tYXAoYyA9PiB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PSBjKSk7XHJcbiAgICAgIGlmICh0aGlzLl9pbmRpY2VzKSB0aGlzLl9jaW5kaWNlcyA9IHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fYXhlcy5tYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IC8qIHZhbHVlICovKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgIH0gYXMgQ29sdW1uTW9kZWxcclxuICAgICAgKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF0sIHhOYW1lID0gdGhpcy5feEF4aXNbMF0sXHJcbiAgICAgICAgeEF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0geE5hbWUpLFxyXG4gICAgICAgIHlBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHlOYW1lKTtcclxuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFt7XHJcbiAgICAgICAgd2lkdGg6IDEyMFxyXG4gICAgICB9XTtcclxuICAgICAgLy8gYWNxdWlyZSBjb2x1bW5zIHNvdXJjZVxyXG4gICAgICBsZXQgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh4QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihjID0+IHtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zID0gYztcclxuICAgICAgICAgIGMuZm9yRWFjaChfID0+IHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9KSBhcyBQcm9taXNlPGFueT47XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIC8vIGFjcXVpcmUgcm93cyBzb3VyY2VcclxuICAgICAgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh5QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihyID0+IHRoaXMuX3lyb3dzID0gcik7XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcblxyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10gJiYgIWNoYW5nZXNbJ2ZpbHRlcnMnXS5maXJzdENoYW5nZSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLnNwcmVhZHNoZWV0KSB7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQud2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKVxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLnRhYmxlKHRoaXMuX2N1YmUubmFtZSwgdGhpcy5feEF4aXMsIHsgZmlsdGVyczogdGhpcy5maWx0ZXJzLCBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzIH0pLlxyXG4gICAgICAgIHN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgIHRoaXMuX2RhdGF0YWJsZShkYXRhKTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZSB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUsIHRoaXMuX3hBeGlzLCB7IHNlcmllczogdGhpcy5fc2VyaWVzLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMgfSkuXHJcbiAgICAgIHN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZGF0YXNlcmllcyhkYXRhKTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF0YXRhYmxlKGRhdGE6IHsgdmFsdWU6IG51bWJlcjsgfVtdKSB7XHJcbiAgICBjb25zdCBjZWxscyA9IFtdLCBzdHlsZSA9IHsgZm9udFdlaWdodDogJ2JvbGQnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgICB0aGlzLl9heGVzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgdmFsdWU6IGMudGl0bGUsIHN0eWxlXHJcbiAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jaW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgY2VsbHMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiB0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJyksXHJcbiAgICAgIHN0eWxlXHJcbiAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBbe1xyXG4gICAgICBjZWxscywgaGVpZ2h0OiAyNVxyXG4gICAgfSBhcyBSb3dNb2RlbF07XHJcbiAgICBkYXRhLmZvckVhY2goZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gW107XHJcbiAgICAgIHRoaXMuX3hBeGlzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogZFtjXSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goaSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZSxcclxuICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICB2YWx1ZTogKGRbaV0gfHwgMCkgYXMgYW55LFxyXG4gICAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZSxcclxuICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICB2YWx1ZTogKGQudmFsdWUgfHwgMCkgYXMgYW55LFxyXG4gICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIHNvdXJjZTogZCwgaGVpZ2h0OiAyNSB9IGFzIFJvd01vZGVsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YXNlcmllcyhkOiBTZXJpZXNbXSkge1xyXG4gICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogJycgfSBhcyBDZWxsTW9kZWxdO1xyXG4gICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogYy52YWx1ZSwgc3R5bGUgfSkpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3sgY2VsbHMsIGhlaWdodDogMjUgfV07XHJcblxyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jaW5kaWNlcy5cclxuICAgICAgZm9yRWFjaChpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sIHNlcmllID0gZC5maW5kKHMgPT4gcy5pbmRleCA9PT0gaS5uYW1lKSwgbWFwID0ge307XHJcbiAgICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApIGFzIGFueSxcclxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgIHN0eWxlOiB0aGlzLm51bWJlclN0eWxlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuX3lyb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gW3sgdmFsdWU6IHIudmFsdWUsIHN0eWxlIH0gYXMgQ2VsbE1vZGVsXSxcclxuICAgICAgICBzZXJpZSA9IGQuZmluZChzID0+IHMubmFtZSA9PT0gci5rZXkpLCBtYXAgPSB7fTtcclxuICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApIGFzIGFueSxcclxuICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGVcclxuICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goXyA9PiBjZWxscy5wdXNoKHsgdmFsdWU6IDAgYXMgYW55IH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscywgaGVpZ2h0OiAyNSB9IGFzIFJvd01vZGVsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuc3ByZWFkc2hlZXQgJiYgdGhpcy5zcHJlYWRzaGVldC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ID0gbmV3IFNwcmVhZHNoZWV0KHtcclxuICAgICAgaXNQcm90ZWN0ZWQ6IHRydWUsXHJcbiAgICAgIGFsbG93RWRpdGluZzogZmFsc2UsXHJcbiAgICAgIGFsbG93RGVsZXRlOiBmYWxzZSxcclxuICAgICAgYWxsb3dJbnNlcnQ6IGZhbHNlLFxyXG4gICAgICBzaG93UmliYm9uOiBmYWxzZSxcclxuICAgICAgYWxsb3dBdXRvRmlsbDogZmFsc2UsXHJcbiAgICAgIGF1dG9GaWxsU2V0dGluZ3M6IHRoaXMuYXV0b0ZpbGxTZXR0aW5ncyxcclxuICAgICAgZW5hYmxlQ2xpcGJvYXJkOiBmYWxzZSxcclxuICAgICAgZW5hYmxlQ29udGV4dE1lbnU6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybXVsYUJhcjogZmFsc2UsXHJcbiAgICAgIHNob3dTaGVldFRhYnM6IGZhbHNlLFxyXG4gICAgICBzZWxlY3Q6IHRoaXMuc2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgIHNoZWV0czogW3tcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgLy9mcm96ZW5Db2x1bW5zOiB0aGlzLnNlcmllcyAhPT0gdW5kZWZpbmVkID8gMSA6IDAsXHJcbiAgICAgICAgLy9mcm96ZW5Sb3dzOiAxLFxyXG4gICAgICAgIHJvd3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgfV0sXHJcbiAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgc2VsZWN0KGV2dDogU2VsZWN0RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCBhZGRyZXNzID0gdGhpcy5zcHJlYWRzaGVldC5nZXRBZGRyZXNzSW5mbyhldnQucmFuZ2UpO1xyXG4gICAgbGV0IFt5LCB4LCB5MSwgeDFdID0gYWRkcmVzcy5pbmRpY2VzO1xyXG4gICAgaWYgKHkxIDwgeSkge1xyXG4gICAgICBjb25zdCByYW5nZSA9IHk7XHJcbiAgICAgIHkgPSB5MSwgeTEgPSByYW5nZTtcclxuICAgIH1cclxuICAgIGlmICh4MSA8IHgpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSB4O1xyXG4gICAgICB4ID0geDEsIHgxID0gcmFuZ2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBheGVzOiB7fSA9IHt9O1xyXG4gICAgaWYgKCF0aGlzLl9zZXJpZXMpIHtcclxuICAgICAgaWYgKHkgPT09IDApIHJldHVybjtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9pbmRpY2VzICYmIHkgPCB0aGlzLl9pbmRpY2VzLmxlbmd0aCA/IHRoaXMuX2NpbmRpY2VzW3ldLm5hbWUgOiBudWxsO1xyXG4gICAgICBsZXQgaSA9IHk7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICB0aGlzLl9heGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSAodGhpcy5kYXRhU291cmNlW2ldIGFzIGFueSkuc291cmNlWydfJyArIGEubmFtZV07XHJcbiAgICAgICAgICBpZiAoIWF4ZXNbYS5uYW1lXSlcclxuICAgICAgICAgICAgYXhlc1thLm5hbWVdID0ga2V5O1xyXG4gICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcoYXhlc1thLm5hbWVdKSkge1xyXG4gICAgICAgICAgICBpZiAoYXhlc1thLm5hbWVdICE9PSBrZXkpIGF4ZXNbYS5uYW1lXSA9IFtheGVzW2EubmFtZV0sIGtleV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICgoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKSAoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChpIDw9IHkxKTtcclxuICAgICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoeSA9PT0gMCkge1xyXG4gICAgICAgIGlmICh5IDwgeTEpXHJcbiAgICAgICAgICB0aGlzLl9maWxseCh4LCB4MSwgYXhlcyk7XHJcbiAgICAgICAgZWxzZSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoeCA9PT0gMCkge1xyXG4gICAgICAgIGlmICh4IDwgeDEpXHJcbiAgICAgICAgICB0aGlzLl9maWxseSh5LCB5MSwgYXhlcyk7XHJcbiAgICAgICAgZWxzZSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoeSA9PT0geTEgJiYgeCA9PT0geDEgJiYgdGhpcy5kYXRhU291cmNlW3ldLmNlbGxzW3hdLnZhbHVlID09PSAnMCcpIHJldHVybjtcclxuICAgICAgZWxzZSBpZiAoeSA+IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggLSAxIHx8IHggPiB0aGlzLmRhdGFTb3VyY2VbeV0uY2VsbHMubGVuZ3RoIC0gMSkgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9maWxseCh4LCB4MSwgYXhlcyk7XHJcbiAgICAgICAgdGhpcy5fZmlsbHkoeSwgeTEsIGF4ZXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsbHkoeTogbnVtYmVyLCB5MTogbnVtYmVyLCBheGVzOiB7fSkge1xyXG4gICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF07XHJcbiAgICBsZXQgaSA9IHkgLSAxO1xyXG4gICAgd2hpbGUgKGkgPCB5MSkge1xyXG4gICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3lyb3dzW2ldO1xyXG4gICAgICBpZiAoIWF4ZXNbeU5hbWVdKVxyXG4gICAgICAgIGF4ZXNbeU5hbWVdID0ga2V5O1xyXG4gICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3lOYW1lXSkpXHJcbiAgICAgICAgYXhlc1t5TmFtZV0gPSBbYXhlc1t5TmFtZV0sIGtleV07XHJcbiAgICAgIGVsc2UgaWYgKChheGVzW3lOYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMClcclxuICAgICAgICAoYXhlc1t5TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsbHgoeDogbnVtYmVyLCB4MTogbnVtYmVyLCBheGVzOiB7fSkge1xyXG4gICAgY29uc3QgeE5hbWUgPSB0aGlzLl94QXhpc1swXTtcclxuICAgIGxldCBpID0geCAtIDE7XHJcbiAgICB3aGlsZSAoaSA8IHgxKSB7XHJcbiAgICAgIGxldCB7IGtleSB9ID0gdGhpcy5feGNvbHVtbnNbaV07XHJcbiAgICAgIGlmICghYXhlc1t4TmFtZV0pXHJcbiAgICAgICAgYXhlc1t4TmFtZV0gPSBrZXk7XHJcbiAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbeE5hbWVdKSlcclxuICAgICAgICBheGVzW3hOYW1lXSA9IFtheGVzW3hOYW1lXSwga2V5XTtcclxuICAgICAgZWxzZSBpZiAoKGF4ZXNbeE5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKVxyXG4gICAgICAgIChheGVzW3hOYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb0V4Y2VsKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgcm93cyB9ID0gdGhpcy5zcHJlYWRzaGVldC5zaGVldHNbMF0sXHJcbiAgICAgIG51bWJlckZvcm1hdCA9IHRoaXMuX2N1YmUuY3VycmVuY3lDb2RlP1xyXG4gICAgICAgIGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuX2N1YmUuY3VycmVuY3lDb2RlLCAnbmFycm93JykgK1xyXG4gICAgICAgIGdldExvY2FsZU51bWJlckZvcm1hdCh0aGlzLl9zZXNzaW9uLmxvY2FsZSwgTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3kpXHJcbiAgICAgICAgOiBnZXRMb2NhbGVOdW1iZXJGb3JtYXQodGhpcy5fc2Vzc2lvbi5sb2NhbGUsIE51bWJlckZvcm1hdFN0eWxlLkRlY2ltYWwpXHJcbiAgICAgICxcclxuICAgICAgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAgICB7XHJcbiAgICAgICAgICB3b3Jrc2hlZXRzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTaGVldE4nLCAxKSxcclxuICAgICAgICAgICAgICBjb2x1bW5zOiByb3dzWzBdLmNlbGxzLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgICAgcm93czogcm93cy5tYXAoKHIsIGkpID0+IChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgICAgICAgICAgICBjZWxsczogci5jZWxscy5tYXAoKGMsIGopID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpID09PSAwIHx8ICh0aGlzLnNlcmllcyAmJiBqID09PSAwKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogIGhlYWRlcj8gJ3RleHQnIDogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaiArIDEsIHZhbHVlOiBjLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2VsbFN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaEFsaWduOiBoZWFkZXIgPyAncmlnaHQnIDogJ2NlbnRlciAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBoZWFkZXJcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGFzIENlbGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSBhcyBSb3cpKSxcclxuICAgICAgICAgICAgfSBhcyBXb3Jrc2hlZXQsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ3hsc3gnXHJcbiAgICAgICk7XHJcbiAgICBib29rLnNhdmUoYCR7dGl0bGV9Lnhsc3hgKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQXlCLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFFN0ksT0FBTyxFQUFvQyxXQUFXLEVBQTBELFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEyQ25DLDRFQUE0RTtJQUM1RSxZQUNVLFFBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLFdBQXVCO1FBTHZCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpCZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELE9BQUUsR0FBRyxvQkFBb0Isd0JBQXdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUU1RSxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFvQixDQUFDO1FBQ3ZELHFC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QUk7c0JBREgsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUVhLE9BQU87c0JBQXpCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNhLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1EsRUFBRTtzQkFBaEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDZWxsTW9kZWwsIENvbHVtbk1vZGVsLCBSb3dNb2RlbCwgU3ByZWFkc2hlZXQsIENlbGxTdHlsZU1vZGVsLCBTZWxlY3RFdmVudEFyZ3MsIEF1dG9GaWxsU2V0dGluZ3NNb2RlbCwgaXNOdW1iZXIgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3ByZWFkc2hlZXRcIjtcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24sIE51bWJlckZvcm1hdE9wdGlvbnMgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL2NlbGwnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9jb2x1bW4nO1xyXG5pbXBvcnQgeyBBeGlzQ2xpY2tFdmVudCwgQ3ViZVZpZXdlckNvbXBvbmVudCB9IGZyb20gXCIuLi9kZWNsYXJhdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCwgWUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIFNlcmllcyB9IGZyb20gXCIuLi9jdWJlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1zcHJlYWRzaGVldCcsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3J1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVTcHJlYWRzaGVldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ3ViZVZpZXdlckNvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBASW5wdXQoKVxyXG4gIHNldCB4QXhpcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLl94QXhpcyA9IGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHlBeGlzPzogWUF4aXM7XHJcbiAgQElucHV0KClcclxuICBzZXQgc2VyaWVzKHZhbDogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwpIHRoaXMuX3NlcmllcyA9IGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbmRpY2VzKHZhbDogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwpIHRoaXMuX2luZGljZXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjdWJlLXNwcmVhZHNoZWV0LSR7Q3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgc3ByZWFkc2hlZXQ6IFNwcmVhZHNoZWV0O1xyXG4gIGRhdGFTb3VyY2U6IFJvd01vZGVsW10gPSBbXTtcclxuICBjb2x1bW5zOiBDb2x1bW5Nb2RlbFtdO1xyXG4gIHJlYWRvbmx5IG51bWJlclN0eWxlID0geyB0ZXh0QWxpZ246ICdyaWdodCcgfSBhcyBDZWxsU3R5bGVNb2RlbDtcclxuICByZWFkb25seSBhdXRvRmlsbFNldHRpbmdzID0geyBzaG93RmlsbE9wdGlvbnM6IGZhbHNlIH0gYXMgQXV0b0ZpbGxTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9zZXJpZXM/OiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfYXhlczogQ3ViZUF4aXNbXTtcclxuICBwcml2YXRlIF9jaW5kaWNlczogQ3ViZUluZGV4W107XHJcbiAgcHJpdmF0ZSBfeXJvd3M6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfeGNvbHVtbnM6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnlbXT47XHJcbiAgcHJpdmF0ZSBfbnVtYmVyRm9ybWF0OiBzdHJpbmc7XHJcbiAgLy9wcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5jdWJlID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgOiB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLl9udW1iZXJGb3JtYXQgPSBgJHt0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJ30ke3RoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHN9YFxyXG4gICAgLy90aGlzLl9pbnRsLmdldE51bWJlclBhdHRlcm4oe1xyXG4gICAgLy8gIGN1cnJlbmN5OiB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSxcclxuICAgIC8vICBmb3JtYXQ6IHRoaXMuX2N1YmUuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nLFxyXG4gICAgLy8gIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgLy8gIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0cyxcclxuICAgIC8vICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHNcclxuICAgIC8vfSBhcyBOdW1iZXJGb3JtYXRPcHRpb25zKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIHRoaXMuX2F4ZXMgPSB0aGlzLl94QXhpcy5tYXAoYyA9PiB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PSBjKSk7XHJcbiAgICAgIGlmICh0aGlzLl9pbmRpY2VzKSB0aGlzLl9jaW5kaWNlcyA9IHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fYXhlcy5tYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IC8qIHZhbHVlICovKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgIH0gYXMgQ29sdW1uTW9kZWxcclxuICAgICAgKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF0sIHhOYW1lID0gdGhpcy5feEF4aXNbMF0sXHJcbiAgICAgICAgeEF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0geE5hbWUpLFxyXG4gICAgICAgIHlBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHlOYW1lKTtcclxuICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFt7XHJcbiAgICAgICAgd2lkdGg6IDEyMFxyXG4gICAgICB9XTtcclxuICAgICAgLy8gYWNxdWlyZSBjb2x1bW5zIHNvdXJjZVxyXG4gICAgICBsZXQgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh4QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihjID0+IHtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zID0gYztcclxuICAgICAgICAgIGMuZm9yRWFjaChfID0+IHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9KSBhcyBQcm9taXNlPGFueT47XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIC8vIGFjcXVpcmUgcm93cyBzb3VyY2VcclxuICAgICAgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh5QXhpcy5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihyID0+IHRoaXMuX3lyb3dzID0gcik7XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcblxyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10gJiYgIWNoYW5nZXNbJ2ZpbHRlcnMnXS5maXJzdENoYW5nZSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLnNwcmVhZHNoZWV0KSB7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQud2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKVxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLnRhYmxlKHRoaXMuX2N1YmUubmFtZSwgdGhpcy5feEF4aXMsIHsgZmlsdGVyczogdGhpcy5maWx0ZXJzLCBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzIH0pLlxyXG4gICAgICAgIHN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgIHRoaXMuX2RhdGF0YWJsZShkYXRhKTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZSB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUsIHRoaXMuX3hBeGlzLCB7IHNlcmllczogdGhpcy5fc2VyaWVzLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMgfSkuXHJcbiAgICAgIHN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZGF0YXNlcmllcyhkYXRhKTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF0YXRhYmxlKGRhdGE6IHsgdmFsdWU6IG51bWJlcjsgfVtdKSB7XHJcbiAgICBjb25zdCBjZWxscyA9IFtdLCBzdHlsZSA9IHsgZm9udFdlaWdodDogJ2JvbGQnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgICB0aGlzLl9heGVzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgdmFsdWU6IGMudGl0bGUsIHN0eWxlXHJcbiAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jaW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgY2VsbHMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiB0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJyksXHJcbiAgICAgIHN0eWxlXHJcbiAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBbe1xyXG4gICAgICBjZWxscywgaGVpZ2h0OiAyNVxyXG4gICAgfSBhcyBSb3dNb2RlbF07XHJcbiAgICBkYXRhLmZvckVhY2goZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gW107XHJcbiAgICAgIHRoaXMuX3hBeGlzLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogZFtjXSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goaSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZSxcclxuICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICB2YWx1ZTogKGRbaV0gfHwgMCkgYXMgYW55LFxyXG4gICAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZSxcclxuICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICB2YWx1ZTogKGQudmFsdWUgfHwgMCkgYXMgYW55LFxyXG4gICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIHNvdXJjZTogZCwgaGVpZ2h0OiAyNSB9IGFzIFJvd01vZGVsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YXNlcmllcyhkOiBTZXJpZXNbXSkge1xyXG4gICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogJycgfSBhcyBDZWxsTW9kZWxdO1xyXG4gICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogYy52YWx1ZSwgc3R5bGUgfSkpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3sgY2VsbHMsIGhlaWdodDogMjUgfV07XHJcblxyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9jaW5kaWNlcy5cclxuICAgICAgZm9yRWFjaChpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sIHNlcmllID0gZC5maW5kKHMgPT4gcy5pbmRleCA9PT0gaS5uYW1lKSwgbWFwID0ge307XHJcbiAgICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApIGFzIGFueSxcclxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgIHN0eWxlOiB0aGlzLm51bWJlclN0eWxlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuX3lyb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gW3sgdmFsdWU6IHIudmFsdWUsIHN0eWxlIH0gYXMgQ2VsbE1vZGVsXSxcclxuICAgICAgICBzZXJpZSA9IGQuZmluZChzID0+IHMubmFtZSA9PT0gci5rZXkpLCBtYXAgPSB7fTtcclxuICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApIGFzIGFueSxcclxuICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGVcclxuICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goXyA9PiBjZWxscy5wdXNoKHsgdmFsdWU6IDAgYXMgYW55IH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscywgaGVpZ2h0OiAyNSB9IGFzIFJvd01vZGVsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuc3ByZWFkc2hlZXQgJiYgdGhpcy5zcHJlYWRzaGVldC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ID0gbmV3IFNwcmVhZHNoZWV0KHtcclxuICAgICAgaXNQcm90ZWN0ZWQ6IHRydWUsXHJcbiAgICAgIGFsbG93RWRpdGluZzogZmFsc2UsXHJcbiAgICAgIGFsbG93RGVsZXRlOiBmYWxzZSxcclxuICAgICAgYWxsb3dJbnNlcnQ6IGZhbHNlLFxyXG4gICAgICBzaG93UmliYm9uOiBmYWxzZSxcclxuICAgICAgYWxsb3dBdXRvRmlsbDogZmFsc2UsXHJcbiAgICAgIGF1dG9GaWxsU2V0dGluZ3M6IHRoaXMuYXV0b0ZpbGxTZXR0aW5ncyxcclxuICAgICAgZW5hYmxlQ2xpcGJvYXJkOiBmYWxzZSxcclxuICAgICAgZW5hYmxlQ29udGV4dE1lbnU6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybXVsYUJhcjogZmFsc2UsXHJcbiAgICAgIHNob3dTaGVldFRhYnM6IGZhbHNlLFxyXG4gICAgICBzZWxlY3Q6IHRoaXMuc2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgIHNoZWV0czogW3tcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgLy9mcm96ZW5Db2x1bW5zOiB0aGlzLnNlcmllcyAhPT0gdW5kZWZpbmVkID8gMSA6IDAsXHJcbiAgICAgICAgLy9mcm96ZW5Sb3dzOiAxLFxyXG4gICAgICAgIHJvd3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgfV0sXHJcbiAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgc2VsZWN0KGV2dDogU2VsZWN0RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCBhZGRyZXNzID0gdGhpcy5zcHJlYWRzaGVldC5nZXRBZGRyZXNzSW5mbyhldnQucmFuZ2UpO1xyXG4gICAgbGV0IFt5LCB4LCB5MSwgeDFdID0gYWRkcmVzcy5pbmRpY2VzO1xyXG4gICAgaWYgKHkxIDwgeSkge1xyXG4gICAgICBjb25zdCByYW5nZSA9IHk7XHJcbiAgICAgIHkgPSB5MSwgeTEgPSByYW5nZTtcclxuICAgIH1cclxuICAgIGlmICh4MSA8IHgpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSB4O1xyXG4gICAgICB4ID0geDEsIHgxID0gcmFuZ2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBheGVzOiB7fSA9IHt9O1xyXG4gICAgaWYgKCF0aGlzLl9zZXJpZXMpIHtcclxuICAgICAgaWYgKHkgPT09IDApIHJldHVybjtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9pbmRpY2VzICYmIHkgPCB0aGlzLl9pbmRpY2VzLmxlbmd0aCA/IHRoaXMuX2NpbmRpY2VzW3ldLm5hbWUgOiBudWxsO1xyXG4gICAgICBsZXQgaSA9IHk7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICB0aGlzLl9heGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSAodGhpcy5kYXRhU291cmNlW2ldIGFzIGFueSkuc291cmNlWydfJyArIGEubmFtZV07XHJcbiAgICAgICAgICBpZiAoIWF4ZXNbYS5uYW1lXSlcclxuICAgICAgICAgICAgYXhlc1thLm5hbWVdID0ga2V5O1xyXG4gICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcoYXhlc1thLm5hbWVdKSkge1xyXG4gICAgICAgICAgICBpZiAoYXhlc1thLm5hbWVdICE9PSBrZXkpIGF4ZXNbYS5uYW1lXSA9IFtheGVzW2EubmFtZV0sIGtleV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICgoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKSAoYXhlc1thLm5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChpIDw9IHkxKTtcclxuICAgICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoeSA9PT0gMCkge1xyXG4gICAgICAgIGlmICh5IDwgeTEpXHJcbiAgICAgICAgICB0aGlzLl9maWxseCh4LCB4MSwgYXhlcyk7XHJcbiAgICAgICAgZWxzZSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoeCA9PT0gMCkge1xyXG4gICAgICAgIGlmICh4IDwgeDEpXHJcbiAgICAgICAgICB0aGlzLl9maWxseSh5LCB5MSwgYXhlcyk7XHJcbiAgICAgICAgZWxzZSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoeSA9PT0geTEgJiYgeCA9PT0geDEgJiYgdGhpcy5kYXRhU291cmNlW3ldLmNlbGxzW3hdLnZhbHVlID09PSAnMCcpIHJldHVybjtcclxuICAgICAgZWxzZSBpZiAoeSA+IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggLSAxIHx8IHggPiB0aGlzLmRhdGFTb3VyY2VbeV0uY2VsbHMubGVuZ3RoIC0gMSkgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9maWxseCh4LCB4MSwgYXhlcyk7XHJcbiAgICAgICAgdGhpcy5fZmlsbHkoeSwgeTEsIGF4ZXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsbHkoeTogbnVtYmVyLCB5MTogbnVtYmVyLCBheGVzOiB7fSkge1xyXG4gICAgY29uc3QgeU5hbWUgPSB0aGlzLl9zZXJpZXNbMF07XHJcbiAgICBsZXQgaSA9IHkgLSAxO1xyXG4gICAgd2hpbGUgKGkgPCB5MSkge1xyXG4gICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3lyb3dzW2ldO1xyXG4gICAgICBpZiAoIWF4ZXNbeU5hbWVdKVxyXG4gICAgICAgIGF4ZXNbeU5hbWVdID0ga2V5O1xyXG4gICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3lOYW1lXSkpXHJcbiAgICAgICAgYXhlc1t5TmFtZV0gPSBbYXhlc1t5TmFtZV0sIGtleV07XHJcbiAgICAgIGVsc2UgaWYgKChheGVzW3lOYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMClcclxuICAgICAgICAoYXhlc1t5TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsbHgoeDogbnVtYmVyLCB4MTogbnVtYmVyLCBheGVzOiB7fSkge1xyXG4gICAgY29uc3QgeE5hbWUgPSB0aGlzLl94QXhpc1swXTtcclxuICAgIGxldCBpID0geCAtIDE7XHJcbiAgICB3aGlsZSAoaSA8IHgxKSB7XHJcbiAgICAgIGxldCB7IGtleSB9ID0gdGhpcy5feGNvbHVtbnNbaV07XHJcbiAgICAgIGlmICghYXhlc1t4TmFtZV0pXHJcbiAgICAgICAgYXhlc1t4TmFtZV0gPSBrZXk7XHJcbiAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbeE5hbWVdKSlcclxuICAgICAgICBheGVzW3hOYW1lXSA9IFtheGVzW3hOYW1lXSwga2V5XTtcclxuICAgICAgZWxzZSBpZiAoKGF4ZXNbeE5hbWVdIGFzIHN0cmluZ1tdKS5pbmRleE9mKGtleSkgPCAwKVxyXG4gICAgICAgIChheGVzW3hOYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb0V4Y2VsKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgcm93cyB9ID0gdGhpcy5zcHJlYWRzaGVldC5zaGVldHNbMF0sXHJcbiAgICAgIG51bWJlckZvcm1hdCA9IHRoaXMuX3NlcnZpY2UubnVtYmVyRm9ybWF0LFxyXG4gICAgICBib29rID0gbmV3IFdvcmtib29rKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHdvcmtzaGVldHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpLFxyXG4gICAgICAgICAgICAgIGNvbHVtbnM6IHJvd3NbMF0uY2VsbHMubWFwKChfLCBpKSA9PiAoeyBpbmRleDogaSArIDEsIHdpZHRoOiAxNTAgfSBhcyBDb2x1bW4pKSxcclxuICAgICAgICAgICAgICByb3dzOiByb3dzLm1hcCgociwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxzOiByLmNlbGxzLm1hcCgoYywgaikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGkgPT09IDAgfHwgKHRoaXMuc2VyaWVzICYmIGogPT09IDApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNudW1iZXIgPSB0aGlzLnNlcmllcyA/ICFoZWFkZXIgOiBpc051bWJlcihjLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNudW1iZXIgPyAnbnVtYmVyJyA6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBqICsgMSwgdmFsdWU6IGMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjZWxsU3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoQWxpZ246IGlzbnVtYmVyID8gJ3JpZ2h0JyA6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBoZWFkZXJcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGFzIENlbGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSBhcyBSb3cpKSxcclxuICAgICAgICAgICAgfSBhcyBXb3Jrc2hlZXQsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ3hsc3gnXHJcbiAgICAgICk7XHJcbiAgICBib29rLnNhdmUoYCR7dGl0bGV9Lnhsc3hgKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -7,7 +7,6 @@ import { Workbook } from '@syncfusion/ej2-excel-export';
|
|
7
7
|
import { getWarn, isArray } from '../../core/functions';
|
8
8
|
import { FONT_FAMILY } from '../../core/colors';
|
9
9
|
import { DEFAULT_CURRENCY, CLDR_FILES } from '../cube.service';
|
10
|
-
import { getCurrencySymbol, getLocaleNumberFormat, NumberFormatStyle } from '@angular/common';
|
11
10
|
import * as i0 from "@angular/core";
|
12
11
|
import * as i1 from "../cube.service";
|
13
12
|
import * as i2 from "../../core/session.service";
|
@@ -321,10 +320,7 @@ export class CubePivotComponent {
|
|
321
320
|
exportToExcel(title) {
|
322
321
|
const task = () => {
|
323
322
|
if (this.chartType) {
|
324
|
-
const numberFormat = this._cube.
|
325
|
-
getCurrencySymbol(this._cube.currencyCode, 'narrow') +
|
326
|
-
getLocaleNumberFormat(this._session.locale, NumberFormatStyle.Currency)
|
327
|
-
: getLocaleNumberFormat(this._session.locale, NumberFormatStyle.Decimal), columns = this._cube.axes.filter(a => this._xAxis.indexOf(a.name) > -1 ||
|
323
|
+
const numberFormat = this._service.numberFormat, columns = this._cube.axes.filter(a => this._xAxis.indexOf(a.name) > -1 ||
|
328
324
|
this._series.indexOf(a.name) > -1), rows = [{
|
329
325
|
index: 1,
|
330
326
|
cells: columns.map((c, i) => ({
|
@@ -480,4 +476,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
|
|
480
476
|
}], id: [{
|
481
477
|
type: HostBinding
|
482
478
|
}] } });
|
483
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRzdJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUF1QyxXQUFXLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFLckosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBS3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUk1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBRTlGLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFOUIsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFXbkMscUJBQXFCO0FBQ3JCLE1BQU0sT0FBTyxrQkFBa0I7SUF5RTdCLGlCQUFpQjtJQUNqQixZQUFvQixRQUFxQixFQUMvQixRQUF3QixFQUN4QixVQUE0QixFQUM1QixHQUFrQixFQUNsQixXQUF1QjtRQUpiLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXRDZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBR3RELE9BQUUsR0FBRyxrQkFBa0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQU1yRCxtQkFBYyxHQUEwQixDQUFDO2dCQUNoRCxJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztRQUVjLDhCQUF5QixHQUFxQyxDQUFDO2dCQUM5RSxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTthQUM1QixDQUFDLENBQUM7UUFDTSxpQkFBWSxHQUFzQjtZQUN6QyxTQUFTLEVBQUUsRUFBRTtZQUNiLGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFJZSxVQUFLLEdBQXlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN6RCwwQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBUTlDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQzthQUMzRDs7Z0JBQ0MsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBL0VELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFDVyxLQUFLLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUNXLE1BQU0sQ0FBQyxLQUF3QjtRQUN4QyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUNXLE9BQU8sQ0FBQyxLQUF3QjtRQUN6QyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUF3REQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWTtZQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDakcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUc7Z0JBQ25CLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFDRixJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN0QyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQTRCLEVBQUU7Z0JBQ3hELDZCQUE2QjtnQkFDN0IsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2lCQUNyQjtnQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVU7Z0JBQzdELFVBQVUsRUFBRSxhQUFhO2dCQUN6QixZQUFZLEVBQUU7b0JBQ1osVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRSxXQUFXO3FCQUN4QjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1YsVUFBVSxFQUFFLFdBQVc7cUJBQ3hCO2lCQUNGO2dCQUNELFlBQVksRUFBRTtvQkFDWix1QkFBdUIsRUFBRSxJQUFJO29CQUM3QixrQkFBa0IsRUFBRSxJQUFJO29CQUN4QixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsc0JBQXNCLEVBQUUsS0FBSztvQkFDN0IsZUFBZSxFQUFFLElBQUk7aUJBQ3RCO2dCQUNELE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Z0JBQ3BCLGNBQWMsRUFBRTtvQkFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1QsVUFBVSxFQUFFLFdBQVc7cUJBQ3hCO2lCQUNGO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxlQUFlLEVBQUUsS0FBSztvQkFDdEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDcEIsU0FBUyxFQUFFO3dCQUNULFVBQVUsRUFBRSxXQUFXO3FCQUN4QjtpQkFDRjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsVUFBVSxFQUFFLFdBQVc7aUJBQ3hCO2dCQUNELGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsV0FBVztpQkFDeEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLFVBQVUsRUFBRTt3QkFDVixVQUFVLEVBQUUsV0FBVztxQkFDeEI7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRSxXQUFXO3FCQUN4QjtpQkFDRjthQUNGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDYixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO2FBQ2hGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7b0JBQ2xDLFVBQVUsRUFBRSxVQUFVO29CQUN0QixNQUFNLEVBQUUsQ0FBQztvQkFDVCxnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixPQUFPLEVBQUUsQ0FBQztvQkFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7aUJBQzVCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTTtvQkFDVCxJQUFJLENBQUM7b0JBQ0gsSUFBSSxFQUFFLENBQUM7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLGNBQWM7b0JBQ2pCLElBQUksQ0FBQztvQkFDSCxJQUFJLEVBQUUsQ0FBQztvQkFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQzVCLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDTyxjQUFjLENBQUMsSUFBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdELENBQUM7SUFDTyxhQUFhLENBQUMsSUFBWTtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVztZQUN2RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFFZixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLG1DQUFtQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RDtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELFVBQVU7UUFDVixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLFFBQVE7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLEVBQUUsQ0FBQyxDQUFvQixFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxRQUFRLENBQUMsS0FBZSxFQUFFLE1BQWdCLEVBQUUsSUFBVTtRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNyQixPQUFPO29CQUNMLElBQUksRUFBRSxDQUFDO29CQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztpQkFDVixDQUFDO1lBQ3pCLENBQUMsQ0FBQztZQUNGLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuQixPQUFPO29CQUNMLElBQUksRUFBRSxDQUFDO29CQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztpQkFDVixDQUFDO1lBQ3pCLENBQUMsQ0FBQztZQUNGLGlCQUFpQixFQUFFLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFO1lBQzlELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixZQUFZLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsT0FBTztvQkFDTCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7aUJBQ0QsQ0FBQztZQUNqQixDQUFDLENBQUM7WUFDRiw0REFBNEQ7WUFDNUQscUJBQXFCLEVBQUUsS0FBSztZQUM1QixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixVQUFVLEVBQUUsSUFBSTtZQUNoQixxQkFBcUIsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ2pELGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNULENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxHQUF1QjtRQUMvQixNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQVcsQ0FBQztRQUN0RyxJQUFJLElBQUksRUFBRSxLQUFLLENBQUM7UUFDaEIsSUFBSSxhQUFhLElBQUksVUFBVSxFQUFFO1lBQy9CLElBQUksV0FBVyxLQUFLLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEQsSUFBSSxVQUFVLEtBQUssT0FBTztnQkFBRSxLQUFLLEdBQUcsVUFBVSxDQUFDO1NBQ2hEO2FBQ0ksSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxXQUFXO1lBQzdDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBQyxhQUFxQixFQUFFLFVBQWtCO1FBQzFELE1BQU0sSUFBSSxHQUFZLEVBQUUsQ0FBQztRQUN6QixJQUFJLGFBQWEsS0FBSyxFQUFFO1lBQ3RCLGFBQWEsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzVDLDJCQUEyQjtnQkFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCx3QkFBd0I7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDOztvQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLFVBQVUsS0FBSyxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDekMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsT0FBTztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQzs7b0JBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLENBQWtCO1FBQzNCLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ3pDLDJCQUEyQjtRQUMxQixDQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ3pDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCw2QkFBNkI7UUFDN0IsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM1QywyQkFBMkI7WUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3JELHdCQUF3QjtZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzVDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQzt3QkFDcEQscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDO29CQUN2RSxDQUFDLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQ3hFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDcEMsSUFBSSxHQUFHLENBQUM7d0JBQ04sS0FBSyxFQUFFLENBQUM7d0JBQ1IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUM1QixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7NEJBQzVCLFNBQVMsRUFBRTtnQ0FDVCxJQUFJLEVBQUUsSUFBSTs2QkFDWDt5QkFDTyxDQUFBLENBQUM7cUJBQ1osQ0FBVSxDQUFDO2dCQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNqQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO29CQUM5QixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLElBQUk7cUJBQ1g7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsSUFBSTtxQkFDWDtpQkFDRixDQUFDLENBQUMsQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDMUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDakMsT0FBTzs0QkFDTCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7NEJBQzlCLFNBQVMsRUFBRSxFQUNWO3lCQUNNLENBQUM7b0JBQ1osQ0FBQyxDQUNBLENBQUM7b0JBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUN6QixTQUFTLEVBQUU7NEJBQ1QsWUFBWTs0QkFDWixNQUFNLEVBQUUsT0FBTzt5QkFDaEI7d0JBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7cUJBQ1YsQ0FBQyxDQUFDO29CQUNYLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQzt3QkFDN0IsU0FBUyxFQUFFOzRCQUNULFlBQVk7NEJBQ1osTUFBTSxFQUFFLE9BQU87eUJBQ2hCO3dCQUNELEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNKLENBQUMsQ0FDWCxDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQ1A7d0JBQ0UsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUNaLEtBQUs7cUJBQ0MsQ0FBQyxDQUFBO2dCQUNiLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUN2QjtvQkFDRSxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzs0QkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ3RDLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFhLENBQUEsQ0FBQztnQ0FDeEUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0NBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0NBQy9DLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDO2lDQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1I7NEJBQ0QsSUFBSTt5QkFDUTtxQkFDZjtpQkFDRixFQUNELE1BQU0sQ0FDUCxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO2FBQzVCOztnQkFFQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssZ0JBQWdCO1lBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDOztZQUN6RSxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDekIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLE1BQU07WUFDZCxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLDBCQUEwQixFQUFFLElBQUk7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNwQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2Qsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsYUFBYTtnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDOztnQkFFekUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztBQS9aTSx5QkFBTSxHQUFHLENBQUMsQ0FBQzsrR0EzQ1Asa0JBQWtCO21HQUFsQixrQkFBa0IseWRBUm5CLEVBQUU7MkZBUUQsa0JBQWtCO2tCQVY5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxFQUFFO29CQUNaLE1BQU0sRUFBRSxDQUFDLDRDQUE0QyxDQUFDO29CQUN0RCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLG1CQUFtQixFQUFFLEtBQUs7cUJBQzNCO2lCQUNGO21OQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQU9LLEtBQUs7c0JBRGYsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBT0ssTUFBTTtzQkFEaEIsS0FBSztnQkFTSyxPQUFPO3NCQURqQixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBR2EsT0FBTztzQkFBekIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2EsYUFBYTtzQkFBL0IsTUFBTTtnQkFHRSxFQUFFO3NCQURWLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBPdXRwdXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uTW9kZWwsIFBpdm90VmlldywgQ2hhcnRTZXJpZXNUeXBlLCBDZWxsQ2xpY2tFdmVudEFyZ3MsIEV4Y2VsRXhwb3J0LCBIeXBlckNlbGxDbGlja0V2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcnO1xyXG5pbXBvcnQgeyBDaGFydFNldHRpbmdzTW9kZWwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvY2hhcnRzZXR0aW5ncy1tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3NNb2RlbCwgRGF0YVNvdXJjZVNldHRpbmdzTW9kZWwsIEZpZWxkT3B0aW9uc01vZGVsLCBGb3JtYXRTZXR0aW5nc01vZGVsLCBTb3J0TW9kZWwgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2RhdGFzb3VyY2VzZXR0aW5ncy1tb2RlbFwiO1xyXG5pbXBvcnQgeyBHcmlkU2V0dGluZ3NNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvZ3JpZHNldHRpbmdzLW1vZGVsXCI7XHJcbmltcG9ydCB7IENoYXJ0LCBJUG9pbnRFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL2NlbGwnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9jb2x1bW4nO1xyXG5pbXBvcnQgeyBnZXRXYXJuLCBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlLCBZQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBERUZBVUxUX0NVUlJFTkNZLCBDTERSX0ZJTEVTIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW5jeVN5bWJvbCwgZ2V0TG9jYWxlTnVtYmVyRm9ybWF0LCBOdW1iZXJGb3JtYXRTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5QaXZvdFZpZXcuSW5qZWN0KEV4Y2VsRXhwb3J0KTtcclxuXHJcbmNvbnN0IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgPSAnfCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXBpdm90JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVzOiBbJzo6bmctZGVlcCAuZS1jZWxsdmFsdWUgeyBjdXJzb3I6IHBvaW50ZXIgfSddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3JyxcclxuICAgICdbc3R5bGUuZGlyZWN0aW9uXSc6ICdkaXInXHJcbiAgfVxyXG59KVxyXG4vKiogcGl2b3QgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVQaXZvdENvbXBvbmVudCBpbXBsZW1lbnRzIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IHhBeGlzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl94QXhpcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHhBeGlzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIHByaXZhdGUgX3Nlcmllcz86IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgc2VyaWVzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJpZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZXJpZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX3NlcmllcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBpbmRpY2VzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRpY2VzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW5kaWNlcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5faW5kaWNlcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kaWNlc0NoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASG9zdEJpbmRpbmcoKVxyXG4gIHJlYWRvbmx5IGlkID0gYGN1YmUtcGl2b3R2aWV3LSR7Q3ViZVBpdm90Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgcGl2b3Q6IFBpdm90VmlldztcclxuICBkaXNwbGF5T3B0aW9uOiBEaXNwbGF5T3B0aW9uTW9kZWw7XHJcbiAgY2hhcnRTZXR0aW5nczogQ2hhcnRTZXR0aW5nc01vZGVsO1xyXG4gIGRhdGFTb3VyY2U6IERhdGFTb3VyY2VTZXR0aW5nc01vZGVsO1xyXG5cclxuICByZWFkb25seSBmb3JtYXRTZXR0aW5nczogRm9ybWF0U2V0dGluZ3NNb2RlbFtdID0gW3tcclxuICAgIG5hbWU6ICd2YWx1ZScsXHJcbiAgfV07XHJcbiAgdmFsdWVzOiBGaWVsZE9wdGlvbnNNb2RlbFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogQ29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nc01vZGVsW10gPSBbe1xyXG4gICAgY29uZGl0aW9uczogJ0xlc3NUaGFuJyxcclxuICAgIHZhbHVlMTogMCxcclxuICAgIG1lYXN1cmU6ICd2YWx1ZScsXHJcbiAgICBhcHBseUdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgc3R5bGU6IHsgY29sb3I6IGdldFdhcm4oKSB9XHJcbiAgfV07XHJcbiAgcmVhZG9ubHkgZ3JpZFNldHRpbmdzOiBHcmlkU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHJvd0hlaWdodDogMzYsXHJcbiAgICBhbGxvd1NlbGVjdGlvbjogZmFsc2VcclxuICB9O1xyXG4gIGRpcjogRGlyZWN0aW9uO1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgcHJpdmF0ZSBfZGF0YToge31bXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1wdHlDZWxsc1RleHRDb250ZW50ID0gdGhpcy5faW50bC5mb3JtYXROdW1iZXIoMCwgdGhpcy5mb3JtYXRTZXR0aW5nc1swXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIC8qKiBwaXZvdCBjdG9yICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICBpZiAodGhpcy5waXZvdC5jaGFydCkge1xyXG4gICAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MucGFsZXR0ZXMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy5mb3JFYWNoKGYgPT4gZi5zdHlsZS5jb2xvciA9IGdldFdhcm4oKSk7XHJcbiAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKSB8fCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLmN1cnJlbmN5Q29kZSA9IHRoaXMuX2N1YmUuY3VycmVuY3lDb2RlO1xyXG4gICAgdGhpcy5kaXIgPSB0aGlzLmNoYXJ0VHlwZSA/ICdsdHInIDogdGhpcy5fc2Vzc2lvbi5kaXJlY3Rpb247XHJcbiAgICB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uZm9ybWF0ID0gKHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nKSArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICBpZiAodGhpcy5jaGFydFR5cGUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9uID0ge1xyXG4gICAgICAgIHZpZXc6ICdDaGFydCcsXHJcbiAgICAgICAgcHJpbWFyeTogJ0NoYXJ0J1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgY2hhcnRTZXJpZXM6IHsgdHlwZTogdGhpcy5jaGFydFR5cGUgYXMgQ2hhcnRTZXJpZXNUeXBlIH0sXHJcbiAgICAgICAgLy9pc1RyYW5zcG9zZWQ6IHRydWUsICAgICAgICBcclxuICAgICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgY2hhcnRBcmVhOiB7XHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFsZXR0ZXM6IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZSxcclxuICAgICAgICB0aGVtZTogdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnLFxyXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgcHJpbWFyeVhBeGlzOiB7XHJcbiAgICAgICAgICB0aXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFiZWxTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgem9vbVNldHRpbmdzOiB7XHJcbiAgICAgICAgICBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgICAgICAgIGVuYWJsZVBpbmNoWm9vbWluZzogdHJ1ZSxcclxuICAgICAgICAgIHRvb2xiYXJJdGVtczogW10sXHJcbiAgICAgICAgICBlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSxcclxuICAgICAgICAgIGVuYWJsZVNjcm9sbGJhcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYm9yZGVyOiB7IHdpZHRoOiAwIH0sXHJcbiAgICAgICAgbGVnZW5kU2V0dGluZ3M6IHtcclxuICAgICAgICAgIGlzSW52ZXJzZWQ6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgZW5hYmxlQW5pbWF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgIGJvcmRlcjogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3ViVGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByaW1hcnlZQXhpczoge1xyXG4gICAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlcyA9IFt7XHJcbiAgICAgIG5hbWU6ICd2YWx1ZScsXHJcbiAgICAgIGNhcHRpb246ICh0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IG51bGwpIHx8IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJylcclxuICAgIH1dO1xyXG4gICAgdGhpcy5faW5kaWNlcyAmJlxyXG4gICAgICB0aGlzLl9pbmRpY2VzLmZvckVhY2goaSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLnB1c2goe1xyXG4gICAgICAgICAgY29uZGl0aW9uczogJ0xlc3NUaGFuJyxcclxuICAgICAgICAgIHZhbHVlMTogMCxcclxuICAgICAgICAgIGFwcGx5R3JhbmRUb3RhbHM6IHRydWUsXHJcbiAgICAgICAgICBtZWFzdXJlOiBpLFxyXG4gICAgICAgICAgc3R5bGU6IHsgY29sb3I6IGdldFdhcm4oKSB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZXMuXHJcbiAgICAgICAgICBwdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgICAgY2FwdGlvbjogdGhpcy5fZ2V0SW5kZXhUaXRsZShpKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5mb3JtYXRTZXR0aW5ncy5cclxuICAgICAgICAgIHB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uZm9ybWF0LFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0SW5kZXhUaXRsZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1YmUuaW5kaWNlcy5maW5kKGkgPT4gaS5uYW1lID09PSBuYW1lKS50aXRsZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0QXhpc1RpdGxlKG5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYXhpcyA9IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiBheGlzLnRpdGxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddICYmICFjaGFuZ2VzWydmaWx0ZXJzJ10uZmlyc3RDaGFuZ2UpXHJcbiAgICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gICAgZWxzZVxyXG4gICAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10gfHwgY2hhbmdlc1snd2lkdGgnXSlcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuICBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5maWx0ZXJzKTtcclxuICAgIC8vIHJlbW92ZSBmaWx0ZXJpbmcgZnJvbSBwaXZvdCBheGVzXHJcbiAgICBsZXQgeEF4aXMyID0gdGhpcy5feEF4aXMuc2xpY2UoKSwgc2VyaWVzMiA9IHRoaXMuX3Nlcmllcy5zbGljZSgpO1xyXG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh4QXhpczIubGVuZ3RoID4gMSlcclxuICAgICAgICB4QXhpczIgPSB4QXhpczIuZmlsdGVyKHggPT4ga2V5cy5pbmRleE9mKHgpIDwgMCk7XHJcbiAgICAgIGlmIChzZXJpZXMyLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgc2VyaWVzMiA9IHNlcmllczIuZmlsdGVyKHggPT4ga2V5cy5pbmRleE9mKHgpIDwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNlcmllczIubGVuZ3RoKSBzZXJpZXMyID0gdGhpcy5fc2VyaWVzLnNsaWNlKC0xKTtcclxuICAgIGlmICgheEF4aXMyLmxlbmd0aCkgeEF4aXMyID0gdGhpcy5feEF4aXMuc2xpY2UoLTEpO1xyXG4gICAgLy8gY29sdW1uc1xyXG4gICAgY29uc3QgY29sdW1ucyA9IHhBeGlzMi5jb25jYXQoc2VyaWVzMik7XHJcbiAgICAvLyBxdWVyeVxyXG4gICAgdGhpcy5fc2VydmljZS50YWJsZSh0aGlzLl9jdWJlLm5hbWUsIGNvbHVtbnMsIHsgZmlsdGVyczogdGhpcy5maWx0ZXJzLCBpbmRpY2VzOiB0aGlzLmluZGljZXMgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9wcmVzZXRzKHhBeGlzMiwgc2VyaWVzMiwgcik7XHJcbiAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB4QXhpc1xyXG4gICAqIEBwYXJhbSBzZXJpZXNcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3ByZXNldHMoeEF4aXM6IHN0cmluZ1tdLCBzZXJpZXM6IHN0cmluZ1tdLCBkYXRhOiB7fVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHtcclxuICAgICAgY29sdW1uczogeEF4aXMubWFwKHggPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiB4LFxyXG4gICAgICAgICAgY2FwdGlvbjogdGhpcy5fZ2V0QXhpc1RpdGxlKHgpXHJcbiAgICAgICAgfSBhcyBGaWVsZE9wdGlvbnNNb2RlbDtcclxuICAgICAgfSksXHJcbiAgICAgIHJvd3M6IHNlcmllcy5tYXAocyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHMsXHJcbiAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRBeGlzVGl0bGUocylcclxuICAgICAgICB9IGFzIEZpZWxkT3B0aW9uc01vZGVsO1xyXG4gICAgICB9KSxcclxuICAgICAgdmFsdWVTb3J0U2V0dGluZ3M6IHsgaGVhZGVyRGVsaW1pdGVyOiBQSVZPVF9IRUFERVJfREVMSU1JVEVSIH0sXHJcbiAgICAgIHZhbHVlczogdGhpcy52YWx1ZXMsXHJcbiAgICAgIHNvcnRTZXR0aW5nczogeEF4aXMubWFwKHggPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiAnXycgKyB4LFxyXG4gICAgICAgIH0gYXMgU29ydE1vZGVsO1xyXG4gICAgICB9KSxcclxuICAgICAgLy9jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzOiB0aGlzLmNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MsXHJcbiAgICAgIGFsd2F5c1Nob3dWYWx1ZUhlYWRlcjogZmFsc2UsXHJcbiAgICAgIGFsbG93TWVtYmVyRmlsdGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dWYWx1ZUZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGFsbG93TGFiZWxGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBkYXRhU291cmNlOiBkYXRhLFxyXG4gICAgICBlbXB0eUNlbGxzVGV4dENvbnRlbnQ6IHRoaXMuZW1wdHlDZWxsc1RleHRDb250ZW50LFxyXG4gICAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcclxuICAgICAgZm9ybWF0U2V0dGluZ3M6IHRoaXMuZm9ybWF0U2V0dGluZ3NcclxuICAgIH0gYXMgRGF0YVNvdXJjZVNldHRpbmdzTW9kZWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXZ0XHJcbiAgICovXHJcbiAgY2VsbENsaWNrKGV2dDogQ2VsbENsaWNrRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkhlYWRlcnMsIHJvd0hlYWRlcnMsIGFjdHVhbFRleHQsIGFjdHVhbFZhbHVlLCBheGlzLCB2YWx1ZVNvcnQsIHR5cGUgfSA9IGV2dC5kYXRhIGFzIGFueTtcclxuICAgIGxldCBheGVzLCBpbmRleDtcclxuICAgIGlmIChjb2x1bW5IZWFkZXJzIHx8IHJvd0hlYWRlcnMpIHtcclxuICAgICAgaWYgKGFjdHVhbFZhbHVlID09PSAwKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgYXhlcyA9IHRoaXMuX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzKTtcclxuICAgICAgaWYgKGFjdHVhbFRleHQgIT09ICd2YWx1ZScpIGluZGV4ID0gYWN0dWFsVGV4dDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGF4aXMgPT09ICdyb3cnICYmIHR5cGUgIT09ICdncmFuZCBzdW0nKVxyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKCcnLCB2YWx1ZVNvcnQubGV2ZWxOYW1lKTtcclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGF4ZXMgZnJvbSBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGNvbHVtbkhlYWRlcnNcclxuICAgKiBAcGFyYW0gcm93SGVhZGVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzOiBzdHJpbmcsIHJvd0hlYWRlcnM6IHN0cmluZyk6IEF4ZXNNYXAge1xyXG4gICAgY29uc3QgYXhlczogQXhlc01hcCA9IHt9O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgIT09ICcnKVxyXG4gICAgICBjb2x1bW5IZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKGMsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1tpXS5uYW1lLFxyXG4gICAgICAgICAgLy8gZmluZCBhbnkgcm93IHdpdGggaGVhZGVyXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcy5fZGF0YS5maW5kKGUgPT4gZVtjb2x1bW5dLnRvU3RyaW5nKCkgPT09IGMpO1xyXG4gICAgICAgIC8vIHRyYW5zbGF0ZSBiYWNrIHRvIGtleVxyXG4gICAgICAgIGlmICghZWxlbWVudCkgY29uc29sZS5lcnJvcihgJHtjb2x1bW5IZWFkZXJzfWApO1xyXG4gICAgICAgIGVsc2UgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIGlmIChyb3dIZWFkZXJzICE9PSAnJylcclxuICAgICAgcm93SGVhZGVycy5zcGxpdChQSVZPVF9IRUFERVJfREVMSU1JVEVSKS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5kYXRhU291cmNlLnJvd3NbaV0ubmFtZSxcclxuICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHIpO1xyXG4gICAgICAgIGlmICghZWxlbWVudCkgY29uc29sZS5lcnJvcihgJHtyb3dIZWFkZXJzfWApO1xyXG4gICAgICAgIGVsc2UgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBheGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBjaGFydFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgcG9pbnRDbGljayhlOiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgcG9pbnQ6IHsgeCB9LCBzZXJpZXM6IHsgbmFtZSB9IH0gPSBlO1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8vIHNldCBheGVzIGZyb20geCBsYWJlbChzKVxyXG4gICAgKHggYXMgc3RyaW5nKS5zcGxpdCgnIC0gJykuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHgpO1xyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogeDtcclxuICAgIH0pO1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSBzZXJpZXMgbGFiZWxcclxuICAgIGlmIChuYW1lICE9PSAnJykge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1swXS5uYW1lLFxyXG4gICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IG5hbWUpO1xyXG4gICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudCA/IGVsZW1lbnRbYF8ke2NvbHVtbn1gXSA6IG5hbWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgfVxyXG4gIGV4cG9ydFRvRXhjZWwodGl0bGU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCB0YXNrID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jaGFydFR5cGUpIHtcclxuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/XHJcbiAgICAgICAgICBnZXRDdXJyZW5jeVN5bWJvbCh0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSwgJ25hcnJvdycpICtcclxuICAgICAgICAgIGdldExvY2FsZU51bWJlckZvcm1hdCh0aGlzLl9zZXNzaW9uLmxvY2FsZSwgTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3kpXHJcbiAgICAgICAgICA6IGdldExvY2FsZU51bWJlckZvcm1hdCh0aGlzLl9zZXNzaW9uLmxvY2FsZSwgTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCksXHJcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5fY3ViZS5heGVzLmZpbHRlcihhID0+IHRoaXMuX3hBeGlzLmluZGV4T2YoYS5uYW1lKSA+IC0xIHx8XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlcmllcy5pbmRleE9mKGEubmFtZSkgPiAtMSksXHJcbiAgICAgICAgICByb3dzID0gW3tcclxuICAgICAgICAgICAgaW5kZXg6IDEsXHJcbiAgICAgICAgICAgIGNlbGxzOiBjb2x1bW5zLm1hcCgoYywgaSkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleDogaSArIDEsIHZhbHVlOiBjLnRpdGxlLFxyXG4gICAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBhcyBDZWxsKSlcclxuICAgICAgICAgIH1dIGFzIFJvd1tdO1xyXG4gICAgICAgIHJvd3NbMF0uY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyAxLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDpcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnVmFsdWUnKSxcclxuICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICBib2xkOiB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+XHJcbiAgICAgICAgICByb3dzWzBdLmNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyBpICsgMixcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2dldEluZGV4VGl0bGUoeCksXHJcbiAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgociwgaSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBjb2x1bW5zLm1hcCgoYywgaikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGluZGV4OiBqICsgMSwgdmFsdWU6IHJbYy5uYW1lXSxcclxuICAgICAgICAgICAgICBjZWxsU3R5bGU6IHtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIDEsXHJcbiAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmFsdWU6IHJbJ3ZhbHVlJ11cclxuICAgICAgICAgIH0gYXMgQ2VsbCk7XHJcbiAgICAgICAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2luZGljZXMuZm9yRWFjaCgoeCwgaSkgPT5cclxuICAgICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgaSArIDIsXHJcbiAgICAgICAgICAgICAgY2VsbFN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHZhbHVlOiByW3hdXHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByb3dzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpbmRleDogaSArIDIsXHJcbiAgICAgICAgICAgICAgY2VsbHNcclxuICAgICAgICAgICAgfSBhcyBSb3cpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgd29ya3NoZWV0czogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU2hlZXROJywgMSksXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBbLi4uY29sdW1ucy5tYXAoKF8sIGkpID0+ICh7IGluZGV4OiBpICsgMSwgd2lkdGg6IDI1MCB9IGFzIENvbHVtbikpXHJcbiAgICAgICAgICAgICAgICAgICwgeyBpbmRleDogY29sdW1ucy5sZW5ndGggKyAxIH0sXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5faW5kaWNlcyA/IHRoaXMuX2luZGljZXMubWFwKChfLCBpKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyBpICsgMlxyXG4gICAgICAgICAgICAgICAgfSkpIDogW10pXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgcm93c1xyXG4gICAgICAgICAgICAgIH0gYXMgV29ya3NoZWV0XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgJ3hsc3gnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBib29rLnNhdmUoYCR7dGl0bGV9Lnhsc3hgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5waXZvdC5leGNlbEV4cG9ydCh7IGZpbGVOYW1lOiBgJHt0aXRsZX0ueGxzeGAsIGhpZXJhcmNoeUV4cG9ydE1vZGU6ICdBbGwnLCB9KTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5jdXJyZW5jeUNvZGUgJiYgdGhpcy5jdXJyZW5jeUNvZGUgIT09IERFRkFVTFRfQ1VSUkVOQ1kpXHJcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5jbGRyKHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2UsIENMRFJfRklMRVMpLnRoZW4oKCkgPT4gdGFzaygpKTtcclxuICAgIGVsc2UgdGFzaygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMucGl2b3QgPSBuZXcgUGl2b3RWaWV3KHtcclxuICAgICAgc3Bpbm5lclRlbXBsYXRlOiAnJyxcclxuICAgICAgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzLFxyXG4gICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgIGRhdGFTb3VyY2VTZXR0aW5nczogdGhpcy5kYXRhU291cmNlLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgIGVuYWJsZVZhbHVlU29ydGluZzogdHJ1ZSxcclxuICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlLFxyXG4gICAgICBhbGxvd0NvbmRpdGlvbmFsRm9ybWF0dGluZzogdHJ1ZSxcclxuICAgICAgYWxsb3dFeGNlbEV4cG9ydDogdHJ1ZSxcclxuICAgICAgZ3JpZFNldHRpbmdzOiB0aGlzLmdyaWRTZXR0aW5ncyxcclxuICAgICAgY2VsbENsaWNrOiB0aGlzLmNlbGxDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgcmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGl2b3QpIHtcclxuICAgICAgLy90aGlzLnBpdm90LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnBpdm90LndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgaWYgKHRoaXMuY2hhcnRTZXR0aW5ncylcclxuICAgICAgICB0aGlzLnBpdm90LmNoYXJ0ICYmICh0aGlzLnBpdm90LmNoYXJ0IGFzIHVua25vd24gYXMgQ2hhcnQpLmNoYXJ0UmVzaXplKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90Lm9uV2luZG93UmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRzdJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUF1QyxXQUFXLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFLckosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBS3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBSzVFLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFOUIsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFXbkMscUJBQXFCO0FBQ3JCLE1BQU0sT0FBTyxrQkFBa0I7SUF5RTdCLGlCQUFpQjtJQUNqQixZQUFvQixRQUFxQixFQUMvQixRQUF3QixFQUN4QixVQUE0QixFQUM1QixHQUFrQixFQUNsQixXQUF1QjtRQUpiLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7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c0JBQS9CLE1BQU07Z0JBR0UsRUFBRTtzQkFEVixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgT3V0cHV0LCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGlzcGxheU9wdGlvbk1vZGVsLCBQaXZvdFZpZXcsIENoYXJ0U2VyaWVzVHlwZSwgQ2VsbENsaWNrRXZlbnRBcmdzLCBFeGNlbEV4cG9ydCwgSHlwZXJDZWxsQ2xpY2tFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3JztcclxuaW1wb3J0IHsgQ2hhcnRTZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2NoYXJ0c2V0dGluZ3MtbW9kZWwnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbEZvcm1hdFNldHRpbmdzTW9kZWwsIERhdGFTb3VyY2VTZXR0aW5nc01vZGVsLCBGaWVsZE9wdGlvbnNNb2RlbCwgRm9ybWF0U2V0dGluZ3NNb2RlbCwgU29ydE1vZGVsIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcvc3JjL3Bpdm90dmlldy9tb2RlbC9kYXRhc291cmNlc2V0dGluZ3MtbW9kZWxcIjtcclxuaW1wb3J0IHsgR3JpZFNldHRpbmdzTW9kZWwgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2dyaWRzZXR0aW5ncy1tb2RlbFwiO1xyXG5pbXBvcnQgeyBDaGFydCwgSVBvaW50RXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYmFzZSc7XHJcbmltcG9ydCB7IFdvcmtib29rIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydCc7XHJcbmltcG9ydCB7IFdvcmtzaGVldCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3dvcmtzaGVldCc7XHJcbmltcG9ydCB7IFJvdyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3Jvdyc7XHJcbmltcG9ydCB7IENlbGwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0L3NyYy9jZWxsJztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgZ2V0V2FybiwgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIENoYXJ0VHlwZSwgQ3ViZSwgWUF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEF4aXNDbGlja0V2ZW50LCBDdWJlVmlld2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgREVGQVVMVF9DVVJSRU5DWSwgQ0xEUl9GSUxFUyB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcblBpdm90Vmlldy5JbmplY3QoRXhjZWxFeHBvcnQpO1xyXG5cclxuY29uc3QgUElWT1RfSEVBREVSX0RFTElNSVRFUiA9ICd8JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtcGl2b3QnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZXM6IFsnOjpuZy1kZWVwIC5lLWNlbGx2YWx1ZSB7IGN1cnNvcjogcG9pbnRlciB9J10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdjdWJlLXZpZXcnLFxyXG4gICAgJ1tzdHlsZS5kaXJlY3Rpb25dJzogJ2RpcidcclxuICB9XHJcbn0pXHJcbi8qKiBwaXZvdCBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQ3ViZVBpdm90Q29tcG9uZW50IGltcGxlbWVudHMgQ3ViZVZpZXdlckNvbXBvbmVudCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfeEF4aXM6IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgeEF4aXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3hBeGlzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgeEF4aXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLl94QXhpcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHlBeGlzPzogWUF4aXM7XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBzZXJpZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlcmllcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5fc2VyaWVzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IGluZGljZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmRpY2VzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICBjaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgQElucHV0KClcclxuICBpbmRpY2VzQ2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBleHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGlzQ2xpY2tFdmVudD4oKTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBsb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpXHJcbiAgcmVhZG9ubHkgaWQgPSBgY3ViZS1waXZvdHZpZXctJHtDdWJlUGl2b3RDb21wb25lbnQubmV4dElkKyt9YDtcclxuICBwaXZvdDogUGl2b3RWaWV3O1xyXG4gIGRpc3BsYXlPcHRpb246IERpc3BsYXlPcHRpb25Nb2RlbDtcclxuICBjaGFydFNldHRpbmdzOiBDaGFydFNldHRpbmdzTW9kZWw7XHJcbiAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZVNldHRpbmdzTW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IGZvcm1hdFNldHRpbmdzOiBGb3JtYXRTZXR0aW5nc01vZGVsW10gPSBbe1xyXG4gICAgbmFtZTogJ3ZhbHVlJyxcclxuICB9XTtcclxuICB2YWx1ZXM6IEZpZWxkT3B0aW9uc01vZGVsW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25hbEZvcm1hdFNldHRpbmdzOiBDb25kaXRpb25hbEZvcm1hdFNldHRpbmdzTW9kZWxbXSA9IFt7XHJcbiAgICBjb25kaXRpb25zOiAnTGVzc1RoYW4nLFxyXG4gICAgdmFsdWUxOiAwLFxyXG4gICAgbWVhc3VyZTogJ3ZhbHVlJyxcclxuICAgIGFwcGx5R3JhbmRUb3RhbHM6IHRydWUsXHJcbiAgICBzdHlsZTogeyBjb2xvcjogZ2V0V2FybigpIH1cclxuICB9XTtcclxuICByZWFkb25seSBncmlkU2V0dGluZ3M6IEdyaWRTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgcm93SGVpZ2h0OiAzNixcclxuICAgIGFsbG93U2VsZWN0aW9uOiBmYWxzZVxyXG4gIH07XHJcbiAgZGlyOiBEaXJlY3Rpb247XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBwcml2YXRlIF9kYXRhOiB7fVtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGw6IEludGVybmF0aW9uYWxpemF0aW9uID0gbmV3IEludGVybmF0aW9uYWxpemF0aW9uKCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbXB0eUNlbGxzVGV4dENvbnRlbnQgPSB0aGlzLl9pbnRsLmZvcm1hdE51bWJlcigwLCB0aGlzLmZvcm1hdFNldHRpbmdzWzBdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqIHBpdm90IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnBpdm90LmNoYXJ0KSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLmZvckVhY2goZiA9PiBmLnN0eWxlLmNvbG9yID0gZ2V0V2FybigpKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuY3VycmVuY3lDb2RlID0gdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmRpciA9IHRoaXMuY2hhcnRUeXBlID8gJ2x0cicgOiB0aGlzLl9zZXNzaW9uLmRpcmVjdGlvbjtcclxuICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgICAgdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5mb3JtYXQgPSAodGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicpICsgdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0cztcclxuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXlPcHRpb24gPSB7XHJcbiAgICAgICAgdmlldzogJ0NoYXJ0JyxcclxuICAgICAgICBwcmltYXJ5OiAnQ2hhcnQnXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncyA9IHtcclxuICAgICAgICBwb2ludENsaWNrOiB0aGlzLnBvaW50Q2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICBjaGFydFNlcmllczogeyB0eXBlOiB0aGlzLmNoYXJ0VHlwZSBhcyBDaGFydFNlcmllc1R5cGUgfSxcclxuICAgICAgICAvL2lzVHJhbnNwb3NlZDogdHJ1ZSwgICAgICAgIFxyXG4gICAgICAgIGVuYWJsZUV4cG9ydDogdHJ1ZSxcclxuICAgICAgICBjaGFydEFyZWE6IHtcclxuICAgICAgICAgIGJvcmRlcjogeyB3aWR0aDogMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYWxldHRlczogdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlLFxyXG4gICAgICAgIHRoZW1lOiB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCcsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICBwcmltYXJ5WEF4aXM6IHtcclxuICAgICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB6b29tU2V0dGluZ3M6IHtcclxuICAgICAgICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgICAgICAgZW5hYmxlUGluY2hab29taW5nOiB0cnVlLFxyXG4gICAgICAgICAgdG9vbGJhckl0ZW1zOiBbXSxcclxuICAgICAgICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZW5hYmxlU2Nyb2xsYmFyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICBsZWdlbmRTZXR0aW5nczoge1xyXG4gICAgICAgICAgaXNJbnZlcnNlZDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICBlbmFibGVBbmltYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgYm9yZGVyOiB7IHdpZHRoOiAwIH0sXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdWJUaXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJpbWFyeVlBeGlzOiB7XHJcbiAgICAgICAgICB0aXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFiZWxTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWVzID0gW3tcclxuICAgICAgbmFtZTogJ3ZhbHVlJyxcclxuICAgICAgY2FwdGlvbjogKHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDogbnVsbCkgfHwgdGhpcy5fdHJhbnNsYXRlLmdldCgnVmFsdWUnKVxyXG4gICAgfV07XHJcbiAgICB0aGlzLl9pbmRpY2VzICYmXHJcbiAgICAgIHRoaXMuX2luZGljZXMuZm9yRWFjaChpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaCh7XHJcbiAgICAgICAgICBjb25kaXRpb25zOiAnTGVzc1RoYW4nLFxyXG4gICAgICAgICAgdmFsdWUxOiAwLFxyXG4gICAgICAgICAgYXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgICAgICAgIG1lYXN1cmU6IGksXHJcbiAgICAgICAgICBzdHlsZTogeyBjb2xvcjogZ2V0V2FybigpIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlcy5cclxuICAgICAgICAgIHB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRJbmRleFRpdGxlKGkpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcm1hdFNldHRpbmdzLlxyXG4gICAgICAgICAgcHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGksXHJcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5mb3JtYXQsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9nZXRJbmRleFRpdGxlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3ViZS5pbmRpY2VzLmZpbmQoaSA9PiBpLm5hbWUgPT09IG5hbWUpLnRpdGxlO1xyXG4gIH1cclxuICBwcml2YXRlIF9nZXRBeGlzVGl0bGUobmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBheGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGF4aXMudGl0bGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10gJiYgIWNoYW5nZXNbJ2ZpbHRlcnMnXS5maXJzdENoYW5nZSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpO1xyXG4gICAgLy8gcmVtb3ZlIGZpbHRlcmluZyBmcm9tIHBpdm90IGF4ZXNcclxuICAgIGxldCB4QXhpczIgPSB0aGlzLl94QXhpcy5zbGljZSgpLCBzZXJpZXMyID0gdGhpcy5fc2VyaWVzLnNsaWNlKCk7XHJcbiAgICBpZiAoa2V5cy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHhBeGlzMi5sZW5ndGggPiAxKVxyXG4gICAgICAgIHhBeGlzMiA9IHhBeGlzMi5maWx0ZXIoeCA9PiBrZXlzLmluZGV4T2YoeCkgPCAwKTtcclxuICAgICAgaWYgKHNlcmllczIubGVuZ3RoID4gMSlcclxuICAgICAgICBzZXJpZXMyID0gc2VyaWVzMi5maWx0ZXIoeCA9PiBrZXlzLmluZGV4T2YoeCkgPCAwKTtcclxuICAgIH1cclxuICAgIGlmICghc2VyaWVzMi5sZW5ndGgpIHNlcmllczIgPSB0aGlzLl9zZXJpZXMuc2xpY2UoLTEpO1xyXG4gICAgaWYgKCF4QXhpczIubGVuZ3RoKSB4QXhpczIgPSB0aGlzLl94QXhpcy5zbGljZSgtMSk7XHJcbiAgICAvLyBjb2x1bW5zXHJcbiAgICBjb25zdCBjb2x1bW5zID0geEF4aXMyLmNvbmNhdChzZXJpZXMyKTtcclxuICAgIC8vIHF1ZXJ5XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnRhYmxlKHRoaXMuX2N1YmUubmFtZSwgY29sdW1ucywgeyBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsIGluZGljZXM6IHRoaXMuaW5kaWNlcyB9KS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX3ByZXNldHMoeEF4aXMyLCBzZXJpZXMyLCByKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHhBeGlzXHJcbiAgICogQHBhcmFtIHNlcmllc1xyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcHJlc2V0cyh4QXhpczogc3RyaW5nW10sIHNlcmllczogc3RyaW5nW10sIGRhdGE6IHt9W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0ge1xyXG4gICAgICBjb2x1bW5zOiB4QXhpcy5tYXAoeCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHgsXHJcbiAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRBeGlzVGl0bGUoeClcclxuICAgICAgICB9IGFzIEZpZWxkT3B0aW9uc01vZGVsO1xyXG4gICAgICB9KSxcclxuICAgICAgcm93czogc2VyaWVzLm1hcChzID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogcyxcclxuICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEF4aXNUaXRsZShzKVxyXG4gICAgICAgIH0gYXMgRmllbGRPcHRpb25zTW9kZWw7XHJcbiAgICAgIH0pLFxyXG4gICAgICB2YWx1ZVNvcnRTZXR0aW5nczogeyBoZWFkZXJEZWxpbWl0ZXI6IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgfSxcclxuICAgICAgdmFsdWVzOiB0aGlzLnZhbHVlcyxcclxuICAgICAgc29ydFNldHRpbmdzOiB4QXhpcy5tYXAoeCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6ICdfJyArIHgsXHJcbiAgICAgICAgfSBhcyBTb3J0TW9kZWw7XHJcbiAgICAgIH0pLFxyXG4gICAgICAvL2NvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3M6IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuICAgICAgYWx3YXlzU2hvd1ZhbHVlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dNZW1iZXJGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd1ZhbHVlRmlsdGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dMYWJlbEZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGRhdGFTb3VyY2U6IGRhdGEsXHJcbiAgICAgIGVtcHR5Q2VsbHNUZXh0Q29udGVudDogdGhpcy5lbXB0eUNlbGxzVGV4dENvbnRlbnQsXHJcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBmb3JtYXRTZXR0aW5nczogdGhpcy5mb3JtYXRTZXR0aW5nc1xyXG4gICAgfSBhcyBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBldnRcclxuICAgKi9cclxuICBjZWxsQ2xpY2soZXZ0OiBDZWxsQ2xpY2tFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgY29sdW1uSGVhZGVycywgcm93SGVhZGVycywgYWN0dWFsVGV4dCwgYWN0dWFsVmFsdWUsIGF4aXMsIHZhbHVlU29ydCwgdHlwZSB9ID0gZXZ0LmRhdGEgYXMgYW55O1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycykge1xyXG4gICAgICBpZiAoYWN0dWFsVmFsdWUgPT09IDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKGNvbHVtbkhlYWRlcnMsIHJvd0hlYWRlcnMpO1xyXG4gICAgICBpZiAoYWN0dWFsVGV4dCAhPT0gJ3ZhbHVlJykgaW5kZXggPSBhY3R1YWxUZXh0O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ3JvdycgJiYgdHlwZSAhPT0gJ2dyYW5kIHN1bScpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoJycsIHZhbHVlU29ydC5sZXZlbE5hbWUpO1xyXG4gICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogYXhlcyBmcm9tIGhlYWRlcnNcclxuICAgKiBAcGFyYW0gY29sdW1uSGVhZGVyc1xyXG4gICAqIEBwYXJhbSByb3dIZWFkZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcGFyc2VBeGVzKGNvbHVtbkhlYWRlcnM6IHN0cmluZywgcm93SGVhZGVyczogc3RyaW5nKTogQXhlc01hcCB7XHJcbiAgICBjb25zdCBheGVzOiBBeGVzTWFwID0ge307XHJcbiAgICBpZiAoY29sdW1uSGVhZGVycyAhPT0gJycpXHJcbiAgICAgIGNvbHVtbkhlYWRlcnMuc3BsaXQoUElWT1RfSEVBREVSX0RFTElNSVRFUikuZm9yRWFjaCgoYywgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5jb2x1bW5zW2ldLm5hbWUsXHJcbiAgICAgICAgICAvLyBmaW5kIGFueSByb3cgd2l0aCBoZWFkZXJcclxuICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0udG9TdHJpbmcoKSA9PT0gYyk7XHJcbiAgICAgICAgLy8gdHJhbnNsYXRlIGJhY2sgdG8ga2V5XHJcbiAgICAgICAgaWYgKCFlbGVtZW50KSBjb25zb2xlLmVycm9yKGAke2NvbHVtbkhlYWRlcnN9YCk7XHJcbiAgICAgICAgZWxzZSBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHJvd0hlYWRlcnMgIT09ICcnKVxyXG4gICAgICByb3dIZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKHIsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gcik7XHJcbiAgICAgICAgaWYgKCFlbGVtZW50KSBjb25zb2xlLmVycm9yKGAke3Jvd0hlYWRlcnN9YCk7XHJcbiAgICAgICAgZWxzZSBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGF4ZXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGNoYXJ0XHJcbiAgICogQHBhcmFtIGVcclxuICAgKi9cclxuICBwb2ludENsaWNrKGU6IElQb2ludEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBwb2ludDogeyB4IH0sIHNlcmllczogeyBuYW1lIH0gfSA9IGU7XHJcbiAgICBjb25zdCBheGVzOiB7IFtheGlzOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSB4IGxhYmVsKHMpXHJcbiAgICAoeCBhcyBzdHJpbmcpLnNwbGl0KCcgLSAnKS5mb3JFYWNoKCh4LCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5yb3dzW2ldLm5hbWUsXHJcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0geCk7XHJcbiAgICAgIGF4ZXNbY29sdW1uXSA9IGVsZW1lbnQgPyBlbGVtZW50W2BfJHtjb2x1bW59YF0gOiB4O1xyXG4gICAgfSk7XHJcbiAgICAvLyBzZXQgYXhlcyBmcm9tIHNlcmllcyBsYWJlbFxyXG4gICAgaWYgKG5hbWUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5jb2x1bW5zWzBdLm5hbWUsXHJcbiAgICAgICAgLy8gZmluZCBhbnkgcm93IHdpdGggaGVhZGVyXHJcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gbmFtZSk7XHJcbiAgICAgIC8vIHRyYW5zbGF0ZSBiYWNrIHRvIGtleVxyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogbmFtZTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcyB9KTtcclxuICB9XHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0VHlwZSkgeyBcclxuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCxcclxuICAgICAgICAgIGNvbHVtbnMgPSB0aGlzLl9jdWJlLmF4ZXMuZmlsdGVyKGEgPT4gdGhpcy5feEF4aXMuaW5kZXhPZihhLm5hbWUpID4gLTEgfHxcclxuICAgICAgICAgICAgdGhpcy5fc2VyaWVzLmluZGV4T2YoYS5uYW1lKSA+IC0xKSxcclxuICAgICAgICAgICByb3dzID0gW3tcclxuICAgICAgICAgICAgaW5kZXg6IDEsXHJcbiAgICAgICAgICAgIGNlbGxzOiBjb2x1bW5zLm1hcCgoYywgaSkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleDogaSArIDEsIHZhbHVlOiBjLnRpdGxlLFxyXG4gICAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBhcyBDZWxsKSlcclxuICAgICAgICAgIH1dIGFzIFJvd1tdO1xyXG4gICAgICAgIHJvd3NbMF0uY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyAxLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDpcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnVmFsdWUnKSxcclxuICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICBib2xkOiB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+XHJcbiAgICAgICAgICByb3dzWzBdLmNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyBpICsgMixcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2dldEluZGV4VGl0bGUoeCksXHJcbiAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgociwgaSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBjb2x1bW5zLm1hcCgoYywgaikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGluZGV4OiBqICsgMSwgdmFsdWU6IHJbYy5uYW1lXSxcclxuICAgICAgICAgICAgICBjZWxsU3R5bGU6IHtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIDEsXHJcbiAgICAgICAgICAgIGNlbGxTdHlsZToge1xyXG4gICAgICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmFsdWU6IHJbJ3ZhbHVlJ11cclxuICAgICAgICAgIH0gYXMgQ2VsbCk7XHJcbiAgICAgICAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2luZGljZXMuZm9yRWFjaCgoeCwgaSkgPT5cclxuICAgICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgaSArIDIsXHJcbiAgICAgICAgICAgICAgY2VsbFN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHZhbHVlOiByW3hdXHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByb3dzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpbmRleDogaSArIDIsXHJcbiAgICAgICAgICAgICAgY2VsbHNcclxuICAgICAgICAgICAgfSBhcyBSb3cpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgd29ya3NoZWV0czogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU2hlZXROJywgMSksXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBbLi4uY29sdW1ucy5tYXAoKF8sIGkpID0+ICh7IGluZGV4OiBpICsgMSwgd2lkdGg6IDI1MCB9IGFzIENvbHVtbikpXHJcbiAgICAgICAgICAgICAgICAgICwgeyBpbmRleDogY29sdW1ucy5sZW5ndGggKyAxIH0sXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5faW5kaWNlcyA/IHRoaXMuX2luZGljZXMubWFwKChfLCBpKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICBpbmRleDogY29sdW1ucy5sZW5ndGggKyBpICsgMlxyXG4gICAgICAgICAgICAgICAgfSkpIDogW10pXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgcm93c1xyXG4gICAgICAgICAgICAgIH0gYXMgV29ya3NoZWV0XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgJ3hsc3gnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBib29rLnNhdmUoYCR7dGl0bGV9Lnhsc3hgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5waXZvdC5leGNlbEV4cG9ydCh7IGZpbGVOYW1lOiBgJHt0aXRsZX0ueGxzeGAsIGhpZXJhcmNoeUV4cG9ydE1vZGU6ICdBbGwnLCB9KTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5jdXJyZW5jeUNvZGUgJiYgdGhpcy5jdXJyZW5jeUNvZGUgIT09IERFRkFVTFRfQ1VSUkVOQ1kpXHJcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5jbGRyKHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2UsIENMRFJfRklMRVMpLnRoZW4oKCkgPT4gdGFzaygpKTtcclxuICAgIGVsc2UgdGFzaygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMucGl2b3QgPSBuZXcgUGl2b3RWaWV3KHtcclxuICAgICAgc3Bpbm5lclRlbXBsYXRlOiAnJyxcclxuICAgICAgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzLFxyXG4gICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgIGRhdGFTb3VyY2VTZXR0aW5nczogdGhpcy5kYXRhU291cmNlLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgIGVuYWJsZVZhbHVlU29ydGluZzogdHJ1ZSxcclxuICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlLFxyXG4gICAgICBhbGxvd0NvbmRpdGlvbmFsRm9ybWF0dGluZzogdHJ1ZSxcclxuICAgICAgYWxsb3dFeGNlbEV4cG9ydDogdHJ1ZSxcclxuICAgICAgZ3JpZFNldHRpbmdzOiB0aGlzLmdyaWRTZXR0aW5ncyxcclxuICAgICAgY2VsbENsaWNrOiB0aGlzLmNlbGxDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgcmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGl2b3QpIHtcclxuICAgICAgLy90aGlzLnBpdm90LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnBpdm90LndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgaWYgKHRoaXMuY2hhcnRTZXR0aW5ncylcclxuICAgICAgICB0aGlzLnBpdm90LmNoYXJ0ICYmICh0aGlzLnBpdm90LmNoYXJ0IGFzIHVua25vd24gYXMgQ2hhcnQpLmNoYXJ0UmVzaXplKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90Lm9uV2luZG93UmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|