@eo-sdk/client 8.16.35 → 8.16.37
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/app/eo-framework/actions/actions/clipboard/clipboard-action.d.ts +1 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +173 -18
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +1 -15
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +26958 -26800
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +4 -4
- package/esm2015/app/eo-client/dashboard/dashboard.component.js +1 -1
- package/esm2015/app/eo-client/favorite-state/favorite-state.component.js +1 -1
- package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +1 -1
- package/esm2015/app/eo-client/login/login.component.js +1 -1
- package/esm2015/app/eo-client/notifications-state/notifications-state.component.js +1 -1
- package/esm2015/app/eo-client/object-state/object-state/object-state.component.js +1 -1
- package/esm2015/app/eo-client/prepare-state/prepare-state/prepare-state.component.js +1 -1
- package/esm2015/app/eo-client/process-state/process-state.component.js +1 -1
- package/esm2015/app/eo-client/result-state/result-state.component.js +1 -1
- package/esm2015/app/eo-client/settings/settings.component.js +1 -1
- package/esm2015/app/eo-client/stored-queries-state/stored-queries-state.component.js +1 -1
- package/esm2015/app/eo-client/version-state/version-state.component.js +1 -1
- package/esm2015/app/eo-framework/actions/action-menu/action-menu.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/clipboard/clipboard-action.js +2 -3
- package/esm2015/app/eo-framework/actions/actions/delete-action/delete/delete.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/open-document-action/open-document-action.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +1 -1
- package/esm2015/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-bar.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-process/app-process.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/context-search/context-search.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +1 -1
- package/esm2015/app/eo-framework/cta/component/cta.component.js +1 -1
- package/esm2015/app/eo-framework/error/error404/error404.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/checkbox/checkbox.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/codesystem/codesystem.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/datetime/datetime.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/datetime-range/datetime-range.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/form-input/form-input.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/id-reference/id-reference.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/number-range/number-range.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/organization/organization.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/password/password.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/reference/reference.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/string/string.component.js +1 -1
- package/esm2015/app/eo-framework/frame/frame.component.js +1 -1
- package/esm2015/app/eo-framework/grid/column-configurator/column-configurator.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/empty/empty.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/pagination/pagination.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/extensions/total-count/total-count.component.js +1 -1
- package/esm2015/app/eo-framework/grid/filters/codesystem-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/filters/datetime-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/filters/dynamic-list-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/filters/list-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/filters/organization-filter.component.js +1 -1
- package/esm2015/app/eo-framework/grid/grid.component.js +1 -1
- package/esm2015/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.js +1 -1
- package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +1 -1
- package/esm2015/app/eo-framework/list-container/list-container.component.js +1 -1
- package/esm2015/app/eo-framework/media/media.component.js +1 -1
- package/esm2015/app/eo-framework/object-details/favorite-icon/favorite-icon.component.js +1 -1
- package/esm2015/app/eo-framework/object-details/object-details.component.js +1 -1
- package/esm2015/app/eo-framework/object-details/object-history/history-filter/history-filter.component.js +1 -1
- package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +1 -1
- package/esm2015/app/eo-framework/object-details/object-links/object-links.component.js +1 -1
- package/esm2015/app/eo-framework/object-form/object-form/form-element/form-element.component.js +1 -1
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +1 -1
- package/esm2015/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.js +1 -1
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +1 -1
- package/esm2015/app/eo-framework/object-form/object-form-edit/object-form-edit.component.js +1 -1
- package/esm2015/app/eo-framework/object-state-details/object-state-details.component.js +1 -1
- package/esm2015/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.js +1 -1
- package/esm2015/app/eo-framework/prepare-details/prepare-details.component.js +1 -1
- package/esm2015/app/eo-framework/process/details/process-details.component.js +1 -1
- package/esm2015/app/eo-framework/process/history/process-history.component.js +1 -1
- package/esm2015/app/eo-framework/process/process-file/process-file.component.js +1 -1
- package/esm2015/app/eo-framework/process-form/process-form.component.js +1 -1
- package/esm2015/app/eo-framework/quick-search/quick-search/quick-search.component.js +1 -1
- package/esm2015/app/eo-framework/result-list/result-list.component.js +1 -1
- package/esm2015/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.js +1 -1
- package/esm2015/app/eo-framework/settings/permissions/permissions.component.js +1 -1
- package/esm2015/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.js +1 -1
- package/esm2015/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.js +1 -1
- package/esm2015/app/eo-framework/split/split/split.component.js +1 -1
- package/esm2015/app/eo-framework/stored-query/stored-query/stored-query.component.js +1 -1
- package/esm2015/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.js +1 -1
- package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +1 -1
- package/esm2015/app/eo-framework/tab-container/tab-container.component.js +1 -1
- package/esm2015/app/eo-framework/tab-container/tab-panel/tab-panel.component.js +1 -1
- package/esm2015/app/eo-framework/tab-container/tab-view/tab-view.component.js +1 -1
- package/esm2015/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.js +1 -1
- package/esm2015/app/eo-framework/tree/tree-node/tree-node.component.js +1 -1
- package/esm2015/app/eo-framework/ui/clipboard/clipboard.component.js +1 -1
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +1 -1
- package/esm2015/app/eo-framework/ui/eo-icon/eo-icon.component.js +1 -1
- package/esm2015/app/eo-framework/ui/error-message/error-message.component.js +1 -1
- package/esm2015/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.js +1 -1
- package/esm2015/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.js +1 -1
- package/esm2015/app/eo-framework/ui/loading-spinner/loading-spinner.component.js +1 -1
- package/esm2015/app/eo-framework/ui/overlay/overlay.component.js +1 -1
- package/esm2015/app/eo-framework/ui/query-scope-select/query-scope-select.component.js +1 -1
- package/esm2015/app/eo-framework/ui/user-avatar/user-avatar.component.js +1 -1
- package/esm2015/app/eo-framework/undock-split/undock-split.component.js +1 -1
- package/esm2015/app/eo-framework/upload-overlay/upload-overlay.component.js +1 -1
- package/esm2015/app/eo-framework-core/api/grid.service.js +13 -13
- package/esm2015/app/eo-framework-core/pipes/locale-date.pipe.js +5 -1
- package/fesm2015/eo-sdk-client.js +126 -123
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/misc/scripts/copy-client-assets.js +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/package.json +3 -2
- package/styles.css +918 -694
|
@@ -506,13 +506,13 @@ export class CellRenderer {
|
|
|
506
506
|
}
|
|
507
507
|
static filesizeCellRenderer(param) {
|
|
508
508
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
509
|
-
return
|
|
509
|
+
return CellRenderer.noValueRenderer(param);
|
|
510
510
|
}
|
|
511
511
|
return param.value ? param.context.fileSizePipe.transform(param.value) : '';
|
|
512
512
|
}
|
|
513
513
|
static numberCellRenderer(param) {
|
|
514
514
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
515
|
-
return
|
|
515
|
+
return CellRenderer.noValueRenderer(param);
|
|
516
516
|
}
|
|
517
517
|
if (param.value || param.value === 0) {
|
|
518
518
|
if (param.value.operator) {
|
|
@@ -541,13 +541,13 @@ export class CellRenderer {
|
|
|
541
541
|
}
|
|
542
542
|
static stringCellrenderer(param) {
|
|
543
543
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
544
|
-
return
|
|
544
|
+
return CellRenderer.noValueRenderer(param);
|
|
545
545
|
}
|
|
546
546
|
return GridService.escapeHtml(param.value);
|
|
547
547
|
}
|
|
548
548
|
static typeCellRenderer(param) {
|
|
549
549
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
550
|
-
return
|
|
550
|
+
return CellRenderer.noValueRenderer(param);
|
|
551
551
|
}
|
|
552
552
|
let val = '';
|
|
553
553
|
if (param.value) {
|
|
@@ -561,7 +561,7 @@ export class CellRenderer {
|
|
|
561
561
|
}
|
|
562
562
|
static iconCellRenderer(param) {
|
|
563
563
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
564
|
-
return
|
|
564
|
+
return CellRenderer.noValueRenderer(param);
|
|
565
565
|
}
|
|
566
566
|
let val = '';
|
|
567
567
|
if (param.value && (param.value.url || param.value.iconId)) {
|
|
@@ -578,7 +578,7 @@ export class CellRenderer {
|
|
|
578
578
|
}
|
|
579
579
|
static emailCellRenderer(param) {
|
|
580
580
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
581
|
-
return
|
|
581
|
+
return CellRenderer.noValueRenderer(param);
|
|
582
582
|
}
|
|
583
583
|
return param.value
|
|
584
584
|
? `<a href="mailto:${param.value}">${GridService.escapeHtml(param.value)}</a>`
|
|
@@ -586,7 +586,7 @@ export class CellRenderer {
|
|
|
586
586
|
}
|
|
587
587
|
static urlCellRenderer(param) {
|
|
588
588
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
589
|
-
return
|
|
589
|
+
return CellRenderer.noValueRenderer(param);
|
|
590
590
|
}
|
|
591
591
|
return param.value
|
|
592
592
|
? `<a target="_blank " href="${param.value}">${GridService.escapeHtml(param.value)}</a>`
|
|
@@ -594,7 +594,7 @@ export class CellRenderer {
|
|
|
594
594
|
}
|
|
595
595
|
static dateTimeCellRenderer(param) {
|
|
596
596
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
597
|
-
return
|
|
597
|
+
return CellRenderer.noValueRenderer(param);
|
|
598
598
|
}
|
|
599
599
|
if (param.value) {
|
|
600
600
|
if (param.value.operator) {
|
|
@@ -626,7 +626,7 @@ export class CellRenderer {
|
|
|
626
626
|
}
|
|
627
627
|
static booleanCellRenderer(param) {
|
|
628
628
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
629
|
-
return
|
|
629
|
+
return CellRenderer.noValueRenderer(param);
|
|
630
630
|
}
|
|
631
631
|
let val = `<path class="background" d="M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z"/>`;
|
|
632
632
|
if (param.value === true || param.value === 'true') {
|
|
@@ -640,7 +640,7 @@ export class CellRenderer {
|
|
|
640
640
|
}
|
|
641
641
|
static multiSelectCellRenderer(param) {
|
|
642
642
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
643
|
-
return
|
|
643
|
+
return CellRenderer.noValueRenderer(param);
|
|
644
644
|
}
|
|
645
645
|
let val = '';
|
|
646
646
|
if (param.value) {
|
|
@@ -652,7 +652,7 @@ export class CellRenderer {
|
|
|
652
652
|
}
|
|
653
653
|
static linkCellRenderer(param) {
|
|
654
654
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
655
|
-
return
|
|
655
|
+
return CellRenderer.noValueRenderer(param);
|
|
656
656
|
}
|
|
657
657
|
let val = '';
|
|
658
658
|
if (param.value) {
|
|
@@ -681,7 +681,7 @@ export class CellRenderer {
|
|
|
681
681
|
}
|
|
682
682
|
static referenceCellRenderer(param) {
|
|
683
683
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
684
|
-
return
|
|
684
|
+
return CellRenderer.noValueRenderer(param);
|
|
685
685
|
}
|
|
686
686
|
let text = '';
|
|
687
687
|
const value = param.data ? param.data[param.colDef.field] : '';
|
|
@@ -717,4 +717,4 @@ export class CellRenderer {
|
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
719
|
CellRenderer.situation = '';
|
|
720
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVSxLQUFLLElBQUksT0FBTyxFQUFnRCxNQUFNLHlCQUF5QixDQUFDO0FBQzlILE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2QsV0FBVyxFQUVYLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUViLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUd6RixNQUFNLE9BQU8sV0FBVztJQW9DdEIsWUFDUyxTQUEyQixFQUMxQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLE1BQXFCLEVBQ3JCLE9BQXVCLEVBQ3ZCLFdBQXdCO1FBTHpCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdC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LE9BQU8sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUM7O0FBN1NNLHNCQUFTLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyLCBDb2xEZWYsIFV0aWxzIGFzIEFnVXRpbHMsIENzdkV4cG9ydFBhcmFtcywgUm93Tm9kZSwgQ29sdW1uLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XG4gIGNvbnRleHQ6IGFueTtcblxuICBnZXQgY3N2RXhwb3J0UGFyYW1zKCk6IENzdkV4cG9ydFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVOYW1lOiAnZXhwb3J0JyxcbiAgICAgIGNvbHVtblNlcGFyYXRvcjogdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJyA/ICc7JyA6ICcsJyxcbiAgICAgIHByb2Nlc3NDZWxsQ2FsbGJhY2s6IChwYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxDbGFzcyBhcyBhbnkgfHwgJycpLmluY2x1ZGVzKCdjb2wtbnVtYmVyJylcbiAgICAgICAgICA/IChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxSZW5kZXJlciBhcyBhbnkpKHBhcmFtcykucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcYCArIHRoaXMuY29udGV4dD8ubnVtYmVyUGlwZS5zZXBhcmF0b3IsICdnJyksICcnKSAvLyByZW1vdmVkIGdyb3VwaW5nXG4gICAgICAgICAgOiBwYXJhbXMudmFsdWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBlc2NhcGVIdG1sKHN0cikge1xuICAgIHN0ciA9IHN0ciA/IHN0ciA6ICcnO1xuICAgIGNvbnN0IGVudGl0eU1hcCA9IHtcbiAgICAgICcmJzogJyZhbXA7JyxcbiAgICAgICc8JzogJyZsdDsnLFxuICAgICAgJz4nOiAnJmd0OycsXG4gICAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxuICAgICAgJy8nOiAnJiN4MkY7J1xuICAgIH07XG4gICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2UoL1smPD5cIidcXC9dL2csIHMgPT4gZW50aXR5TWFwW3NdKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZUZvcm1hdHRlcihxbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChxbmFtZSB8fCAnJykucmVwbGFjZShuZXcgUmVnRXhwKCdzeXNvYmplY3QufHN5c2RvY3VtZW50LicpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgcW5hbWVNYXRjaChxbmFtZTogc3RyaW5nLCBxbmFtZTI6IHN0cmluZykge1xuICAgIHJldHVybiBHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihxbmFtZSkgPT09IEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lMik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgdHJhbnNsYXRlLFxuICAgICAgc3lzdGVtLFxuICAgICAgYmFja2VuZCxcbiAgICAgIHJvdXRlcixcbiAgICAgIGZpbGVTaXplUGlwZTogbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgbnVtYmVyUGlwZTogbmV3IExvY2FsZU51bWJlclBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGRhdGVQaXBlOiBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGNyOiBDZWxsUmVuZGVyZXIsXG4gICAgICBiYXNlSHJlZjogRW52aXJvbm1lbnRFbmFpby5pc1dlYkVudmlyb25tZW50KCkgPyB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpIDogJy4vJyxcbiAgICAgIG1pbWV0eXBlZ3JvdXBPcHRzOiBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFMpLm1hcChrID0+IGsudG9Mb3dlckNhc2UoKSksXG4gICAgICB0eXBlT3B0czogW11cbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoXG4gICAgICAodXNlcjogRW9Vc2VyKSA9PlxuICAgICAgICAodGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbiA9XG4gICAgICAgICAgdXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnKVxuICAgICk7XG5cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZTogU2VhcmNoU3RhdGUpID0+IHRoaXMudXBkYXRlQ29udGV4dChBcnJheS5mcm9tKHN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlLmtleXMoKSkpKTtcbiAgfVxuXG4gIC8vIGNvcHkgY29udGVudCBvZiBlaXRoZXIgcm93IG9yIHRhYmxlIGNlbGwgdG8gY2xpcGJvYXJkXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUNlbnRlclZpZXdwb3J0O1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB2aWV3cG9ydC5zY3JvbGxMZWZ0O1xuXG4gICAgY29uc3QgZm9jdXNlZENlbGwgPSBncmlkT3B0aW9ucy5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcbiAgICBjb25zdCByb3dzOiBSb3dOb2RlW10gPSBldmVudC5zaGlmdEtleSA/IGdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkgOiBbZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoZm9jdXNlZENlbGwucm93SW5kZXgpXTtcbiAgICBjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZE9wdGlvbnMuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKS5maWx0ZXIoKGM6IGFueSkgPT4gYy5jb2xJZCAhPT0gJ19fc2VsZWN0aW9uRmllbGQnKSA6IFtmb2N1c2VkQ2VsbC5jb2x1bW5dO1xuICAgIGNvbnN0IGdldENlbGwgPSAoY29sLCByb3cpID0+IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUd1aS5xdWVyeVNlbGVjdG9yKGBkaXZbcm93LWluZGV4PVwiJHtyb3cucm93SW5kZXh9XCJdIFtjb2wtaWQ9XCIke2NvbC5jb2xJZH1cIl1gKTtcbiAgICBjb25zdCB2YWx1ZSA9IChjb2wsIHJvdykgPT4ge1xuICAgICAgZ3JpZE9wdGlvbnMuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoY29sKTtcbiAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgIGlmICghY2VsbCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgY2hpcHMgPSBjZWxsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jaGlwJykgfHwgW107XG4gICAgICBjb25zdCB2YWwgPSBBcnJheS5mcm9tKGNoaXBzLmxlbmd0aCA/IGNoaXBzIDogW2NlbGxdKS5tYXAoKGM6IGFueSkgPT4gKGMgJiYgYy50ZXh0Q29udGVudCAmJiBjLnRleHRDb250ZW50LnRyaW0oKSkgfHwgJycpO1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKSB8fCBncmlkT3B0aW9ucy5hcGkuZ2V0VmFsdWUoY29sLCByb3cpO1xuICAgICAgcmV0dXJuICFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgOiAnJztcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBjb250ZW50ICs9IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gY29sLmdldENvbERlZigpLmhlYWRlck5hbWUpLmpvaW4oJ1x0JykgKyAnXFxuJztcbiAgICBjb250ZW50ICs9IHJvd3MubWFwKChyb3cpID0+IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gdmFsdWUoY29sLCByb3cpKS5qb2luKCdcdCcpKS5qb2luKCdcXG4nKTtcblxuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICByb3dzLm1hcCgocm93KSA9PlxuICAgICAgICAgIGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoY29sLCByb3cpO1xuICAgICAgICAgICAgY2VsbCAmJiBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NvcHktY2VsbCcpO1xuICAgICAgICAgICAgY2VsbCAmJiBzZXRUaW1lb3V0KCgpID0+IGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjb3B5LWNlbGwnKSwgNDAwMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICAvLyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTsgLy8gb25seSBpZiBjbGllbnQgcnVucyBodHRwc1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgY29uc3QgY29weVN1Y2Nlc3MgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHVibGljIG9wZW5MaW5rKHVyaTogc3RyaW5nLCBuZXdUYWIgPSBmYWxzZSkge1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvcmNlIHJlbG9hZCBpbiBjYXNlIG9mIHNhbWUgVVJMXG4gICAgICBjb25zdCBleHRyYXMgPSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLnVybCkgPT09IENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSA/IGAke3VyaS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfXJlbG9hZD10cnVlYCA6ICcnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmkgKyBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleChlbCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5nZXRBdHRyaWJ1dGUoJ3Jvdy1pbmRleCcpXG4gICAgICAgID8gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKSwgMTApXG4gICAgICAgIDogdGhpcy5nZXRSb3dJbmRleChlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZXJMaW5rKGVsLCBwYXJlbnRDbGFzcykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5sb2NhbE5hbWUgPT09ICdhJyAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JvdXRlci1saW5rJylcbiAgICAgICAgPyBlbFxuICAgICAgICA6IHRoaXMuZ2V0Um91dGVyTGluayhlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUm91dGVyTGluayhldmVudDogTW91c2VFdmVudCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoXG4gICAgICBldmVudC50YXJnZXQsXG4gICAgICBwYXJlbnRDbGFzc1xuICAgICkgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgaWYgKGxpbmsgJiYgbGluay5ocmVmKSB7XG4gICAgICB0aGlzLm9wZW5MaW5rKGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGV2ZW50LmN0cmxLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB7Li4udGhpcy5jb250ZXh0LCBjb3VudDogMCwgcm93Q291bnQ6IDB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodHlwZU9wdHM6IHN0cmluZ1tdLCBvcHRpb25zID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwge3R5cGVPcHRzOiAodHlwZU9wdHMgJiYgdHlwZU9wdHMubGVuZ3RoID8gdHlwZU9wdHMgOiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpLm1hcChvID0+IG8ucW5hbWUpKX0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkRlZnMoXG4gICAgZWxlbWVudHM6IGFueVtdLFxuICAgIHNvcnRvcmRlcjogYW55W10gPSBbXSxcbiAgICBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZDogYW55W10gPSBbXSxcbiAgICBlbmFibGVSb3dHcm91cCA9IHRydWUsXG4gICAgY2FjaGVkQ29sdW1ucyA9IFtdLFxuICAgIG1vZGU/XG4gICk6IENvbERlZltdIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGYgPT5cbiAgICAgIHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICAgICAgZixcbiAgICAgICAgc29ydG9yZGVyLFxuICAgICAgICBncm91cG9yZGVyLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGVuYWJsZVJvd0dyb3VwLFxuICAgICAgICBjYWNoZWRDb2x1bW5zLFxuICAgICAgICBtb2RlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSB2aXN1YWwgb3V0cHV0IG9mIGZvcm0gZWxlbWVudHMgYmFzZWQgb24gaXRzIHR5cGUgZXRjLiAoc2VlIEluZGV4ZGF0YVN1bW1hcnlDb21wb25lbnQgZm9yIHVzYWdlIGRldGFpbHMpXG4gICAqIEBwYXJhbSBlbGVtZW50cyAtIFRoZSBmb3JtIGVsZW1lbnRzIHRvIGJlIHJlbmRlcmVkXG4gICAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCBIVE1MIGZvciB0aGUgZ2l2ZW4gZWxlbWVudHNcbiAgICovXG4gIHB1YmxpYyBnZXRSZXNvbHZlZERlZnMoZWxlbWVudHM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLm1hcChlbCA9PiB7XG4gICAgICBsZXQgY29sRGVmOiBDb2xEZWYgPSB0aGlzLmdldENvbHVtbkRlZmluaXRpb24oZWwpO1xuICAgICAgbGV0IHZhbHVlID0gZWwudmFsdWU7XG4gICAgICBsZXQgZGF0YSA9IHt9O1xuICAgICAgZGF0YVtjb2xEZWYuZmllbGRdID0gdmFsdWU7XG4gICAgICBpZiAoZWwubWV0YSkge1xuICAgICAgICBkYXRhW2NvbERlZi5maWVsZCArICdfbWV0YSddID0gZWwubWV0YTtcbiAgICAgIH1cbiAgICAgIC8vIGludm9rZSB2YWx1ZUdldHRlciBpZiBwcm92aWRlZFxuICAgICAgaWYgKGNvbERlZi52YWx1ZUdldHRlcikge1xuICAgICAgICB2YWx1ZSA9IChjb2xEZWYudmFsdWVHZXR0ZXIgYXMgRnVuY3Rpb24pLmNhbGwodGhpcywge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIG5vZGU6IHt9LFxuICAgICAgICAgIGNvbERlZjogY29sRGVmXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gcnVuIHRoZSBjZWxsIHJlbmRlcmVyIHdpdGggdGhlIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIHZhbHVlR2V0dGVyXG4gICAgICBpZiAoY29sRGVmLmNlbGxSZW5kZXJlcikge1xuICAgICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWYsXG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9O1xuICAgICAgICBlbC5fdmFsdWUgPSAoY29sRGVmLmNlbGxSZW5kZXJlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWw7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyB0aGUgY29sdW1uIGRlZmluaXRpb24gZm9yIGEgZ2l2ZW4gcmVzdWx0IGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzdWx0RmllbGQgLSB0aGUgcmVzdWx0IGZpZWxkIChhcyByZXRyaWV2ZWQgZnJvbSAuLi91c2VyL2NvbmZpZy9yZXN1bHQvKikgdG8gY3JlYXRlIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgZm9yXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0RmllbGRzIC0gQXJyYXkgb2YgZmllbGRzIHRvIGJlIHNvcnRlZFxuICAgKi9cbiAgcHVibGljIGdldENvbHVtbkRlZmluaXRpb24oXG4gICAgcmVzdWx0RmllbGQsXG4gICAgc29ydEZpZWxkczogYW55W10gPSBbXSxcbiAgICBncm91cEZpZWxkczogYW55W10gPSBbXSxcbiAgICBwaW5uZWRGaWVsZHM6IGFueVtdID0gW10sXG4gICAgZW5hYmxlUm93R3JvdXAgPSBmYWxzZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKSB7XG4gICAgbGV0IGNvbERlZiA9IDxDb2xEZWY+e307XG4gICAgY29sRGVmLmhlYWRlck5hbWUgPSByZXN1bHRGaWVsZC5sYWJlbDtcbiAgICBjb2xEZWYuZmllbGQgPSByZXN1bHRGaWVsZC5oaXRuYW1lIHx8IHJlc3VsdEZpZWxkLm5hbWU7XG4gICAgY29sRGVmLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHBhcmFtcyA9PiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtcy52YWx1ZSk7XG4gICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW1zID0+IHtcbiAgICAgIHJldHVybiBwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEgPyAnJyA6IHBhcmFtcy5kYXRhW2NvbERlZi5maWVsZF07XG4gICAgfTtcbiAgICBjb2xEZWYucmVmRGF0YSA9IHtxbmFtZTogcmVzdWx0RmllbGQucW5hbWUgfHwgJyd9O1xuXG4gICAgLyoqXG4gICAgICogaGVhZGVyQ2xhc3NcbiAgICAgKiBhZGQgc3BlY2lhbCBoZWFkZXIgY2xhc3MgZm9yIGZpZWxkcyBmcm9tIHRoZSBjb250ZXh0Zm9sZGVyXG4gICAgICovXG4gICAgaWYgKHJlc3VsdEZpZWxkLnNlbGVjdGVkZm9yZW5yaWNobWVudCAmJiBtb2RlICE9PSAnQ09NTU9OJykge1xuICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbnRleHRmb2xkZXInO1xuICAgIH1cbiAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZiwgcmVzdWx0RmllbGQpO1xuICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZiwgY29sRGVmLmZpZWxkKTtcblxuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgZGVib3VuY2VNczogODAwLFxuICAgICAgY2xlYXJCdXR0b246IGZhbHNlLFxuICAgICAgbmV3Um93c0FjdGlvbjogJ2tlZXAnLFxuICAgICAgZmlsdGVyT3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGNvbERlZi5maWx0ZXIgPT09ICdhZ1RleHRDb2x1bW5GaWx0ZXInKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBjb2xEZWYucmVmRGF0YS5xbmFtZS5tYXRjaCgvKF5zeXNvYmplY3RcXC58XnN5c2RvY3VtZW50XFwuKSh0aXRsZSR8ZGVzY3JpcHRpb24kKS8pID8gWydlcXVhbHMnXSA6IFtcbiAgICAgICAgJ2NvbnRhaW5zJyxcbiAgICAgICAgJ2VxdWFscycsXG4gICAgICAgICdzdGFydHNXaXRoJyxcbiAgICAgICAgJ2VuZHNXaXRoJ1xuICAgICAgXTtcblxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInIHx8XG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdEYXRlQ29sdW1uRmlsdGVyJ1xuICAgICkge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAnZXF1YWxzJyxcbiAgICAgICAgJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICdncmVhdGVyVGhhbicsXG4gICAgICAgICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAnaW5SYW5nZSdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWltZXR5cGUgZmlsdGVyIHN1cHBvcnRzIG9ubHkgZXF1YWxzIG9wdGlvblxuICAgIGlmIChjb2xEZWYuZmllbGQgPT09ICdtaW1ldHlwZScpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZGVmYXVsdE9wdGlvbiA9ICdlcXVhbHMnO1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gWydlcXVhbHMnXTtcbiAgICB9XG5cbiAgICAvLyBmaWxlc2l6ZSBmaWx0ZXIgc3VwcG9ydHMgb25seSBpbnRlcnZhbCBvcHRpb25zXG4gICAgaWYgKGNvbERlZi5maWVsZCA9PT0gJ2ZpbGVzaXplJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5kZWZhdWx0T3B0aW9uID0gJ2xlc3NUaGFuT3JFcXVhbCc7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgICAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgJ2luUmFuZ2UnXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0RmllbGQuc29ydGFibGUpIHtcbiAgICAgIGNvbERlZi5zb3J0YWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdEZpZWxkLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbERlZi5zdXBwcmVzc01lbnUgPSB0cnVlO1xuICAgICAgY29sRGVmLmZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzb3J0RmllbGQgPSBzb3J0RmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHNvcnRGaWVsZCkge1xuICAgICAgY29sRGVmLnNvcnQgPSBzb3J0RmllbGQuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZVJvd0dyb3VwKSB7XG4gICAgICBsZXQgZ3JvdXBGaWVsZEluZGV4ID0gZ3JvdXBGaWVsZHMuZmluZEluZGV4KFxuICAgICAgICBmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lXG4gICAgICApO1xuICAgICAgaWYgKH5ncm91cEZpZWxkSW5kZXgpIHtcbiAgICAgICAgY29sRGVmLnJvd0dyb3VwSW5kZXggPSBncm91cEZpZWxkSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBpbm5lZEZpZWxkID0gcGlubmVkRmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHBpbm5lZEZpZWxkKSB7XG4gICAgICBjb2xEZWYucGlubmVkID0gcGlubmVkRmllbGQucG9zaXRpb24gfHwgdGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgIGNvbERlZi53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0eXBlIHNwZWNpZmljIGNvbHVtbiBkZWZpbml0aW9uIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIGNvbERlZiAtIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgdG8gYmUgZXh0ZW5kZWQgYnkgdHlwZSBzcGVjaWZpYyBhdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIG9iamVjdCBkZWZpbmluZyB0aGUgcmVzdWx0IGZpZWxkXG4gICAqXG4gICAqIEByZXR1cm5zIGVucmljaGVkIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZjogQ29sRGVmLCByZXN1bHRGaWVsZCkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnUkVGRVJFTkNFJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAncm91dGVyLWxpbmstY2VsbCc7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLnJlZmVyZW5jZUNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7cmVmZXJlbmNlOiByZXN1bHRGaWVsZC5yZWZlcmVuY2UgfHwge30sIGNvbERlZjogY29sRGVmfVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSBwYXJhbSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgcGFyYW0ubm9kZS5ncm91cCB8fCAhcGFyYW0uZGF0YSA/ICcnIDogcGFyYW0uZGF0YVtjb2xEZWYuZmllbGRdO1xuXG4gICAgICAgICAgY29uc3QgcmVmTWV0YSA9IHBhcmFtICYmIHBhcmFtLmRhdGEgJiYgcGFyYW0uZGF0YS5fcmVmZXJlbmNlcztcbiAgICAgICAgICAvLyB1c2Ugb2JqZWN0IHR5cGUgbGFiZWwgd2hlbiBtZXRhIGlzIG1pc3NpbmcgKHNlYXJjaCBzdmMgZG9lcyBub3Qgc3VwcG9ydCBtZXRhKVxuICAgICAgICAgIHJldHVybiBVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpXG4gICAgICAgICAgICA/ICcnIDogcmVmTWV0YVxuICAgICAgICAgICAgICA/IHJlZk1ldGFbY29sRGVmLmZpZWxkXVxuICAgICAgICAgICAgICA6IHRoaXMubWV0YVZhbHVlR2V0dGVyKHYgPT4gdi50aXRsZSkocGFyYW0pO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1NUUklORyc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gcmVzdWx0RmllbGQubXVsdGlzZWxlY3RcbiAgICAgICAgICA/ICdtdWx0aUNlbGwgc3RyaW5nJ1xuICAgICAgICAgIDogJ3N0cmluZyc7XG4gICAgICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUNsYXNzaWZpY2F0aW9uKGNvbERlZiwgcmVzdWx0RmllbGQuY2xhc3NpZmljYXRpb24pO1xuICAgICAgICBpZiAocmVzdWx0RmllbGQucmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdyb3V0ZXItbGluay1jZWxsJztcbiAgICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgICAgQ2VsbFJlbmRlcmVyLmxpbmtDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICB7cmVmZXJlbmNlOiByZXN1bHRGaWVsZC5yZWZlcmVuY2V9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYuY29tcGFyYXRvciA9IChhLCBiKSA9PiBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKGEsIGIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RBVEVUSU1FJzoge1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxNTA7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3BhdHRlcm46IHJlc3VsdEZpZWxkLndpdGh0aW1lID8gJ2VvU2hvcnQnIDogJ2VvU2hvcnREYXRlJ31cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3BhdHRlcm46IHJlc3VsdEZpZWxkLndpdGh0aW1lID8gJ2VvU2hvcnQnIDogJ2VvU2hvcnREYXRlJ31cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICBjb21wYXJhdG9yOiB0aGlzLmRhdGVDb21wYXJhdG9yKHRoaXMuY29udGV4dC5kYXRlUGlwZSksXG4gICAgICAgICAgdmFsdWVHZXR0ZXI6IHRoaXMuZGF0ZUZpbHRlclZhbHVlR2V0dGVyKGNvbERlZi5maWVsZCksXG4gICAgICAgICAgd2l0aFRpbWU6IHJlc3VsdEZpZWxkLndpdGh0aW1lLFxuICAgICAgICAgIGluUmFuZ2VJbmNsdXNpdmU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0NvZGVzeXN0ZW1GaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY29sSWQgPSByZXN1bHRGaWVsZC5maWVsZDtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHttdWx0aTogcmVzdWx0RmllbGQubXVsdGlzZWxlY3R9O1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+IHYuZGVmYXVsdHJlcHJlc2VudGF0aW9uKTtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIGNvZGVzeXN0ZW0nXG4gICAgICAgICAgOiAnY29kZXN5c3RlbSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnTlVNQkVSJzoge1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ2NvbC1udW1iZXInO1xuICAgICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29sLWhlYWRlci1udW1iZXInO1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTUwO1xuICAgICAgICBjb25zdCB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufSA9IHJlc3VsdEZpZWxkO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3NjYWxlLCBncm91cGluZywgcGF0dGVybn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7aW5SYW5nZUluY2x1c2l2ZSA6IHRydWV9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY29sSWQgPSByZXN1bHRGaWVsZC5xbmFtZTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHttdWx0aTogcmVzdWx0RmllbGQubXVsdGlzZWxlY3R9O1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+XG4gICAgICAgICAgdi50aXRsZSAmJiB2Lm5hbWUgPyBgJHt2LnRpdGxlfSAoJHt2Lm5hbWV9KWAgOiBgJHt2LmlkfWBcbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIG9yZ2FuaXphdGlvbidcbiAgICAgICAgICA6ICdvcmdhbml6YXRpb24nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0JPT0xFQU4nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAnY29sLWJvb2xlYW4nO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmJvb2xlYW5DZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmN1c3RvbUNvbnRleHQoQ2VsbFJlbmRlcmVyLmJvb2xlYW5DZWxsUmVuZGVyZXIpLFxuICAgICAgICAgIGNlbGxIZWlnaHQ6IDMwLFxuICAgICAgICAgIHZhbHVlczogW2ZhbHNlLCB0cnVlXSxcbiAgICAgICAgICBzdXBwcmVzc01pbmlGaWx0ZXI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBjbGFzc2lmaWNhdGlvbiBzcGVjaWZpYyBjb2x1bW4gZGVmaW5pdGlvbiBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBjb2xEZWYgLSB0aGUgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gICAqIEBwYXJhbSBjbGFzc2lmaWNhdGlvbiAtIHRoZSBjbGFzc2lmaWNhdGlvbiB0byBldmFsdWF0ZVxuICAgKlxuICAgKiBAcmV0dXJucyBlbnJpY2hlZCBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgYWRkQ29sRGVmQXR0cnNCeUNsYXNzaWZpY2F0aW9uKGNvbERlZjogQ29sRGVmLCBjbGFzc2lmaWNhdGlvbikge1xuICAgIHN3aXRjaCAoY2xhc3NpZmljYXRpb24pIHtcbiAgICAgIGNhc2UgJ2VtYWlsJzoge1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmVtYWlsQ2VsbFJlbmRlcmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VybCc6IHtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci51cmxDZWxsUmVuZGVyZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDb2xEZWZBdHRyc0J5RmllbGQoY29sRGVmOiBDb2xEZWYsIHJlc3VsdEZpZWxkTmFtZSkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGROYW1lKSB7XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnR5cGVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ3Jlcy1pY28nO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmN1c3RvbUNvbnRleHQoQ2VsbFJlbmRlcmVyLnR5cGVDZWxsUmVuZGVyZXIpLFxuICAgICAgICAgIHZhbHVlczogdGhpcy5jb250ZXh0LnR5cGVPcHRzXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbWltZXR5cGVncm91cCc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdMaXN0RmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAxO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIHZhbHVlczogdGhpcy5jb250ZXh0Lm1pbWV0eXBlZ3JvdXBPcHRzXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndmVyc2lvbic6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gODA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZmlsZXNpemUnOiB7XG4gICAgICAgIGNvbERlZi5oZWFkZXJDbGFzcyA9ICdjb2wtaGVhZGVyLWZpbGVzaXplJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9IEZpbGVzaXplRmlsdGVyO1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxMDA7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuZmlsZXNpemVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21Db250ZXh0KGZuYywgbWl4aW4/KSB7XG4gICAgcmV0dXJuIHBhcmFtID0+IHtcbiAgICAgIHJldHVybiBmbmMoT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIHtjb250ZXh0OiB0aGlzLmNvbnRleHR9LCBtaXhpbikpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbWV0YVZhbHVlR2V0dGVyKHRpdGxlRm5jOiBGdW5jdGlvbiwgbWFwRm5jOiBGdW5jdGlvbiA9IHYgPT4gdikge1xuICAgIHJldHVybiBwYXJhbXMgPT4ge1xuICAgICAgLy8gZGF0YSBjb3VsZCBiZSBlbXB0eSBvbiBmaXJzdCByZW5kZXJpbmcgYSBjZWxsIHdoaWxlIGluZmluaXRlIHNjcm9sbGluZ1xuICAgICAgaWYgKHBhcmFtcy5ub2RlLmdyb3VwIHx8ICFwYXJhbXMuZGF0YSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRvZG86IHN1cGVyIGhvdGZpeCAtIENPT0wtODk4OSAtIHNvbHZlcyBwcm9ibGVtIHdpdGggcmVzb2x2aW5nIG9mIE9SR0FOSVpBVElPTiB2YWx1ZSAodmlhIHFuYW1lKVxuICAgICAgY29uc3QgZmllbGRNZXRhID0gcGFyYW1zLmNvbERlZi5maWVsZCArICdfbWV0YSc7XG4gICAgICBjb25zdCB2YWx1ZSA9ICFwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZE1ldGEpXG4gICAgICAgID8gbWFwRm5jKFxuICAgICAgICAgIChwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSAhPT0gdW5kZWZpbmVkKSA/IHBhcmFtcy5kYXRhW3BhcmFtcy5jb2xEZWYuZmllbGRdIDpcbiAgICAgICAgICBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLnJlZkRhdGEucW5hbWVdXG4gICAgICAgIClcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0pXG4gICAgICAgICAgPyBwYXJhbXMuZGF0YVtmaWVsZE1ldGFdLm1hcCh2ID0+IHRpdGxlRm5jKHYgfHwge30pKVxuICAgICAgICAgIDogdGl0bGVGbmMocGFyYW1zLmRhdGFbZmllbGRNZXRhXSB8fCB7fSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlQ29tcGFyYXRvcihkYXRlUGlwZSkge1xuICAgIHJldHVybiAoYTogRGF0ZSwgYikgPT4ge1xuICAgICAgaWYgKCFiIHx8ICFiLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoYi5maWx0ZXIpIHtcbiAgICAgICAgY29uc3QgX2RhdGUgPSAhYi5hY3RpdmVSYW5nZSA/IGIuZmlsdGVyLmRhdGVGcm9tIDogYi5maWx0ZXIuZGF0ZVRvO1xuICAgICAgICBiLmFjdGl2ZVJhbmdlID0gYi5maWx0ZXIudHlwZSA9PT0gU2ltcGxlRmlsdGVyLklOX1JBTkdFO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBiLmZpbHRlci53aXRoVGltZSA/IDE2IDogMTA7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKFxuICAgICAgICAgICAgX2RhdGUgJiYgX2RhdGUuc2xpY2UoMCwgbGVuZ3RoKSxcbiAgICAgICAgICAgIGIudmFsdWUuc2xpY2UoMCwgbGVuZ3RoKVxuICAgICAgICAgICkgKiAtMVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0ZSA9IGIubGVuZ3RoID09PSAxMCA/IGIgOiBkYXRlUGlwZS50cmFuc2Zvcm0oYiwgJ3l5eXktTU0tZGQnKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEFnVXRpbHMuZGVmYXVsdENvbXBhcmF0b3IoZGF0ZVBpcGUudHJhbnNmb3JtKGEsICd5eXl5LU1NLWRkJyksIGRhdGUpICpcbiAgICAgICAgLTFcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlRmlsdGVyVmFsdWVHZXR0ZXIoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiBub2RlID0+IHtcbiAgICAgIGxldCBfZmlsdGVyID0gbm9kZS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuYXBpLmdldEZpbHRlckluc3RhbmNlKFxuICAgICAgICBmaWVsZFxuICAgICAgKTtcbiAgICAgIGxldCB2YWx1ZSA9IG5vZGUuZGF0YVtmaWVsZF07XG4gICAgICByZXR1cm4ge2ZpbHRlcjogX2ZpbHRlclsnX2ZpbHRlck1vZGVsJ10sIHZhbHVlfTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsUmVuZGVyZXIge1xuXG4gIHN0YXRpYyBzaXR1YXRpb24gPSAnJztcblxuICBzdGF0aWMgd2luZG93VVJJKHVyaTogYW55KSB7XG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXlxcL3xeXFxcXFxcXFwnKSwgJycpO1xuICB9XG5cbiAgc3RhdGljIHJlbmRlcih0eXBlOiBzdHJpbmcsIHBhcmFtOiBhbnksIG5ld1BhcmFtPzogYW55KSB7XG4gICAgcmV0dXJuIENlbGxSZW5kZXJlclt0eXBlICsgJ0NlbGxSZW5kZXJlciddKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIG5ld1BhcmFtKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZmlsZXNpemVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZSA/IHBhcmFtLmNvbnRleHQuZmlsZVNpemVQaXBlLnRyYW5zZm9ybShwYXJhbS52YWx1ZSkgOiAnJztcbiAgfVxuXG4gIHN0YXRpYyBudW1iZXJDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGlmIChwYXJhbS52YWx1ZSB8fCBwYXJhbS52YWx1ZSA9PT0gMCkge1xuICAgICAgaWYgKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSB7XG4gICAgICAgIC8vIHJhbmdlIHZhbHVlIGZyb20gc2VhcmNoIGZvcm0gdGFibGVcbiAgICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlLm9wZXJhdG9yID09PVxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICA/IENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuc2Vjb25kVmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApXG4gICAgICAgICAgOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBudW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICB2YWx1ZSxcbiAgICBjb250ZXh0LFxuICAgIGdyb3VwaW5nPyxcbiAgICBwYXR0ZXJuPyxcbiAgICBzY2FsZT9cbiAgKSB7XG4gICAgcmV0dXJuIGNvbnRleHQubnVtYmVyUGlwZS50cmFuc2Zvcm0oXG4gICAgICB2YWx1ZSxcbiAgICAgIGdyb3VwaW5nLFxuICAgICAgcGF0dGVybixcbiAgICAgIHNjYWxlXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBzdHJpbmdDZWxscmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyB0eXBlQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICBsZXQgb2JqZWN0VHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0udmFsdWUpO1xuICAgICAgaWYgKCFvYmplY3RUeXBlKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLmljb25DZWxsUmVuZGVyZXIoXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7dmFsdWU6IG9iamVjdFR5cGV9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBpY29uQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlICYmIChwYXJhbS52YWx1ZS51cmwgfHwgcGFyYW0udmFsdWUuaWNvbklkKSkge1xuICAgICAgbGV0IGljb25VcmwgPSBwYXJhbS52YWx1ZS51cmxcbiAgICAgICAgPyBwYXJhbS5jb250ZXh0LmJhc2VIcmVmICsgcGFyYW0udmFsdWUudXJsXG4gICAgICAgIDogcGFyYW0uY29udGV4dC5iYWNrZW5kLmdldEJhc2VXaXRoQ29udGV4dChwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSkgK1xuICAgICAgICAnL3VpL2ljb24vJyArXG4gICAgICAgIHBhcmFtLnZhbHVlLmljb25JZCArXG4gICAgICAgICcuc3ZnJztcbiAgICAgIGxldCBsYWJlbCA9IHBhcmFtLnZhbHVlLmxhYmVsO1xuICAgICAgdmFsID0gYDxpbWcgY2xhc3M9XCJvYmplY3QtdHlwZVwiIHNyYz1cIiR7aWNvblVybH1cIiB0aXRsZT1cIiR7bGFiZWx9XCI+PHNwYW4gY2xhc3M9XCJvYmplY3QtdHlwZS1sYWJlbFwiPiR7bGFiZWx9PC9zcGFuPmA7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgZW1haWxDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZVxuICAgICAgPyBgPGEgaHJlZj1cIm1haWx0bzoke3BhcmFtLnZhbHVlfVwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbChcbiAgICAgICAgcGFyYW0udmFsdWVcbiAgICAgICl9PC9hPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBzdGF0aWMgdXJsQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWVcbiAgICAgID8gYDxhIHRhcmdldD1cIl9ibGFuayBcIiBocmVmPVwiJHtwYXJhbS52YWx1ZX1cIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwoXG4gICAgICAgIHBhcmFtLnZhbHVlXG4gICAgICApfTwvYT5gXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc3RhdGljIGRhdGVUaW1lQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIGlmIChwYXJhbS52YWx1ZS5vcGVyYXRvcikge1xuICAgICAgICAvLyByYW5nZSB2YWx1ZSBmcm9tIHNlYXJjaCBmb3JtIHRhYmxlXG4gICAgICAgIHJldHVybiBwYXJhbS52YWx1ZS5vcGVyYXRvciA9PT1cbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIXG4gICAgICAgICAgPyBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgICkgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApXG4gICAgICAgICAgOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKHZhbHVlLCBjb250ZXh0LCBwYXR0ZXJuKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwibm8tdmFsdWVcIj4ke2NvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uaW5wdXQubnVsbCcpfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gYDxzcGFuIGRhdGU9XCIke3ZhbHVlfVwiPiR7Y29udGV4dC5kYXRlUGlwZS50cmFuc2Zvcm0oXG4gICAgICB2YWx1ZSxcbiAgICAgIHBhdHRlcm5cbiAgICApfTwvc3Bhbj5gO1xuICB9XG5cbiAgc3RhdGljIGJvb2xlYW5DZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSBgPHBhdGggY2xhc3M9XCJiYWNrZ3JvdW5kXCIgZD1cIk0xOSwzSDVDMy45LDMsMywzLjksMyw1djE0YzAsMS4xLDAuOSwyLDIsMmgxNGMxLjEsMCwyLTAuOSwyLTJWNUMyMSwzLjksMjAuMSwzLDE5LDN6XCIvPmA7XG5cbiAgICBpZiAocGFyYW0udmFsdWUgPT09IHRydWUgfHwgcGFyYW0udmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgdmFsID0gYDxwYXRoIGNsYXNzPVwib3V0bGluZVwiIGQ9XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwiLz5cbiAgICAgICAgICAgICA8cG9seWxpbmUgY2xhc3M9XCJjaGVja21hcmtcIiBwb2ludHM9XCI2LjMsMTEuOCA3LjgsMTAuMyAxMC44LDEzLjMgMTYuMyw3LjggMTcuOCw5LjMgMTAuOCwxNi4zIDYuMywxMS44XCIvPmA7XG4gICAgfSBlbHNlIGlmIChwYXJhbS52YWx1ZSA9PT0gZmFsc2UgfHwgcGFyYW0udmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+YDtcbiAgICB9XG4gICAgcmV0dXJuIGA8c3ZnIGNsYXNzPVwiY2hlY2tib3hcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7dmFsfTwvc3ZnPmA7XG4gIH1cblxuICBzdGF0aWMgbXVsdGlTZWxlY3RDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKSA/IHBhcmFtLnZhbHVlIDogW3BhcmFtLnZhbHVlXSkuZm9yRWFjaChcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIHZhbCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodmFsdWUpfTwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgbGlua0NlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIHRoaXMubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpID8gcGFyYW0udmFsdWUgOiBbcGFyYW0udmFsdWVdKS5mb3JFYWNoKFxuICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICAgICAgICB0eXBlczogW3BhcmFtLnJlZmVyZW5jZS50eXBlXSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHt9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBxdWVyeS5maWx0ZXJzW3BhcmFtLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgICAgICAgIG86ICdlcScsXG4gICAgICAgICAgICB2MTogdmFsdWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGxpbmsgPSBVdGlscy5idWlsZFVyaSgncmVzdWx0Jywge1xuICAgICAgICAgICAgcXVlcnk6IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShxdWVyeSkpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFsICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwibGluayByb3V0ZXItbGlua1wiIGhyZWY9XCIke2xpbmt9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgb25jbGljaz1cInJldHVybiBmYWxzZTtcIj5cbiAgICAgICAgICA8c3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJyZWYtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPjwvcGF0aD5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2E+PHNwYW4+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKHZhbHVlKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyByZWZlcmVuY2VDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbS5kYXRhID8gcGFyYW0uZGF0YVtwYXJhbS5jb2xEZWYuZmllbGRdIDogJyc7XG4gICAgY29uc3QgdHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0ucmVmZXJlbmNlLnR5cGUpO1xuICAgIGlmICghVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKSAmJiB0eXBlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pLmZvckVhY2goKHZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGluayA9ICdvYmplY3QvJyArIHZhbCArICc/dHlwZT0nICsgcGFyYW0ucmVmZXJlbmNlLnR5cGU7XG4gICAgICAgIGNvbnN0IGljb25VcmwgPVxuICAgICAgICAgIHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQocGFyYW0uY29udGV4dC5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICtcbiAgICAgICAgICAnL3VpL2ljb24vJyArXG4gICAgICAgICAgdHlwZS5pY29uSWQgK1xuICAgICAgICAgICcuc3ZnJztcbiAgICAgICAgbGV0IHRpdGxlID0gQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSlcbiAgICAgICAgICA/IHBhcmFtLnZhbHVlW2luZGV4XVxuICAgICAgICAgIDogcGFyYW0udmFsdWU7XG5cbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gc2VlIHRoZSByZWZlcmVuY2Ugb2JqZWN0IG9yIHRoZSBvYmplY3Qgd2FzIGRlbGV0ZWQsIHdlIGRvbid0IHNob3cgdGhlIGxpbmsuXG4gICAgICAgIHRleHQgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICR7XG4gICAgICAgICAgIXRpdGxlXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6IGA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOFxuICAgICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9hPmBcbiAgICAgICAgICB9XG4gICAgICAgIDxpbWcgY2xhc3M9XCJ0eXBlLWljb25cIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke3R5cGUubGFiZWx9XCI+XG4gICAgICAgIDxzcGFuPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh0aXRsZSB8fCB0eXBlLmxhYmVsKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0IHx8IHBhcmFtLnZhbHVlO1xuICB9XG5cbiAgc3RhdGljIG5vVmFsdWVSZW5kZXJlcihwYXJhbSkge1xuICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJuby12YWx1ZVwiPiR7cGFyYW0uY29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5pbnB1dC5udWxsJyl9PC9zcGFuPmA7XG4gIH1cblxufVxuIl19
|
|
720
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVSxLQUFLLElBQUksT0FBTyxFQUFnRCxNQUFNLHlCQUF5QixDQUFDO0FBQzlILE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2QsV0FBVyxFQUVYLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUViLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUd6RixNQUFNLE9BQU8sV0FBVztJQW9DdEIsWUFDUyxTQUEyQixFQUMxQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLE1BQXFCLEVBQ3JCLE9BQXVCLEVBQ3ZCLFdBQXdCO1FBTHpCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdC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LE9BQU8sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUM7O0FBN1NNLHNCQUFTLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyLCBDb2xEZWYsIFV0aWxzIGFzIEFnVXRpbHMsIENzdkV4cG9ydFBhcmFtcywgUm93Tm9kZSwgQ29sdW1uLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XG4gIGNvbnRleHQ6IGFueTtcblxuICBnZXQgY3N2RXhwb3J0UGFyYW1zKCk6IENzdkV4cG9ydFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVOYW1lOiAnZXhwb3J0JyxcbiAgICAgIGNvbHVtblNlcGFyYXRvcjogdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJyA/ICc7JyA6ICcsJyxcbiAgICAgIHByb2Nlc3NDZWxsQ2FsbGJhY2s6IChwYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxDbGFzcyBhcyBhbnkgfHwgJycpLmluY2x1ZGVzKCdjb2wtbnVtYmVyJylcbiAgICAgICAgICA/IChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxSZW5kZXJlciBhcyBhbnkpKHBhcmFtcykucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcYCArIHRoaXMuY29udGV4dD8ubnVtYmVyUGlwZS5zZXBhcmF0b3IsICdnJyksICcnKSAvLyByZW1vdmVkIGdyb3VwaW5nXG4gICAgICAgICAgOiBwYXJhbXMudmFsdWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBlc2NhcGVIdG1sKHN0cikge1xuICAgIHN0ciA9IHN0ciA/IHN0ciA6ICcnO1xuICAgIGNvbnN0IGVudGl0eU1hcCA9IHtcbiAgICAgICcmJzogJyZhbXA7JyxcbiAgICAgICc8JzogJyZsdDsnLFxuICAgICAgJz4nOiAnJmd0OycsXG4gICAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxuICAgICAgJy8nOiAnJiN4MkY7J1xuICAgIH07XG4gICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2UoL1smPD5cIidcXC9dL2csIHMgPT4gZW50aXR5TWFwW3NdKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZUZvcm1hdHRlcihxbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChxbmFtZSB8fCAnJykucmVwbGFjZShuZXcgUmVnRXhwKCdzeXNvYmplY3QufHN5c2RvY3VtZW50LicpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgcW5hbWVNYXRjaChxbmFtZTogc3RyaW5nLCBxbmFtZTI6IHN0cmluZykge1xuICAgIHJldHVybiBHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihxbmFtZSkgPT09IEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lMik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgdHJhbnNsYXRlLFxuICAgICAgc3lzdGVtLFxuICAgICAgYmFja2VuZCxcbiAgICAgIHJvdXRlcixcbiAgICAgIGZpbGVTaXplUGlwZTogbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgbnVtYmVyUGlwZTogbmV3IExvY2FsZU51bWJlclBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGRhdGVQaXBlOiBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGNyOiBDZWxsUmVuZGVyZXIsXG4gICAgICBiYXNlSHJlZjogRW52aXJvbm1lbnRFbmFpby5pc1dlYkVudmlyb25tZW50KCkgPyB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpIDogJy4vJyxcbiAgICAgIG1pbWV0eXBlZ3JvdXBPcHRzOiBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFMpLm1hcChrID0+IGsudG9Mb3dlckNhc2UoKSksXG4gICAgICB0eXBlT3B0czogW11cbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoXG4gICAgICAodXNlcjogRW9Vc2VyKSA9PlxuICAgICAgICAodGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbiA9XG4gICAgICAgICAgdXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnKVxuICAgICk7XG5cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZTogU2VhcmNoU3RhdGUpID0+IHRoaXMudXBkYXRlQ29udGV4dChBcnJheS5mcm9tKHN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlLmtleXMoKSkpKTtcbiAgfVxuXG4gIC8vIGNvcHkgY29udGVudCBvZiBlaXRoZXIgcm93IG9yIHRhYmxlIGNlbGwgdG8gY2xpcGJvYXJkXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUNlbnRlclZpZXdwb3J0O1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB2aWV3cG9ydC5zY3JvbGxMZWZ0O1xuXG4gICAgY29uc3QgZm9jdXNlZENlbGwgPSBncmlkT3B0aW9ucy5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcbiAgICBjb25zdCByb3dzOiBSb3dOb2RlW10gPSBldmVudC5zaGlmdEtleSA/IGdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkgOiBbZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoZm9jdXNlZENlbGwucm93SW5kZXgpXTtcbiAgICBjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZE9wdGlvbnMuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKS5maWx0ZXIoKGM6IGFueSkgPT4gYy5jb2xJZCAhPT0gJ19fc2VsZWN0aW9uRmllbGQnKSA6IFtmb2N1c2VkQ2VsbC5jb2x1bW5dO1xuICAgIGNvbnN0IGdldENlbGwgPSAoY29sLCByb3cpID0+IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUd1aS5xdWVyeVNlbGVjdG9yKGBkaXZbcm93LWluZGV4PVwiJHtyb3cucm93SW5kZXh9XCJdIFtjb2wtaWQ9XCIke2NvbC5jb2xJZH1cIl1gKTtcbiAgICBjb25zdCB2YWx1ZSA9IChjb2wsIHJvdykgPT4ge1xuICAgICAgZ3JpZE9wdGlvbnMuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoY29sKTtcbiAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgIGlmICghY2VsbCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgY2hpcHMgPSBjZWxsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jaGlwJykgfHwgW107XG4gICAgICBjb25zdCB2YWwgPSBBcnJheS5mcm9tKGNoaXBzLmxlbmd0aCA/IGNoaXBzIDogW2NlbGxdKS5tYXAoKGM6IGFueSkgPT4gKGMgJiYgYy50ZXh0Q29udGVudCAmJiBjLnRleHRDb250ZW50LnRyaW0oKSkgfHwgJycpO1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKSB8fCBncmlkT3B0aW9ucy5hcGkuZ2V0VmFsdWUoY29sLCByb3cpO1xuICAgICAgcmV0dXJuICFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgOiAnJztcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBjb250ZW50ICs9IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gY29sLmdldENvbERlZigpLmhlYWRlck5hbWUpLmpvaW4oJ1x0JykgKyAnXFxuJztcbiAgICBjb250ZW50ICs9IHJvd3MubWFwKChyb3cpID0+IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gdmFsdWUoY29sLCByb3cpKS5qb2luKCdcdCcpKS5qb2luKCdcXG4nKTtcblxuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICByb3dzLm1hcCgocm93KSA9PlxuICAgICAgICAgIGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoY29sLCByb3cpO1xuICAgICAgICAgICAgY2VsbCAmJiBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NvcHktY2VsbCcpO1xuICAgICAgICAgICAgY2VsbCAmJiBzZXRUaW1lb3V0KCgpID0+IGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjb3B5LWNlbGwnKSwgNDAwMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICAvLyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTsgLy8gb25seSBpZiBjbGllbnQgcnVucyBodHRwc1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgY29uc3QgY29weVN1Y2Nlc3MgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHVibGljIG9wZW5MaW5rKHVyaTogc3RyaW5nLCBuZXdUYWIgPSBmYWxzZSkge1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvcmNlIHJlbG9hZCBpbiBjYXNlIG9mIHNhbWUgVVJMXG4gICAgICBjb25zdCBleHRyYXMgPSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLnVybCkgPT09IENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSA/IGAke3VyaS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfXJlbG9hZD10cnVlYCA6ICcnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmkgKyBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleChlbCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5nZXRBdHRyaWJ1dGUoJ3Jvdy1pbmRleCcpXG4gICAgICAgID8gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKSwgMTApXG4gICAgICAgIDogdGhpcy5nZXRSb3dJbmRleChlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZXJMaW5rKGVsLCBwYXJlbnRDbGFzcykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5sb2NhbE5hbWUgPT09ICdhJyAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JvdXRlci1saW5rJylcbiAgICAgICAgPyBlbFxuICAgICAgICA6IHRoaXMuZ2V0Um91dGVyTGluayhlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUm91dGVyTGluayhldmVudDogTW91c2VFdmVudCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoXG4gICAgICBldmVudC50YXJnZXQsXG4gICAgICBwYXJlbnRDbGFzc1xuICAgICkgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgaWYgKGxpbmsgJiYgbGluay5ocmVmKSB7XG4gICAgICB0aGlzLm9wZW5MaW5rKGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGV2ZW50LmN0cmxLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB7Li4udGhpcy5jb250ZXh0LCBjb3VudDogMCwgcm93Q291bnQ6IDB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodHlwZU9wdHM6IHN0cmluZ1tdLCBvcHRpb25zID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwge3R5cGVPcHRzOiAodHlwZU9wdHMgJiYgdHlwZU9wdHMubGVuZ3RoID8gdHlwZU9wdHMgOiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpLm1hcChvID0+IG8ucW5hbWUpKX0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkRlZnMoXG4gICAgZWxlbWVudHM6IGFueVtdLFxuICAgIHNvcnRvcmRlcjogYW55W10gPSBbXSxcbiAgICBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZDogYW55W10gPSBbXSxcbiAgICBlbmFibGVSb3dHcm91cCA9IHRydWUsXG4gICAgY2FjaGVkQ29sdW1ucyA9IFtdLFxuICAgIG1vZGU/XG4gICk6IENvbERlZltdIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGYgPT5cbiAgICAgIHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICAgICAgZixcbiAgICAgICAgc29ydG9yZGVyLFxuICAgICAgICBncm91cG9yZGVyLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGVuYWJsZVJvd0dyb3VwLFxuICAgICAgICBjYWNoZWRDb2x1bW5zLFxuICAgICAgICBtb2RlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSB2aXN1YWwgb3V0cHV0IG9mIGZvcm0gZWxlbWVudHMgYmFzZWQgb24gaXRzIHR5cGUgZXRjLiAoc2VlIEluZGV4ZGF0YVN1bW1hcnlDb21wb25lbnQgZm9yIHVzYWdlIGRldGFpbHMpXG4gICAqIEBwYXJhbSBlbGVtZW50cyAtIFRoZSBmb3JtIGVsZW1lbnRzIHRvIGJlIHJlbmRlcmVkXG4gICAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCBIVE1MIGZvciB0aGUgZ2l2ZW4gZWxlbWVudHNcbiAgICovXG4gIHB1YmxpYyBnZXRSZXNvbHZlZERlZnMoZWxlbWVudHM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLm1hcChlbCA9PiB7XG4gICAgICBsZXQgY29sRGVmOiBDb2xEZWYgPSB0aGlzLmdldENvbHVtbkRlZmluaXRpb24oZWwpO1xuICAgICAgbGV0IHZhbHVlID0gZWwudmFsdWU7XG4gICAgICBsZXQgZGF0YSA9IHt9O1xuICAgICAgZGF0YVtjb2xEZWYuZmllbGRdID0gdmFsdWU7XG4gICAgICBpZiAoZWwubWV0YSkge1xuICAgICAgICBkYXRhW2NvbERlZi5maWVsZCArICdfbWV0YSddID0gZWwubWV0YTtcbiAgICAgIH1cbiAgICAgIC8vIGludm9rZSB2YWx1ZUdldHRlciBpZiBwcm92aWRlZFxuICAgICAgaWYgKGNvbERlZi52YWx1ZUdldHRlcikge1xuICAgICAgICB2YWx1ZSA9IChjb2xEZWYudmFsdWVHZXR0ZXIgYXMgRnVuY3Rpb24pLmNhbGwodGhpcywge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIG5vZGU6IHt9LFxuICAgICAgICAgIGNvbERlZjogY29sRGVmXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gcnVuIHRoZSBjZWxsIHJlbmRlcmVyIHdpdGggdGhlIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIHZhbHVlR2V0dGVyXG4gICAgICBpZiAoY29sRGVmLmNlbGxSZW5kZXJlcikge1xuICAgICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWYsXG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9O1xuICAgICAgICBlbC5fdmFsdWUgPSAoY29sRGVmLmNlbGxSZW5kZXJlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWw7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyB0aGUgY29sdW1uIGRlZmluaXRpb24gZm9yIGEgZ2l2ZW4gcmVzdWx0IGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzdWx0RmllbGQgLSB0aGUgcmVzdWx0IGZpZWxkIChhcyByZXRyaWV2ZWQgZnJvbSAuLi91c2VyL2NvbmZpZy9yZXN1bHQvKikgdG8gY3JlYXRlIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgZm9yXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0RmllbGRzIC0gQXJyYXkgb2YgZmllbGRzIHRvIGJlIHNvcnRlZFxuICAgKi9cbiAgcHVibGljIGdldENvbHVtbkRlZmluaXRpb24oXG4gICAgcmVzdWx0RmllbGQsXG4gICAgc29ydEZpZWxkczogYW55W10gPSBbXSxcbiAgICBncm91cEZpZWxkczogYW55W10gPSBbXSxcbiAgICBwaW5uZWRGaWVsZHM6IGFueVtdID0gW10sXG4gICAgZW5hYmxlUm93R3JvdXAgPSBmYWxzZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKSB7XG4gICAgbGV0IGNvbERlZiA9IDxDb2xEZWY+e307XG4gICAgY29sRGVmLmhlYWRlck5hbWUgPSByZXN1bHRGaWVsZC5sYWJlbDtcbiAgICBjb2xEZWYuZmllbGQgPSByZXN1bHRGaWVsZC5oaXRuYW1lIHx8IHJlc3VsdEZpZWxkLm5hbWU7XG4gICAgY29sRGVmLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHBhcmFtcyA9PiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtcy52YWx1ZSk7XG4gICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW1zID0+IHtcbiAgICAgIHJldHVybiBwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEgPyAnJyA6IHBhcmFtcy5kYXRhW2NvbERlZi5maWVsZF07XG4gICAgfTtcbiAgICBjb2xEZWYucmVmRGF0YSA9IHtxbmFtZTogcmVzdWx0RmllbGQucW5hbWUgfHwgJyd9O1xuXG4gICAgLyoqXG4gICAgICogaGVhZGVyQ2xhc3NcbiAgICAgKiBhZGQgc3BlY2lhbCBoZWFkZXIgY2xhc3MgZm9yIGZpZWxkcyBmcm9tIHRoZSBjb250ZXh0Zm9sZGVyXG4gICAgICovXG4gICAgaWYgKHJlc3VsdEZpZWxkLnNlbGVjdGVkZm9yZW5yaWNobWVudCAmJiBtb2RlICE9PSAnQ09NTU9OJykge1xuICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbnRleHRmb2xkZXInO1xuICAgIH1cbiAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZiwgcmVzdWx0RmllbGQpO1xuICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZiwgY29sRGVmLmZpZWxkKTtcblxuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgZGVib3VuY2VNczogODAwLFxuICAgICAgY2xlYXJCdXR0b246IGZhbHNlLFxuICAgICAgbmV3Um93c0FjdGlvbjogJ2tlZXAnLFxuICAgICAgZmlsdGVyT3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGNvbERlZi5maWx0ZXIgPT09ICdhZ1RleHRDb2x1bW5GaWx0ZXInKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBjb2xEZWYucmVmRGF0YS5xbmFtZS5tYXRjaCgvKF5zeXNvYmplY3RcXC58XnN5c2RvY3VtZW50XFwuKSh0aXRsZSR8ZGVzY3JpcHRpb24kKS8pID8gWydlcXVhbHMnXSA6IFtcbiAgICAgICAgJ2NvbnRhaW5zJyxcbiAgICAgICAgJ2VxdWFscycsXG4gICAgICAgICdzdGFydHNXaXRoJyxcbiAgICAgICAgJ2VuZHNXaXRoJ1xuICAgICAgXTtcblxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInIHx8XG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdEYXRlQ29sdW1uRmlsdGVyJ1xuICAgICkge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAnZXF1YWxzJyxcbiAgICAgICAgJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICdncmVhdGVyVGhhbicsXG4gICAgICAgICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAnaW5SYW5nZSdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWltZXR5cGUgZmlsdGVyIHN1cHBvcnRzIG9ubHkgZXF1YWxzIG9wdGlvblxuICAgIGlmIChjb2xEZWYuZmllbGQgPT09ICdtaW1ldHlwZScpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZGVmYXVsdE9wdGlvbiA9ICdlcXVhbHMnO1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gWydlcXVhbHMnXTtcbiAgICB9XG5cbiAgICAvLyBmaWxlc2l6ZSBmaWx0ZXIgc3VwcG9ydHMgb25seSBpbnRlcnZhbCBvcHRpb25zXG4gICAgaWYgKGNvbERlZi5maWVsZCA9PT0gJ2ZpbGVzaXplJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5kZWZhdWx0T3B0aW9uID0gJ2xlc3NUaGFuT3JFcXVhbCc7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgICAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgJ2luUmFuZ2UnXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0RmllbGQuc29ydGFibGUpIHtcbiAgICAgIGNvbERlZi5zb3J0YWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdEZpZWxkLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbERlZi5zdXBwcmVzc01lbnUgPSB0cnVlO1xuICAgICAgY29sRGVmLmZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzb3J0RmllbGQgPSBzb3J0RmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHNvcnRGaWVsZCkge1xuICAgICAgY29sRGVmLnNvcnQgPSBzb3J0RmllbGQuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZVJvd0dyb3VwKSB7XG4gICAgICBsZXQgZ3JvdXBGaWVsZEluZGV4ID0gZ3JvdXBGaWVsZHMuZmluZEluZGV4KFxuICAgICAgICBmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lXG4gICAgICApO1xuICAgICAgaWYgKH5ncm91cEZpZWxkSW5kZXgpIHtcbiAgICAgICAgY29sRGVmLnJvd0dyb3VwSW5kZXggPSBncm91cEZpZWxkSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBpbm5lZEZpZWxkID0gcGlubmVkRmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHBpbm5lZEZpZWxkKSB7XG4gICAgICBjb2xEZWYucGlubmVkID0gcGlubmVkRmllbGQucG9zaXRpb24gfHwgdGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgIGNvbERlZi53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0eXBlIHNwZWNpZmljIGNvbHVtbiBkZWZpbml0aW9uIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIGNvbERlZiAtIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgdG8gYmUgZXh0ZW5kZWQgYnkgdHlwZSBzcGVjaWZpYyBhdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIG9iamVjdCBkZWZpbmluZyB0aGUgcmVzdWx0IGZpZWxkXG4gICAqXG4gICAqIEByZXR1cm5zIGVucmljaGVkIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZjogQ29sRGVmLCByZXN1bHRGaWVsZCkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnUkVGRVJFTkNFJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAncm91dGVyLWxpbmstY2VsbCc7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLnJlZmVyZW5jZUNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7cmVmZXJlbmNlOiByZXN1bHRGaWVsZC5yZWZlcmVuY2UgfHwge30sIGNvbERlZjogY29sRGVmfVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSBwYXJhbSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgcGFyYW0ubm9kZS5ncm91cCB8fCAhcGFyYW0uZGF0YSA/ICcnIDogcGFyYW0uZGF0YVtjb2xEZWYuZmllbGRdO1xuXG4gICAgICAgICAgY29uc3QgcmVmTWV0YSA9IHBhcmFtICYmIHBhcmFtLmRhdGEgJiYgcGFyYW0uZGF0YS5fcmVmZXJlbmNlcztcbiAgICAgICAgICAvLyB1c2Ugb2JqZWN0IHR5cGUgbGFiZWwgd2hlbiBtZXRhIGlzIG1pc3NpbmcgKHNlYXJjaCBzdmMgZG9lcyBub3Qgc3VwcG9ydCBtZXRhKVxuICAgICAgICAgIHJldHVybiBVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpXG4gICAgICAgICAgICA/ICcnIDogcmVmTWV0YVxuICAgICAgICAgICAgICA/IHJlZk1ldGFbY29sRGVmLmZpZWxkXVxuICAgICAgICAgICAgICA6IHRoaXMubWV0YVZhbHVlR2V0dGVyKHYgPT4gdi50aXRsZSkocGFyYW0pO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1NUUklORyc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gcmVzdWx0RmllbGQubXVsdGlzZWxlY3RcbiAgICAgICAgICA/ICdtdWx0aUNlbGwgc3RyaW5nJ1xuICAgICAgICAgIDogJ3N0cmluZyc7XG4gICAgICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUNsYXNzaWZpY2F0aW9uKGNvbERlZiwgcmVzdWx0RmllbGQuY2xhc3NpZmljYXRpb24pO1xuICAgICAgICBpZiAocmVzdWx0RmllbGQucmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdyb3V0ZXItbGluay1jZWxsJztcbiAgICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgICAgQ2VsbFJlbmRlcmVyLmxpbmtDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICB7cmVmZXJlbmNlOiByZXN1bHRGaWVsZC5yZWZlcmVuY2V9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYuY29tcGFyYXRvciA9IChhLCBiKSA9PiBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKGEsIGIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RBVEVUSU1FJzoge1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxNTA7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3BhdHRlcm46IHJlc3VsdEZpZWxkLndpdGh0aW1lID8gJ2VvU2hvcnQnIDogJ2VvU2hvcnREYXRlJ31cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3BhdHRlcm46IHJlc3VsdEZpZWxkLndpdGh0aW1lID8gJ2VvU2hvcnQnIDogJ2VvU2hvcnREYXRlJ31cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICBjb21wYXJhdG9yOiB0aGlzLmRhdGVDb21wYXJhdG9yKHRoaXMuY29udGV4dC5kYXRlUGlwZSksXG4gICAgICAgICAgdmFsdWVHZXR0ZXI6IHRoaXMuZGF0ZUZpbHRlclZhbHVlR2V0dGVyKGNvbERlZi5maWVsZCksXG4gICAgICAgICAgd2l0aFRpbWU6IHJlc3VsdEZpZWxkLndpdGh0aW1lLFxuICAgICAgICAgIGluUmFuZ2VJbmNsdXNpdmU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0NvZGVzeXN0ZW1GaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY29sSWQgPSByZXN1bHRGaWVsZC5maWVsZDtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHttdWx0aTogcmVzdWx0RmllbGQubXVsdGlzZWxlY3R9O1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+IHYuZGVmYXVsdHJlcHJlc2VudGF0aW9uKTtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIGNvZGVzeXN0ZW0nXG4gICAgICAgICAgOiAnY29kZXN5c3RlbSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnTlVNQkVSJzoge1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ2NvbC1udW1iZXInO1xuICAgICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29sLWhlYWRlci1udW1iZXInO1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTUwO1xuICAgICAgICBjb25zdCB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufSA9IHJlc3VsdEZpZWxkO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3NjYWxlLCBncm91cGluZywgcGF0dGVybn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7aW5SYW5nZUluY2x1c2l2ZSA6IHRydWV9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY29sSWQgPSByZXN1bHRGaWVsZC5xbmFtZTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHttdWx0aTogcmVzdWx0RmllbGQubXVsdGlzZWxlY3R9O1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnN0cmluZ0NlbGxyZW5kZXJlcjtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5tdWx0aVNlbGVjdENlbGxSZW5kZXJlcjtcbiAgICAgICAgfVxuICAgICAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+XG4gICAgICAgICAgdi50aXRsZSAmJiB2Lm5hbWUgPyBgJHt2LnRpdGxlfSAoJHt2Lm5hbWV9KWAgOiBgJHt2LmlkfWBcbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIG9yZ2FuaXphdGlvbidcbiAgICAgICAgICA6ICdvcmdhbml6YXRpb24nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0JPT0xFQU4nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAnY29sLWJvb2xlYW4nO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmJvb2xlYW5DZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmN1c3RvbUNvbnRleHQoQ2VsbFJlbmRlcmVyLmJvb2xlYW5DZWxsUmVuZGVyZXIpLFxuICAgICAgICAgIGNlbGxIZWlnaHQ6IDMwLFxuICAgICAgICAgIHZhbHVlczogW2ZhbHNlLCB0cnVlXSxcbiAgICAgICAgICBzdXBwcmVzc01pbmlGaWx0ZXI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBjbGFzc2lmaWNhdGlvbiBzcGVjaWZpYyBjb2x1bW4gZGVmaW5pdGlvbiBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBjb2xEZWYgLSB0aGUgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gICAqIEBwYXJhbSBjbGFzc2lmaWNhdGlvbiAtIHRoZSBjbGFzc2lmaWNhdGlvbiB0byBldmFsdWF0ZVxuICAgKlxuICAgKiBAcmV0dXJucyBlbnJpY2hlZCBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgYWRkQ29sRGVmQXR0cnNCeUNsYXNzaWZpY2F0aW9uKGNvbERlZjogQ29sRGVmLCBjbGFzc2lmaWNhdGlvbikge1xuICAgIHN3aXRjaCAoY2xhc3NpZmljYXRpb24pIHtcbiAgICAgIGNhc2UgJ2VtYWlsJzoge1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmVtYWlsQ2VsbFJlbmRlcmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VybCc6IHtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci51cmxDZWxsUmVuZGVyZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDb2xEZWZBdHRyc0J5RmllbGQoY29sRGVmOiBDb2xEZWYsIHJlc3VsdEZpZWxkTmFtZSkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGROYW1lKSB7XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnR5cGVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ3Jlcy1pY28nO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmN1c3RvbUNvbnRleHQoQ2VsbFJlbmRlcmVyLnR5cGVDZWxsUmVuZGVyZXIpLFxuICAgICAgICAgIHZhbHVlczogdGhpcy5jb250ZXh0LnR5cGVPcHRzXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbWltZXR5cGVncm91cCc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdMaXN0RmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAxO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIHZhbHVlczogdGhpcy5jb250ZXh0Lm1pbWV0eXBlZ3JvdXBPcHRzXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndmVyc2lvbic6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gODA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZmlsZXNpemUnOiB7XG4gICAgICAgIGNvbERlZi5oZWFkZXJDbGFzcyA9ICdjb2wtaGVhZGVyLWZpbGVzaXplJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9IEZpbGVzaXplRmlsdGVyO1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxMDA7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuZmlsZXNpemVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21Db250ZXh0KGZuYywgbWl4aW4/KSB7XG4gICAgcmV0dXJuIHBhcmFtID0+IHtcbiAgICAgIHJldHVybiBmbmMoT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIHtjb250ZXh0OiB0aGlzLmNvbnRleHR9LCBtaXhpbikpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbWV0YVZhbHVlR2V0dGVyKHRpdGxlRm5jOiBGdW5jdGlvbiwgbWFwRm5jOiBGdW5jdGlvbiA9IHYgPT4gdikge1xuICAgIHJldHVybiBwYXJhbXMgPT4ge1xuICAgICAgLy8gZGF0YSBjb3VsZCBiZSBlbXB0eSBvbiBmaXJzdCByZW5kZXJpbmcgYSBjZWxsIHdoaWxlIGluZmluaXRlIHNjcm9sbGluZ1xuICAgICAgaWYgKHBhcmFtcy5ub2RlLmdyb3VwIHx8ICFwYXJhbXMuZGF0YSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRvZG86IHN1cGVyIGhvdGZpeCAtIENPT0wtODk4OSAtIHNvbHZlcyBwcm9ibGVtIHdpdGggcmVzb2x2aW5nIG9mIE9SR0FOSVpBVElPTiB2YWx1ZSAodmlhIHFuYW1lKVxuICAgICAgY29uc3QgZmllbGRNZXRhID0gcGFyYW1zLmNvbERlZi5maWVsZCArICdfbWV0YSc7XG4gICAgICBjb25zdCB2YWx1ZSA9ICFwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZE1ldGEpXG4gICAgICAgID8gbWFwRm5jKFxuICAgICAgICAgIChwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSAhPT0gdW5kZWZpbmVkKSA/IHBhcmFtcy5kYXRhW3BhcmFtcy5jb2xEZWYuZmllbGRdIDpcbiAgICAgICAgICBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLnJlZkRhdGEucW5hbWVdXG4gICAgICAgIClcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0pXG4gICAgICAgICAgPyBwYXJhbXMuZGF0YVtmaWVsZE1ldGFdLm1hcCh2ID0+IHRpdGxlRm5jKHYgfHwge30pKVxuICAgICAgICAgIDogdGl0bGVGbmMocGFyYW1zLmRhdGFbZmllbGRNZXRhXSB8fCB7fSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlQ29tcGFyYXRvcihkYXRlUGlwZSkge1xuICAgIHJldHVybiAoYTogRGF0ZSwgYikgPT4ge1xuICAgICAgaWYgKCFiIHx8ICFiLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoYi5maWx0ZXIpIHtcbiAgICAgICAgY29uc3QgX2RhdGUgPSAhYi5hY3RpdmVSYW5nZSA/IGIuZmlsdGVyLmRhdGVGcm9tIDogYi5maWx0ZXIuZGF0ZVRvO1xuICAgICAgICBiLmFjdGl2ZVJhbmdlID0gYi5maWx0ZXIudHlwZSA9PT0gU2ltcGxlRmlsdGVyLklOX1JBTkdFO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBiLmZpbHRlci53aXRoVGltZSA/IDE2IDogMTA7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKFxuICAgICAgICAgICAgX2RhdGUgJiYgX2RhdGUuc2xpY2UoMCwgbGVuZ3RoKSxcbiAgICAgICAgICAgIGIudmFsdWUuc2xpY2UoMCwgbGVuZ3RoKVxuICAgICAgICAgICkgKiAtMVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0ZSA9IGIubGVuZ3RoID09PSAxMCA/IGIgOiBkYXRlUGlwZS50cmFuc2Zvcm0oYiwgJ3l5eXktTU0tZGQnKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEFnVXRpbHMuZGVmYXVsdENvbXBhcmF0b3IoZGF0ZVBpcGUudHJhbnNmb3JtKGEsICd5eXl5LU1NLWRkJyksIGRhdGUpICpcbiAgICAgICAgLTFcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlRmlsdGVyVmFsdWVHZXR0ZXIoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiBub2RlID0+IHtcbiAgICAgIGxldCBfZmlsdGVyID0gbm9kZS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMuYXBpLmdldEZpbHRlckluc3RhbmNlKFxuICAgICAgICBmaWVsZFxuICAgICAgKTtcbiAgICAgIGxldCB2YWx1ZSA9IG5vZGUuZGF0YVtmaWVsZF07XG4gICAgICByZXR1cm4ge2ZpbHRlcjogX2ZpbHRlclsnX2ZpbHRlck1vZGVsJ10sIHZhbHVlfTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsUmVuZGVyZXIge1xuXG4gIHN0YXRpYyBzaXR1YXRpb24gPSAnJztcblxuICBzdGF0aWMgd2luZG93VVJJKHVyaTogYW55KSB7XG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXlxcL3xeXFxcXFxcXFwnKSwgJycpO1xuICB9XG5cbiAgc3RhdGljIHJlbmRlcih0eXBlOiBzdHJpbmcsIHBhcmFtOiBhbnksIG5ld1BhcmFtPzogYW55KSB7XG4gICAgcmV0dXJuIENlbGxSZW5kZXJlclt0eXBlICsgJ0NlbGxSZW5kZXJlciddKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIG5ld1BhcmFtKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZmlsZXNpemVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtLnZhbHVlID8gcGFyYW0uY29udGV4dC5maWxlU2l6ZVBpcGUudHJhbnNmb3JtKHBhcmFtLnZhbHVlKSA6ICcnO1xuICB9XG5cbiAgc3RhdGljIG51bWJlckNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBpZiAocGFyYW0udmFsdWUgfHwgcGFyYW0udmFsdWUgPT09IDApIHtcbiAgICAgIGlmIChwYXJhbS52YWx1ZS5vcGVyYXRvcikge1xuICAgICAgICAvLyByYW5nZSB2YWx1ZSBmcm9tIHNlYXJjaCBmb3JtIHRhYmxlXG4gICAgICAgIHJldHVybiBwYXJhbS52YWx1ZS5vcGVyYXRvciA9PT1cbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIXG4gICAgICAgICAgPyBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKVxuICAgICAgICAgIDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgcGFyYW0udmFsdWUsXG4gICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgdmFsdWUsXG4gICAgY29udGV4dCxcbiAgICBncm91cGluZz8sXG4gICAgcGF0dGVybj8sXG4gICAgc2NhbGU/XG4gICkge1xuICAgIHJldHVybiBjb250ZXh0Lm51bWJlclBpcGUudHJhbnNmb3JtKFxuICAgICAgdmFsdWUsXG4gICAgICBncm91cGluZyxcbiAgICAgIHBhdHRlcm4sXG4gICAgICBzY2FsZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgc3RyaW5nQ2VsbHJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyB0eXBlQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIGxldCBvYmplY3RUeXBlID0gcGFyYW0uY29udGV4dC5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShwYXJhbS52YWx1ZSk7XG4gICAgICBpZiAoIW9iamVjdFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIuaWNvbkNlbGxSZW5kZXJlcihcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIHt2YWx1ZTogb2JqZWN0VHlwZX0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIGljb25DZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSAmJiAocGFyYW0udmFsdWUudXJsIHx8IHBhcmFtLnZhbHVlLmljb25JZCkpIHtcbiAgICAgIGxldCBpY29uVXJsID0gcGFyYW0udmFsdWUudXJsXG4gICAgICAgID8gcGFyYW0uY29udGV4dC5iYXNlSHJlZiArIHBhcmFtLnZhbHVlLnVybFxuICAgICAgICA6IHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQocGFyYW0uY29udGV4dC5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICtcbiAgICAgICAgJy91aS9pY29uLycgK1xuICAgICAgICBwYXJhbS52YWx1ZS5pY29uSWQgK1xuICAgICAgICAnLnN2Zyc7XG4gICAgICBsZXQgbGFiZWwgPSBwYXJhbS52YWx1ZS5sYWJlbDtcbiAgICAgIHZhbCA9IGA8aW1nIGNsYXNzPVwib2JqZWN0LXR5cGVcIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke2xhYmVsfVwiPjxzcGFuIGNsYXNzPVwib2JqZWN0LXR5cGUtbGFiZWxcIj4ke2xhYmVsfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIGVtYWlsQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZVxuICAgICAgPyBgPGEgaHJlZj1cIm1haWx0bzoke3BhcmFtLnZhbHVlfVwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbChcbiAgICAgICAgcGFyYW0udmFsdWVcbiAgICAgICl9PC9hPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBzdGF0aWMgdXJsQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZVxuICAgICAgPyBgPGEgdGFyZ2V0PVwiX2JsYW5rIFwiIGhyZWY9XCIke3BhcmFtLnZhbHVlfVwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbChcbiAgICAgICAgcGFyYW0udmFsdWVcbiAgICAgICl9PC9hPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVRpbWVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICBpZiAocGFyYW0udmFsdWUub3BlcmF0b3IpIHtcbiAgICAgICAgLy8gcmFuZ2UgdmFsdWUgZnJvbSBzZWFyY2ggZm9ybSB0YWJsZVxuICAgICAgICByZXR1cm4gcGFyYW0udmFsdWUub3BlcmF0b3IgPT09XG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxuICAgICAgICAgID8gQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5zZWNvbmRWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKVxuICAgICAgICAgIDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgcGFyYW0udmFsdWUsXG4gICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZSh2YWx1ZSwgY29udGV4dCwgcGF0dGVybikge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIm5vLXZhbHVlXCI+JHtjb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLmlucHV0Lm51bGwnKX08L3NwYW4+YDtcbiAgICB9XG4gICAgcmV0dXJuIGA8c3BhbiBkYXRlPVwiJHt2YWx1ZX1cIj4ke2NvbnRleHQuZGF0ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgdmFsdWUsXG4gICAgICBwYXR0ZXJuXG4gICAgKX08L3NwYW4+YDtcbiAgfVxuXG4gIHN0YXRpYyBib29sZWFuQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSBgPHBhdGggY2xhc3M9XCJiYWNrZ3JvdW5kXCIgZD1cIk0xOSwzSDVDMy45LDMsMywzLjksMyw1djE0YzAsMS4xLDAuOSwyLDIsMmgxNGMxLjEsMCwyLTAuOSwyLTJWNUMyMSwzLjksMjAuMSwzLDE5LDN6XCIvPmA7XG5cbiAgICBpZiAocGFyYW0udmFsdWUgPT09IHRydWUgfHwgcGFyYW0udmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgdmFsID0gYDxwYXRoIGNsYXNzPVwib3V0bGluZVwiIGQ9XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwiLz5cbiAgICAgICAgICAgICA8cG9seWxpbmUgY2xhc3M9XCJjaGVja21hcmtcIiBwb2ludHM9XCI2LjMsMTEuOCA3LjgsMTAuMyAxMC44LDEzLjMgMTYuMyw3LjggMTcuOCw5LjMgMTAuOCwxNi4zIDYuMywxMS44XCIvPmA7XG4gICAgfSBlbHNlIGlmIChwYXJhbS52YWx1ZSA9PT0gZmFsc2UgfHwgcGFyYW0udmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+YDtcbiAgICB9XG4gICAgcmV0dXJuIGA8c3ZnIGNsYXNzPVwiY2hlY2tib3hcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7dmFsfTwvc3ZnPmA7XG4gIH1cblxuICBzdGF0aWMgbXVsdGlTZWxlY3RDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpID8gcGFyYW0udmFsdWUgOiBbcGFyYW0udmFsdWVdKS5mb3JFYWNoKFxuICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgdmFsICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh2YWx1ZSl9PC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBsaW5rQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKSA/IHBhcmFtLnZhbHVlIDogW3BhcmFtLnZhbHVlXSkuZm9yRWFjaChcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgICAgdHlwZXM6IFtwYXJhbS5yZWZlcmVuY2UudHlwZV0sXG4gICAgICAgICAgICBmaWx0ZXJzOiB7fVxuICAgICAgICAgIH07XG4gICAgICAgICAgcXVlcnkuZmlsdGVyc1twYXJhbS5yZWZlcmVuY2UuZWxlbWVudF0gPSB7XG4gICAgICAgICAgICBvOiAnZXEnLFxuICAgICAgICAgICAgdjE6IHZhbHVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBsaW5rID0gVXRpbHMuYnVpbGRVcmkoJ3Jlc3VsdCcsIHtcbiAgICAgICAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOFxuICAgICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9hPjxzcGFuPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh2YWx1ZSl9PC9zcGFuPjwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgcmVmZXJlbmNlQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbS5kYXRhID8gcGFyYW0uZGF0YVtwYXJhbS5jb2xEZWYuZmllbGRdIDogJyc7XG4gICAgY29uc3QgdHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0ucmVmZXJlbmNlLnR5cGUpO1xuICAgIGlmICghVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKSAmJiB0eXBlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pLmZvckVhY2goKHZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGluayA9ICdvYmplY3QvJyArIHZhbCArICc/dHlwZT0nICsgcGFyYW0ucmVmZXJlbmNlLnR5cGU7XG4gICAgICAgIGNvbnN0IGljb25VcmwgPVxuICAgICAgICAgIHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQocGFyYW0uY29udGV4dC5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICtcbiAgICAgICAgICAnL3VpL2ljb24vJyArXG4gICAgICAgICAgdHlwZS5pY29uSWQgK1xuICAgICAgICAgICcuc3ZnJztcbiAgICAgICAgbGV0IHRpdGxlID0gQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSlcbiAgICAgICAgICA/IHBhcmFtLnZhbHVlW2luZGV4XVxuICAgICAgICAgIDogcGFyYW0udmFsdWU7XG5cbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gc2VlIHRoZSByZWZlcmVuY2Ugb2JqZWN0IG9yIHRoZSBvYmplY3Qgd2FzIGRlbGV0ZWQsIHdlIGRvbid0IHNob3cgdGhlIGxpbmsuXG4gICAgICAgIHRleHQgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICR7XG4gICAgICAgICAgIXRpdGxlXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6IGA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOFxuICAgICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9hPmBcbiAgICAgICAgICB9XG4gICAgICAgIDxpbWcgY2xhc3M9XCJ0eXBlLWljb25cIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke3R5cGUubGFiZWx9XCI+XG4gICAgICAgIDxzcGFuPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh0aXRsZSB8fCB0eXBlLmxhYmVsKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0IHx8IHBhcmFtLnZhbHVlO1xuICB9XG5cbiAgc3RhdGljIG5vVmFsdWVSZW5kZXJlcihwYXJhbSkge1xuICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJuby12YWx1ZVwiPiR7cGFyYW0uY29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5pbnB1dC5udWxsJyl9PC9zcGFuPmA7XG4gIH1cblxufVxuIl19
|
|
@@ -47,6 +47,10 @@ export class LocaleDatePipe extends DatePipe {
|
|
|
47
47
|
.replace('{1}', this.format('eoShortDay'));
|
|
48
48
|
break;
|
|
49
49
|
}
|
|
50
|
+
// hotfix for chinesse, korean, arabic special characters - switch to 24 hours format
|
|
51
|
+
if (this.lang !== 'en') {
|
|
52
|
+
formatValue = formatValue.replace('aa', '').replace('hh', 'HH').trim();
|
|
53
|
+
}
|
|
50
54
|
return formatValue || format;
|
|
51
55
|
}
|
|
52
56
|
}
|
|
@@ -59,4 +63,4 @@ LocaleDatePipe.decorators = [
|
|
|
59
63
|
LocaleDatePipe.ctorParameters = () => [
|
|
60
64
|
{ type: TranslateService }
|
|
61
65
|
];
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWRhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvbG9jYWxlLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsUUFBUSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFDekYsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFNOUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBRTFDLFlBQW9CLFNBQTJCO1FBQzdDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFEWCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUUvQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxTQUFpQixFQUFFLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1FBQzNFLElBQUksTUFBTSxLQUFLLGFBQWEsRUFBRTtZQUM1QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3pHLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ3pGO1FBQ0QsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWU7UUFDcEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxhQUFhLENBQUM7WUFDbkIsS0FBSyxhQUFhO2dCQUNoQixXQUFXLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO3FCQUM1RCxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztxQkFDckIsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7cUJBQ3JCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDbkIsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsV0FBVyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQztxQkFDNUQsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7cUJBQ3JCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO3FCQUNyQixPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztxQkFDckIsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixXQUFXLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO3FCQUNoRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7cUJBQzFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0I7Z0JBQ25CLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztxQkFDakYsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUMxQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDN0MsTUFBTTtTQUNUO1FBRUQscUZBQXFGO1FBQ3JGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDdEIsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEU7UUFDRCxPQUFPLFdBQVcsSUFBSSxNQUFNLENBQUM7SUFDL0IsQ0FBQzs7O1lBM0RGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsWUFBWTtnQkFDbEIsSUFBSSxFQUFFLEtBQUs7YUFDWjs7O1lBTE8sZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVQaXBlLCBGb3JtYXRXaWR0aCwgZ2V0TG9jYWxlRGF0ZUZvcm1hdCwgZ2V0TG9jYWxlRGF0ZVRpbWVGb3JtYXQsIGdldExvY2FsZVRpbWVGb3JtYXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbG9jYWxlRGF0ZScsXG4gIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsZURhdGVQaXBlIGV4dGVuZHMgRGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKHRyYW5zbGF0ZS5jdXJyZW50TGFuZyk7XG4gIH1cblxuICBnZXQgbGFuZygpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgPyB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyA6ICdlbic7XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcgPSAnJywgdGltZXpvbmU/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGwgfCBhbnkgIHtcbiAgICBpZiAoZm9ybWF0ID09PSAnZW9OaWNlU2hvcnQnKSB7XG4gICAgICBjb25zdCBkaWZmID0gKG5ldyBEYXRlKHZhbHVlKS5zZXRIb3VycygwLCAwLCAwLCAwKSAtIG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpIC8gMTAwMCAvIDM2MDAgLyAyNDtcbiAgICAgIGZvcm1hdCA9IGRpZmYgPT09IDAgPyAnZW9TaG9ydFRpbWUnIDogZGlmZiA+IC03ICYmIGRpZmYgPCAwID8gJ2VvU2hvcnREYXlUaW1lJyA6IGZvcm1hdDtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnRyYW5zZm9ybSh2YWx1ZSwgdGhpcy5mb3JtYXQoZm9ybWF0IHx8ICdlb1Nob3J0JyksIHRpbWV6b25lLCBsb2NhbGUgfHwgdGhpcy5sYW5nKTtcbiAgfVxuXG4gIGZvcm1hdChmb3JtYXQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgZm9ybWF0VmFsdWUgPSAnJztcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnZW9OaWNlU2hvcnQnOlxuICAgICAgY2FzZSAnZW9TaG9ydERhdGUnOlxuICAgICAgICBmb3JtYXRWYWx1ZSA9IGdldExvY2FsZURhdGVGb3JtYXQodGhpcy5sYW5nLCBGb3JtYXRXaWR0aC5TaG9ydClcbiAgICAgICAgICAucmVwbGFjZSgvW2RdKy8sICdkZCcpXG4gICAgICAgICAgLnJlcGxhY2UoL1tNXSsvLCAnTU0nKVxuICAgICAgICAgIC5yZXBsYWNlKC9beV0rLywgJ3l5eXknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlb1Nob3J0RGF5JzpcbiAgICAgICAgZm9ybWF0VmFsdWUgPSAnRUUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VvU2hvcnRUaW1lJzpcbiAgICAgICAgZm9ybWF0VmFsdWUgPSBnZXRMb2NhbGVUaW1lRm9ybWF0KHRoaXMubGFuZywgRm9ybWF0V2lkdGguU2hvcnQpXG4gICAgICAgICAgLnJlcGxhY2UoL1toXSsvLCAnaGgnKVxuICAgICAgICAgIC5yZXBsYWNlKC9bSF0rLywgJ0hIJylcbiAgICAgICAgICAucmVwbGFjZSgvW21dKy8sICdtbScpXG4gICAgICAgICAgLnJlcGxhY2UoL1thXSsvLCAnYWEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlb1Nob3J0JzpcbiAgICAgICAgZm9ybWF0VmFsdWUgPSBnZXRMb2NhbGVEYXRlVGltZUZvcm1hdCh0aGlzLmxhbmcsIEZvcm1hdFdpZHRoLlNob3J0KVxuICAgICAgICAgIC5yZXBsYWNlKCd7MH0nLCB0aGlzLmZvcm1hdCgnZW9TaG9ydFRpbWUnKSlcbiAgICAgICAgICAucmVwbGFjZSgnezF9JywgdGhpcy5mb3JtYXQoJ2VvU2hvcnREYXRlJykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VvU2hvcnREYXlUaW1lJzpcbiAgICAgICAgZm9ybWF0VmFsdWUgPSBnZXRMb2NhbGVEYXRlVGltZUZvcm1hdCh0aGlzLmxhbmcsIEZvcm1hdFdpZHRoLlNob3J0KS5yZXBsYWNlKCcsJywgJycpXG4gICAgICAgICAgLnJlcGxhY2UoJ3swfScsIHRoaXMuZm9ybWF0KCdlb1Nob3J0VGltZScpKVxuICAgICAgICAgIC5yZXBsYWNlKCd7MX0nLCB0aGlzLmZvcm1hdCgnZW9TaG9ydERheScpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gaG90Zml4IGZvciBjaGluZXNzZSwga29yZWFuLCBhcmFiaWMgc3BlY2lhbCBjaGFyYWN0ZXJzIC0gc3dpdGNoIHRvIDI0IGhvdXJzIGZvcm1hdFxuICAgIGlmICh0aGlzLmxhbmcgIT09ICdlbicpIHtcbiAgICAgIGZvcm1hdFZhbHVlID0gZm9ybWF0VmFsdWUucmVwbGFjZSgnYWEnLCAnJykucmVwbGFjZSgnaGgnLCAnSEgnKS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRWYWx1ZSB8fCBmb3JtYXQ7XG4gIH1cblxufVxuIl19
|