@hitsoft/uretim-yonetimi 1.0.6 → 1.0.8

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.
@@ -23,6 +23,7 @@ export class HitCreateBarcodesComponent {
23
23
  this.sanitizer = sanitizer;
24
24
  this.isLoading = false;
25
25
  this.isEmriBarkoduGecerliMi = false;
26
+ this.searchBasildiMi = false;
26
27
  this.printingQuantity = 1;
27
28
  this.showModal = false;
28
29
  this.pdfSrc = null;
@@ -33,6 +34,7 @@ export class HitCreateBarcodesComponent {
33
34
  }
34
35
  this.isLoading = true;
35
36
  this.isEmriBarkoduGecerliMi = false;
37
+ this.searchBasildiMi = true;
36
38
  this.productionOrdersService.get(this.isEmriBarkodu).subscribe({
37
39
  next: response => {
38
40
  if (response?.isSuccessful) {
@@ -46,24 +48,31 @@ export class HitCreateBarcodesComponent {
46
48
  },
47
49
  error: e => {
48
50
  this.isEmriBarkoduGecerliMi = false;
51
+ this.searchBasildiMi = true;
49
52
  this.confirmation.status$.subscribe({
50
53
  next: () => {
51
54
  this.clearAll();
52
- }
55
+ },
53
56
  });
54
57
  },
55
58
  });
56
59
  this.isLoading = false;
57
60
  }
61
+ ngAfterViewInit() {
62
+ this.focusOnBarkodNumarasi();
63
+ }
58
64
  clearAll() {
59
65
  this.isEmriBarkoduGecerliMi = false;
66
+ this.searchBasildiMi = false;
60
67
  this.isEmriBarkodu = null;
61
68
  this.productionOrder = null;
62
69
  this.receiptFromProductions = null;
63
70
  this.focusOnBarkodNumarasi();
64
71
  }
65
72
  generateReport() {
66
- this.service.getBarcodeInfo(this.isEmriBarkodu, this.selectedReceiptFromProductions.docEntry, this.printingQuantity).subscribe({
73
+ this.service
74
+ .getBarcodeInfo(this.isEmriBarkodu, this.selectedReceiptFromProductions.docEntry, this.printingQuantity)
75
+ .subscribe({
67
76
  next: response => {
68
77
  const base64Data = response.base64; // base64 string (sadece veri kısmı, "data:application/pdf;base64,..." değilse)
69
78
  // Base64'ü decode edip binary veriye çeviriyoruz
@@ -76,14 +85,28 @@ export class HitCreateBarcodesComponent {
76
85
  // Blob oluşturuyoruz
77
86
  const blob = new Blob([byteArray], { type: 'application/pdf' });
78
87
  // Blob'tan URL oluşturup yeni sekmede açıyoruz (veya download edebilirsin)
79
- const blobUrl = URL.createObjectURL(blob);
80
- this.pdfSrc = this.bypassAndSanitize(blobUrl);
88
+ this.blobUrl = URL.createObjectURL(blob);
89
+ this.pdfSrc = this.bypassAndSanitize(this.blobUrl);
81
90
  },
82
91
  });
83
92
  }
84
93
  bypassAndSanitize(url) {
85
94
  return this.sanitizer.bypassSecurityTrustResourceUrl(url);
86
95
  }
96
+ downloadPdf(blobUrl) {
97
+ const a = document.createElement('a');
98
+ a.href = blobUrl;
99
+ const parts = blobUrl.split('/');
100
+ const lastPart = parts.pop(); // "myfile.pdf"
101
+ a.download = lastPart + '.pdf'; // Kaydedilecek dosya adı
102
+ a.style.display = 'none';
103
+ // iOS'ta desteklenmesi için target=_blank eklenebilir
104
+ a.target = '_blank';
105
+ // DOM'a ekleyip tıklat
106
+ document.body.appendChild(a);
107
+ a.click();
108
+ document.body.removeChild(a);
109
+ }
87
110
  async getReceiptFromProductions() {
88
111
  if (!this.isEmriBarkodu) {
89
112
  return;
@@ -101,7 +124,7 @@ export class HitCreateBarcodesComponent {
101
124
  this.confirmation.status$.subscribe({
102
125
  next: () => {
103
126
  this.clearAll();
104
- }
127
+ },
105
128
  });
106
129
  }
107
130
  },
@@ -109,7 +132,7 @@ export class HitCreateBarcodesComponent {
109
132
  this.confirmation.status$.subscribe({
110
133
  next: () => {
111
134
  this.clearAll();
112
- }
135
+ },
113
136
  });
114
137
  },
115
138
  });
@@ -143,12 +166,12 @@ export class HitCreateBarcodesComponent {
143
166
  }
144
167
  }
145
168
  HitCreateBarcodesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitCreateBarcodesComponent, deps: [{ token: i0.NgZone }, { token: i1.ListService }, { token: i1.TrackByService }, { token: i2.HitCreateBarcodesService }, { token: i3.ConfirmationService }, { token: i4.HitProductionOrdersService }, { token: i5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
146
- HitCreateBarcodesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitCreateBarcodesComponent, selector: "lib-hit-create-barcodes", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "nmbBoxBarkodNumarasi", first: true, predicate: ["barkodNumarasiRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::CreateBarcodes.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-8\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" [disabled]=\"!this.selectedReceiptFromProductions\"\r\n (click)=\"showModal=true\">\r\n <i class=\"fa fa-plus me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Print' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-4\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::CreateBarcodes.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemCode' | abpLocalization\"\r\n [(value)]=\"productionOrder.itemNo\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemName' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.BatchNumber' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_trkBatch\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.PrintingQuantity' | abpLocalization\"\r\n [(value)]=\"printingQuantity\">\r\n </dx-number-box>\r\n <dx-data-grid class=\"mt-3\" [dataSource]=\"receiptFromProductions\" [columnAutoWidth]=\"true\"\r\n (onSelectionChanged)=\"selectReceiptFromProductions($event)\">\r\n <dxi-column dataField=\"quantity\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Quantity' | abpLocalization\"></dxi-column>\r\n <dxi-column dataField=\"docDateString\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Date' | abpLocalization\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [(visible)]=\"showModal\" (appear)=\"generateReport()\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'UretimYonetimi::CreateBarcodes.BarcodePreview' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <iframe *ngIf=\"pdfSrc\" [src]=\"pdfSrc\" width=\"100%\" height=\"300\" webkitallowfullscreen\r\n mozallowfullscreen allowfullscreen></iframe>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose> {{\r\n 'UretimYonetimi::CreateBarcodes.Close' | abpLocalization\r\n }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i7.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i8.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i8.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i9.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i9.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
169
+ HitCreateBarcodesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitCreateBarcodesComponent, selector: "lib-hit-create-barcodes", providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "nmbBoxBarkodNumarasi", first: true, predicate: ["barkodNumarasiRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::CreateBarcodes.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-8\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" [disabled]=\"!this.selectedReceiptFromProductions\"\r\n (click)=\"showModal=true\">\r\n <i class=\"fa fa-plus me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Print' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-4\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::CreateBarcodes.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemCode' | abpLocalization\"\r\n [(value)]=\"productionOrder.itemNo\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemName' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.BatchNumber' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_trkBatch\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.PrintingQuantity' | abpLocalization\"\r\n [(value)]=\"printingQuantity\">\r\n </dx-number-box>\r\n <dx-data-grid class=\"mt-3\" [dataSource]=\"receiptFromProductions\" [columnAutoWidth]=\"true\"\r\n (onSelectionChanged)=\"selectReceiptFromProductions($event)\">\r\n <dxi-column dataField=\"quantity\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Quantity' | abpLocalization\"></dxi-column>\r\n <dxi-column dataField=\"docDateString\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Date' | abpLocalization\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [(visible)]=\"showModal\" (appear)=\"generateReport()\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'UretimYonetimi::CreateBarcodes.BarcodePreview' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <iframe *ngIf=\"pdfSrc\" [src]=\"pdfSrc\" width=\"100%\" height=\"300\"\r\n webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button (click)=\"downloadPdf(blobUrl)\" type=\"button\"\r\n class=\"btn btn-secondary mobilde-gorunur\" abpClose> \u0130ndir\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-secondary\" abpClose> {{ 'UretimYonetimi::CreateBarcodes.Close' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: [".mobilde-gorunur{display:none}@media (max-width: 768px){.mobilde-gorunur{display:block}}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i7.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i8.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i8.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i9.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i9.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
147
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitCreateBarcodesComponent, decorators: [{
148
171
  type: Component,
149
- args: [{ selector: 'lib-hit-create-barcodes', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::CreateBarcodes.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-8\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" [disabled]=\"!this.selectedReceiptFromProductions\"\r\n (click)=\"showModal=true\">\r\n <i class=\"fa fa-plus me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Print' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-4\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::CreateBarcodes.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemCode' | abpLocalization\"\r\n [(value)]=\"productionOrder.itemNo\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemName' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.BatchNumber' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_trkBatch\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.PrintingQuantity' | abpLocalization\"\r\n [(value)]=\"printingQuantity\">\r\n </dx-number-box>\r\n <dx-data-grid class=\"mt-3\" [dataSource]=\"receiptFromProductions\" [columnAutoWidth]=\"true\"\r\n (onSelectionChanged)=\"selectReceiptFromProductions($event)\">\r\n <dxi-column dataField=\"quantity\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Quantity' | abpLocalization\"></dxi-column>\r\n <dxi-column dataField=\"docDateString\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Date' | abpLocalization\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [(visible)]=\"showModal\" (appear)=\"generateReport()\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'UretimYonetimi::CreateBarcodes.BarcodePreview' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <iframe *ngIf=\"pdfSrc\" [src]=\"pdfSrc\" width=\"100%\" height=\"300\" webkitallowfullscreen\r\n mozallowfullscreen allowfullscreen></iframe>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose> {{\r\n 'UretimYonetimi::CreateBarcodes.Close' | abpLocalization\r\n }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
172
+ args: [{ selector: 'lib-hit-create-barcodes', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::CreateBarcodes.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-8\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" [disabled]=\"!this.selectedReceiptFromProductions\"\r\n (click)=\"showModal=true\">\r\n <i class=\"fa fa-plus me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Print' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-4\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::CreateBarcodes.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::CreateBarcodes.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searchBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemCode' | abpLocalization\"\r\n [(value)]=\"productionOrder.itemNo\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.ItemName' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.BatchNumber' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_trkBatch\" [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\" [label]=\"'UretimYonetimi::CreateBarcodes.PrintingQuantity' | abpLocalization\"\r\n [(value)]=\"printingQuantity\">\r\n </dx-number-box>\r\n <dx-data-grid class=\"mt-3\" [dataSource]=\"receiptFromProductions\" [columnAutoWidth]=\"true\"\r\n (onSelectionChanged)=\"selectReceiptFromProductions($event)\">\r\n <dxi-column dataField=\"quantity\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Quantity' | abpLocalization\"></dxi-column>\r\n <dxi-column dataField=\"docDateString\"\r\n [caption]=\"'UretimYonetimi::CreateBarcodes.Date' | abpLocalization\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [(visible)]=\"showModal\" (appear)=\"generateReport()\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'UretimYonetimi::CreateBarcodes.BarcodePreview' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <iframe *ngIf=\"pdfSrc\" [src]=\"pdfSrc\" width=\"100%\" height=\"300\"\r\n webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button (click)=\"downloadPdf(blobUrl)\" type=\"button\"\r\n class=\"btn btn-secondary mobilde-gorunur\" abpClose> \u0130ndir\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-secondary\" abpClose> {{ 'UretimYonetimi::CreateBarcodes.Close' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: [".mobilde-gorunur{display:none}@media (max-width: 768px){.mobilde-gorunur{display:block}}\n"] }]
150
173
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.ListService }, { type: i1.TrackByService }, { type: i2.HitCreateBarcodesService }, { type: i3.ConfirmationService }, { type: i4.HitProductionOrdersService }, { type: i5.DomSanitizer }]; }, propDecorators: { nmbBoxBarkodNumarasi: [{
151
174
  type: ViewChild,
152
175
  args: ['barkodNumarasiRef', { static: false }]
153
176
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1jcmVhdGUtYmFyY29kZXMvaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1jcmVhdGUtYmFyY29kZXMvaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFpQixNQUFNLGNBQWMsQ0FBQztBQUt6RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7OztBQWtCMUQsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUNVLE1BQWMsRUFDTixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUFpQyxFQUN6QyxZQUFpQyxFQUNqQyx1QkFBbUQsRUFDbkQsU0FBdUI7UUFOdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNOLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDekMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBNEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUlqQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztR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SUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBM0pVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLGtEQUoxQixDQUFDLFdBQVcsRUFBRSxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDLHFKQ3JCNUUsbWhJQThFQTsyRkRyRGEsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLHlCQUF5QixtQkFDbEIsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDO2lTQUt6QixvQkFBb0I7c0JBQXBFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0U2VydmljZSwgVHJhY2tCeVNlcnZpY2V9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29uZmlybWF0aW9uLFxyXG4gIENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TmdiRGF0ZUFkYXB0ZXJ9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHtIaXRDcmVhdGVCYXJjb2Rlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtY3JlYXRlLWJhcmNvZGVzL2hpdC1jcmVhdGUtYmFyY29kZXMuc2VydmljZSc7XHJcbmltcG9ydCB7SGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2V9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtcHJvZHVjdGlvbi1vcmRlcnMvaGl0LXByb2R1Y3Rpb24tb3JkZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0R4VGV4dEJveENvbXBvbmVudH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBHZXRQcm9kdWN0aW9uT3JkZXJEdG8sXHJcbiAgUHJvZHVjdGlvbk9yZGVyTGluZSxcclxufSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQge1JlY2VpcHRGcm9tUHJvZHVjdGlvbnN9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtY3JlYXRlLWJhcmNvZGVzL21vZGVscyc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWNyZWF0ZS1iYXJjb2RlcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7cHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlcn1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtY3JlYXRlLWJhcmNvZGVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0Q3JlYXRlQmFyY29kZXNDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2JhcmtvZE51bWFyYXNpUmVmJywge3N0YXRpYzogZmFsc2V9KSBubWJCb3hCYXJrb2ROdW1hcmFzaTogRHhUZXh0Qm94Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IEhpdENyZWF0ZUJhcmNvZGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9kdWN0aW9uT3JkZXJzU2VydmljZTogSGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFbXJpQmFya29kdTogbnVtYmVyO1xyXG4gIHByb2R1Y3Rpb25PcmRlcjogR2V0UHJvZHVjdGlvbk9yZGVyRHRvO1xyXG4gIHByaW50aW5nUXVhbnRpdHk6IG51bWJlciA9IDE7XHJcbiAgc2hvd01vZGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGRmU3JjOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaUJhcmtvZHUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucHJvZHVjdGlvbk9yZGVyc1NlcnZpY2UuZ2V0KHRoaXMuaXNFbXJpQmFya29kdSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2R1Y3Rpb25PcmRlciA9IHJlc3BvbnNlLml0ZW1zO1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjZWlwdEZyb21Qcm9kdWN0aW9ucygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlID0+IHtcclxuICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1ID0gbnVsbDtcclxuICAgIHRoaXMucHJvZHVjdGlvbk9yZGVyID0gbnVsbDtcclxuICAgIHRoaXMucmVjZWlwdEZyb21Qcm9kdWN0aW9ucyA9IG51bGw7XHJcbiAgICB0aGlzLmZvY3VzT25CYXJrb2ROdW1hcmFzaSgpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVSZXBvcnQoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QmFyY29kZUluZm8odGhpcy5pc0VtcmlCYXJrb2R1LCB0aGlzLnNlbGVjdGVkUmVjZWlwdEZyb21Qcm9kdWN0aW9ucy5kb2NFbnRyeSwgdGhpcy5wcmludGluZ1F1YW50aXR5KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHJlc3BvbnNlLmJhc2U2NDsgLy8gYmFzZTY0IHN0cmluZyAoc2FkZWNlIHZlcmkga8Sxc23EsSwgXCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsLi4uXCIgZGXEn2lsc2UpXHJcblxyXG4gICAgICAgIC8vIEJhc2U2NCfDvCBkZWNvZGUgZWRpcCBiaW5hcnkgdmVyaXllIMOnZXZpcml5b3J1elxyXG4gICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcclxuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG5cclxuICAgICAgICAvLyBCbG9iIG9sdcWfdHVydXlvcnV6XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL3BkZid9KTtcclxuXHJcbiAgICAgICAgLy8gQmxvYid0YW4gVVJMIG9sdcWfdHVydXAgeWVuaSBzZWttZWRlIGHDp8SxeW9ydXogKHZleWEgZG93bmxvYWQgZWRlYmlsaXJzaW4pXHJcbiAgICAgICAgY29uc3QgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgdGhpcy5wZGZTcmMgPSB0aGlzLmJ5cGFzc0FuZFNhbml0aXplKGJsb2JVcmwpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBieXBhc3NBbmRTYW5pdGl6ZSh1cmwpOiBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgcmVjZWlwdEZyb21Qcm9kdWN0aW9uczogUmVjZWlwdEZyb21Qcm9kdWN0aW9uc1tdO1xyXG5cclxuICBhc3luYyBnZXRSZWNlaXB0RnJvbVByb2R1Y3Rpb25zKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaUJhcmtvZHUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0UmVjZWlwdEZyb21Qcm9kdWN0aW9ucyh0aGlzLmlzRW1yaUJhcmtvZHUgKyAnJykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICB0aGlzLnJlY2VpcHRGcm9tUHJvZHVjdGlvbnMgPSByZXNwb25zZS5pdGVtcztcclxuICAgICAgICAgIHRoaXMucmVjZWlwdEZyb21Qcm9kdWN0aW9ucy5mb3JFYWNoKChpdGVtOiBSZWNlaXB0RnJvbVByb2R1Y3Rpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uZG9jRGF0ZVN0cmluZyA9IHRoaXMuZm9ybWF0RGF0ZShpdGVtLmRvY0RhdGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRSZWNlaXB0RnJvbVByb2R1Y3Rpb25zOiBSZWNlaXB0RnJvbVByb2R1Y3Rpb25zO1xyXG5cclxuICBzZWxlY3RSZWNlaXB0RnJvbVByb2R1Y3Rpb25zKGUpIHtcclxuICAgIGUuY29tcG9uZW50LmJ5S2V5KGUuY3VycmVudFNlbGVjdGVkUm93S2V5c1swXSkuZG9uZShyZWNlaXB0RnJvbVByb2R1Y3Rpb25zID0+IHtcclxuICAgICAgaWYgKHJlY2VpcHRGcm9tUHJvZHVjdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjZWlwdEZyb21Qcm9kdWN0aW9ucyA9IHJlY2VpcHRGcm9tUHJvZHVjdGlvbnM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG5cclxuICAgIGNvbnN0IGRheSA9IHBhZChkLmdldERhdGUoKSk7XHJcbiAgICBjb25zdCBtb250aCA9IHBhZChkLmdldE1vbnRoKCkgKyAxKTsgLy8gQXlsYXIgMC1pbmRleGxpXHJcbiAgICBjb25zdCB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgaG91ciA9IHBhZChkLmdldEhvdXJzKCkpO1xyXG4gICAgY29uc3QgbWludXRlID0gcGFkKGQuZ2V0TWludXRlcygpKTtcclxuXHJcbiAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9ICR7aG91cn06JHttaW51dGV9YDtcclxuICB9XHJcblxyXG4gIGZvY3VzT25CYXJrb2ROdW1hcmFzaSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubm1iQm94QmFya29kTnVtYXJhc2kuaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLlRpdGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiF0aGlzLnNlbGVjdGVkUmVjZWlwdEZyb21Qcm9kdWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vZGFsPXRydWVcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5QcmludCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmcgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJyb29tIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkNsZWFuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQxcHgpOyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2JhcmtvZE51bWFyYXNpUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLldvcmtPcmRlck5vJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiaXNFbXJpQmFya29kdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwic2VhcmNoXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPGR4LXRleHQtYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIiBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5JdGVtQ29kZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcm9kdWN0aW9uT3JkZXIuaXRlbU5vXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDxkeC10ZXh0LWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCIgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuSXRlbU5hbWUnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJvZHVjdGlvbk9yZGVyLnByb2R1Y3REZXNjcmlwdGlvblwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInByb2R1Y3Rpb25PcmRlci51X3Rya0JhdGNoXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDxkeC1udW1iZXItYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIiBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5QcmludGluZ1F1YW50aXR5JyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJpbnRpbmdRdWFudGl0eVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtZGF0YS1ncmlkIGNsYXNzPVwibXQtM1wiIFtkYXRhU291cmNlXT1cInJlY2VpcHRGcm9tUHJvZHVjdGlvbnNcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3RSZWNlaXB0RnJvbVByb2R1Y3Rpb25zKCRldmVudClcIj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIidVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuUXVhbnRpdHknIHwgYWJwTG9jYWxpemF0aW9uXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRGF0ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkRhdGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuXHJcbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJzaG93TW9kYWxcIiAoYXBwZWFyKT1cImdlbmVyYXRlUmVwb3J0KClcIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz57eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkJhcmNvZGVQcmV2aWV3JyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8aWZyYW1lICpuZ0lmPVwicGRmU3JjXCIgW3NyY109XCJwZGZTcmNcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMDBcIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW5cclxuICAgICAgICAgICAgbW96YWxsb3dmdWxsc2NyZWVuIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPiB7e1xyXG4gICAgICAgICdVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuQ2xvc2UnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1jcmVhdGUtYmFyY29kZXMvaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1jcmVhdGUtYmFyY29kZXMvaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7OztBQW1CNUQsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUNVLE1BQWMsRUFDTixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUFpQyxFQUN6QyxZQUFpQyxFQUNqQyx1QkFBbUQsRUFDbkQsU0FBdUI7UUFOdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNOLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDekMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBNEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUdqQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztR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QyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQXpMVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrREFMMUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxxSkNsQjlFLHF0SUFnRkE7MkZEekRhLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBQ2xCLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztpU0FNekIsb0JBQW9CO3NCQUF0RSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RTZXJ2aWNlLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0NoaWxkLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEhpdENyZWF0ZUJhcmNvZGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtY3JlYXRlLWJhcmNvZGVzL2hpdC1jcmVhdGUtYmFyY29kZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdFByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wcm9kdWN0aW9uLW9yZGVycy9oaXQtcHJvZHVjdGlvbi1vcmRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IER4VGV4dEJveENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7XHJcbiAgR2V0UHJvZHVjdGlvbk9yZGVyRHRvLFxyXG4gIFByb2R1Y3Rpb25PcmRlckxpbmUsXHJcbn0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbnMvbW9kZWxzJztcclxuaW1wb3J0IHsgUmVjZWlwdEZyb21Qcm9kdWN0aW9ucyB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtY3JlYXRlLWJhcmNvZGVzL21vZGVscyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1oaXQtY3JlYXRlLWJhcmNvZGVzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LWNyZWF0ZS1iYXJjb2Rlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxuICBzdHlsZVVybHM6IFsnLi9oaXQtY3JlYXRlLWJhcmNvZGVzLWNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdENyZWF0ZUJhcmNvZGVzQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdiYXJrb2ROdW1hcmFzaVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBubWJCb3hCYXJrb2ROdW1hcmFzaTogRHhUZXh0Qm94Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IEhpdENyZWF0ZUJhcmNvZGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9kdWN0aW9uT3JkZXJzU2VydmljZTogSGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7fVxyXG5cclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoQmFzaWxkaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFbXJpQmFya29kdTogbnVtYmVyO1xyXG4gIHByb2R1Y3Rpb25PcmRlcjogR2V0UHJvZHVjdGlvbk9yZGVyRHRvO1xyXG4gIHByaW50aW5nUXVhbnRpdHk6IG51bWJlciA9IDE7XHJcbiAgc2hvd01vZGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGRmU3JjOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcclxuICBibG9iVXJsOiBzdHJpbmc7XHJcblxyXG4gIGFzeW5jIGdldFByb2R1Y3Rpb25PcmRlcigpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlCYXJrb2R1KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQmFzaWxkaU1pID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlLmdldCh0aGlzLmlzRW1yaUJhcmtvZHUpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIgPSByZXNwb25zZS5pdGVtcztcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmdldFJlY2VpcHRGcm9tUHJvZHVjdGlvbnMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hCYXNpbGRpTWkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZm9jdXNPbkJhcmtvZE51bWFyYXNpKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdSA9IG51bGw7XHJcbiAgICB0aGlzLnByb2R1Y3Rpb25PcmRlciA9IG51bGw7XHJcbiAgICB0aGlzLnJlY2VpcHRGcm9tUHJvZHVjdGlvbnMgPSBudWxsO1xyXG4gICAgdGhpcy5mb2N1c09uQmFya29kTnVtYXJhc2koKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUmVwb3J0KCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXRCYXJjb2RlSW5mbyhcclxuICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHUsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJlY2VpcHRGcm9tUHJvZHVjdGlvbnMuZG9jRW50cnksXHJcbiAgICAgICAgdGhpcy5wcmludGluZ1F1YW50aXR5XHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHJlc3BvbnNlLmJhc2U2NDsgLy8gYmFzZTY0IHN0cmluZyAoc2FkZWNlIHZlcmkga8Sxc23EsSwgXCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsLi4uXCIgZGXEn2lsc2UpXHJcblxyXG4gICAgICAgICAgLy8gQmFzZTY0J8O8IGRlY29kZSBlZGlwIGJpbmFyeSB2ZXJpeWUgw6dldmlyaXlvcnV6XHJcbiAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XHJcbiAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcblxyXG4gICAgICAgICAgLy8gQmxvYiBvbHXFn3R1cnV5b3J1elxyXG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG5cclxuICAgICAgICAgIC8vIEJsb2IndGFuIFVSTCBvbHXFn3R1cnVwIHllbmkgc2VrbWVkZSBhw6fEsXlvcnV6ICh2ZXlhIGRvd25sb2FkIGVkZWJpbGlyc2luKVxyXG4gICAgICAgICAgdGhpcy5ibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgIHRoaXMucGRmU3JjID0gdGhpcy5ieXBhc3NBbmRTYW5pdGl6ZSh0aGlzLmJsb2JVcmwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnlwYXNzQW5kU2FuaXRpemUodXJsKTogU2FmZVJlc291cmNlVXJsIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUGRmKGJsb2JVcmwpIHtcclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLmhyZWYgPSBibG9iVXJsO1xyXG4gICAgY29uc3QgcGFydHMgPSBibG9iVXJsLnNwbGl0KCcvJyk7XHJcbiAgICBjb25zdCBsYXN0UGFydCA9IHBhcnRzLnBvcCgpOyAvLyBcIm15ZmlsZS5wZGZcIlxyXG4gICAgYS5kb3dubG9hZCA9IGxhc3RQYXJ0ICsgJy5wZGYnOyAvLyBLYXlkZWRpbGVjZWsgZG9zeWEgYWTEsVxyXG4gICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgIC8vIGlPUyd0YSBkZXN0ZWtsZW5tZXNpIGnDp2luIHRhcmdldD1fYmxhbmsgZWtsZW5lYmlsaXJcclxuICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XHJcblxyXG4gICAgLy8gRE9NJ2EgZWtsZXlpcCB0xLFrbGF0XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuICB9XHJcblxyXG4gIHJlY2VpcHRGcm9tUHJvZHVjdGlvbnM6IFJlY2VpcHRGcm9tUHJvZHVjdGlvbnNbXTtcclxuXHJcbiAgYXN5bmMgZ2V0UmVjZWlwdEZyb21Qcm9kdWN0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlCYXJrb2R1KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFJlY2VpcHRGcm9tUHJvZHVjdGlvbnModGhpcy5pc0VtcmlCYXJrb2R1ICsgJycpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5yZWNlaXB0RnJvbVByb2R1Y3Rpb25zID0gcmVzcG9uc2UuaXRlbXM7XHJcbiAgICAgICAgICB0aGlzLnJlY2VpcHRGcm9tUHJvZHVjdGlvbnMuZm9yRWFjaCgoaXRlbTogUmVjZWlwdEZyb21Qcm9kdWN0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmRvY0RhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUoaXRlbS5kb2NEYXRlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRSZWNlaXB0RnJvbVByb2R1Y3Rpb25zOiBSZWNlaXB0RnJvbVByb2R1Y3Rpb25zO1xyXG5cclxuICBzZWxlY3RSZWNlaXB0RnJvbVByb2R1Y3Rpb25zKGUpIHtcclxuICAgIGUuY29tcG9uZW50LmJ5S2V5KGUuY3VycmVudFNlbGVjdGVkUm93S2V5c1swXSkuZG9uZShyZWNlaXB0RnJvbVByb2R1Y3Rpb25zID0+IHtcclxuICAgICAgaWYgKHJlY2VpcHRGcm9tUHJvZHVjdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjZWlwdEZyb21Qcm9kdWN0aW9ucyA9IHJlY2VpcHRGcm9tUHJvZHVjdGlvbnM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG5cclxuICAgIGNvbnN0IGRheSA9IHBhZChkLmdldERhdGUoKSk7XHJcbiAgICBjb25zdCBtb250aCA9IHBhZChkLmdldE1vbnRoKCkgKyAxKTsgLy8gQXlsYXIgMC1pbmRleGxpXHJcbiAgICBjb25zdCB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgaG91ciA9IHBhZChkLmdldEhvdXJzKCkpO1xyXG4gICAgY29uc3QgbWludXRlID0gcGFkKGQuZ2V0TWludXRlcygpKTtcclxuXHJcbiAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9ICR7aG91cn06JHttaW51dGV9YDtcclxuICB9XHJcblxyXG4gIGZvY3VzT25CYXJrb2ROdW1hcmFzaSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubm1iQm94QmFya29kTnVtYXJhc2kuaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLlRpdGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiF0aGlzLnNlbGVjdGVkUmVjZWlwdEZyb21Qcm9kdWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vZGFsPXRydWVcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5QcmludCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmcgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJyb29tIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkNsZWFuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQxcHgpOyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2JhcmtvZE51bWFyYXNpUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLldvcmtPcmRlck5vJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiaXNFbXJpQmFya29kdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgaWNvbj1cInNlYXJjaFwiIHR5cGU9XCJkZWZhdWx0XCIgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInByb2R1Y3Rpb25PcmRlci5pdGVtTm9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgPGR4LXRleHQtYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIiBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcm9kdWN0aW9uT3JkZXIucHJvZHVjdERlc2NyaXB0aW9uXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDxkeC10ZXh0LWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCIgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuQmF0Y2hOdW1iZXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJvZHVjdGlvbk9yZGVyLnVfdHJrQmF0Y2hcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLlByaW50aW5nUXVhbnRpdHknIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcmludGluZ1F1YW50aXR5XCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1kYXRhLWdyaWQgY2xhc3M9XCJtdC0zXCIgW2RhdGFTb3VyY2VdPVwicmVjZWlwdEZyb21Qcm9kdWN0aW9uc1wiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2VkKT1cInNlbGVjdFJlY2VpcHRGcm9tUHJvZHVjdGlvbnMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicXVhbnRpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiJ1VyZXRpbVlvbmV0aW1pOjpDcmVhdGVCYXJjb2Rlcy5RdWFudGl0eScgfCBhYnBMb2NhbGl6YXRpb25cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEYXRlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIidVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuRGF0ZScgfCBhYnBMb2NhbGl6YXRpb25cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cInNob3dNb2RhbFwiIChhcHBlYXIpPVwiZ2VuZXJhdGVSZXBvcnQoKVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPnt7ICdVcmV0aW1Zb25ldGltaTo6Q3JlYXRlQmFyY29kZXMuQmFyY29kZVByZXZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxpZnJhbWUgKm5nSWY9XCJwZGZTcmNcIiBbc3JjXT1cInBkZlNyY1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMwMFwiXHJcbiAgICAgICAgICAgIHdlYmtpdGFsbG93ZnVsbHNjcmVlbiBtb3phbGxvd2Z1bGxzY3JlZW4gYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFBkZihibG9iVXJsKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG1vYmlsZGUtZ29ydW51clwiIGFicENsb3NlPiDEsG5kaXJcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPiB7eyAnVXJldGltWW9uZXRpbWk6OkNyZWF0ZUJhcmNvZGVzLkNsb3NlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcbiJdfQ==