@po-ui/ng-components 18.18.0 → 18.19.1
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/esm2022/lib/components/po-badge/po-badge-base.component.mjs +2 -2
- package/esm2022/lib/components/po-button/index.mjs +2 -1
- package/esm2022/lib/components/po-button/po-button-base.component.mjs +16 -3
- package/esm2022/lib/components/po-button/po-button-type.enum.mjs +36 -0
- package/esm2022/lib/components/po-button/po-button.component.mjs +4 -4
- package/esm2022/lib/components/po-button-group/po-button-group-item.interface.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +9 -3
- package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +2 -2
- package/esm2022/lib/components/po-icon/po-icon.component.mjs +2 -2
- package/esm2022/lib/components/po-listbox/po-item-list/interfaces/po-item-list-action.interface.mjs +1 -1
- package/esm2022/lib/components/po-menu/po-menu-item.interface.mjs +1 -1
- package/esm2022/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.mjs +1 -1
- package/esm2022/lib/components/po-modal/po-modal-base.component.mjs +2 -2
- package/esm2022/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-list/po-page-list-base.component.mjs +2 -2
- package/esm2022/lib/components/po-popup/po-popup-action.interface.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-step/po-step.component.mjs +2 -2
- package/esm2022/lib/components/po-stepper/po-stepper-base.component.mjs +3 -3
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +2 -2
- package/esm2022/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-column-label/po-table-column-label.interface.mjs +1 -1
- package/esm2022/lib/components/po-tag/po-tag-base.component.mjs +2 -2
- package/esm2022/lib/components/po-toolbar/po-toolbar-base.component.mjs +3 -3
- package/fesm2022/po-ui-ng-components.mjs +75 -21
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-badge/po-badge-base.component.d.ts +1 -1
- package/lib/components/po-button/index.d.ts +1 -0
- package/lib/components/po-button/po-button-base.component.d.ts +12 -2
- package/lib/components/po-button/po-button-type.enum.d.ts +34 -0
- package/lib/components/po-button-group/po-button-group-item.interface.d.ts +1 -1
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +1 -1
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +1 -1
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +1 -1
- package/lib/components/po-field/po-input/po-input-base.component.d.ts +1 -1
- package/lib/components/po-icon/po-icon.component.d.ts +1 -1
- package/lib/components/po-listbox/po-item-list/interfaces/po-item-list-action.interface.d.ts +1 -1
- package/lib/components/po-menu/po-menu-item.interface.d.ts +1 -1
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.d.ts +1 -1
- package/lib/components/po-modal/po-modal-base.component.d.ts +1 -1
- package/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.d.ts +1 -1
- package/lib/components/po-page/po-page-list/po-page-list-base.component.d.ts +1 -1
- package/lib/components/po-popup/po-popup-action.interface.d.ts +1 -1
- package/lib/components/po-stepper/po-step/po-step.component.d.ts +1 -1
- package/lib/components/po-stepper/po-stepper-base.component.d.ts +2 -2
- package/lib/components/po-table/po-table-base.component.d.ts +1 -1
- package/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.d.ts +1 -1
- package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +1 -1
- package/lib/components/po-tag/po-tag-base.component.d.ts +1 -1
- package/lib/components/po-toolbar/po-toolbar-base.component.d.ts +2 -2
- package/package.json +4 -4
- package/po-ui-ng-components-18.19.1.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v18/index.js +2 -2
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-18.18.0.tgz +0 -0
|
@@ -135,8 +135,14 @@ export class PoDynamicViewComponent extends PoDynamicViewBaseComponent {
|
|
|
135
135
|
}
|
|
136
136
|
setFieldValue(field) {
|
|
137
137
|
if (field.options) {
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
if (field.optionsMulti) {
|
|
139
|
+
const selectedOptions = field.options.filter(option => Array.isArray(field.value) && field.value.some(value => value === option.value));
|
|
140
|
+
return selectedOptions.length ? selectedOptions.map(option => option.label) : field.value;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const selectedOption = field.options.find(option => option.value === field.value);
|
|
144
|
+
return selectedOption ? selectedOption.label : field.value;
|
|
145
|
+
}
|
|
140
146
|
}
|
|
141
147
|
else if (field.type === 'boolean' && 'booleanTrue' in field && 'booleanFalse' in field) {
|
|
142
148
|
return field.value ? field.booleanTrue : field.booleanFalse;
|
|
@@ -202,4 +208,4 @@ export class PoDynamicViewComponent extends PoDynamicViewBaseComponent {
|
|
|
202
208
|
args: [{ selector: 'po-dynamic-view', template: "<div class=\"po-row\" [class.po-dynamic]=\"hasContainers\" *ngIf=\"visibleFields.length\">\n <ng-container\n *ngTemplateOutlet=\"\n hasContainers ? poContentContainer : poContent;\n context: { $implicit: hasContainers ? containerFields : visibleFields }\n \"\n ></ng-container>\n</div>\n\n<ng-template #poContent let-fields>\n <ng-template ngFor let-field [ngForOf]=\"fields\">\n <po-divider *ngIf=\"field?.divider?.trim()\" class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n <ng-container\n *ngTemplateOutlet=\"\n !field.tag && !field.image ? poInfo : !field.image ? poTag : poImage;\n context: { $implicit: field }\n \"\n >\n </ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n\n<ng-template #poInfo let-field>\n <po-info\n [ngClass]=\"field.cssClass\"\n [class.po-info-value-pre]=\"textWrap && containsLineBreak(setFieldValue(field))\"\n [p-label]=\"field.label\"\n [p-value]=\"setFieldValue(field)\"\n >\n </po-info\n></ng-template>\n\n<ng-template #poTag let-field>\n <po-tag\n [ngClass]=\"field.cssClass\"\n [p-color]=\"field.color\"\n [p-icon]=\"field.icon\"\n [p-label]=\"field.label\"\n [p-text-color]=\"field.textColor\"\n [p-value]=\"setFieldValue(field)\"\n >\n </po-tag>\n</ng-template>\n\n<ng-template #poImage let-field>\n <po-image [p-alt]=\"field.alt\" [p-height]=\"field.height\" [p-src]=\"field.value\"> </po-image>\n</ng-template>\n" }]
|
|
203
209
|
}], () => [{ type: i1.CurrencyPipe }, { type: i1.DatePipe }, { type: i1.DecimalPipe }, { type: i2.PoTimePipe }, { type: i1.TitleCasePipe }, { type: i3.PoDynamicViewService }, { type: i4.PoComboFilterService }, { type: i5.PoMultiselectFilterService }], null); })();
|
|
204
210
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoDynamicViewComponent, { className: "PoDynamicViewComponent", filePath: "lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts", lineNumber: 42 }); })();
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUs1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNMNUUsd0JBS2dCOzs7SUFObEIsOEJBQW9GO0lBQ2xGLCtGQUtDO0lBQ0gsaUJBQU07Ozs7O0lBUGMsa0RBQWtDO0lBRWpELGNBRVE7SUFBQSxBQUZSLDhGQUVRLDZIQUViOzs7SUFLSSxpQ0FBb0c7OztJQUF4QywwQ0FBeUI7OztJQUNyRix3QkFNZTs7O0lBTmYsQUFEQSxpSEFBc0Ysd0dBTXJGOzs7Ozs7O0lBTlksMEdBQTRCO0lBRXRDLGNBRVU7SUFBQSxBQUZWLHlIQUVVLGlFQUVqQjs7O0lBUEUscUdBQWdEOzs7SUFBbkIsbUNBQWtCOzs7SUFhL0MsMkNBQXlGOzs7OztJQUEvQyxBQUFwQixvQ0FBbUIsMkJBQXdCOzs7SUFJakUsOEJBT0Q7Ozs7SUFMRyxpSEFBK0U7SUFFL0UsQUFEQSxBQUZBLDRDQUEwQiw0QkFFSCw0Q0FDUzs7O0lBTWxDLDZCQVFTOzs7O0lBRlAsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDRDQUEwQiw0QkFDSCwwQkFDRiw0QkFDRSxxQ0FDUyw0Q0FDQTs7O0lBTWxDLCtCQUEwRjs7O0lBQWxDLEFBQTFCLEFBQXBC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LENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsMkJBQTJCO1FBQ3ZDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO2dGQTdHVSxzQkFBc0I7NkRBQXRCLHNCQUFzQjtZQ09uQyxBQVpBLEFBVkEsQUFKQSxBQWJBLEFBVEEsdUVBQW9GLDJHQVNqRCwyR0FhUywyR0FJYiwyR0FVRCwyR0FZRTs7WUFoRHdCLCtDQUEwQjs7O2lGRHlDckUsc0JBQXNCO2NBSmxDLFNBQVM7MkJBQ0UsaUJBQWlCOztrRkFHaEIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb1RpbWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvcG8tdGltZS9wby10aW1lLnBpcGUnO1xuXG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3RmllbGQgfSBmcm9tICcuLy4uL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1keW5hbWljLXZpZXctYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWR5bmFtaWMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZHluYW1pYy12aWV3LWJhc2ljXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZVwiIHRpdGxlPVwiUE8gRHluYW1pYyBWaWV3IC0gRW1wbG95ZWVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgLSBFbXBsb3llZSBvbiBsb2FkXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1jb250YWluZXJcIiB0aXRsZT1cIlBPIER5bmFtaWMgVmlldyAtIEVtcGxveWVlIG9uIGxvYWRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1keW5hbWljLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGluaXRDaGFuZ2VzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHRpbWVQaXBlOiBQb1RpbWVQaXBlLFxuICAgIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgZHluYW1pY1ZpZXdTZXJ2aWNlOiBQb0R5bmFtaWNWaWV3U2VydmljZSxcbiAgICBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIG11bHRpc2VsZWN0RmlsdGVyU2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBjdXJyZW5jeVBpcGUsXG4gICAgICBkYXRlUGlwZSxcbiAgICAgIGRlY2ltYWxQaXBlLFxuICAgICAgdGltZVBpcGUsXG4gICAgICB0aXRsZUNhc2VQaXBlLFxuICAgICAgZHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgICAgY29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgICAgbXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5sb2FkICYmICF0aGlzLmluaXRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRDaGFuZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoKGNoYW5nZXMuZmllbGRzIHx8IGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5zaG93QWxsVmFsdWUpICYmIHRoaXMuaW5pdENoYW5nZXMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5sb2FkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgIGlmIChmaWVsZC5vcHRpb25zKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGZpZWxkLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBmaWVsZC52YWx1ZSk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5sYWJlbCA6IGZpZWxkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmICdib29sZWFuVHJ1ZScgaW4gZmllbGQgJiYgJ2Jvb2xlYW5GYWxzZScgaW4gZmllbGQpIHtcbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZSA/IGZpZWxkLmJvb2xlYW5UcnVlIDogZmllbGQuYm9vbGVhbkZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnRhaW5zTGluZUJyZWFrKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRWYWx1ZXNBbmRGaWVsZHNGcm9tTG9hZCgpOiBQcm9taXNlPHsgdmFsdWU/OiBhbnk7IGZpZWxkcz86IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gfT4ge1xuICAgIGxldCB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gYXdhaXQgdGhpcy5keW5hbWljVmlld1NlcnZpY2Uub25Mb2FkKHRoaXMubG9hZCwgdGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5sb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gdGhpcy5sb2FkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQW5kRmllbGRzRnJvbUxvYWQgfHwge307XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0FsbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXJnZWRGaWVsZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLmZpZWxkcy5sZW5ndGggPyB0aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKSA6IHRoaXMuZ2V0VmFsdWVGaWVsZHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmaWVsZE9uTG9hZC5wcm9wZXJ0eSk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5maWVsZHNbaW5kZXhdID0geyAuLi50aGlzLmZpZWxkc1tpbmRleF0sIC4uLmZpZWxkT25Mb2FkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzLnB1c2goeyAuLi5maWVsZE9uTG9hZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkc09uTG9hZChmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMuZm9yRWFjaChmaWVsZE9uTG9hZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZU9uTG9hZChuZXdWYWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWVzQW5kRmllbGRzRnJvbUxvYWQoKTtcblxuICAgIHRoaXMuc2V0VmFsdWVPbkxvYWQodmFsdWUpO1xuICAgIHRoaXMuc2V0RmllbGRzT25Mb2FkKGZpZWxkcyk7XG5cbiAgICB0aGlzLnZpc2libGVGaWVsZHMgPSB0aGlzLmdldFZpc2libGVGaWVsZHMoKTtcbiAgICB0aGlzLmluaXRDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJvd1wiIFtjbGFzcy5wby1keW5hbWljXT1cImhhc0NvbnRhaW5lcnNcIiAqbmdJZj1cInZpc2libGVGaWVsZHMubGVuZ3RoXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgaGFzQ29udGFpbmVycyA/IHBvQ29udGVudENvbnRhaW5lciA6IHBvQ29udGVudDtcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBoYXNDb250YWluZXJzID8gY29udGFpbmVyRmllbGRzIDogdmlzaWJsZUZpZWxkcyB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50IGxldC1maWVsZHM+XG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmllbGQgW25nRm9yT2ZdPVwiZmllbGRzXCI+XG4gICAgPHBvLWRpdmlkZXIgKm5nSWY9XCJmaWVsZD8uZGl2aWRlcj8udHJpbSgpXCIgY2xhc3M9XCJwby1zbS0xMlwiIFtwLWxhYmVsXT1cImZpZWxkLmRpdmlkZXJcIj4gPC9wby1kaXZpZGVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICFmaWVsZC50YWcgJiYgIWZpZWxkLmltYWdlID8gcG9JbmZvIDogIWZpZWxkLmltYWdlID8gcG9UYWcgOiBwb0ltYWdlO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmllbGQgfVxuICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvQ29udGVudENvbnRhaW5lciBsZXQtZmllbGRzPlxuICA8cG8tZHluYW1pYy1jb250YWluZXIgW3AtZmllbGRzXT1cImZpZWxkc1wiIFtwLWNvbnRlbnRdPVwicG9Db250ZW50XCI+PC9wby1keW5hbWljLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbmZvIGxldC1maWVsZD5cbiAgPHBvLWluZm9cbiAgICBbbmdDbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiXG4gICAgW2NsYXNzLnBvLWluZm8tdmFsdWUtcHJlXT1cInRleHRXcmFwICYmIGNvbnRhaW5zTGluZUJyZWFrKHNldEZpZWxkVmFsdWUoZmllbGQpKVwiXG4gICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLWluZm9cbj48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvVGFnIGxldC1maWVsZD5cbiAgPHBvLXRhZ1xuICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCJcbiAgICBbcC1jb2xvcl09XCJmaWVsZC5jb2xvclwiXG4gICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgW3AtdGV4dC1jb2xvcl09XCJmaWVsZC50ZXh0Q29sb3JcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLXRhZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbWFnZSBsZXQtZmllbGQ+XG4gIDxwby1pbWFnZSBbcC1hbHRdPVwiZmllbGQuYWx0XCIgW3AtaGVpZ2h0XT1cImZpZWxkLmhlaWdodFwiIFtwLXNyY109XCJmaWVsZC52YWx1ZVwiPiA8L3BvLWltYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUs1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNMNUUsd0JBS2dCOzs7SUFObEIsOEJBQW9GO0lBQ2xGLCtGQUtDO0lBQ0gsaUJBQU07Ozs7O0lBUGMsa0RBQWtDO0lBRWpELGNBRVE7SUFBQSxBQUZSLDhGQUVRLDZIQUViOzs7SUFLSSxpQ0FBb0c7OztJQUF4QywwQ0FBeUI7OztJQUNyRix3QkFNZTs7O0lBTmYsQUFEQSxpSEFBc0Ysd0dBTXJGOzs7Ozs7O0lBTlksMEdBQTRCO0lBRXRDLGNBRVU7SUFBQSxBQUZWLHlIQUVVLGlFQUVqQjs7O0lBUEUscUdBQWdEOzs7SUFBbkIsbUNBQWtCOzs7SUFhL0MsMkNBQXlGOzs7OztJQUEvQyxBQUFwQixvQ0FBbUIsMkJBQXdCOzs7SUFJakUsOEJBT0Q7Ozs7SUFMRyxpSEFBK0U7SUFFL0UsQUFEQSxBQUZBLDRDQUEwQiw0QkFFSCw0Q0FDUzs7O0lBTWxDLDZCQVFTOzs7O0lBRlAsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDRDQUEwQiw0QkFDSCwwQkFDRiw0QkFDRSxxQ0FDUyw0Q0FDQTs7O0lBTWxDLCtCQUEwRjs7O0lBQWxDLEFBQTFCLEFBQXBC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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb1RpbWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvcG8tdGltZS9wby10aW1lLnBpcGUnO1xuXG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3RmllbGQgfSBmcm9tICcuLy4uL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1keW5hbWljLXZpZXctYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWR5bmFtaWMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZHluYW1pYy12aWV3LWJhc2ljXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZVwiIHRpdGxlPVwiUE8gRHluYW1pYyBWaWV3IC0gRW1wbG95ZWVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgLSBFbXBsb3llZSBvbiBsb2FkXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1jb250YWluZXJcIiB0aXRsZT1cIlBPIER5bmFtaWMgVmlldyAtIEVtcGxveWVlIG9uIGxvYWRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1keW5hbWljLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGluaXRDaGFuZ2VzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHRpbWVQaXBlOiBQb1RpbWVQaXBlLFxuICAgIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgZHluYW1pY1ZpZXdTZXJ2aWNlOiBQb0R5bmFtaWNWaWV3U2VydmljZSxcbiAgICBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIG11bHRpc2VsZWN0RmlsdGVyU2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBjdXJyZW5jeVBpcGUsXG4gICAgICBkYXRlUGlwZSxcbiAgICAgIGRlY2ltYWxQaXBlLFxuICAgICAgdGltZVBpcGUsXG4gICAgICB0aXRsZUNhc2VQaXBlLFxuICAgICAgZHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgICAgY29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgICAgbXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5sb2FkICYmICF0aGlzLmluaXRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRDaGFuZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoKGNoYW5nZXMuZmllbGRzIHx8IGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5zaG93QWxsVmFsdWUpICYmIHRoaXMuaW5pdENoYW5nZXMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5sb2FkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgIGlmIChmaWVsZC5vcHRpb25zKSB7XG4gICAgICBpZiAoZmllbGQub3B0aW9uc011bHRpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IGZpZWxkLm9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIG9wdGlvbiA9PiBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSAmJiBmaWVsZC52YWx1ZS5zb21lKHZhbHVlID0+IHZhbHVlID09PSBvcHRpb24udmFsdWUpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID8gc2VsZWN0ZWRPcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLmxhYmVsKSA6IGZpZWxkLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBmaWVsZC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gZmllbGQudmFsdWUpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5sYWJlbCA6IGZpZWxkLnZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmICdib29sZWFuVHJ1ZScgaW4gZmllbGQgJiYgJ2Jvb2xlYW5GYWxzZScgaW4gZmllbGQpIHtcbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZSA/IGZpZWxkLmJvb2xlYW5UcnVlIDogZmllbGQuYm9vbGVhbkZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnRhaW5zTGluZUJyZWFrKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRWYWx1ZXNBbmRGaWVsZHNGcm9tTG9hZCgpOiBQcm9taXNlPHsgdmFsdWU/OiBhbnk7IGZpZWxkcz86IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gfT4ge1xuICAgIGxldCB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gYXdhaXQgdGhpcy5keW5hbWljVmlld1NlcnZpY2Uub25Mb2FkKHRoaXMubG9hZCwgdGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5sb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gdGhpcy5sb2FkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQW5kRmllbGRzRnJvbUxvYWQgfHwge307XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0FsbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXJnZWRGaWVsZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLmZpZWxkcy5sZW5ndGggPyB0aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKSA6IHRoaXMuZ2V0VmFsdWVGaWVsZHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmaWVsZE9uTG9hZC5wcm9wZXJ0eSk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5maWVsZHNbaW5kZXhdID0geyAuLi50aGlzLmZpZWxkc1tpbmRleF0sIC4uLmZpZWxkT25Mb2FkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzLnB1c2goeyAuLi5maWVsZE9uTG9hZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkc09uTG9hZChmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMuZm9yRWFjaChmaWVsZE9uTG9hZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZU9uTG9hZChuZXdWYWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWVzQW5kRmllbGRzRnJvbUxvYWQoKTtcblxuICAgIHRoaXMuc2V0VmFsdWVPbkxvYWQodmFsdWUpO1xuICAgIHRoaXMuc2V0RmllbGRzT25Mb2FkKGZpZWxkcyk7XG5cbiAgICB0aGlzLnZpc2libGVGaWVsZHMgPSB0aGlzLmdldFZpc2libGVGaWVsZHMoKTtcbiAgICB0aGlzLmluaXRDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJvd1wiIFtjbGFzcy5wby1keW5hbWljXT1cImhhc0NvbnRhaW5lcnNcIiAqbmdJZj1cInZpc2libGVGaWVsZHMubGVuZ3RoXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgaGFzQ29udGFpbmVycyA/IHBvQ29udGVudENvbnRhaW5lciA6IHBvQ29udGVudDtcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBoYXNDb250YWluZXJzID8gY29udGFpbmVyRmllbGRzIDogdmlzaWJsZUZpZWxkcyB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50IGxldC1maWVsZHM+XG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmllbGQgW25nRm9yT2ZdPVwiZmllbGRzXCI+XG4gICAgPHBvLWRpdmlkZXIgKm5nSWY9XCJmaWVsZD8uZGl2aWRlcj8udHJpbSgpXCIgY2xhc3M9XCJwby1zbS0xMlwiIFtwLWxhYmVsXT1cImZpZWxkLmRpdmlkZXJcIj4gPC9wby1kaXZpZGVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICFmaWVsZC50YWcgJiYgIWZpZWxkLmltYWdlID8gcG9JbmZvIDogIWZpZWxkLmltYWdlID8gcG9UYWcgOiBwb0ltYWdlO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmllbGQgfVxuICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvQ29udGVudENvbnRhaW5lciBsZXQtZmllbGRzPlxuICA8cG8tZHluYW1pYy1jb250YWluZXIgW3AtZmllbGRzXT1cImZpZWxkc1wiIFtwLWNvbnRlbnRdPVwicG9Db250ZW50XCI+PC9wby1keW5hbWljLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbmZvIGxldC1maWVsZD5cbiAgPHBvLWluZm9cbiAgICBbbmdDbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiXG4gICAgW2NsYXNzLnBvLWluZm8tdmFsdWUtcHJlXT1cInRleHRXcmFwICYmIGNvbnRhaW5zTGluZUJyZWFrKHNldEZpZWxkVmFsdWUoZmllbGQpKVwiXG4gICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLWluZm9cbj48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvVGFnIGxldC1maWVsZD5cbiAgPHBvLXRhZ1xuICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCJcbiAgICBbcC1jb2xvcl09XCJmaWVsZC5jb2xvclwiXG4gICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgW3AtdGV4dC1jb2xvcl09XCJmaWVsZC50ZXh0Q29sb3JcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLXRhZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbWFnZSBsZXQtZmllbGQ+XG4gIDxwby1pbWFnZSBbcC1hbHRdPVwiZmllbGQuYWx0XCIgW3AtaGVpZ2h0XT1cImZpZWxkLmhlaWdodFwiIFtwLXNyY109XCJmaWVsZC52YWx1ZVwiPiA8L3BvLWltYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -146,7 +146,7 @@ export class PoComboBaseComponent {
|
|
|
146
146
|
*
|
|
147
147
|
* Define o ícone que será exibido no início do campo.
|
|
148
148
|
*
|
|
149
|
-
* É possível usar qualquer um dos ícones da [Biblioteca de ícones](/
|
|
149
|
+
* É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:
|
|
150
150
|
* ```
|
|
151
151
|
* <po-combo p-icon="ph ph-user" p-label="PO combo"></po-combo>
|
|
152
152
|
* ```
|
|
@@ -1081,4 +1081,4 @@ export class PoComboBaseComponent {
|
|
|
1081
1081
|
type: Input,
|
|
1082
1082
|
args: [{ alias: 'p-append-in-body', transform: convertToBoolean }]
|
|
1083
1083
|
}] }); })();
|
|
1084
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFvRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBSTFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFJaEUsTUFBTSw4QkFBOEIsR0FBRyxHQUFHLENBQUM7QUFDM0MsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUFDN0MsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFtbEI1QjtJQWxsQlo7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGLDJCQUEyQjtJQUNULEtBQUssQ0FBVTtJQUVqQyxtQ0FBbUM7SUFDbEIsSUFBSSxDQUFVO0lBRS9CLDBCQUEwQjtJQUNYLElBQUksQ0FBUztJQUU1Qjs7Ozs7Ozs7Ozs7Ozs7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QWNXLFNBQVM7a0JBQTNFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgdmFsaWRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgcG9Db21ib0xpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy1kZWZhdWx0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyTW9kZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IFBPX0NPTUJPX0RFQk9VTkNFX1RJTUVfREVGQVVMVCA9IDQwMDtcbmNvbnN0IFBPX0NPTUJPX0ZJRUxEX0xBQkVMX0RFRkFVTFQgPSAnbGFiZWwnO1xuY29uc3QgUE9fQ09NQk9fRklFTERfVkFMVUVfREVGQVVMVCA9ICd2YWx1ZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tY29tYm9gIGV4aWJlIHVtYSBsaXN0YSBkZSBvcMOnw7VlcyBjb20gZsOhY2lsIHNlbGXDp8OjbyBlIGZpbHRyYWdlbS5cbiAqXG4gKiBBbMOpbSBkYSBleGliacOnw6NvIHBhZHLDo28sIG5lbGUgw6kgcG9zc8OtdmVsIGxpc3RhciBhcyBvcMO1ZXMgZW0gYWdydXBhbWVudG9zLlxuICpcbiAqIMOJIHBvc3PDrXZlbCBzZWxlY2lvbmFyIGUgbmF2ZWdhciBlbnRyZSBhcyBvcMOnw7VlcyBkYSBsaXN0YSB0YW50byBhdHJhdsOpcyBkbyAqbW91c2UqIHF1YW50byBkbyB0ZWNsYWRvLiBObyB0ZWNsYWRvIG5hdmVndWUgY29tXG4gKiBhcyBzZXRhcyBlIHByZXNzaW9uZSAqRW50ZXIqIG5hIG9ww6fDo28gcXVlIGRlc2VqYXIuXG4gKlxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cbiAqXG4gKiBFbSBgcC1maWx0ZXItbW9kZWAsIG8gZmlsdHJvIHBvZGVyw6Egc2VyIGNvbmZpZ3VyYWRvIHBhcmEgYnVzY2FyIG9ww7VlcyBxdWUgY29ycmVzcG9uZGFtIGFvIGluw61jaW8sIGZpbSBvdSBxdWUgY29udGVuaGEgbyB2YWxvciBkaWdpdGFkby5cbiAqXG4gKiBPIGBwby1jb21ib2AgZ3VhcmRhIG8gw7psdGltbyB2YWxvciBjYXNvIG8gdXN1w6FyaW8gZGVzaXN0YSBkZSB1bWEgYnVzY2EsIGRlaXhhbmRvIG8gY2FtcG8gb3UgcHJlc3Npb25hbmRvICpFc2MqLiBDYXNvIHNlamEgZGlnaXRhZG8gbm9cbiAqIGNhbXBvIGRlIGJ1c2NhIGEgZGVzY3Jpw6fDo28gY29tcGxldGEgZGUgdW0gaXRlbSwgZW50w6NvIGEgc2VsZcOnw6NvIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBlZmV0dWFkYSBhbyBkZWl4YXIgbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVudGVyKi5cbiAqXG4gKiBVdGlsaXphbmRvIHBvLWNvbWJvIGNvbSBzZXJ2acOnbywgw6kgcG9zc2l2ZWwgZGlnaXRhciB1bSB2YWxvciBubyBjYW1wbyBkZSBlbnRyYWRhIGUgcHJlc3Npb25hciBhIHRlY2xhICd0YWInIHBhcmEgcXVlIG8gY29tcG9uZW50ZVxuICogZmHDp2EgdW1hIHJlcXVpc2nDp8OjbyDDoCBVUkwgaW5mb3JtYWRhIHBhc3NhbmRvIG8gdmFsb3IgZGlnaXRhZG8gbm8gY2FtcG8uIFNlIGVuY29udHJhZG8gbyB2YWxvciwgZW50w6NvIG8gbWVzbW8gc2Vyw6Egc2VsZWNpb25hZG8sIGNhc29cbiAqIG7Do28gc2VqYSBlbmNvbnRyYWRvLCBlbnTDo28gYSBsaXN0YSBkZSBpdGVucyB2b2x0YXLDoSBwYXJhIG8gZXN0YWRvIGluaWNpYWwuXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOlxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtZmFtaWx5YCAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFtw61saWEgdGlwb2dyw6FmaWNhIHVzYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LWZhbWlseS10aGVtZSlgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTkwKWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvci1wbGFjZWhvbGRlcmAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gbm8gcGxhY2Vob2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgZG8gQ29tYm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wNSlgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYm9yZGVyLXJhZGl1c2AgICAgICAgICAgICAgICAgICAgICAgfCBDb250w6ltIG8gdmFsb3IgZG8gcmFpbyBkb3MgY2FudG9zIGRvIGVsZW1lbnRvJm5ic3A7ICAgfCBgdmFyKC0tYm9yZGVyLXdpZHRoLWxnKWAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tbWluLXdpZHRoYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYXJndXJhIG3DrW5pbWEgZG8gY29tYm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMTUwcHhgXG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24taG92ZXIpYCAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWhvdmVyYCAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWxpZ2h0ZXN0KWAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRXJyb3IqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZXJyb3JgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZSBlcnJvICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1mZWVkYmFjay1uZWdhdGl2ZS1iYXNlKWAgICAgICAgICAgICAgfFxuICogfCAqKkRpc2FibGVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1kaXNhYmxlZGAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKlN1Z2dlc3Rpb24qKiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3Itc3VnZ2VzdGlvbmAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBzdWdnZXN0aW9uICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1taWQtNjApYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1zdWdnZXN0aW9uYCAgICAgICAgICAgICAgfCBDb3IgZG8gYmFja2dyb3VuZCBubyBlc3RhZG8gc3VnZ2VzdGlvbiAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVzdClgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1mb2N1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTGFiZWwgbm8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZVxuICAgKiBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgZW50w6NvIHBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIFBvQ29tYm9GaWx0ZXIuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gQVBJIFRPVFZTIGUgdXRpbGl6YSBhcyBwcm9wcmllZGFkZXNcbiAgICogYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIHVybCArID9maWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkYSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBhIG1lc21hIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZGEuIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8gYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBvIGNvbWJvLCBBbyBjaGVnYXIgYW8gZmltIGRhIHRhYmVsYSBleGVjdXRhcsOhIG5vdmEgYnVzY2EgZG9zIGRhZG9zIGNvbmZvcm1lIHBhZ2luYcOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgc2V0IGluZmluaXRlU2Nyb2xsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGwgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbmZpbml0ZVNjcm9sbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdGVTY3JvbGw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBwZXJjZW50dWFsIG5lY2Vzc8OhcmlvIHBhcmEgZGlzcGFyYXIgbyBldmVudG8gYHNob3ctbW9yZWAsIHF1ZSDDqSByZXNwb25zw6F2ZWwgcG9yIGNhcnJlZ2FyIG1haXMgZGFkb3Mgbm8gY29tYm8uIENhc28gbyB2YWxvciBzZWphIG1haW9yIHF1ZSAxMDAgb3UgbWVub3IgcXVlIDAsIG8gdmFsb3IgcGFkcsOjbyBzZXLDoSAxMDAlLlxuICAgKlxuICAgKiAqKkV4ZW1wbG9zKipcbiAgICogLSBwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZSA9IDgwOiBRdWFuZG8gYXRpbmdpciA4MCUgZG8gc2Nyb2xsIGRvIGNvbWJvLCBvIGBzaG93LW1vcmVgIHNlcsOhIGRpc3BhcmFkby5cbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UnKSBzZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZSA9IHZhbHVlID4gMTAwIHx8IHZhbHVlIDwgMCA/IDEwMCA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyDDrWNvbmUgcXVlIHNlcsOhIGV4aWJpZG8gbm8gaW7DrWNpbyBkbyBjYW1wby5cbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIHVzYXIgcXVhbHF1ZXIgdW0gZG9zIMOtY29uZXMgZGEgW0JpYmxpb3RlY2EgZGUgw61jb25lc10oL2d1aWRlcy9pY29ucykuIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIHAtaWNvbj1cInBoIHBoLXVzZXJcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICogVGFtYsOpbSDDqSBwb3Nzw612ZWwgdXRpbGl6YXIgb3V0cmFzIGZvbnRlcyBkZSDDrWNvbmVzLCBwb3IgZXhlbXBsbyBhIGJpYmxpb3RlY2EgKkZvbnQgQXdlc29tZSosIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIHAtaWNvbj1cImZhIGZhLXBvZGNhc3RcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICogT3V0cmEgb3DDp8OjbyBzZXJpYSBhIGN1c3RvbWl6YcOnw6NvIGRvIMOtY29uZSBhdHJhdsOpcyBkbyBgVGVtcGxhdGVSZWZgLCBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBbcC1pY29uXT1cInRlbXBsYXRlXCIgcC1sYWJlbD1cImNvbWJvIHRlbXBsYXRlIGlvbmljXCI+PC9wby1jb21ibz5cbiAgICpcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICogIDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogaW5oZXJpdFwiIG5hbWU9XCJoZWFydFwiPjwvaW9uLWljb24+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKiA+IFBhcmEgbyDDrWNvbmUgZW5xdWFkcmFyIGNvcnJldGFtZW50ZSwgZGV2ZS1zZSB1dGlsaXphciBgZm9udC1zaXplOiBpbmhlcml0YCBjYXNvIG8gw61jb25lIHV0aWxpemFkbyBuw6NvIGFwbGlxdWUtby5cbiAgICovXG4gIEBJbnB1dCgncC1pY29uJykgaWNvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIG8gY2FtcG8gcmVjZWJlcsOhIHVtIGJvdMOjbyBwYXJhIHNlciBsaW1wby4gKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNsZWFuJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCBvIGV2ZW50byBgcC1jaGFuZ2VgIHJlY2ViZXLDoSBjb21vIGFyZ3VtZW50byBvIGBQb0NvbWJvT3B0aW9uYCByZWZlcmVudGUgw6Agb3DDp8OjbyBzZWxlY2lvbmFkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWVtaXQtb2JqZWN0LXZhbHVlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGVtaXRPYmplY3RWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGRlc2FiaWxpdGFyw6EgYSBidXNjYSBkZSB1bSBpdGVtIHZpYSBUQUIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1kaXNhYmxlZC10YWItZmlsdGVyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGRpc2FibGVkVGFiRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGZpbHRybyBubyBwcmltZWlybyBjbGlxdWUgc2Vyw6EgcmVtb3ZpZG8uXG4gICAqXG4gICAqID4gQ2FzbyBvIGNvbWJvIHRlbmhhIHVtIHZhbG9yIHBhZHLDo28gZGUgaW5pY2lhbGl6YcOnw6NvLCBvIHByaW1laXJvIGNsaXF1ZVxuICAgKiBubyBjb21wb25lbnRlIHJldG9ybmFyw6EgdG9kb3Mgb3MgaXRlbnMgZGEgbGlzdGEgZSBuw6NvIGFwZW5hcyBvIGl0ZW0gaW5pY2lhbGlhemFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlbW92ZS1pbml0aWFsLWZpbHRlcicpIHJlbW92ZUluaXRpYWxGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIG1lbnNhZ2VtIHNldGFkYSBzZSBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8gZSBmb3IgcmVxdWVyaWRvLlxuICAgKlxuICAgKiA+IE5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1lcnJvci1tZXNzYWdlJykgZmllbGRFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXZlIHNlciBpbmZvcm1hZGEgdW1hIGZ1bsOnw6NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBhbHRlcmHDp8O1ZXMgbm8gbmdNb2RlbC4gQSBmdW7Dp8OjbyByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBtb2RlbCBtb2RpZmljYWRvLlxuICAgKlxuICAgKiA+IFBvZGUtc2Ugb3B0YXIgcGVsbyByZWNlYmltZW50byBkbyBvYmpldG8gc2VsZWNpb25hZG8gYW8gaW52w6lzIGRvIG1vZGVsIGF0cmF2w6lzIGRhIHByb3ByaWVkYWRlIGBwLWVtaXQtb2JqZWN0LXZhbHVlYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHBhcmEgYXR1YWxpemFyIG8gbmdNb2RlbCBkbyBjb21wb25lbnRlLCBuZWNlc3PDoXJpbyBxdWFuZG8gbsOjbyBmb3IgdXRpbGl6YWRvIGRlbnRybyBkYSB0YWcgZm9ybS5cbiAgICpcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxuICAgKiB0d28td2F5IGJpbmRpbmcgbm8gY29tcG9uZW50ZSBkZXZlIHNlIHV0aWxpemFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIC4uLiBbbmdNb2RlbF09XCJjb21ib01vZGVsXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29tYm9Nb2RlbCA9ICRldmVudFwiPiA8L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICpcbiAgICovXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERldmUgc2VyIGluZm9ybWFkYSB1bWEgZnVuw6fDo28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gaG91dmVyIGFsdGVyYcOnw7VlcyBubyBTZWFyY2ggaW5wdXQuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gaW5wdXQgbW9kaWZpY2Fkby5cbiAgICpcbiAgICovXG4gIEBPdXRwdXQoJ3AtaW5wdXQtY2hhbmdlJykgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY2FjaGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcbiAgZmlyc3RJbldyaXRlVmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAga2V5dXBTdWJzY3JpYmU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogYW55O1xuICBwcmV2aW91c1NlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBzZWxlY3RlZFZpZXc6IGFueTtcbiAgc2VydmljZTogUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gIHZpc2libGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkeW5hbWljTGFiZWw6IHN0cmluZyA9ICdsYWJlbCc7XG4gIGR5bmFtaWNWYWx1ZTogc3RyaW5nID0gJ3ZhbHVlJztcbiAgc2hvdWxkQXBwbHlGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoYXNWYWxpZGF0b3JSZXF1aXJlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY2FjaGVTdGF0aWNPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBjb21ib09wdGlvbnNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIF9jaGFuZ2VPbkVudGVyPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWU/OiBudW1iZXIgPSA0MDA7XG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZEluaXRGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw/OiBzdHJpbmcgPSAnbGFiZWwnO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgcHJpdmF0ZSBfZmlsdGVyTWlubGVuZ3RoPzogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfZmlsdGVyTW9kZT86IFBvQ29tYm9GaWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zPzogYW55O1xuICBwcml2YXRlIF9saXRlcmFscz86IFBvQ29tYm9MaXRlcmFscztcbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbERpc3RhbmNlPzogbnVtYmVyID0gMTAwO1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyB1dGlsaXphZG8gcGFyYSBmYXplciBvIGNvbnRyb2xlIGRlIGF0dWFsaXphciBvIG1vZGVsLlxuICAvLyBuw6NvIGRldmUgZm9yw6dhciBhIGF0dWFsaXphw6fDo28gc2UgbyBnYXRpbGhvIGZvciBvIHdyaXRlVmFsdWUgcGFyYSBuw6NvIGRlaXhhciBvIGNhbXBvIGRpcnR5LlxuICBwcml2YXRlIGZyb21Xcml0ZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICAvKiogTWVuc2FnZW0gYXByZXNlbnRhZGEgZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgdGhpcy5saXRlcmFscy5jaG9vc2VPcHRpb247XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgZW0gcXVhbnRvIHRlbXBvIChlbSBtaWxpc3NlZ3VuZG9zKSwgYWd1YXJkYSBwYXJhIGFjaW9uYXIgbyBldmVudG8gZGUgZmlsdHJvIGFww7NzIGNhZGEgcHJlc3Npb25hbWVudG8gZGUgdGVjbGEuXG4gICAqIFNlcsOhIHV0aWxpemFkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDQwMGBcbiAgICovXG4gIEBJbnB1dCgncC1kZWJvdW5jZS10aW1lJykgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG5cbiAgICB0aGlzLl9kZWJvdW5jZVRpbWUgPSAhaXNOYU4ocGFyc2VkVmFsdWUpICYmIHBhcnNlZFZhbHVlID4gMCA/IHBhcnNlZFZhbHVlIDogUE9fQ09NQk9fREVCT1VOQ0VfVElNRV9ERUZBVUxUO1xuICB9XG5cbiAgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kZWJvdW5jZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXNhYmlsaXRhIG8gZmlsdHJvIGluaWNpYWwgbm8gc2VydmnDp28sIHF1ZSDDqSBleGVjdXRhZG8gbm8gcHJpbWVpcm8gY2xpcXVlIG5vIGNhbXBvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQtaW5pdC1maWx0ZXInKSBzZXQgZGlzYWJsZWRJbml0RmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWRJbml0RmlsdGVyID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWRJbml0RmlsdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEluaXRGaWx0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIFBvQ29tYm9PcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB2YWx1ZWBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIHNldCBmaWVsZFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSAmJiAhdGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUO1xuXG4gICAgaWYgKGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxuICAgKiBQb0NvbWJvT3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbGFiZWxgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5keW5hbWljTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZhbG9yIG3DrW5pbW8gZGUgY2FyYWN0ZXJlcyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIG5vIHNlcnZpw6dvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbWlubGVuZ3RoJykgc2V0IGZpbHRlck1pbmxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG5cbiAgICB0aGlzLl9maWx0ZXJNaW5sZW5ndGggPSBOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlVmFsdWUpID8gcGFyc2VWYWx1ZSA6IDA7XG4gIH1cblxuICBnZXQgZmlsdGVyTWlubGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNaW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5kaWNhIHF1ZSBvIGV2ZW50byBgcC1jaGFuZ2VgIHPDsyBzZXLDoSBkaXNwYXJhZG8gYW8gY2xpY2FyIG91IHByZXNzaW9uYXIgYSB0ZWNsYSBcIkVudGVyXCIgc29icmUgdW1hIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jaGFuZ2Utb24tZW50ZXInKSBzZXQgY2hhbmdlT25FbnRlcihjaGFuZ2VPbkVudGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2hhbmdlT25FbnRlciA9IGNvbnZlcnRUb0Jvb2xlYW4oY2hhbmdlT25FbnRlcik7XG4gIH1cblxuICBnZXQgY2hhbmdlT25FbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlT25FbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxhIGRlc2NyacOnw6NvLiAqL1xuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zb3J0ID0gY29udmVydFRvQm9vbGVhbihzb3J0KTtcbiAgICB0aGlzLmNvbWJvTGlzdERlZmluaXRpb25zKCk7XG4gIH1cblxuICBnZXQgc29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBkbyBgcG8tY29tYm9gLlxuICAgKlxuICAgKiA+IEEgbGlzdGEgcG9kZSBzZXIgZGVmaW5pZGEgdXRpbGl6YW5kbyB1bSBhcnJheSBjb20gbyB2YWxvciByZXByZXNlbnRhbmRvIG8gYHZhbHVlYCBlIG8gYGxhYmVsYCBkYXMgc2VndWludGVzIGZvcm1hczpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBuYW1lPVwiY29tYm9cIiBwLWxhYmVsPVwiUE8gQ29tYm9cIiBbcC1vcHRpb25zXT1cIlt7dmFsdWU6IDEsIGxhYmVsOiAnT25lJ30sIHt2YWx1ZTogMiwgbGFiZWw6ICd0d28nfV1cIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gbmFtZT1cImNvbWJvXCIgcC1sYWJlbD1cIlBPIENvbWJvXCIgW3Atb3B0aW9uc109XCJbe25hbWU6ICdSb2dlcicsIGFnZTogMjh9LCB7bmFtZTogJ0FubmUnLCBhZ2U6IDM1fV1cIiBwLWZpZWxkLWxhYmVsPVwibmFtZVwiIHAtZmllbGQtdmFsdWU9XCJhZ2VcIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gQWNvbnNlbGhhLXNlIHV0aWxpemFyIHZhbG9yZXMgZGlzdGludG9zIG5vIGBsYWJlbGAgZSBgdmFsdWVgIGRvcyBpdGVucy5cbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBbXTtcblxuICAgIHRoaXMuY29tYm9MaXN0RGVmaW5pdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvT3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIG1vZG8gZGUgcGVzcXVpc2EgdXRpbGl6YWRvIG5vIGZpbHRybyBkYSBsaXN0YSBkZSBzZWxlw6fDo286IGBzdGFydHNXaXRoYCwgYGNvbnRhaW5zYCBvdSBgZW5kc1dpdGhgLlxuICAgKlxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1zZXJ2aWNlYCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIHNldCBmaWx0ZXJNb2RlKGZpbHRlck1vZGU6IFBvQ29tYm9GaWx0ZXJNb2RlKSB7XG4gICAgdGhpcy5fZmlsdGVyTW9kZSA9IGZpbHRlck1vZGUgaW4gUG9Db21ib0ZpbHRlck1vZGUgPyBmaWx0ZXJNb2RlIDogUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgICBzd2l0Y2ggKHRoaXMuX2ZpbHRlck1vZGUudG9TdHJpbmcoKSkge1xuICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyTW9kZSgpOiBQb0NvbWJvRmlsdGVyTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlck1vZGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgKlBvQ29tYm9GaWx0ZXIqLlxuICAgKlxuICAgKiA+IENhc28gYSBsaXN0YSBjb250ZW5oYSBhZ3J1cGFtZW50b3MsIG9zIG1lc21vcyBzw7Mgc2Vyw6NvIGV4aWJpZG9zIHNlIGhvdXZlciBubyBtw61uaW1vIHVtYSBvcMOnw6NvIHF1ZSBjb3JyZXNwb25kYSDDoCBwZXNxdWlzYS5cbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgc2V0IGZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xuICAgIHRoaXMuX2ZpbHRlclBhcmFtcyA9IGZpbHRlclBhcmFtcyB8fCBmaWx0ZXJQYXJhbXMgPT09IDAgfHwgZmlsdGVyUGFyYW1zID09PSBmYWxzZSA/IGZpbHRlclBhcmFtcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBmaWx0ZXJQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1jb21ib2AuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6YXIgYmFzdGEgcGFzc2FyIGEgbGl0ZXJhbCBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvQ29tYm9MaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIHZhbG9yJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhIGxpdGVyYWwgY3VzdG9taXphZGEsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm9cbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvQ29tYm9MaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9Db21ib0xpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9Db21ib0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBvIGNvbXBvbmVudGUgaXLDoSBndWFyZGFyIG8gdmFsb3IgZG8gbW9kZWwgcGFyYSBldml0YXIgcmVxdWlzacOnw7VlcyByZXBldGlkYXMuXG4gICAqXG4gICAqID4gQ2FzbyBvIHZhbG9yIHNlamEgYGZhbHNlYCwgbyBjb21wb25lbnRlIGZhcsOhIHVtYSBub3ZhIHJlcXVpc2nDp8OjbyBtZXNtbyBxdWUgbyB2YWxvciBwcm9jdXJhZG8gc2VqYSBvIG1lc21vIGRvIG1vZGVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1jYWNoZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBjYWNoZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGRyb3Bkb3duIGRvIGNvbWJvIHNlcsOhIGluY2x1aWRvIG5vIGJvZHkgZGEgcMOhZ2luYSBlIG7Do28gc3VzcGVuc28gY29tIGEgY2FpeGEgZGUgdGV4dG8gZG8gY29tcG9uZW50ZS5cbiAgICogT3DDp8OjbyBuZWNlc3PDoXJpYSBwYXJhIG8gY2FzbyBkZSB1c28gZG8gY29tcG9uZW50ZSBlbSBww6FnaW5hcyBxdWUgbmVjZXNzaXRhbSByZW5kZXJpemFyIG8gY29tYm8gZm9yYSBkbyBjb250ZcO6ZG8gcHJpbmNpcGFsLlxuICAgKlxuICAgKiA+IE9iczogTyB1c28gZGVzc2EgcHJvcHJpZWRhZGUgcG9kZSBhY2FycmV0YXIgbmEgcGVyZGEgc2VxdWVuY2lhbCBkYSB0YWJ1bGHDp8OjbyBkYSBww6FnaW5hXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hcHBlbmQtaW4tYm9keScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhcHBlbmRCb3g/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IGlzT3B0aW9uR3JvdXBMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9vcHRpb25zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHRoaXMuY2hlY2tJZlNlcnZpY2UoJ3ZhbHVlJyk7XG4gICAgdGhpcy5keW5hbWljTGFiZWwgPSB0aGlzLmNoZWNrSWZTZXJ2aWNlKCdsYWJlbCcpO1xuXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgfVxuXG4gIG9uSW5pdFNlcnZpY2UoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgICB0aGlzLmluaXRJbnB1dE9ic2VydmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBzZXRTZXJ2aWNlKHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoc2VydmljZSkge1xuICAgICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Db21ib0ZpbHRlclNlcnZpY2U+c2VydmljZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZGVmYXVsdFNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKDxzdHJpbmc+c2VydmljZSwgdGhpcy5maWVsZExhYmVsLCB0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbXBhcmVNZXRob2Qoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWlucyhzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5lbmRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBhbnkpIHtcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgY29udGFpbnMoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICB9XG5cbiAgZW5kc1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvbnMgPyBvcHRpb25zLmZpbmQoKG9wdGlvbjogYW55KSA9PiB0aGlzLmlzRXF1YWwob3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSwgdmFsdWUpKSA6IG51bGw7XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tTGFiZWwobGFiZWw6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZpbmQoXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb246IGFueSwgaXNVcGRhdGVNb2RlbDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBvcHRpb25MYWJlbCA9IChvcHRpb24gJiYgb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkgfHwgJyc7XG5cbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbik7XG5cbiAgICAvLyBhdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHF1YW5kbyBmb3IgY2hhbmdlT25FbnRlciBhcGVuYXMgc2UgZm9yIHBhcmEgYXR1YWxpemFyIG8gbW9kZWwuXG4gICAgaWYgKHRoaXMuY2hhbmdlT25FbnRlciAmJiBpc1VwZGF0ZU1vZGVsKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUob3B0aW9uTGFiZWwpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hhbmdlT25FbnRlcikge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVcGRhdGVNb2RlbCkge1xuICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBvcHRpb24/Llt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHVuZGVmaW5lZCA/IG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxNb2RlbENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gQ2FzbyBvIGNvbXBvbmVudGUgZXN0aXZlciBkZW50cm8gZGUgdW0gZm9ybSwgdGVyw6EgYWNlc3NvIGFvIG3DqXRvZG8gb25Nb2RlbENoYW5nZS5cbiAgICByZXR1cm4gdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKSA6IHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGlzRXF1YWwodmFsdWU6IGFueSwgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkgJiYgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgPT09IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoKHZhbHVlID09PSBudWxsICYmIGlucHV0VmFsdWUgIT09IG51bGwpIHx8ICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDsgLy8gVHJhbnNmb3JtYW5kbyBlbSBzdHJpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUgPT09IGlucHV0VmFsdWU7XG4gIH1cblxuICBzZWFyY2hGb3JMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8YW55PiwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICBpZiAoc2VhcmNoICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld09wdGlvbnM6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgIGxldCBhZGRlZE9wdGlvbnNHcm91cFRpdGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgICBsZXQgb3B0aW9uc0dyb3VwVGl0bGU6IFBvQ29tYm9Hcm91cDtcblxuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICgnb3B0aW9ucycgaW4gb3B0aW9uKSB7XG4gICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAob3B0aW9uc0dyb3VwVGl0bGUgPSBvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgKHRoaXMuY29tcGFyZU1ldGhvZChzZWFyY2gsIG9wdGlvbiwgZmlsdGVyTW9kZSkgfHwgdGhpcy5zZXJ2aWNlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmICFhZGRlZE9wdGlvbnNHcm91cFRpdGxlKSB7XG4gICAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uc0dyb3VwVGl0bGUpO1xuICAgICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IG5ld09wdGlvbnNbdGhpcy5pc09wdGlvbkdyb3VwTGlzdCA/IDEgOiAwXTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KG5ld09wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbWJvTGlzdChvcHRpb25zPzogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IGNvcHlPcHRpb25zID0gb3B0aW9ucyB8fCBbLi4udGhpcy5jb21ib09wdGlvbnNMaXN0XTtcblxuICAgIGxldCBuZXdPcHRpb25zO1xuICAgIGlmICh0aGlzLnJlbW92ZUluaXRpYWxGaWx0ZXIpIHtcbiAgICAgIG5ld09wdGlvbnMgPSBjb3B5T3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3T3B0aW9ucyA9ICFvcHRpb25zICYmICF0aGlzLmluZmluaXRlU2Nyb2xsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSA/IFt7IC4uLnRoaXMuc2VsZWN0ZWRPcHRpb24gfV0gOiBjb3B5T3B0aW9ucztcbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVPcHRpb25zID0gbmV3T3B0aW9ucztcblxuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gY29weU9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBnZXROZXh0T3B0aW9uKHZhbHVlOiBhbnksIG9wdGlvbnM6IEFycmF5PGFueT4sIHJldmVyc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9wdGlvbnNMaXN0ID0gcmV2ZXJzZSA/IG9wdGlvbnMuc2xpY2UoMCkucmV2ZXJzZSgpIDogb3B0aW9ucy5zbGljZSgwKTtcbiAgICBsZXQgb3B0aW9uRm91bmQgPSBudWxsO1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmICFvcHRpb25Gb3VuZCkge1xuICAgICAgICBvcHRpb25Gb3VuZCA9IG9wdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmIGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0VxdWFsKG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0sIHZhbHVlKSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbkZvdW5kO1xuICB9XG5cbiAgZ2V0SW5kZXhTZWxlY3RlZFZpZXcoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLnZpc2libGVPcHRpb25zW2ldLCB0aGlzLnNlbGVjdGVkVmlldykpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29tcGFyZU9iamVjdHMob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xuICB9XG5cbiAgdmVyaWZ5VmFsaWRPcHRpb24oKSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xuXG4gICAgY29uc3Qgb3B0aW9uRm91bmQgPSB0aGlzLmdldE9wdGlvbkZyb21MYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25Gb3VuZCAmJiBvcHRpb25Gb3VuZFt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbkZvdW5kKTtcblxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gb3B0aW9uRm91bmRbdGhpcy5keW5hbWljTGFiZWxdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gIT09IGlucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKTtcblxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlICYmICFvcHRpb25Gb3VuZCkge1xuICAgICAgY29uc3QgaXNJbnB1dFZhbHVlRGlmZlNlbGVjdGVkTGFiZWwgPSAhIShcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSAhPT0gaW5wdXRWYWx1ZVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwsIGlzSW5wdXRWYWx1ZURpZmZTZWxlY3RlZExhYmVsIHx8IHRoaXMuY2hhbmdlT25FbnRlcik7XG5cbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlY2ViZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWxcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mcm9tV3JpdGVWYWx1ZSA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRWYWx1ZSh2YWx1ZSkgJiYgIXRoaXMuc2VydmljZSAmJiB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgJiYgdGhpcy5jb21ib09wdGlvbnNMaXN0Lmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXRPcHRpb25Gcm9tVmFsdWUodmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uKTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gICAgICB0aGlzLnJlbW92ZUluaXRpYWxGaWx0ZXIgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZSBob3V2ZXIgc2VydmnDp28gYnVzY2EgcGVsbyBtb2RlbC5cbiAgICBpZiAodmFsdWUgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeVZhbHVlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgICAgIHRoaXMudXBkYXRlSGFzTmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICghdGhpcy5oYXNWYWxpZGF0b3JSZXF1aXJlZCAmJiB0aGlzLmZpZWxkRXJyb3JNZXNzYWdlICYmIGFic3RyYWN0Q29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcbiAgICAgIHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkIHx8IHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKHZhbHVlKSB7XG4gICAgdGhpcy5jYWxsTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgIHRoaXMuaW5pdElucHV0T2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudXBkYXRlSGFzTmV4dCgpO1xuICAgIGlmICh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ0FmdGVyU2V0RmlsdGVyU2VydmljZShzZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IFtdO1xuICAgICAgdGhpcy51bnN1YnNjcmliZUtleXVwT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5vbkluaXRTZXJ2aWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IHRoaXMuY2FjaGVTdGF0aWNPcHRpb25zO1xuICAgIH1cblxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCkge1xuICAgIGlmICh0aGlzLmtleXVwU3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tYm9MaXN0RGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RpbmdDb21ib09wdGlvbnModGhpcy5vcHRpb25zKSA6IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLmNhY2hlU3RhdGljT3B0aW9ucyA9IHRoaXMuY29tYm9PcHRpb25zTGlzdDtcblxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZTZXJ2aWNlKGR5bmFtaWNWYWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSAmJiBkeW5hbWljVmFsdWUgPT09ICdsYWJlbCcpIHtcbiAgICAgIHJldHVybiBQT19DT01CT19GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuc2VydmljZSB8fCB0aGlzLmZpbHRlclNlcnZpY2UpICYmIGR5bmFtaWNWYWx1ZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgcmV0dXJuIFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgZHluYW1pY1ZhbHVlID09PSAnbGFiZWwnKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWVsZExhYmVsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZXJ2aWNlICYmIGR5bmFtaWNWYWx1ZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVPcHRpb25zKGR5bmFtaWNMYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25BOiBhbnksIG9wdGlvbkI6IGFueSkge1xuICAgICAgY29uc3QgbGFiZWxBID0gb3B0aW9uQVtkeW5hbWljTGFiZWxdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxhYmVsQiA9IG9wdGlvbkJbZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHJldHVybiBsYWJlbEEgPCBsYWJlbEIgPyAtMSA6IGxhYmVsQSA+IGxhYmVsQiA/IDEgOiAwO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhc0R1cGxpY2F0ZWRPcHRpb24ob3B0aW9uczogQXJyYXk8YW55PiwgY3VycmVudE9wdGlvbjogc3RyaW5nLCBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PGFueT4pIHtcbiAgICBpZiAoYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucy5zb21lKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5keW5hbWljTGFiZWxdID09PSBjdXJyZW50T3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSA9PT0gY3VycmVudE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0aW5nQ29tYm9PcHRpb25zKGNvbWJvT3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IGNvbWJvT3B0aW9uc0xpc3QgPSBjb21ib09wdGlvbnMuY29uY2F0KCk7XG4gICAgY29uc3QgdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0ID0gdGhpcy52ZXJpZnlDb21ib09wdGlvbnMoY29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAodmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9ucyhjb21ib09wdGlvbnNMaXN0OiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKGNvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnNvcnQodGhpcy5jb21wYXJlT3B0aW9ucyh0aGlzLmR5bmFtaWNMYWJlbCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVWYWx1ZShjdXJyZW50T3B0aW9uOiBhbnksIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgeyBvcHRpb25zIH0gPSBjdXJyZW50T3B0aW9uO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICh2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgKHZlcmlmeWluZ09wdGlvbnNHcm91cCA9PT0gdHJ1ZSAmJiB2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkVmFsdWUoY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0pICYmICFvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDb21ib09wdGlvbnMoXG4gICAgY29tYm9PcHRpb25zOiBBcnJheTxhbnk+LFxuICAgIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zPzogQXJyYXk8YW55PlxuICApIHtcbiAgICByZXR1cm4gY29tYm9PcHRpb25zLnJlZHVjZSgoYWNjdW11bGF0ZWRPcHRpb25zLCBjdXJyZW50T3B0aW9uKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbikgfHxcbiAgICAgICAgdGhpcy5oYXNEdXBsaWNhdGVkT3B0aW9uKFxuICAgICAgICAgIGFjY3VtdWxhdGVkT3B0aW9ucyxcbiAgICAgICAgICBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSB8fCBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSxcbiAgICAgICAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9uc1xuICAgICAgICApIHx8XG4gICAgICAgICF0aGlzLnZhbGlkYXRlVmFsdWUoY3VycmVudE9wdGlvbiwgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRlZE9wdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIGFjY3VtdWxhdGVkT3B0aW9ucy5wdXNoKGN1cnJlbnRPcHRpb24pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkT3B0aW9ucztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNvbWJvT3B0aW9uc0dyb3VwKGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gY29tYm9PcHRpb25zTGlzdC5yZWR1Y2UoKGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zLCBjdXJyZW50T3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XG4gICAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCA9IHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zKG9wdGlvbnMsIHRydWUsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKTtcblxuICAgICAgaWYgKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyh2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCk7XG5cbiAgICAgICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMucHVzaChcbiAgICAgICAgICB7IGxhYmVsOiBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSwgb3B0aW9uczogdHJ1ZSB9LFxuICAgICAgICAgIC4uLnZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbjogUG9Db21ib0dyb3VwID0ge30pIHtcbiAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiBvcHRpb25zICYmICFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkgfHxcbiAgICAgICghY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgIWN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSB8fFxuICAgICAgKCF0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkge1xuICAgICAgY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gPSBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbjogYW55KSB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBvcHRpb247XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5mcm9tV3JpdGVWYWx1ZSkge1xuICAgICAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5lbWl0T2JqZWN0VmFsdWUgPyB0aGlzLnNlbGVjdGVkT3B0aW9uIDogdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZnJvbVdyaXRlVmFsdWUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKSB7XG4gICAgY29uc3Qgb2xkT3B0aW9uID0gdGhpcy5nZXRPcHRpb25Gcm9tVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuXG4gICAgaWYgKG9sZE9wdGlvbiAmJiBvbGRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9sZE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIYXNOZXh0KCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgdGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5oYXNOZXh0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBzZXRJbnB1dFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGdldE9iamVjdEJ5VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgZ2V0SW5wdXRWYWx1ZSgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaW5pdElucHV0T2JzZXJ2YWJsZSgpOiB2b2lkO1xufVxuIl19
|
|
1084
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFvRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBSTFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFJaEUsTUFBTSw4QkFBOEIsR0FBRyxHQUFHLENBQUM7QUFDM0MsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUFDN0MsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFtbEI1QjtJQWxsQlo7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGLDJCQUEyQjtJQUNULEtBQUssQ0FBVTtJQUVqQyxtQ0FBbUM7SUFDbEIsSUFBSSxDQUFVO0lBRS9CLDBCQUEwQjtJQUNYLElBQUksQ0FBUztJQUU1Qjs7Ozs7Ozs7Ozs7Ozs7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QWNXLFNBQVM7a0JBQTNFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgdmFsaWRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgcG9Db21ib0xpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy1kZWZhdWx0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyTW9kZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IFBPX0NPTUJPX0RFQk9VTkNFX1RJTUVfREVGQVVMVCA9IDQwMDtcbmNvbnN0IFBPX0NPTUJPX0ZJRUxEX0xBQkVMX0RFRkFVTFQgPSAnbGFiZWwnO1xuY29uc3QgUE9fQ09NQk9fRklFTERfVkFMVUVfREVGQVVMVCA9ICd2YWx1ZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tY29tYm9gIGV4aWJlIHVtYSBsaXN0YSBkZSBvcMOnw7VlcyBjb20gZsOhY2lsIHNlbGXDp8OjbyBlIGZpbHRyYWdlbS5cbiAqXG4gKiBBbMOpbSBkYSBleGliacOnw6NvIHBhZHLDo28sIG5lbGUgw6kgcG9zc8OtdmVsIGxpc3RhciBhcyBvcMO1ZXMgZW0gYWdydXBhbWVudG9zLlxuICpcbiAqIMOJIHBvc3PDrXZlbCBzZWxlY2lvbmFyIGUgbmF2ZWdhciBlbnRyZSBhcyBvcMOnw7VlcyBkYSBsaXN0YSB0YW50byBhdHJhdsOpcyBkbyAqbW91c2UqIHF1YW50byBkbyB0ZWNsYWRvLiBObyB0ZWNsYWRvIG5hdmVndWUgY29tXG4gKiBhcyBzZXRhcyBlIHByZXNzaW9uZSAqRW50ZXIqIG5hIG9ww6fDo28gcXVlIGRlc2VqYXIuXG4gKlxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cbiAqXG4gKiBFbSBgcC1maWx0ZXItbW9kZWAsIG8gZmlsdHJvIHBvZGVyw6Egc2VyIGNvbmZpZ3VyYWRvIHBhcmEgYnVzY2FyIG9ww7VlcyBxdWUgY29ycmVzcG9uZGFtIGFvIGluw61jaW8sIGZpbSBvdSBxdWUgY29udGVuaGEgbyB2YWxvciBkaWdpdGFkby5cbiAqXG4gKiBPIGBwby1jb21ib2AgZ3VhcmRhIG8gw7psdGltbyB2YWxvciBjYXNvIG8gdXN1w6FyaW8gZGVzaXN0YSBkZSB1bWEgYnVzY2EsIGRlaXhhbmRvIG8gY2FtcG8gb3UgcHJlc3Npb25hbmRvICpFc2MqLiBDYXNvIHNlamEgZGlnaXRhZG8gbm9cbiAqIGNhbXBvIGRlIGJ1c2NhIGEgZGVzY3Jpw6fDo28gY29tcGxldGEgZGUgdW0gaXRlbSwgZW50w6NvIGEgc2VsZcOnw6NvIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBlZmV0dWFkYSBhbyBkZWl4YXIgbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVudGVyKi5cbiAqXG4gKiBVdGlsaXphbmRvIHBvLWNvbWJvIGNvbSBzZXJ2acOnbywgw6kgcG9zc2l2ZWwgZGlnaXRhciB1bSB2YWxvciBubyBjYW1wbyBkZSBlbnRyYWRhIGUgcHJlc3Npb25hciBhIHRlY2xhICd0YWInIHBhcmEgcXVlIG8gY29tcG9uZW50ZVxuICogZmHDp2EgdW1hIHJlcXVpc2nDp8OjbyDDoCBVUkwgaW5mb3JtYWRhIHBhc3NhbmRvIG8gdmFsb3IgZGlnaXRhZG8gbm8gY2FtcG8uIFNlIGVuY29udHJhZG8gbyB2YWxvciwgZW50w6NvIG8gbWVzbW8gc2Vyw6Egc2VsZWNpb25hZG8sIGNhc29cbiAqIG7Do28gc2VqYSBlbmNvbnRyYWRvLCBlbnTDo28gYSBsaXN0YSBkZSBpdGVucyB2b2x0YXLDoSBwYXJhIG8gZXN0YWRvIGluaWNpYWwuXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOlxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAqKkRlZmF1bHQgVmFsdWVzKiogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtZmFtaWx5YCAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFtw61saWEgdGlwb2dyw6FmaWNhIHVzYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LWZhbWlseS10aGVtZSlgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1mb250LXNpemVgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhbWFuaG8gZGEgZm9udGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtc2l6ZS1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTkwKWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvci1wbGFjZWhvbGRlcmAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gbm8gcGxhY2Vob2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTMwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgZG8gQ29tYm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtZGFyay03MClgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wNSlgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYm9yZGVyLXJhZGl1c2AgICAgICAgICAgICAgICAgICAgICAgfCBDb250w6ltIG8gdmFsb3IgZG8gcmFpbyBkb3MgY2FudG9zIGRvIGVsZW1lbnRvJm5ic3A7ICAgfCBgdmFyKC0tYm9yZGVyLXdpZHRoLWxnKWAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tbWluLXdpZHRoYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYXJndXJhIG3DrW5pbWEgZG8gY29tYm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMTUwcHhgXG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItaG92ZXJgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24taG92ZXIpYCAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLWhvdmVyYCAgICAgICAgICAgICAgICAgICB8IENvciBkZSBiYWNrZ3JvdW5kIG5vIGVzdGFkbyBob3ZlciAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWxpZ2h0ZXN0KWAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRXJyb3IqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZXJyb3JgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZSBlcnJvICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1mZWVkYmFjay1uZWdhdGl2ZS1iYXNlKWAgICAgICAgICAgICAgfFxuICogfCAqKkRpc2FibGVkKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWRpc2FibGVkYCAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0zMClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1kaXNhYmxlZGAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGlzYWJsZWQgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKlN1Z2dlc3Rpb24qKiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3Itc3VnZ2VzdGlvbmAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBzdWdnZXN0aW9uICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1taWQtNjApYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1zdWdnZXN0aW9uYCAgICAgICAgICAgICAgfCBDb3IgZG8gYmFja2dyb3VuZCBubyBlc3RhZG8gc3VnZ2VzdGlvbiAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVzdClgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1mb2N1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTGFiZWwgbm8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZVxuICAgKiBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgZW50w6NvIHBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIFBvQ29tYm9GaWx0ZXIuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gQVBJIFRPVFZTIGUgdXRpbGl6YSBhcyBwcm9wcmllZGFkZXNcbiAgICogYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIHVybCArID9maWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkYSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBhIG1lc21hIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZGEuIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8gYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBvIGNvbWJvLCBBbyBjaGVnYXIgYW8gZmltIGRhIHRhYmVsYSBleGVjdXRhcsOhIG5vdmEgYnVzY2EgZG9zIGRhZG9zIGNvbmZvcm1lIHBhZ2luYcOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgc2V0IGluZmluaXRlU2Nyb2xsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGwgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbmZpbml0ZVNjcm9sbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdGVTY3JvbGw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBwZXJjZW50dWFsIG5lY2Vzc8OhcmlvIHBhcmEgZGlzcGFyYXIgbyBldmVudG8gYHNob3ctbW9yZWAsIHF1ZSDDqSByZXNwb25zw6F2ZWwgcG9yIGNhcnJlZ2FyIG1haXMgZGFkb3Mgbm8gY29tYm8uIENhc28gbyB2YWxvciBzZWphIG1haW9yIHF1ZSAxMDAgb3UgbWVub3IgcXVlIDAsIG8gdmFsb3IgcGFkcsOjbyBzZXLDoSAxMDAlLlxuICAgKlxuICAgKiAqKkV4ZW1wbG9zKipcbiAgICogLSBwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZSA9IDgwOiBRdWFuZG8gYXRpbmdpciA4MCUgZG8gc2Nyb2xsIGRvIGNvbWJvLCBvIGBzaG93LW1vcmVgIHNlcsOhIGRpc3BhcmFkby5cbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UnKSBzZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZSA9IHZhbHVlID4gMTAwIHx8IHZhbHVlIDwgMCA/IDEwMCA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyDDrWNvbmUgcXVlIHNlcsOhIGV4aWJpZG8gbm8gaW7DrWNpbyBkbyBjYW1wby5cbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIHVzYXIgcXVhbHF1ZXIgdW0gZG9zIMOtY29uZXMgZGEgW0JpYmxpb3RlY2EgZGUgw61jb25lc10oaHR0cHM6Ly9wby11aS5pby9pY29ucykuIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIHAtaWNvbj1cInBoIHBoLXVzZXJcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICogVGFtYsOpbSDDqSBwb3Nzw612ZWwgdXRpbGl6YXIgb3V0cmFzIGZvbnRlcyBkZSDDrWNvbmVzLCBwb3IgZXhlbXBsbyBhIGJpYmxpb3RlY2EgKkZvbnQgQXdlc29tZSosIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIHAtaWNvbj1cImZhIGZhLXBvZGNhc3RcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICogT3V0cmEgb3DDp8OjbyBzZXJpYSBhIGN1c3RvbWl6YcOnw6NvIGRvIMOtY29uZSBhdHJhdsOpcyBkbyBgVGVtcGxhdGVSZWZgLCBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBbcC1pY29uXT1cInRlbXBsYXRlXCIgcC1sYWJlbD1cImNvbWJvIHRlbXBsYXRlIGlvbmljXCI+PC9wby1jb21ibz5cbiAgICpcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICogIDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogaW5oZXJpdFwiIG5hbWU9XCJoZWFydFwiPjwvaW9uLWljb24+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKiA+IFBhcmEgbyDDrWNvbmUgZW5xdWFkcmFyIGNvcnJldGFtZW50ZSwgZGV2ZS1zZSB1dGlsaXphciBgZm9udC1zaXplOiBpbmhlcml0YCBjYXNvIG8gw61jb25lIHV0aWxpemFkbyBuw6NvIGFwbGlxdWUtby5cbiAgICovXG4gIEBJbnB1dCgncC1pY29uJykgaWNvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIG8gY2FtcG8gcmVjZWJlcsOhIHVtIGJvdMOjbyBwYXJhIHNlciBsaW1wby4gKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNsZWFuJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCBvIGV2ZW50byBgcC1jaGFuZ2VgIHJlY2ViZXLDoSBjb21vIGFyZ3VtZW50byBvIGBQb0NvbWJvT3B0aW9uYCByZWZlcmVudGUgw6Agb3DDp8OjbyBzZWxlY2lvbmFkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWVtaXQtb2JqZWN0LXZhbHVlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGVtaXRPYmplY3RWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGRlc2FiaWxpdGFyw6EgYSBidXNjYSBkZSB1bSBpdGVtIHZpYSBUQUIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1kaXNhYmxlZC10YWItZmlsdGVyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGRpc2FibGVkVGFiRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGZpbHRybyBubyBwcmltZWlybyBjbGlxdWUgc2Vyw6EgcmVtb3ZpZG8uXG4gICAqXG4gICAqID4gQ2FzbyBvIGNvbWJvIHRlbmhhIHVtIHZhbG9yIHBhZHLDo28gZGUgaW5pY2lhbGl6YcOnw6NvLCBvIHByaW1laXJvIGNsaXF1ZVxuICAgKiBubyBjb21wb25lbnRlIHJldG9ybmFyw6EgdG9kb3Mgb3MgaXRlbnMgZGEgbGlzdGEgZSBuw6NvIGFwZW5hcyBvIGl0ZW0gaW5pY2lhbGlhemFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlbW92ZS1pbml0aWFsLWZpbHRlcicpIHJlbW92ZUluaXRpYWxGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIG1lbnNhZ2VtIHNldGFkYSBzZSBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8gZSBmb3IgcmVxdWVyaWRvLlxuICAgKlxuICAgKiA+IE5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1lcnJvci1tZXNzYWdlJykgZmllbGRFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXZlIHNlciBpbmZvcm1hZGEgdW1hIGZ1bsOnw6NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBhbHRlcmHDp8O1ZXMgbm8gbmdNb2RlbC4gQSBmdW7Dp8OjbyByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBtb2RlbCBtb2RpZmljYWRvLlxuICAgKlxuICAgKiA+IFBvZGUtc2Ugb3B0YXIgcGVsbyByZWNlYmltZW50byBkbyBvYmpldG8gc2VsZWNpb25hZG8gYW8gaW52w6lzIGRvIG1vZGVsIGF0cmF2w6lzIGRhIHByb3ByaWVkYWRlIGBwLWVtaXQtb2JqZWN0LXZhbHVlYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHBhcmEgYXR1YWxpemFyIG8gbmdNb2RlbCBkbyBjb21wb25lbnRlLCBuZWNlc3PDoXJpbyBxdWFuZG8gbsOjbyBmb3IgdXRpbGl6YWRvIGRlbnRybyBkYSB0YWcgZm9ybS5cbiAgICpcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxuICAgKiB0d28td2F5IGJpbmRpbmcgbm8gY29tcG9uZW50ZSBkZXZlIHNlIHV0aWxpemFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLWNvbWJvIC4uLiBbbmdNb2RlbF09XCJjb21ib01vZGVsXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29tYm9Nb2RlbCA9ICRldmVudFwiPiA8L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICpcbiAgICovXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERldmUgc2VyIGluZm9ybWFkYSB1bWEgZnVuw6fDo28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gaG91dmVyIGFsdGVyYcOnw7VlcyBubyBTZWFyY2ggaW5wdXQuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gaW5wdXQgbW9kaWZpY2Fkby5cbiAgICpcbiAgICovXG4gIEBPdXRwdXQoJ3AtaW5wdXQtY2hhbmdlJykgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY2FjaGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcbiAgZmlyc3RJbldyaXRlVmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAga2V5dXBTdWJzY3JpYmU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogYW55O1xuICBwcmV2aW91c1NlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBzZWxlY3RlZFZpZXc6IGFueTtcbiAgc2VydmljZTogUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gIHZpc2libGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkeW5hbWljTGFiZWw6IHN0cmluZyA9ICdsYWJlbCc7XG4gIGR5bmFtaWNWYWx1ZTogc3RyaW5nID0gJ3ZhbHVlJztcbiAgc2hvdWxkQXBwbHlGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoYXNWYWxpZGF0b3JSZXF1aXJlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY2FjaGVTdGF0aWNPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBjb21ib09wdGlvbnNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIF9jaGFuZ2VPbkVudGVyPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWU/OiBudW1iZXIgPSA0MDA7XG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZEluaXRGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw/OiBzdHJpbmcgPSAnbGFiZWwnO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgcHJpdmF0ZSBfZmlsdGVyTWlubGVuZ3RoPzogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfZmlsdGVyTW9kZT86IFBvQ29tYm9GaWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zPzogYW55O1xuICBwcml2YXRlIF9saXRlcmFscz86IFBvQ29tYm9MaXRlcmFscztcbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbERpc3RhbmNlPzogbnVtYmVyID0gMTAwO1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyB1dGlsaXphZG8gcGFyYSBmYXplciBvIGNvbnRyb2xlIGRlIGF0dWFsaXphciBvIG1vZGVsLlxuICAvLyBuw6NvIGRldmUgZm9yw6dhciBhIGF0dWFsaXphw6fDo28gc2UgbyBnYXRpbGhvIGZvciBvIHdyaXRlVmFsdWUgcGFyYSBuw6NvIGRlaXhhciBvIGNhbXBvIGRpcnR5LlxuICBwcml2YXRlIGZyb21Xcml0ZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICAvKiogTWVuc2FnZW0gYXByZXNlbnRhZGEgZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgdGhpcy5saXRlcmFscy5jaG9vc2VPcHRpb247XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgZW0gcXVhbnRvIHRlbXBvIChlbSBtaWxpc3NlZ3VuZG9zKSwgYWd1YXJkYSBwYXJhIGFjaW9uYXIgbyBldmVudG8gZGUgZmlsdHJvIGFww7NzIGNhZGEgcHJlc3Npb25hbWVudG8gZGUgdGVjbGEuXG4gICAqIFNlcsOhIHV0aWxpemFkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDQwMGBcbiAgICovXG4gIEBJbnB1dCgncC1kZWJvdW5jZS10aW1lJykgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCg8YW55PnZhbHVlLCAxMCk7XG5cbiAgICB0aGlzLl9kZWJvdW5jZVRpbWUgPSAhaXNOYU4ocGFyc2VkVmFsdWUpICYmIHBhcnNlZFZhbHVlID4gMCA/IHBhcnNlZFZhbHVlIDogUE9fQ09NQk9fREVCT1VOQ0VfVElNRV9ERUZBVUxUO1xuICB9XG5cbiAgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kZWJvdW5jZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXNhYmlsaXRhIG8gZmlsdHJvIGluaWNpYWwgbm8gc2VydmnDp28sIHF1ZSDDqSBleGVjdXRhZG8gbm8gcHJpbWVpcm8gY2xpcXVlIG5vIGNhbXBvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQtaW5pdC1maWx0ZXInKSBzZXQgZGlzYWJsZWRJbml0RmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWRJbml0RmlsdGVyID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWRJbml0RmlsdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEluaXRGaWx0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIFBvQ29tYm9PcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB2YWx1ZWBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIHNldCBmaWVsZFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSAmJiAhdGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUO1xuXG4gICAgaWYgKGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxuICAgKiBQb0NvbWJvT3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbGFiZWxgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5keW5hbWljTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZhbG9yIG3DrW5pbW8gZGUgY2FyYWN0ZXJlcyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIG5vIHNlcnZpw6dvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbWlubGVuZ3RoJykgc2V0IGZpbHRlck1pbmxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG5cbiAgICB0aGlzLl9maWx0ZXJNaW5sZW5ndGggPSBOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlVmFsdWUpID8gcGFyc2VWYWx1ZSA6IDA7XG4gIH1cblxuICBnZXQgZmlsdGVyTWlubGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNaW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5kaWNhIHF1ZSBvIGV2ZW50byBgcC1jaGFuZ2VgIHPDsyBzZXLDoSBkaXNwYXJhZG8gYW8gY2xpY2FyIG91IHByZXNzaW9uYXIgYSB0ZWNsYSBcIkVudGVyXCIgc29icmUgdW1hIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jaGFuZ2Utb24tZW50ZXInKSBzZXQgY2hhbmdlT25FbnRlcihjaGFuZ2VPbkVudGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2hhbmdlT25FbnRlciA9IGNvbnZlcnRUb0Jvb2xlYW4oY2hhbmdlT25FbnRlcik7XG4gIH1cblxuICBnZXQgY2hhbmdlT25FbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlT25FbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxhIGRlc2NyacOnw6NvLiAqL1xuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zb3J0ID0gY29udmVydFRvQm9vbGVhbihzb3J0KTtcbiAgICB0aGlzLmNvbWJvTGlzdERlZmluaXRpb25zKCk7XG4gIH1cblxuICBnZXQgc29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBkbyBgcG8tY29tYm9gLlxuICAgKlxuICAgKiA+IEEgbGlzdGEgcG9kZSBzZXIgZGVmaW5pZGEgdXRpbGl6YW5kbyB1bSBhcnJheSBjb20gbyB2YWxvciByZXByZXNlbnRhbmRvIG8gYHZhbHVlYCBlIG8gYGxhYmVsYCBkYXMgc2VndWludGVzIGZvcm1hczpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBuYW1lPVwiY29tYm9cIiBwLWxhYmVsPVwiUE8gQ29tYm9cIiBbcC1vcHRpb25zXT1cIlt7dmFsdWU6IDEsIGxhYmVsOiAnT25lJ30sIHt2YWx1ZTogMiwgbGFiZWw6ICd0d28nfV1cIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gbmFtZT1cImNvbWJvXCIgcC1sYWJlbD1cIlBPIENvbWJvXCIgW3Atb3B0aW9uc109XCJbe25hbWU6ICdSb2dlcicsIGFnZTogMjh9LCB7bmFtZTogJ0FubmUnLCBhZ2U6IDM1fV1cIiBwLWZpZWxkLWxhYmVsPVwibmFtZVwiIHAtZmllbGQtdmFsdWU9XCJhZ2VcIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gQWNvbnNlbGhhLXNlIHV0aWxpemFyIHZhbG9yZXMgZGlzdGludG9zIG5vIGBsYWJlbGAgZSBgdmFsdWVgIGRvcyBpdGVucy5cbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBbXTtcblxuICAgIHRoaXMuY29tYm9MaXN0RGVmaW5pdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvT3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIG1vZG8gZGUgcGVzcXVpc2EgdXRpbGl6YWRvIG5vIGZpbHRybyBkYSBsaXN0YSBkZSBzZWxlw6fDo286IGBzdGFydHNXaXRoYCwgYGNvbnRhaW5zYCBvdSBgZW5kc1dpdGhgLlxuICAgKlxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1zZXJ2aWNlYCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIHNldCBmaWx0ZXJNb2RlKGZpbHRlck1vZGU6IFBvQ29tYm9GaWx0ZXJNb2RlKSB7XG4gICAgdGhpcy5fZmlsdGVyTW9kZSA9IGZpbHRlck1vZGUgaW4gUG9Db21ib0ZpbHRlck1vZGUgPyBmaWx0ZXJNb2RlIDogUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgICBzd2l0Y2ggKHRoaXMuX2ZpbHRlck1vZGUudG9TdHJpbmcoKSkge1xuICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyTW9kZSgpOiBQb0NvbWJvRmlsdGVyTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlck1vZGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgKlBvQ29tYm9GaWx0ZXIqLlxuICAgKlxuICAgKiA+IENhc28gYSBsaXN0YSBjb250ZW5oYSBhZ3J1cGFtZW50b3MsIG9zIG1lc21vcyBzw7Mgc2Vyw6NvIGV4aWJpZG9zIHNlIGhvdXZlciBubyBtw61uaW1vIHVtYSBvcMOnw6NvIHF1ZSBjb3JyZXNwb25kYSDDoCBwZXNxdWlzYS5cbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgc2V0IGZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xuICAgIHRoaXMuX2ZpbHRlclBhcmFtcyA9IGZpbHRlclBhcmFtcyB8fCBmaWx0ZXJQYXJhbXMgPT09IDAgfHwgZmlsdGVyUGFyYW1zID09PSBmYWxzZSA/IGZpbHRlclBhcmFtcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBmaWx0ZXJQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1jb21ib2AuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6YXIgYmFzdGEgcGFzc2FyIGEgbGl0ZXJhbCBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvQ29tYm9MaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIHZhbG9yJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhIGxpdGVyYWwgY3VzdG9taXphZGEsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm9cbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLWNvbWJvPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvQ29tYm9MaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9Db21ib0xpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9Db21ib0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBvIGNvbXBvbmVudGUgaXLDoSBndWFyZGFyIG8gdmFsb3IgZG8gbW9kZWwgcGFyYSBldml0YXIgcmVxdWlzacOnw7VlcyByZXBldGlkYXMuXG4gICAqXG4gICAqID4gQ2FzbyBvIHZhbG9yIHNlamEgYGZhbHNlYCwgbyBjb21wb25lbnRlIGZhcsOhIHVtYSBub3ZhIHJlcXVpc2nDp8OjbyBtZXNtbyBxdWUgbyB2YWxvciBwcm9jdXJhZG8gc2VqYSBvIG1lc21vIGRvIG1vZGVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1jYWNoZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBjYWNoZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGRyb3Bkb3duIGRvIGNvbWJvIHNlcsOhIGluY2x1aWRvIG5vIGJvZHkgZGEgcMOhZ2luYSBlIG7Do28gc3VzcGVuc28gY29tIGEgY2FpeGEgZGUgdGV4dG8gZG8gY29tcG9uZW50ZS5cbiAgICogT3DDp8OjbyBuZWNlc3PDoXJpYSBwYXJhIG8gY2FzbyBkZSB1c28gZG8gY29tcG9uZW50ZSBlbSBww6FnaW5hcyBxdWUgbmVjZXNzaXRhbSByZW5kZXJpemFyIG8gY29tYm8gZm9yYSBkbyBjb250ZcO6ZG8gcHJpbmNpcGFsLlxuICAgKlxuICAgKiA+IE9iczogTyB1c28gZGVzc2EgcHJvcHJpZWRhZGUgcG9kZSBhY2FycmV0YXIgbmEgcGVyZGEgc2VxdWVuY2lhbCBkYSB0YWJ1bGHDp8OjbyBkYSBww6FnaW5hXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hcHBlbmQtaW4tYm9keScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhcHBlbmRCb3g/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IGlzT3B0aW9uR3JvdXBMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9vcHRpb25zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHRoaXMuY2hlY2tJZlNlcnZpY2UoJ3ZhbHVlJyk7XG4gICAgdGhpcy5keW5hbWljTGFiZWwgPSB0aGlzLmNoZWNrSWZTZXJ2aWNlKCdsYWJlbCcpO1xuXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgfVxuXG4gIG9uSW5pdFNlcnZpY2UoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgICB0aGlzLmluaXRJbnB1dE9ic2VydmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBzZXRTZXJ2aWNlKHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoc2VydmljZSkge1xuICAgICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Db21ib0ZpbHRlclNlcnZpY2U+c2VydmljZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZGVmYXVsdFNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKDxzdHJpbmc+c2VydmljZSwgdGhpcy5maWVsZExhYmVsLCB0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbXBhcmVNZXRob2Qoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWlucyhzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5lbmRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBhbnkpIHtcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgY29udGFpbnMoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICB9XG5cbiAgZW5kc1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgcmV0dXJuIG9wdGlvbnMgPyBvcHRpb25zLmZpbmQoKG9wdGlvbjogYW55KSA9PiB0aGlzLmlzRXF1YWwob3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSwgdmFsdWUpKSA6IG51bGw7XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tTGFiZWwobGFiZWw6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZpbmQoXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb246IGFueSwgaXNVcGRhdGVNb2RlbDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBvcHRpb25MYWJlbCA9IChvcHRpb24gJiYgb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkgfHwgJyc7XG5cbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbik7XG5cbiAgICAvLyBhdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHF1YW5kbyBmb3IgY2hhbmdlT25FbnRlciBhcGVuYXMgc2UgZm9yIHBhcmEgYXR1YWxpemFyIG8gbW9kZWwuXG4gICAgaWYgKHRoaXMuY2hhbmdlT25FbnRlciAmJiBpc1VwZGF0ZU1vZGVsKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUob3B0aW9uTGFiZWwpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hhbmdlT25FbnRlcikge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVcGRhdGVNb2RlbCkge1xuICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBvcHRpb24/Llt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHVuZGVmaW5lZCA/IG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxNb2RlbENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gQ2FzbyBvIGNvbXBvbmVudGUgZXN0aXZlciBkZW50cm8gZGUgdW0gZm9ybSwgdGVyw6EgYWNlc3NvIGFvIG3DqXRvZG8gb25Nb2RlbENoYW5nZS5cbiAgICByZXR1cm4gdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKSA6IHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGlzRXF1YWwodmFsdWU6IGFueSwgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkgJiYgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgPT09IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoKHZhbHVlID09PSBudWxsICYmIGlucHV0VmFsdWUgIT09IG51bGwpIHx8ICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDsgLy8gVHJhbnNmb3JtYW5kbyBlbSBzdHJpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUgPT09IGlucHV0VmFsdWU7XG4gIH1cblxuICBzZWFyY2hGb3JMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8YW55PiwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICBpZiAoc2VhcmNoICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld09wdGlvbnM6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgIGxldCBhZGRlZE9wdGlvbnNHcm91cFRpdGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgICBsZXQgb3B0aW9uc0dyb3VwVGl0bGU6IFBvQ29tYm9Hcm91cDtcblxuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICgnb3B0aW9ucycgaW4gb3B0aW9uKSB7XG4gICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAob3B0aW9uc0dyb3VwVGl0bGUgPSBvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgKHRoaXMuY29tcGFyZU1ldGhvZChzZWFyY2gsIG9wdGlvbiwgZmlsdGVyTW9kZSkgfHwgdGhpcy5zZXJ2aWNlKSkge1xuICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmICFhZGRlZE9wdGlvbnNHcm91cFRpdGxlKSB7XG4gICAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uc0dyb3VwVGl0bGUpO1xuICAgICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IG5ld09wdGlvbnNbdGhpcy5pc09wdGlvbkdyb3VwTGlzdCA/IDEgOiAwXTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KG5ld09wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbWJvTGlzdChvcHRpb25zPzogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IGNvcHlPcHRpb25zID0gb3B0aW9ucyB8fCBbLi4udGhpcy5jb21ib09wdGlvbnNMaXN0XTtcblxuICAgIGxldCBuZXdPcHRpb25zO1xuICAgIGlmICh0aGlzLnJlbW92ZUluaXRpYWxGaWx0ZXIpIHtcbiAgICAgIG5ld09wdGlvbnMgPSBjb3B5T3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3T3B0aW9ucyA9ICFvcHRpb25zICYmICF0aGlzLmluZmluaXRlU2Nyb2xsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSA/IFt7IC4uLnRoaXMuc2VsZWN0ZWRPcHRpb24gfV0gOiBjb3B5T3B0aW9ucztcbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVPcHRpb25zID0gbmV3T3B0aW9ucztcblxuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gY29weU9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBnZXROZXh0T3B0aW9uKHZhbHVlOiBhbnksIG9wdGlvbnM6IEFycmF5PGFueT4sIHJldmVyc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9wdGlvbnNMaXN0ID0gcmV2ZXJzZSA/IG9wdGlvbnMuc2xpY2UoMCkucmV2ZXJzZSgpIDogb3B0aW9ucy5zbGljZSgwKTtcbiAgICBsZXQgb3B0aW9uRm91bmQgPSBudWxsO1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmICFvcHRpb25Gb3VuZCkge1xuICAgICAgICBvcHRpb25Gb3VuZCA9IG9wdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmIGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0VxdWFsKG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0sIHZhbHVlKSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbkZvdW5kO1xuICB9XG5cbiAgZ2V0SW5kZXhTZWxlY3RlZFZpZXcoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLnZpc2libGVPcHRpb25zW2ldLCB0aGlzLnNlbGVjdGVkVmlldykpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29tcGFyZU9iamVjdHMob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xuICB9XG5cbiAgdmVyaWZ5VmFsaWRPcHRpb24oKSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xuXG4gICAgY29uc3Qgb3B0aW9uRm91bmQgPSB0aGlzLmdldE9wdGlvbkZyb21MYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25Gb3VuZCAmJiBvcHRpb25Gb3VuZFt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbkZvdW5kKTtcblxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gb3B0aW9uRm91bmRbdGhpcy5keW5hbWljTGFiZWxdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gIT09IGlucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKTtcblxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlICYmICFvcHRpb25Gb3VuZCkge1xuICAgICAgY29uc3QgaXNJbnB1dFZhbHVlRGlmZlNlbGVjdGVkTGFiZWwgPSAhIShcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSAhPT0gaW5wdXRWYWx1ZVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwsIGlzSW5wdXRWYWx1ZURpZmZTZWxlY3RlZExhYmVsIHx8IHRoaXMuY2hhbmdlT25FbnRlcik7XG5cbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlY2ViZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWxcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mcm9tV3JpdGVWYWx1ZSA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRWYWx1ZSh2YWx1ZSkgJiYgIXRoaXMuc2VydmljZSAmJiB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgJiYgdGhpcy5jb21ib09wdGlvbnNMaXN0Lmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXRPcHRpb25Gcm9tVmFsdWUodmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uKTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gICAgICB0aGlzLnJlbW92ZUluaXRpYWxGaWx0ZXIgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZSBob3V2ZXIgc2VydmnDp28gYnVzY2EgcGVsbyBtb2RlbC5cbiAgICBpZiAodmFsdWUgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeVZhbHVlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgICAgIHRoaXMudXBkYXRlSGFzTmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICghdGhpcy5oYXNWYWxpZGF0b3JSZXF1aXJlZCAmJiB0aGlzLmZpZWxkRXJyb3JNZXNzYWdlICYmIGFic3RyYWN0Q29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcbiAgICAgIHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkIHx8IHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKHZhbHVlKSB7XG4gICAgdGhpcy5jYWxsTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgIHRoaXMuaW5pdElucHV0T2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudXBkYXRlSGFzTmV4dCgpO1xuICAgIGlmICh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ0FmdGVyU2V0RmlsdGVyU2VydmljZShzZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IFtdO1xuICAgICAgdGhpcy51bnN1YnNjcmliZUtleXVwT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5vbkluaXRTZXJ2aWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IHRoaXMuY2FjaGVTdGF0aWNPcHRpb25zO1xuICAgIH1cblxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCkge1xuICAgIGlmICh0aGlzLmtleXVwU3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tYm9MaXN0RGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RpbmdDb21ib09wdGlvbnModGhpcy5vcHRpb25zKSA6IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLmNhY2hlU3RhdGljT3B0aW9ucyA9IHRoaXMuY29tYm9PcHRpb25zTGlzdDtcblxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZTZXJ2aWNlKGR5bmFtaWNWYWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSAmJiBkeW5hbWljVmFsdWUgPT09ICdsYWJlbCcpIHtcbiAgICAgIHJldHVybiBQT19DT01CT19GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuc2VydmljZSB8fCB0aGlzLmZpbHRlclNlcnZpY2UpICYmIGR5bmFtaWNWYWx1ZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgcmV0dXJuIFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgZHluYW1pY1ZhbHVlID09PSAnbGFiZWwnKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWVsZExhYmVsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZXJ2aWNlICYmIGR5bmFtaWNWYWx1ZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVPcHRpb25zKGR5bmFtaWNMYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25BOiBhbnksIG9wdGlvbkI6IGFueSkge1xuICAgICAgY29uc3QgbGFiZWxBID0gb3B0aW9uQVtkeW5hbWljTGFiZWxdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxhYmVsQiA9IG9wdGlvbkJbZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHJldHVybiBsYWJlbEEgPCBsYWJlbEIgPyAtMSA6IGxhYmVsQSA+IGxhYmVsQiA/IDEgOiAwO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhc0R1cGxpY2F0ZWRPcHRpb24ob3B0aW9uczogQXJyYXk8YW55PiwgY3VycmVudE9wdGlvbjogc3RyaW5nLCBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PGFueT4pIHtcbiAgICBpZiAoYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucy5zb21lKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5keW5hbWljTGFiZWxdID09PSBjdXJyZW50T3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSA9PT0gY3VycmVudE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0aW5nQ29tYm9PcHRpb25zKGNvbWJvT3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IGNvbWJvT3B0aW9uc0xpc3QgPSBjb21ib09wdGlvbnMuY29uY2F0KCk7XG4gICAgY29uc3QgdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0ID0gdGhpcy52ZXJpZnlDb21ib09wdGlvbnMoY29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAodmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9ucyhjb21ib09wdGlvbnNMaXN0OiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKGNvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnNvcnQodGhpcy5jb21wYXJlT3B0aW9ucyh0aGlzLmR5bmFtaWNMYWJlbCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVWYWx1ZShjdXJyZW50T3B0aW9uOiBhbnksIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgeyBvcHRpb25zIH0gPSBjdXJyZW50T3B0aW9uO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICh2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgKHZlcmlmeWluZ09wdGlvbnNHcm91cCA9PT0gdHJ1ZSAmJiB2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkVmFsdWUoY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0pICYmICFvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDb21ib09wdGlvbnMoXG4gICAgY29tYm9PcHRpb25zOiBBcnJheTxhbnk+LFxuICAgIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zPzogQXJyYXk8YW55PlxuICApIHtcbiAgICByZXR1cm4gY29tYm9PcHRpb25zLnJlZHVjZSgoYWNjdW11bGF0ZWRPcHRpb25zLCBjdXJyZW50T3B0aW9uKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbikgfHxcbiAgICAgICAgdGhpcy5oYXNEdXBsaWNhdGVkT3B0aW9uKFxuICAgICAgICAgIGFjY3VtdWxhdGVkT3B0aW9ucyxcbiAgICAgICAgICBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSB8fCBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSxcbiAgICAgICAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9uc1xuICAgICAgICApIHx8XG4gICAgICAgICF0aGlzLnZhbGlkYXRlVmFsdWUoY3VycmVudE9wdGlvbiwgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRlZE9wdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIGFjY3VtdWxhdGVkT3B0aW9ucy5wdXNoKGN1cnJlbnRPcHRpb24pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkT3B0aW9ucztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNvbWJvT3B0aW9uc0dyb3VwKGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gY29tYm9PcHRpb25zTGlzdC5yZWR1Y2UoKGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zLCBjdXJyZW50T3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XG4gICAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCA9IHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zKG9wdGlvbnMsIHRydWUsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKTtcblxuICAgICAgaWYgKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyh2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCk7XG5cbiAgICAgICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMucHVzaChcbiAgICAgICAgICB7IGxhYmVsOiBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSwgb3B0aW9uczogdHJ1ZSB9LFxuICAgICAgICAgIC4uLnZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbjogUG9Db21ib0dyb3VwID0ge30pIHtcbiAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiBvcHRpb25zICYmICFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkgfHxcbiAgICAgICghY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgIWN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSB8fFxuICAgICAgKCF0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkge1xuICAgICAgY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gPSBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbjogYW55KSB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBvcHRpb247XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5mcm9tV3JpdGVWYWx1ZSkge1xuICAgICAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5lbWl0T2JqZWN0VmFsdWUgPyB0aGlzLnNlbGVjdGVkT3B0aW9uIDogdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZnJvbVdyaXRlVmFsdWUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKSB7XG4gICAgY29uc3Qgb2xkT3B0aW9uID0gdGhpcy5nZXRPcHRpb25Gcm9tVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuXG4gICAgaWYgKG9sZE9wdGlvbiAmJiBvbGRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9sZE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIYXNOZXh0KCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgdGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5oYXNOZXh0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBzZXRJbnB1dFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGdldE9iamVjdEJ5VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgZ2V0SW5wdXRWYWx1ZSgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaW5pdElucHV0T2JzZXJ2YWJsZSgpOiB2b2lkO1xufVxuIl19
|